firewall
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese防火墙配置
防火墙配置
概述
概述
iptables、firewalld、nftables、ufw 防火墙配置技能。
iptables、firewalld、nftables、ufw 防火墙配置技能。
iptables
iptables
基础命令
基础命令
bash
undefinedbash
undefined查看规则
查看规则
iptables -L -n -v
iptables -L -n --line-numbers
iptables -t nat -L -n -v
iptables -L -n -v
iptables -L -n --line-numbers
iptables -t nat -L -n -v
清空规则
清空规则
iptables -F
iptables -X
iptables -t nat -F
iptables -F
iptables -X
iptables -t nat -F
默认策略
默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
undefinediptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
undefined常用规则
常用规则
bash
undefinedbash
undefined允许回环
允许回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
允许已建立连接
允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许 SSH
允许 SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许 HTTP/HTTPS
允许 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
允许特定 IP
允许特定 IP
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
允许网段
允许网段
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
拒绝其他
拒绝其他
iptables -A INPUT -j DROP
undefinediptables -A INPUT -j DROP
undefined删除规则
删除规则
bash
undefinedbash
undefined按行号删除
按行号删除
iptables -D INPUT 3
iptables -D INPUT 3
按规则删除
按规则删除
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
undefinediptables -D INPUT -p tcp --dport 80 -j ACCEPT
undefinedNAT 配置
NAT 配置
bash
undefinedbash
undefined开启转发
开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
SNAT
SNAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
DNAT 端口转发
DNAT 端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
undefinediptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
undefined保存规则
保存规则
bash
undefinedbash
undefinedDebian/Ubuntu
Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
CentOS/RHEL
CentOS/RHEL
service iptables save
undefinedservice iptables save
undefinedfirewalld
firewalld
基础命令
基础命令
bash
undefinedbash
undefined状态
状态
systemctl status firewalld
firewall-cmd --state
systemctl status firewalld
firewall-cmd --state
重载
重载
firewall-cmd --reload
firewall-cmd --reload
查看区域
查看区域
firewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
undefinedfirewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
undefined服务管理
服务管理
bash
undefinedbash
undefined查看服务
查看服务
firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --list-services
firewall-cmd --get-services
添加服务
添加服务
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
删除服务
删除服务
firewall-cmd --remove-service=http --permanent
undefinedfirewall-cmd --remove-service=http --permanent
undefined端口管理
端口管理
bash
undefinedbash
undefined查看端口
查看端口
firewall-cmd --list-ports
firewall-cmd --list-ports
添加端口
添加端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=5000-5100/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=5000-5100/tcp --permanent
删除端口
删除端口
firewall-cmd --remove-port=8080/tcp --permanent
undefinedfirewall-cmd --remove-port=8080/tcp --permanent
undefined富规则
富规则
bash
undefinedbash
undefined允许特定 IP
允许特定 IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
允许网段访问端口
允许网段访问端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
拒绝 IP
拒绝 IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject' --permanent
undefinedfirewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject' --permanent
undefinedufw (Ubuntu)
ufw (Ubuntu)
基础命令
基础命令
bash
undefinedbash
undefined启用/禁用
启用/禁用
ufw enable
ufw disable
ufw enable
ufw disable
状态
状态
ufw status
ufw status verbose
ufw status numbered
undefinedufw status
ufw status verbose
ufw status numbered
undefined规则管理
规则管理
bash
undefinedbash
undefined允许端口
允许端口
ufw allow 22
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 22
ufw allow 80/tcp
ufw allow 443/tcp
允许服务
允许服务
ufw allow ssh
ufw allow http
ufw allow ssh
ufw allow http
允许 IP
允许 IP
ufw allow from 192.168.1.100
ufw allow from 192.168.1.100
允许网段到端口
允许网段到端口
ufw allow from 192.168.1.0/24 to any port 3306
ufw allow from 192.168.1.0/24 to any port 3306
拒绝
拒绝
ufw deny 23
ufw deny 23
删除规则
删除规则
ufw delete allow 80
ufw delete 3
undefinedufw delete allow 80
ufw delete 3
undefined默认策略
默认策略
bash
ufw default deny incoming
ufw default allow outgoingbash
ufw default deny incoming
ufw default allow outgoing常见场景
常见场景
场景 1:Web 服务器
场景 1:Web 服务器
bash
undefinedbash
undefinediptables
iptables
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
firewalld
firewalld
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
undefinedfirewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
undefined场景 2:数据库服务器
场景 2:数据库服务器
bash
undefinedbash
undefined只允许应用服务器访问
只允许应用服务器访问
iptables -A INPUT -s 192.168.1.10 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
undefinediptables -A INPUT -s 192.168.1.10 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
undefined场景 3:限速防护
场景 3:限速防护
bash
undefinedbash
undefined限制 SSH 连接频率
限制 SSH 连接频率
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
undefinediptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
undefined故障排查
故障排查
| 问题 | 排查方法 |
|---|---|
| 连接被拒 | 检查规则顺序、默认策略 |
| 规则不生效 | 检查 --permanent、reload |
| NAT 不工作 | 检查 ip_forward、FORWARD 链 |
bash
undefined| 问题 | 排查方法 |
|---|---|
| 连接被拒 | 检查规则顺序、默认策略 |
| 规则不生效 | 检查 --permanent、reload |
| NAT 不工作 | 检查 ip_forward、FORWARD 链 |
bash
undefined查看计数
查看计数
iptables -L -n -v
iptables -L -n -v
日志
日志
iptables -A INPUT -j LOG --log-prefix "IPT_DROP: "
tail -f /var/log/messages | grep IPT_DROP
iptables -A INPUT -j LOG --log-prefix "IPT_DROP: "
tail -f /var/log/messages | grep IPT_DROP
连接跟踪
连接跟踪
conntrack -L
undefinedconntrack -L
undefined