管理防火墙策略-firewalld、rich rule、iptables
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
文章目录
管理防火墙策略-firewalld
1. 切换默认保护区域
2. 作用范围控制
3. 重载防火墙
4. 获取防火墙相关信息
5. 查看防火墙规则相关操作
6. 增加、删除防火墙规则
1)添加规则时
2)删除规则时
3)应用示例:默认public区域,放行Web服务(http、https)、TCP 82端口
7. 兼容旧版iptables的规则操作
1)添加入站过滤规则(丢弃来自123.45.67.0/24网段访问TCP 22端口的数据包)
2)添加SNAT源地址转换规则(内部用户访问80端口时,将源地址伪装成外网接口IP)
3)添加DNAT目标地址转换规则(外部用户访问外网IP的80端口时,转交给内部服务器192.168.10.100)
4)列出所有--direct永久规则
5)列出nat表POSTROUTING链中的所有规则
6)删除filter表INPUT链中的所有规则
7)删除nat表POSTROUTING链中的0号规则
使用防火墙富规则
1. 富规则常用操作
2. 富规则的一般结构(--add-rich-rule='' 引号中的内容)
3. 富规则编写示例
管理防火墙策略-firewalld
firewalld以标准系统服务的方式展现,作为Linux内核级别的包过滤防火墙nftables的用户态接口,管理员可以通过firewall-cmd、firewall-config等工具来调整防火墙规则。
系统服务:firewalld
管理工具:firewall-cmd 命令行工具、firewall-config 图形工具
防火墙配置:
/etc/firewalld/firewalld.conf
/etc/firewalld/zones/public.xml //public公共区的规则设置
/etc/firewalld/services/
预设保护区域(常用的几个):
public,公共区 —— 防火墙的默认区域,缺省允许对本机的ping、ssh、dhcpv6-client访问
trusted,信任区 —— 允许对本机的任何访问
block,阻塞区 —— 阻止访问本机的任何数据包
drop,丢弃区 —— 丢弃访问本机的任何数据包
规则作用范围:
runtime,运行时 —— 内存中的策略,修改后立即生效,重启防火墙后会消失
permanent,永久 —— 磁盘中的策略,重载防火墙后才生效
#### 简单防火墙规则管理
1. 切换默认保护区域
# firewall-cmd --get-default-zone //查看当前默认区域
# firewall-cmd --set-default-zone=区域名 //设置默认区域
2. 作用范围控制
# firewall-cmd --add-service=http .. .. //添加"运行时"规则
# firewall-cmd --permanent --add-service=http .. .. //添加"永久"规则
# firewall-cmd --runtime-to-permanent //将"运行时"规则保存为"永久"规则
3. 重载防火墙
# firewall-cmd --reload //重载防火墙规则(不中断已建立的连接)
# firewall-cmd --complete-reload //完全重载防火墙规则(中断已建立的连接)
# systemctl restart firewalld //重启防火墙服务
4. 获取防火墙相关信息
# firewall-cmd --get-zones //获取预设区域类型
# firewall-cmd --get-services //获取预设服务类型
# firewall-cmd --get-icmptypes //获取支持的ICMP消息类型
# firewall-cmd --get-ipset-types //获取IP集合类型
# firewall-cmd --get-default-zone //获取当前使用的默认区域
5. 查看防火墙规则相关操作
# firewall-cmd --list-all //列出活动区域(当前使用的默认区域)中的规则
# firewall-cmd --list-all-zones //列出所有区域中的规则
# firewall-cmd --list-services //列出当前活动区域中保护的服务
# firewall-cmd --list-services --zone=区域名 //列出xx区域中保护的服务
# firewall-cmd --list-forward-ports //列出活动区域中的端口转发规则
# firewall-cmd --list-forward-ports --zone=区域名 //列出xx区域中的端口转发规则
6. 增加、删除防火墙规则
1)添加规则时
# firewall-cmd --zone=区域名 --add....//指定在xx区域(缺省为活动区域)中添加规则
# firewall-cmd --add-service=服务名 .. .. //指定适用此条规则的服务类型(只能是firewalld预设的,比如"http"匹配TCP 80端口)
# firewall-cmd --add-source=IP地址 .. .. //指定适用此条规则的源IP地址
# firewall-cmd --add-source=网络地址/掩码位数 .. .. //指定适用此条规则的源网段地址
# firewall-cmd --add-port=端口号/tcp .. .. //指定适用此条规则的TCP端口号
# firewall-cmd --add-port=端口n-端口m/tcp .. .. //指定适用此条规则的TCP端口范围
# firewall-cmd --add-forward-port=port=被转发端口号:proto=tcp:toport=目标端口号 //添加端口转发策略
# firewall-cmd --add-masquerade //启用地址伪装
2)删除规则时
# firewall-cmd --zone=区域名 --remove....//指定在xx区域(缺省为活动区域)中删除规则
# firewall-cmd --remove-service=服务名 .. .. //指定适用此条规则的服务类型(只能是firewalld预设的,比如"http"匹配TCP 80端口)
# firewall-cmd --remove-source=IP地址 .. .. //指定适用此条规则的源IP地址
# firewall-cmd --remove-source=网络地址/掩码位数 .. .. //指定适用此条规则的源网段地址
# firewall-cmd --remove-port=端口号/tcp .. .. //指定适用此条规则的TCP端口号
# firewall-cmd --remove-port=端口n-端口m/tcp .. .. //指定适用此条规则的TCP端口范围
# firewall-cmd --remove-port=端口n-端口m/tcp .. .. //指定适用此条规则的TCP端口范围
# firewall-cmd --remove-forward-port=port=被转发端口号:proto=tcp:toport=目标端口号 //删除端口转发策略
# firewall-cmd --remove-masquerade //禁用地址伪装
3)应用示例:默认public区域,放行Web服务(http、https)、TCP 82端口
[root@server1 ~]# firewall-cmd --set-default-zone=public
[root@server1 ~]# firewall-cmd --permanent --add-service=http
[root@server1 ~]# firewall-cmd --permanent --add-service=https
[root@server1 ~]# firewall-cmd --permanent --add-port=82/tcp
[root@server1 ~]# firewall-cmd --reload
7. 兼容旧版iptables的规则操作
规则表:filter、mangle、nat,分别用于数据包过滤、标记、地址转换
规则链:INPUT、PREROUTING、FORWARD、POSTROUTING、OUTPUT
条件参数:-p tcp|udp、-s 源地址、-d 目标地址、--sport 源端口、--dport 目标端口、-j 处理动作
处理动作:ACCEPT、DROP、REJECT、SNAT、DNAT、MASQUERADE
1)添加入站过滤规则(丢弃来自123.45.67.0/24网段访问TCP 22端口的数据包)
[root@node1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -s 123.45.67.0/24 -p tcp --dport 22 -j DROP
success
2)添加SNAT源地址转换规则(内部用户访问80端口时,将源地址伪装成外网接口IP)
[root@node1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 192.168.10.0/24 -p tcp --dport 80 -j SNAT --to-source 211.10.10.112
或者
[root@node1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 192.168.10.0/24 -p tcp --dport 80 -j MASQUERADE
3)添加DNAT目标地址转换规则(外部用户访问外网IP的80端口时,转交给内部服务器192.168.10.100)
[root@node1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 1 -d 211.10.10.112 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.100
4)列出所有--direct永久规则
[root@node1 ~]# firewall-cmd --direct --get-all-rules
5)列出nat表POSTROUTING链中的所有规则
[root@node1 ~]# firewall-cmd --direct --get-rules ipv4 nat POSTROUTING
6)删除filter表INPUT链中的所有规则
[root@node1 ~]# firewall-cmd --direct --remove-rules ipv4 filter INPUT
7)删除nat表POSTROUTING链中的0号规则
[root@node1 ~]# firewall-cmd --direct --permanent --remove-rule ipv4 nat POSTROUTING 0 -s 192.168.10.0/24 -p tcp --dport 80 -j MASQUERADE
使用防火墙富规则
使用富规则(rich-rule),可以在防火墙上实现更灵活、更复杂、更强大的过滤控制。
1. 富规则常用操作
# firewall-cmd --list-rich-rules //查看富规则
# firewall-cmd --remove-rich-rule='富规则' //删除富规则
# firewall-cmd --add-rich-rule='富规则' //添加富规则
# man firewalld.richlanguage //查看富规则使用手册
示例1:允许从172.25.0.200访问本机的Web服务
[root@server1 ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.0.200" service name="http" accept'
示例2:禁止网段10.0.0.0/24访问TCP 3389端口
[root@server1 ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="3389" protocol=tcp reject'
2. 富规则的一般结构(--add-rich-rule='' 引号中的内容)
rule
[source]
[destination]
service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
[log]
[audit]
[accept|reject|drop|mark]
#### rule规则的主要构成 ####
rule设置:rule [family="ipv4|ipv6"] [priority="priority"]
source源地址设置:source [not] address="address[/mask]"|mac="mac-address"|ipset="ipset"
destination目的地址设置:destination [not] address="address[/mask]"
service服务设置:service name="service name"
port端口设置:port port="port value" protocol="tcp|udp"
protocol协议设置:protocol value="protocol value"
Forward-Port端口转发:forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"
Source-Port源端口设置:source-port port="port value" protocol="tcp|udp"
Action处理动作:
accept|reject|drop|mark
accept [limit value="rate/duration"]
reject [type="reject type"] [limit value="rate/duration"]
drop [limit value="rate/duration"]
3. 富规则编写示例
1)允许来自192.168.2.2的所有连接(列入源白名单)
rule family="ipv4" source address="192.168.2.2" accept
2)拒绝来自192.168.2.3的所有连接(列入源黑名单)
rule family="ipv4" source address="192.168.2.3" reject type="icmp-admin-prohibited"
3)丢弃来自192.168.2.4的所有连接(列入源黑名单)
rule family="ipv4" source address="192.168.2.4" drop
4)禁止ping本机
rule family="ipv4" protocol value="icmp" drop