防火墙是保护LNMP(Linux+Nginx+MySQL+PHP)服务器免受非法访问的关键组件。以下分系统介绍常用防火墙工具(firewalld/iptables、UFW)的配置方法,覆盖基础规则设置与安全优化。
firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态规则更新,无需重启服务。
sudo systemctl start firewalld
sudo systemctl enable firewalld
--permanent表示永久生效,--reload使配置立即生效):sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
输出应包含ports: 80/tcp 443/tcp 3306/tcp。iptables是Linux经典防火墙工具,需手动配置规则,适合习惯命令行的用户。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables-services包:sudo yum install iptables-services -y
sudo service iptables save
sudo systemctl restart iptables
sudo iptables -L -n --line-numbers
UFW是Ubuntu默认的简化防火墙工具,命令直观,适合新手。
sudo apt update
sudo apt install ufw -y
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
'Nginx Full'一键添加80/443端口):sudo ufw allow 'Nginx Full'
<remote_ip>为具体IP):sudo ufw allow mysql # 允许本地访问
sudo ufw allow from <remote_ip> to any port 3306 # 允许指定IP远程访问
sudo ufw allow ssh
sudo ufw status verbose
sudo ufw reload
以上步骤覆盖了LNMP服务器防火墙的基本配置,根据实际业务需求(如是否需要远程访问MySQL、是否使用HTTPS等),可灵活调整规则。配置前请确保已备份重要数据,避免误操作导致服务器无法访问。