一、Firewall简介
Firewalld是Linux系统下一款核心的防火墙管理工具,用于保护系统的网络安全。Firewalld通过硬件和软件在内部和外部网络之间产生一种保护屏障,有效地监控并控制网络的信息流。Firewalld的基本结构由表(Tables)、链(Chains)和规则(Rules)组成。每个链包含多个规则,用于匹配数据包并根据结果执行相应操作。Firewalld使用iptables、ip6tables、ebtables和nftables作为后端处理网络数据包。Firewalld提供两种配置模式:运行时(Runtime)模式和永久(Permanent)模式。在运行时模式下,配置的策略会立即生效,但系统重启后失效;而在永久模式下,配置的策略会在系统重启后依然生效,但需要手动执行firewall-cmd --reload命令才能立即生效。
二、Firewall区域
1.drop:丢弃
任何传入的网络数据包都被丢弃,没有回复。只能进行传出网络连接
2.block:阻止任何传入的网络连接被拒绝,其中包含用于IPv4的icmp-host-prohibited消息和用于IPV6的icmp6-adm-prohibited。
3.public: 公共《默认)
用于公共场所您不相信网络上的其他计算机不会损害您的计算机。仅接受选定的传入连接.
4.external:外部网络
用于特别为路由器启用伪装的外部网络。
5.dmz:管制区
适用于非军事区中的计算机,这些计算机可公开访问,并且对内部网络的访问权限有限。仅接受选定的传入连接.
6.work:工作
用于工作区域。您最常信任网络上的其他计算机,以免损害您的计算机。仅接受选定的传入连接。
6.home: 家庭
适用于家庭领域。您最常信任网络上的其他计算机,以免损害您的计算机。仅接受选定的传入连接。
7.internal: 内部
用于内部网络。您最常信任网络上的其他计算机,以免损害您的计算机。仅接受选定的传入连接
8.trusted:受信任
接受所有网络连接。可以将这些区域中的一个指定为默认区域。将接口连接添加到NetworkManager时,会将它们分配给默认区域。安装时,firewalld中的默认区域将设置为公共区域。
三、常用命令
查看防火墙状态:firewall-cmd --state
拒绝所有包: firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic查看有哪些区域:firewall-cmd --get-zones
查看有哪些区域:firewall-cmd --get-services
查看已有的规则:firewall-cmd --list-all
暂时开放 ftp 服务: firewall-cmd --add-service=ftp永久开放 ftp 服务: firewall-cmd --add-service=ftp --permanent
查询服务的启用状态: firewall-cmd --query-service ftp
开放mysql端口: firewall-cmd --add-service=mysql
阻止http端口: firewall-cmd --remove-service=http
查看开放的服务: firewall-cmd --list-services
查看对应规则库文件: cd /usr/lib/firewalld/services
开放通过tcp访问3306:firewall-cmd --add-port=3306/tcp
阴止通过tcp访问3306: firewall-cmd --remove-port=80tcp永久开放80端口:firewall-cmd --zone=public --add-port=80/tcp--permanent
查看80端口:firewall-cmd --zone=public --query-port=80/tcp
查看所有开放端口: firewall-cmd --zone=public --list-ports
删除80端: firewall-cmd --zone=public --remove-port=80/tcp --permanent开放postgresgl服务: firewall-cmd --add-service=postgresql --permanent
允许http服务通过1分钟: firewa11-cmd--zone=public --add-service=http --timeout=1m,这个 timeout 选项是一个以秒(s)、分(m)或小时(h)为单位的时间值。
重载防火墙: firewall-cmd --reload
检查防火墙状态: firewall-cmd --state
让设定生效: systemctl restart firewalld
四、富规则
添加指定ip访问特定端口规则:
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.112.1 port port=80protocol=tcp accept'
删除指定某个ip访问特定端口规则:firewall-cmd --permanent--remove-rich-rule="rule family="ipv4”source address="192.168.112.1" portprotocol="tcp" port="80" accept"
禁止某个ip访问:
iptables -I INPUT -S 138.138.138.138 -j DROP
firewall -cmd --add-rich-rule='rule family=ipv4 source address="192.168.112.1" drop
允许ping:firewall-cmd --add-rich-rule='rule family="ipv4" protocol value="icmp" source address="192.168.112.1 "accept'
接受192.168.112.0网段所有IP访问SSH服务:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.112.0/24" service name=ssh accept'
直接模式:
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 192.168.112.1 -j ACCEPT