服务器测评网
我们一直在努力

iptables实用脚本怎么用?新手必看配置教程

防火墙初始化与默认策略设置

在开始配置iptables之前,首先需要确保防火墙服务已启动,并清空现有的规则链,避免残留规则对配置造成干扰,通过执行iptables -F可以清空所有链中的规则,iptables -X删除用户自定义链,iptables -Z将所有链的计数器归零,设置默认策略为“拒绝所有输入,允许所有输出和转发”,这一步能有效防止未经授权的访问,同时保证内部网络对外部网络的正常访问,具体命令为:iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT,对于需要作为路由或网关的服务器,可根据实际需求调整FORWARD策略,例如设置为DROP并添加相应的转发规则。

iptables实用脚本怎么用?新手必看配置教程

允许本地回环与已建立连接

本地回环接口(lo)是系统内部通信的关键,必须允许其所有流量通过,否则可能导致本地服务异常,执行iptables -A INPUT -i lo -j ACCEPT即可实现,对于已建立的连接和相关的应答数据包,应无条件放行,以避免影响正常通信的效率,通过iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT可以匹配所有已建立和与已建立连接相关的数据包,确保客户端与服务器之间的双向通信不受防火墙阻断。

开放常用服务端口

根据服务器提供的服务,需要开放对应的端口,Web服务通常使用80(HTTP)和443(HTTPS)端口,SSH远程管理默认使用22端口,数据库服务如MySQL默认3306端口,Redis默认6379端口等,以开放SSH端口为例,执行iptables -A INPUT -p tcp --dport 22 -j ACCEPT,并建议限制来源IP,仅允许特定IP访问,如iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT,提升安全性,对于Web服务,可使用iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT,若服务器提供邮件服务,还需开放25(SMTP)、110(POP3)、143(IMAP)等端口。

防止常见网络攻击

为增强服务器安全性,需配置规则抵御常见的网络攻击,防止ICMP洪水攻击,可限制ICMP包的速率,执行iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT,并拒绝多余的ICMP请求:iptables -A INPUT -p icmp -j DROP,对于端口扫描攻击,可通过限制同一IP短时间内对多个端口的访问频率来防护,如iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m recent --setiptables -A INPUT -p tcp -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP,表示每分钟同一IP的新连接请求超过10次则拒绝,还可禁用不必要的TCP标志位,如iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP(防止NULL扫描)和iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP(防止SYN/FIN扫描)。

iptables实用脚本怎么用?新手必看配置教程

端口转发与NAT配置

若需将服务器的某个端口转发到内网的其他设备,可使用iptables的端口转发功能,将服务器的8080端口转发到内网IP为192.168.1.200的80端口,需先开启IP转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward,然后添加规则iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.200:80,并在POSTROUTING链中添加MASQUERADE规则:iptables -t nat -A POSTROUTING -j MASQUERADE,对于使用NAT上网的内网服务器,可通过iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE(eth0为外网网卡)实现内网主机通过服务器共享上网。

日志记录与规则持久化

为便于排查问题,可对被拒绝的连接添加日志记录,执行iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7,日志将写入/var/log/messages文件,但需注意日志量过大可能影响系统性能,建议合理限制日志频率,CentOS/RHEL系统可通过service iptables save保存规则,使其重启后仍然生效;Debian/Ubuntu系统则需安装iptables-persistent包,并执行netfilter-persistent save实现规则持久化。

清理与优化建议

配置完成后,可通过iptables -L -n -v查看规则链的匹配情况,删除不必要的规则以提升防火墙效率,若某规则未被匹配到任何数据包,可考虑移除,建议定期审查规则列表,根据业务变化调整端口开放策略和访问控制,对于生产环境,建议先在测试环境验证规则无误后再部署到服务器,避免因配置错误导致服务中断,通过以上步骤,可构建一个安全、高效的iptables防火墙策略,有效保护服务器的网络安全。

iptables实用脚本怎么用?新手必看配置教程

赞(0)
未经允许不得转载:好主机测评网 » iptables实用脚本怎么用?新手必看配置教程