Linux防火墙限制访问的高效做法
一、原则与顺序
二、iptables 实操模板
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -s 203.0.113.0/24 -j DROP
ipset create blacklist hash:ip
ipset add blacklist 203.0.113.10
iptables -I INPUT -m set --match-set blacklist src -j DROP
iptables-save > /etc/iptables/rules.v4
# 或 Debian/Ubuntu 使用 iptables-persistent
iptables -L -n -v --line-numbers
iptables -D INPUT <编号> # 删除指定规则
以上要点涵盖:规则顺序、状态匹配、白名单/黑名单、网段限制、ipset 批量管理与持久化。
三、firewalld 实操模板
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --get-default-zone
firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept'
firewall-cmd --reload
firewall-cmd --permanent --new-zone=ops
firewall-cmd --permanent --zone=ops --add-source=192.168.1.100
firewall-cmd --permanent --zone=ops --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all --zone=ops
firewall-cmd --list-rich-rules --zone=public
firewall-cmd --query-port=8080/tcp
以上要点涵盖:富规则白名单、区域绑定源IP、优先级与验证。
四、进阶与常见陷阱
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" protocol value="icmp" reject'
firewall-cmd --reload
list/query 命令逐项验证;准备回滚脚本或快照。