付费资源

在当今网络环境中,保护服务器安全至关重要。Linux系统自带的防火墙工具能够有效阻止未经授权的访问,同时允许合法流量通过。无论你是个人用户还是企业管理员,掌握防火墙配置技能都能显著提升系统安全性。
Linux系统主要使用两种防火墙工具:iptables和firewalld。iptables是传统的防火墙解决方案,直接与内核的netfilter框架交互。而firewalld则是较新的动态防火墙管理器,提供了更友好的用户界面和更灵活的配置方式。
大多数现代Linux发行版(如CentOS/RHEL 7+、Fedora、Ubuntu等)默认使用firewalld,但了解iptables仍然很有价值,特别是在需要处理旧系统或进行深度定制时。
首先确认firewalld服务是否运行:
sudo systemctl status firewalld
如果服务未运行,可以启动并设置开机自启:
sudo systemctl start firewalld
sudo systemctl enable firewalld
firewalld使用”区域”概念来管理不同网络环境的规则。常见区域包括:
查看当前默认区域:
sudo firewall-cmd --get-default-zone
更改默认区域:
sudo firewall-cmd --set-default-zone=home
允许HTTP服务(端口80):
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
直接开放特定端口(如8080):
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
只允许192.168.1.100访问SSH服务:
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
sudo firewall-cmd --reload
虽然firewalld更现代,但iptables仍然是许多管理员的首选工具,特别是在需要精细控制时。
sudo iptables -L -n -v
允许已建立的连接和回环接口:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
允许SSH连接(端口22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
设置默认策略为拒绝所有输入连接:
sudo iptables -P INPUT DROP
在大多数发行版上,iptables规则重启后会丢失,需要安装iptables-persistent来保存:
sudo apt install iptables-persistent # Debian/Ubuntu
sudo netfilter-persistent save
对于RHEL/CentOS:
sudo service iptables save
限制同一IP的连接数:
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
将外部8080端口转发到内部80端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
记录被拒绝的连接:
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: " --log-level 4
无法连接服务器
netstat -tulnp
)规则不生效
性能问题
iptables-save
检查规则效率掌握Linux防火墙配置是每个系统管理员和开发者的必备技能。无论是简单的端口开放还是复杂的安全策略,理解这些工具的工作原理都能帮助你更好地保护系统安全。建议在实际操作前先在测试环境练习,避免影响生产系统。随着经验的积累,你将能够根据具体需求定制更精细的防火墙策略。