linux

LNMP中如何配置防火墙

小樊
46
2025-03-24 04:35:59
栏目: 编程语言

在LNMP(Linux, Nginx, MySQL/MariaDB, PHP)环境中配置防火墙通常涉及以下几个步骤。以下是一个基本的指南,适用于大多数Linux发行版,如CentOS或Ubuntu。

使用iptables配置防火墙

  1. 检查防火墙状态

    sudo iptables -L
    
  2. 设置默认策略

    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    
  3. 配置允许的入站规则

    • 允许HTTP(端口80)和HTTPS(端口443)流量:

      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      
    • 允许已建立的连接和相关连接:

      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
      
  4. 允许特定端口的流量(例如,Nginx的80和443端口,MySQL的3306端口):

    sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
    sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    
  5. 保存规则

    sudo service iptables save
    
  6. 重启防火墙使配置生效

    sudo systemctl restart iptables
    

使用firewalld配置防火墙(适用于CentOS 7及以上版本)

  1. 停止并禁用firewalld

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  2. 安装iptables(如果需要):

    sudo yum install iptables
    
  3. 配置iptables规则

    编辑/etc/sysconfig/iptables文件,添加允许HTTP、HTTPS和MySQL端口的规则:

    vi /etc/sysconfig/iptables
    

    添加以下内容:

    *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 443 -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
    
  4. 重启防火墙

    sudo systemctl restart iptables
    

使用ngx_lua_waf配置应用防火墙

  1. 安装ngx_lua_waf

    wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip
    unzip ngx_lua_waf.zip
    mv ngx_lua_waf-master /usr/local/nginx/conf/waf
    
  2. 配置nginx

    编辑nginx.conf文件,添加以下内容:

    http {
        lua_package_path "/usr/local/nginx/conf/waf/?.lua";
        lua_shared_dict limit 10m;
    
        init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
        access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
    
        server {
            listen 80;
            server_name your_domain_or_ip;
    
            location / {
                # 配置你的规则
            }
        }
    }
    
  3. 重启nginx

    sudo service nginx reload
    

0
看了该问题的人还看了