在Linux LNMP(Linux, Nginx, MySQL, PHP)环境中配置防火墙通常涉及使用 firewalld
或 iptables
。以下是使用这两种方法在CentOS 7及以上版本中配置防火墙的详细步骤:
关闭firewalld(如果需要永久关闭):
sudo systemctl stop firewalld
sudo systemctl disable firewalld
安装iptables(如果尚未安装):
sudo yum install -y iptables
配置iptables规则:
sudo vi /etc/sysconfig/iptables
在文件的末尾添加以下内容,以允许80端口(Nginx)和3306端口(MySQL)通过防火墙:
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重启firewalld服务:
sudo systemctl restart firewalld
验证防火墙状态:
sudo firewall-cmd --state
备份原有的iptables配置:
sudo cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
编辑iptables配置文件:
sudo vi /etc/sysconfig/iptables
在文件的末尾添加以下内容,以允许80端口(Nginx)和3306端口(MySQL)通过防火墙:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存并退出编辑器。
重启iptables服务以应用更改:
sudo /etc/init.d/iptables restart
安装和启用ufw:
sudo apt update
sudo apt install ufw
sudo ufw enable
允许必要的端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
sudo ufw allow 9000/tcp
(如果使用PHP-FPM)允许SSH端口(仅允许特定IP地址访问SSH端口22):
sudo ufw allow from 你的IP地址 to any port 22
查看防火墙状态:
sudo ufw status
禁用防火墙(可选):
sudo ufw disable
重新加载防火墙规则(可选):
sudo ufw reload
通过以上步骤,你可以在LNMP环境中配置防火墙,确保只有指定的端口(如80和3306)对外开放,从而提高服务器的安全性。