当前位置:首页>Linux>Linux防火墙学习指南

Linux防火墙学习指南

  • 2026-09-03 16:44:06
Linux防火墙学习指南

       使用环境一般在内网没有防火墙设备保护的情况可以使用linux自带防火墙来屏蔽其它网络扫描

文件说明

文件类型适用系统说明
firewall-config.shShell 脚本所有 Linuxiptables 配置脚本
nftables-config.nftnftables 配置RHEL 8+/Debian 10+/Ubuntu 20.04+现代防火墙配置
firewall-README.md文档-本说明文档

🔥 iptables 配置

使用方法

# 1. 添加执行权限chmod +x /tmp/documents/firewall-config.sh# 2. 执行脚本(需要 root 权限)sudo /tmp/documents/firewall-config.sh# 3. 查看规则sudo iptables -L -n -v# 4. 保存规则sudo iptables-save > /etc/iptables/rules.v4

配置说明

默认策略:

  • INPUT: DROP(拒绝所有入站)

  • OUTPUT: ACCEPT(允许所有出站)

  • FORWARD: DROP(拒绝转发)

允许的端口:

端口协议说明
22TCPSSH(带暴力破解防护)
80TCPHTTP
443TCPHTTPS
8080TCPAPI(可选)
3306TCPMySQL(仅内网)

安全特性:

  • ✅ SSH 连接频率限制(60 秒内最多 4 次)

  • ✅ SYN Flood 防护

  • ✅ 端口扫描防护

  • ✅ ICMP 洪水防护

  • ✅ 连接状态跟踪

  • ✅ 日志记录





🛡️ nftables 配置

使用方法

# 1. 检查 nftables 状态sudo systemctl status nftables# 2. 应用配置sudo nft -f /tmp/documents/nftables-config.nft# 3. 查看规则sudo nft list ruleset# 4. 保存配置sudo nft list ruleset > /etc/nftables.conf# 5. 启用服务sudo systemctl enable nftablessudo systemctl start nftables

配置特点

优势(相比 iptables):

  • 更简洁的语法

  • 更好的性能

  • 支持 IPv4/IPv6 统一配置

  • 内置集合和映射

  • 原子规则更新

安全特性:

  • ✅ IP 白名单/黑名单

  • ✅ SSH 速率限制

  • ✅ SYN Flood 防护

  • ✅ 端口扫描防护

  • ✅ 连接跟踪

  • ✅ 限制日志量





📋 配置自定义

修改端口

编辑脚本/配置文件,修改以下变量:

# iptables (firewall-config.sh)SSH_PORT="22"HTTP_PORT="80"HTTPS_PORT="443"API_PORT="8080"DB_PORT="3306"INTERNAL_NETWORK="192.168.1.0/24"
# nftables (nftables-config.nft)define ssh_port = 22define http_port = 80define https_port = 443define api_port = 8080define db_port = 3306define internal_net = "192.168.1.0/24"

添加 IP 白名单

nftables:

set ip_whitelist {    type ipv4_addr    elements = {         192.168.1.100,        10.0.0.50    }}
iptables:
iptables -A INPUT -s 192.168.1.100 -j ACCEPT

🔧 常用命令

iptables

# 查看规则iptables -L -n -viptables -L -n -v --line-numbers# 查看 NAT 规则iptables -t nat -L -n -v# 删除规则iptables -D INPUT <行号># 清空规则iptables -F# 保存规则iptables-save > /etc/iptables/rules.v4# 恢复规则iptables-restore < /etc/iptables/rules.v4# 查看连接跟踪conntrack -L# 实时监控watch -n1 'iptables -L -n -v | head -20'

nftables

# 查看规则nft list rulesetnft list ruleset -a  # 显示句柄# 查看特定表nft list table inet filter# 删除规则nft delete rule inet filter input handle <句柄># 清空规则nft flush ruleset# 检查配置语法nft -c -f /etc/nftables.conf# 查看集合内容nft list set inet filter ip_whitelist# 添加 IP 到黑名单nft add element inet filter ip_blacklist { 1.2.3.4 }# 实时监控watch -n1 'nft list ruleset | head -50'



🚨 故障排除

无法 SSH 连接

# 1. 检查 SSH 规则iptables -L INPUT -n | grep 22# 2. 临时允许所有 SSH(调试用)iptables -I INPUT -p tcp --dport 22 -j ACCEPT# 3. 检查 SSH 服务状态systemctl status sshd# 4. 查看日志journalctl -u sshd -f

规则不生效

# 1. 检查默认策略iptables -L -n# 2. 检查是否有其他规则冲突iptables -L -n -v --line-numbers# 3. 检查服务状态systemctl status iptablessystemctl status nftables# 4. 查看内核日志dmesg | grep -i firewalljournalctl -k | grep -i drop

恢复访问(如果被锁在外面)

方法 1:通过控制台访问

  • 使用云服务商的控制台/VNC

  • 物理访问服务器

方法 2:定时清空规则(危险!)

# 在执行新规则前,设置定时清空(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/sbin/iptables -F") | crontab -# 应用新规则后记得删除crontab -r



📊 性能对比

特性iptablesnftables
语法复杂简洁
性能较好更好
IPv6 支持独立表统一配置
规则更新逐条原子
学习曲线陡峭中等
推荐场景旧系统新系统



🎯 最佳实践

  1. 先测试后应用

    • 在测试环境验证规则

    • 使用 iptables-apply 或定时恢复

  2. 保持规则简洁

    • 定期清理无用规则

    • 使用注释说明规则用途

  3. 启用日志但限制量

    • 使用 limit 模块限制日志频率

    • 定期查看日志分析攻击

  4. 备份配置

    • 保存配置到版本控制

    • 定期备份到远程位置

  5. 监控告警

    • 监控防火墙日志

    • 设置异常流量告警




                                ***欢迎大家评论***

最新文章

随机文章