8_Linux 系统中的防火墙策略优化
8_Linux 系统中的防火墙策略优化
- 1、火墙介绍
- 2、火墙管理工具切换
- 3、 iptables 的使用
- 4、火墙默认策略
- 5、firewalld
-
- 1. firewalld的开启
- 2. 关于firewalld的域
- 3. 关于firewalld的设定原理及数据存储
- 4. firewalld的管理命令
- 5. firewalld的高级规则
- 6. firewalld中的NAT
1、火墙介绍
- 1.
netfilter
- 2.
iptables
- 3.
iptables|firewalld
2、火墙管理工具切换
在rhel8中默认使用的是firewalld
firewalld
----->iptables
dnf install iptables-services -y systemctl stop firewalld systemctl disable firewalld systemctl mask firewalld systemctl enable --now iptables
iptales
------->fiewalld
dnf install firewalld -y systemctl stop iptables systemctl disable iptables systemctl mask iptables systemctl enable --now firewalld
3、 iptables 的使用
-
火墙策略的永久保存
# 火墙策略的永久保存# /etc/sysconfig/iptables ##iptables 策略记录文件
-
永久保存策略
iptales-save > /etc/sysconfig/iptables service iptables save
4、火墙默认策略
-
默认策略中的5条链
链 含义 input 输入 output 输出 forward 转发 postrouting 路由之后 prerouting 路由之前 -
默认的3张表
表 含义 filter 经过本机内核的数据(input output forward) nat 不经过内核的数据(postrouting,prerouting,input,output) mangle 当filter和nat表不够用时使用(input output forward postrouting,prerouting,) -
iptables
命令iptables-t ##指定表名称-n ##不做解析-L ##查看-A ##添加策略-p ##协议--dport ##目的地端口-s ##来源-j ##动作ACCEPT ##允许DROP ##丢弃REJECT ##拒绝SNAT ##源地址转换DNAT ##目的地地址转换-N ##新建链-E ##更改链名称-X ##删除链-D ##删除规则-I ##插入规则-R ##更改规则-P ##更改默认规则
-
数据包状态
数据包状态 含义 RELATED 建立过连接的 ESTABLISHED 正在连接的 NEW 新的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state NEW -i lo -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT ptables -A INPUT -m state --state NEW -j REJECT service iptables save
-
nat
表中的dnat
snat
snat
:源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。dnat
:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。RFC1918中的地址保留可以用地址重叠的方式来达到。当一个内部主机第一次放出的数据包通过防火墙时,动态NAT的实现方式与静态NAT相同,然后这次NAT就以表的形式保留在防火墙中。除非由于某种个原因会引起这次NAT的结束,否则这次NAT就一直保留在防火墙中。引起NAT结束最常见的原因就是发出连接的主机在预定的时间内一直没有响应,这时空闲计时器就会从表中删除该主机的NAT。snat
snat iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20
dnat
dnat iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
5、firewalld
1. firewalld的开启
-
firewalld
的开启
systemctl stop iptables systemctl disable iptables systemctl mask iptables systemctl unmask firewalld systemctl enable --now firewalld
2. 关于firewalld的域
-
关于
firewalld
的域trusted ##接受所有的网络连接 home ##用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client work ##工作网络 ssh ipp-client dhcp-client public ##公共网络 ssh dhcp-client dmz ##军级网络 ssh block ##拒绝所有 drop ##丢弃 所有数据全部丢弃无任何回复 internal ##内部网络 ssh mdns ipp-client samba-client dhcp-client external ##ipv4网络地址伪装转发 sshd
3. 关于firewalld的设定原理及数据存储
-
关于
firewalld
的设定原理及数据存储路径 含义 /etc/firewalld
火墙配置目录 /lib/firewalld
火墙模块目录
4. firewalld的管理命令
-
firewalld
的管理命令firewall-cmd --state ##查看火墙状态 firewall-cmd --get-active-zones ##查看当前火墙中生效的域 firewall-cmd --get-default-zone ##查看默认域 firewall-cmd --list-all ##查看默认域中的火墙策略 firewall-cmd --list-all --zone=work ##查看指定域的火墙策略 firewall-cmd --set-default-zone=trusted ##设定默认域firewall-cmd --get-services ##查看所有可以设定的服务 firewall-cmd --permanent --remove-service=cockpit ##移除服务 firewall-cmd --reload firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域 firewall-cmd --reload firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除自定域中的数据来源firewall-cmd --permanent --remove-interface=ens224 --zone=public ##删除指定域的网络接口 firewall-cmd --permanent --add-interface=ens224 --zone=block ##添加指定域的网络接口 firewall-cmd --permanent --change-interface=ens224 --zone=public ##更改网络接口到指定域
5. firewalld的高级规则
firewalld
的高级规则firewall-cmd --direct --get-all-rules ##查看高级规则 firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.250 -p tcp --dport 22 -j REJECT
6. firewalld中的NAT
-
SANT
## SNAT firewall-cmd --permanent --add-masquerade firewall-cmd --reload
-
DNAT
## DNAT firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30 firewall-cmd --reload