LAMP中如何设置防火墙规则
在LAMP环境中配置防火墙,需根据系统选择iptables或firewalld工具。核心是放行SSH的22端口、HTTP的80端口、HTTPS的443端口以及MySQL的3306端口,并将默认规则设为DROP(丢弃)。务必保存配置以保证持久化,精准开放必要端口,避免多余风险。建议关闭其他所有端口以增强安全。
在LAMP环境里设置防火墙,这事儿说难不难,说简单也不简单。很多人一上来就想着把所有端口都封了,结果网站打不开,后台也进不去,白白折腾半天。今天咱们就捋一捋,把这个防火墙规则讲清楚。

先问个关键问题:你手头的Linux系统到底用的是iptables还是firewalld?这取决于发行版。Debian/Ubuntu老版本多用iptables,CentOS/RHEL 7以上则默认走firewalld。不过别慌,两种方式的思路是相通的——无非就是决定:谁该进来,谁该滚蛋。
用iptables手动控场
iptables是Linux世界的老牌防火墙工具,适合那些喜欢把规则一条条写在明面上的用户。先看看当前哪些规则在生效:
sudo iptables -L -n
好,接下来放行最关键的服务。SSH(端口22)得先放行,不然你连管理后台都进不去了:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
然后是Web服务。HTTP(端口80)和HTTPS(端口443)一个都不能少,除非你打算让人访问时只能看见一片空白:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
如果你的应用需要直接连接数据库,MySQL(默认端口3306)也得放行。但注意:数据库访问最好限定来源IP,不然等于把数据库大门敞开:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
最后,把默认规则设为DROP——也就是除了上面明确允许的,其他所有入站流量一概拒绝:
sudo iptables -P INPUT DROP
规则设完别忘了保存,不然重启后一切归零:
- Debian/Ubuntu:
sudo iptables-sa ve > /etc/iptables/rules.v4 - CentOS/RHEL:
sudo service iptables sa ve
用firewalld优雅管理
如果你更喜欢基于区域的规则管理——比如“内部网络宽一点,外部网络严一点”——firewalld会更顺手。先看看它是否在运行:
sudo firewall-cmd --state
如果没启动,把它拉起来:
sudo systemctl start firewalld
然后逐一放行服务。SSH、HTTP、HTTPS这些常见服务可以直接用服务名:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
MySQL没有对应的firewalld服务定义,得直接开端口:
sudo firewall-cmd --permanent --add-port=3306/tcp
所有规则加好之后,必须reload一下才能让配置生效:
sudo firewall-cmd --reload
最后确认一下规则列表,看看该开的端口是否都在:
sudo firewall-cmd --list-all
几个实用提醒
- 别图省事。 规则越少越精准越好。每多开一个端口,就多一个潜在风险点。不用的服务不要留。
- 持久化是底线。 无论用iptables还是firewalld,都记得加上
--permanent或保存配置,否则系统一重启,你之前设的全白干。 - 测试环境先跑一遍。 谁也不想直接在生产服务器上把自己锁在门外。先开个测试环境,规则验证清楚了,再上生产。
掌握这些,你的LAMP服务器就相当于穿上了一层防护甲。剩下的,就是根据业务需要,不断微调和迭代规则了。


































