温馨提示×

LNMP服务器如何设置防火墙

小樊
47
2025-11-02 03:10:31
栏目: 云计算

LNMP服务器防火墙设置指南(以CentOS 7+、Ubuntu为例)

防火墙是保护LNMP(Linux+Nginx+MySQL+PHP)服务器免受非法访问的关键组件。以下分系统介绍常用防火墙工具(firewalld/iptables、UFW)的配置方法,覆盖基础规则设置与安全优化。

一、CentOS 7+系统:使用firewalld(推荐)

firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态规则更新,无需重启服务。

  1. 启动并设置firewalld开机自启
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    
  2. 添加必要端口规则
    LNMP环境需开放以下端口:
    • HTTP(80端口):Nginx默认监听端口,用于普通网页访问;
    • HTTPS(443端口):Nginx SSL加密端口,用于安全网页访问;
    • MySQL(3306端口):数据库默认端口,用于本地或授权远程访问(需谨慎开放远程访问)。
      使用以下命令添加规则(--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
    
  3. 验证规则
    查看当前开放的端口与服务:
    sudo firewall-cmd --list-all
    
    输出应包含ports: 80/tcp 443/tcp 3306/tcp

二、CentOS 7+系统:使用iptables(传统命令行工具)

iptables是Linux经典防火墙工具,需手动配置规则,适合习惯命令行的用户。

  1. 设置默认策略
    默认拒绝所有入站流量,允许所有出站流量(确保服务器自身能访问外网):
    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    
  2. 添加允许规则
    • 允许已建立的连接(避免中断现有会话):
      sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      
    • 允许ICMP(ping请求):
      sudo iptables -A INPUT -p icmp -j ACCEPT
      
    • 允许本地回环接口(lo):
      sudo iptables -A INPUT -i lo -j ACCEPT
      
    • 允许HTTP/HTTPS/MySQL端口:
      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
      
  3. 保存并重启iptables
    • CentOS 7+需安装iptables-services包:
      sudo yum install iptables-services -y
      
    • 保存规则并重启服务:
      sudo service iptables save
      sudo systemctl restart iptables
      
  4. 验证规则
    查看当前iptables规则:
    sudo iptables -L -n --line-numbers
    

三、Ubuntu系统:使用UFW(Uncomplicated Firewall)

UFW是Ubuntu默认的简化防火墙工具,命令直观,适合新手。

  1. 安装并启用UFW
    sudo apt update
    sudo apt install ufw -y
    sudo ufw enable
    
  2. 设置默认策略
    默认拒绝所有入站流量,允许所有出站流量:
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
  3. 添加必要端口规则
    • 允许HTTP/HTTPS流量(可通过'Nginx Full'一键添加80/443端口):
      sudo ufw allow 'Nginx Full'
      
    • 允许MySQL端口(若需远程访问,需替换<remote_ip>为具体IP):
      sudo ufw allow mysql  # 允许本地访问
      sudo ufw allow from <remote_ip> to any port 3306  # 允许指定IP远程访问
      
    • 允许SSH端口(避免被锁在外面):
      sudo ufw allow ssh
      
  4. 查看与验证规则
    • 查看当前规则:
      sudo ufw status verbose
      
    • 重新加载规则(修改后需执行):
      sudo ufw reload
      

四、安全优化建议

  1. 限制远程访问:仅允许可信IP访问MySQL(3306端口)和SSH(22端口),避免暴露在公网。
  2. 修改SSH端口:将默认的22端口改为非标准端口(如2222),降低暴力破解风险。
  3. 定期更新规则:根据业务需求调整防火墙规则,删除不必要的端口开放。
  4. 结合SELinux:若系统启用SELinux,需配置正确的SELinux策略,避免与防火墙冲突。

以上步骤覆盖了LNMP服务器防火墙的基本配置,根据实际业务需求(如是否需要远程访问MySQL、是否使用HTTPS等),可灵活调整规则。配置前请确保已备份重要数据,避免误操作导致服务器无法访问。

0