插件窝 干货文章 如何配置防火墙保护Linux服务器免受入侵

如何配置防火墙保护Linux服务器免受入侵

iptables bash 端口 firewall 352    来源:    2025-04-12

配置防火墙是保护Linux服务器安全的关键步骤。以下是基于iptables/nftables和firewalld的详细方案,适用于大多数Linux发行版:

一、基础防火墙配置(iptables/nftables方案)

  1. 清空现有规则并设置默认策略
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
  1. 允许本地回环和已建立连接
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  1. 开放必要端口(示例)
# SSH (建议修改默认22端口)
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

# HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许ICMP (ping)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  1. 防御常见攻击
# 防止SYN洪水攻击
iptables -N SYN-FLOOD
iptables -A SYN-FLOOD -m limit --limit 10/second --limit-burst 20 -j RETURN
iptables -A SYN-FLOOD -j DROP
iptables -A INPUT -p tcp --syn -j SYN-FLOOD

# 阻止非法包
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
  1. 保存规则(根据发行版选择)
# Debian/Ubuntu
iptables-save > /etc/iptables.rules

# RHEL/CentOS
service iptables save

二、firewalld方案(RHEL/CentOS/Fedora)

  1. 基本配置
systemctl enable firewalld
systemctl start firewalld

# 设置默认zone
firewall-cmd --set-default-zone=public
  1. 开放服务端口
# SSH (修改为你的端口)
firewall-cmd --permanent --add-service=ssh
# 或指定端口
firewall-cmd --permanent --add-port=2222/tcp

# Web服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 重新加载
firewall-cmd --reload
  1. 高级防护设置
# 启用ICMP限制
firewall-cmd --permanent --add-icmp-block-inversion

# 限制连接速率
firewall-cmd --permanent --add-rich-rule='rule service name=ssh limit value=5/m accept'

三、增强安全措施

  1. 启用SYN Cookie防护
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  1. 禁用ICMP重定向
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
  1. 日志记录(在iptables中添加)
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 5/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

四、自动化维护

  1. 创建定时规则备份
# 每周备份iptables规则
0 3 * * 0 root iptables-save > /etc/iptables.backup.$(date +\%Y\%m\%d)
  1. 安装入侵检测系统(可选)
# 例如fail2ban
apt-get install fail2ban  # Debian/Ubuntu
yum install fail2ban      # RHEL/CentOS

五、验证配置

  1. 检查生效规则
iptables -L -n -v  # iptables
firewall-cmd --list-all  # firewalld
  1. 端口扫描测试
nmap -sS -p- 服务器IP

注意事项:

  1. 实施前确保有备用SSH连接方式
  2. 生产环境建议先在测试服务器验证
  3. 根据实际服务需求调整端口开放策略
  4. 定期审查防火墙日志(通常位于/var/log/messages或/var/log/syslog)

进阶建议: - 考虑配置基于区域的访问控制(如仅允许特定IP段访问管理端口) - 对于Web服务器,可结合TCP Wrappers(/etc/hosts.allow/deny)增强防护 - 高安全环境建议部署HIDS如OSSEC

以上配置可根据具体发行版(Ubuntu/Debian/RHEL/CentOS等)和系统版本进行适当调整。