Linux防火墙防止服务被滥用的核心方法
默认拒绝所有未明确允许的流量是防火墙配置的黄金法则,可有效防止未授权的服务访问。具体操作如下:
INPUT(入站)、FORWARD(转发)链的默认策略设为DROP,仅允许必要的流量通过;sudo iptables -P INPUT DROP && sudo iptables -P FORWARD DROP。通过限制可访问服务的IP范围和端口,减少不必要的暴露:
192.168.1.0/24访问MySQL(3306端口):sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT,随后拒绝其他IP的访问;sudo iptables -A INPUT -p tcp --dport 3306 -j DROP;sudo iptables -A INPUT -p icmp -j DROP(需谨慎,可能影响排错)。通过限制单个IP的连接频率和并发数,避免服务被大量无效请求耗尽资源:
limit模块限制单位时间内的连接次数(如每分钟最多允许5次SSH连接):sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/minute -j ACCEPT,超出限制的连接将被丢弃;connlimit模块限制单个IP的最大并发连接数(如SSH最大并发5个):sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT。TCP Wrappers通过/etc/hosts.allow和/etc/hosts.deny文件,基于“服务+客户端IP”的组合限制访问,适用于支持libwrap的服务(如SSH、vsftpd):
192.168.1.0/24网段访问SSH,拒绝其他所有IP:
/etc/hosts.allow:sshd: 192.168.1.0/255.255.255.0;/etc/hosts.deny:sshd: ALL。开启防火墙日志记录,便于及时发现和分析滥用行为(如高频连接、非法IP访问):
sudo iptables -A INPUT -j LOG --log-prefix "Firewall: ";tail -f /var/log/syslog(Ubuntu)或tail -f /var/log/messages(CentOS)实时监控日志,结合grep筛选异常信息(如“DROP”动作的记录)。fail2ban是一款基于日志的IP封禁工具,可自动检测异常行为(如SSH多次登录失败、Web高频请求),并将恶意IP添加到防火墙规则中封禁(默认封禁10分钟):
sudo apt install fail2ban(Ubuntu)或sudo yum install fail2ban(CentOS);/etc/fail2ban/jail.local,启用SSH防护([sshd]部分),设置maxretry(最大尝试次数,如3次)、bantime(封禁时间,如10分钟);sudo systemctl start fail2ban && sudo systemctl enable fail2ban。通过以上方法的组合,Linux防火墙可有效防止服务被滥用,构建起“边界防护+流量管控+异常响应”的立体防御体系。需注意的是,规则应根据业务需求定期调整(如新增服务时开放对应端口),避免因规则过时导致的安全漏洞。