linux的火墙管理

linux的火墙管理

两种管理方式
iptables ##接近原始
firewalld ##企业7之后

firewalld 和 iptables service 之间最本质的不同是 :
iptables service 在 /etc/sysconfig/iptables 中储存配置.
firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 .

在这里插入图片描述

1. firewalld

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口.

系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信.

在这里插入图片描述
ipp 打印机
block有回显
drop没有

1.1 图形化管理

firewall-config
在这里插入图片描述

1.2命令管理

1.2.1 启用 firewalld
yum install -y firewalld firewall-config
systemctl start firewalld
systemctl enable firewalld
1.2.2 关闭
systemctl disable firewalld
systemctl stop firewalld

注意:当主机之间互相ping时,可能机器网卡的问题(虚拟机出现这种问题占多)

1.3 配置文件

/usr/lib/firewalld/service	##所有服务的存储文件,可以自己定义添加(service)
/etc/firewalld/zones		##火墙设置的数据存储文件(permanent)

如何添加一个文件中没有的服务
cp -p /usr/lib/firewalld/service/xxx.xml  /usr/lib/firewalld/service/xxx.xml
vim /usr/lib/firewalld/service/xxx.xml
名字、描述、协议、端口

reload
firewall-cmd --get-services
就有了

当永久修改火墙中某些设置时,/etc/firewalld/zones/下对应的域就会生成新的配置文件,同时原来的会自动变成xxx.xml.old

1.4 使用命令行接口配置防火墙

firewall-cmd --state				##查看状态
firewall-cmd --get-active-zones		##查看运行中的域
firewall-cmd --get-default-zone		##查看默认域
firewall-cmd --get-zones			##查看所有域
firewall-cmd --zone=public --list-all	##查看pubilc域的状态
firewall-cmd --get-services			##查看所有服务
firewall-cmd --list-all-zones		##查看所有域的状态
firewall-cmd --set-default-zone=xxx	##修改默认域

firewall-cmd --permanent --zone=internal --add-source=ip	##往internal域添加一个源地址(给这个机子这个域对应的权限)
firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24	##删除
firewall-cmd --permanent --zone=internal --add-interface=eth0			##添加网卡设备
firewall-cmd --permanent --zone=internal --change-interface=eth0		##更换网卡设备
firewall-cmd --permanent --zone=internal --remove-interface=eth0		##删除
firewall-cmd --permanent --zone=public --add-service=smtp				##添加服务
firewall-cmd --permanent --zone=public --remove-service=smtp			##删除
firewall-cmd --zone=public --list-ports			##列出打开的端口
firewall-cmd --permanent --zone=public --add- port=8080/tcp		##添加端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp	##删除

firewall-cmd reload				#不终止已连接的服务;ssh的话就不受影响	
firewall-cmd complete-reload	#终止;ssh的话就会断掉;complete-reload停止的服务需要用它打开

1.4 参数描述

source

指定源地址 , 可以是一个 ipv4/ipv6 的地址或网段 , 不支持使用主机名。

destination

指定目的地址 , 用法和 source 相同。

service

服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列
表 , 输入以下命令 :
firewall-cmd --get-services 命令为以下形式 :
service name=service_name

port

端口既可以是一个独立端口数字 , 又或者端口范围 , 例如 ,5060-5062 。协议可以指定为 tcp 或udp

protocol

协议值可以是一个协议 ID 数字 , 或者一个协议名。预知可用协议 , 请查阅 /etc/protocols 。

icmp-block

用这个命令阻绝一个或多个 ICMP 类型。 IC MP 类型是 firewalld 支持的 ICMP 类型之一。
要获得被支持的 ICMP 类型列表 , 输入以下命令 : firewall-cmd --get-icmptypes
icmp-block 在内部使用 reject 动作 , 因此不允许指定动作。命令为以下形式 :
icmp-block name=icmptype_name

masquerade

打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。不允许指定动作。

forward-port

从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口 , 或另一台机器 , 或
另一台机器上的另一个端口。 port 和 to-port 可以是一个单独的端口数字 , 或一个端口范围。而
目的地址是一个简单的 IP 地址。不允许指定动作 , 命令使用内部动作accept 命令为以下形式 :
forward-port port=number_or_range protocol=protocol / to-port=number_or_range to-addr=address

Direct Rules
通过 firewall-cmd 工具 , 可以使用 --direct 选项在运行时间里增加或者移除链。如果不熟悉 iptables , 使用直接接口非常危险 , 因为您可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序 , 以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用

1.5 三张表,五条链

防火墙的工作机制

filter表里的内容是与访问内核相关的
input:到不了内核
forward: 内核
output:经过内核
input—>forward—>output

nat表不访问内核
intput
prerouting:路由之前
postrouting:路由之后,做源地址转换
此处的路由之前与路由之后相对方向不一样
output:

maggle表是备用表格
intput:
prerouting:
forward:
postrouting:
output:

direct 
s		#source ip
p		#协议
dport	#端口
j		#访问的回应
REJECT DROP ACCEPT
rules从上到下一次读取
REJECT > DROP
remove
get

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.xxxxx -p tcp --dport 80 -j DROP
##让172.xxxxx这台主机访问本机80端口服务时被拒绝且没有回应

———————————————————————————————————

1.6 firewall的地址伪装,端口转发

伪装
firewall-cmd --permanent  --add-masquerade

端口转发 :
firewall-cmd --permanent  --add-forward-port=port=80:proto=tcp:toport=22:toaddr=172.25.254.207

客户端:网关
masquerade	##伪装
add-forward-port=port=22:proto=tcp:toport=22:toaddr=ip	##地址转换,端口转发

2. iptables

关闭火墙,下载服务并打开

-t		##指定表
-n		##不做解析
-l		##列出表中策略
iptables -nL			##不做解析列出表中策略
iptables -t filter -nL	
默认filter表
表中策略也是默认从上到下读取

2.1 iptables的相关命令

man iptables
iptables 	table 	chain 	rule
iptables -t [table] -A|C|D|R|S|N|X  [chain] rule-specification
S	##列出策略
A	##怎加策略(在最后加)
I	##插入策略(在最前面加)
R	##修改策略
D	##删除策略
P	##修改默认策略
N	##增加链
X	##删除链
E	##修改链名称
iptables -F		##清除所有策略
service iptables save
iptables-save > /etc/sysconfig/iptables
##保存策略

filter

nat

2.2 iptables的伪装与转发

伪装:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.107
转发:
iptables -t nat -A PREROUTING -i eth0-ptcp--dport 22 -j  DNAT --to-dest192.168.0.207:22
客户端:网关

2.3 更改服务的标签

由于服务在读取策略的时候是从上往下读取这样会浪费时间,所以我们就可以改变服务的标签(NEW——>ESTABLSHED/RELAED),使其不用检测,提高效率

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
##对ESTABLSHED和RELAED标签的服务直接通过检测
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT 
##对NEW标签内部接口的服务也直接通过检测
iptables -A INPUT -m state --state NEW -p tcp --dport 3128 -j ACCEPT 
##NEW标签ip连接squid服务 检测3128端口 
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
##检测22端口
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT  
##检测53端口
iptables -A INPUT -j REJECT  
其余的服务都拒绝

3. 给服务添加端口

即管理 SELinux 端口标签

列出端口标签 :
semanage port -l
添加端口标签 :
semanage port -a -t http_port_t -p tcp 8888
删除端口标签 :
semanage port -d -t http_port_t -p tcp 8888
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值