firewalld 红帽防火墙
firewalld是 红帽从rhel7开始提供的一种防火墙工具,是一种iptables的前端,但是层次更高,支持命令行或者图形化两种管理方式
从一开始firewalld使用iptables作为后端,后面将默认后端切换为了nftables
firewalld使用zone(区域)概念,和华为的防火墙差不多,相当于策略模板,不同的场景可以选择不同的策略模板,以实现策略之间的快速切换:
比如一个网卡eth0绑定了A区域,A区域绑定了eth0 1 2网卡

注:如果想要使用iptables-nft,需要停止防火墙服务,否则可能导致防火墙规则冲突
firewall-cmd基础命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 1. 区域与状态查询 firewall-cmd --list-all firewall-cmd --get-active-zones firewall-cmd --state
2. 服务(Service)管理 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --remove-service=https firewall-cmd --list-services
3. 端口(Port)管理 firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --permanent --remove-port=3306/udp firewall-cmd --list-ports
4. 源地址与网卡 firewall-cmd --permanent --add-source=192.168.1.0/24 firewall-cmd --permanent --zone=internal --add-interface=eth0
5. NAT 与端口转发 firewall-cmd --permanent --add-masquerade (1)本地端口转发(将访问 80 端口的流量转到 8080) firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 (2)端口转发(暴露内网服务 firewall-cmd --permanent --zone=public --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.10:toport=3306
(3)删除转发规则 firewall-cmd --permanent --zone=public --reove-forward-port=port=80:proto=tcp:toaddr=127.0.0.1:toport=8080
6.开启流量转发开关 firewall-cmd --permanent --zone=public --set-forward=yes
|
富规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 1.限制特定 IP 访问特定端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept'
iptables -A INPUT -p tcp -s 192.168.1.10 --dport 22 -j ACCEPT
2.拒绝特定网段的流量 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" reject'
iptables -A INPUT -s 10.0.0.0/24 -j REJECT
3.基于服务名(Service)的访问控制 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.16.1.5" service name="http" accept'
iptables -A INPUT -p tcp -s 172.16.1.5 --dport 80 -j ACCEPT
4. 带有日志记录和速率限制的规则 firewall-cmd --permanent --add-rich-rule='rule service name="ssh" log prefix="ssh_log" level="info" limit value="3/m" accept'
5.端口转发 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" forward-port port="80" protocol="tcp" to-port="8080"'
|
ufw ubuntu防火墙
ufw简单易用,命令直观,适合新手,默认拒绝所有传入,允许所有传出,但功能相对简单
ufw的设计理念是简单有效,对大部分场景来说够用了,但复杂功能上不如firewalld和iptables
2020年后ufw底层从iptables换成了nftables
ufw的基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| sudo ufw enable sudo ufw disable
sudo ufw status sudo ufw status verbose sudo ufw status numbered
sudo ufw default deny incoming sudo ufw default allow outgoing
1.允许服务 sudo ufw allow ssh sudo ufw allow http
2.允许端口 sudo ufw allow 22 sudo ufw allow 80/tcp sudo ufw allow 3000:4000/tcp
3.拒绝连接 sudo ufw deny 23 sudo ufw deny from 192.168.1.100
4.删除规则 sudo ufw delete allow ssh sudo ufw delete deny 23
sudo ufw status numbered sudo ufw delete 2
1.允许特定IP访问特定端口 sudo ufw allow from 192.168.1.100 to any port 22 sudo ufw allow from 192.168.1.0/24 to any port 80
2.允许特定IP访问所有端口 sudo ufw allow from 192.168.1.100
3.限制特定网卡 sudo ufw allow in on eth0 to any port 22
4.拒绝与记录 sudo ufw deny log from 192.168.10.0/24
5.速率限制 sudo ufw limit ssh sudo ufw limit 22/tcp
sudo ufw logging on sudo ufw logging off sudo ufw logging low|medium|high|full sudo tail -f /var/log/ufw.log
sudo ufw reset sudo ufw disable sudo ufw --force reset
|