117.info
人生若只如初见

LNMP中如何配置防火墙

在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
    

未经允许不得转载 » 本文链接:https://www.117.info/ask/fea9dAzsNAgRUB1E.html

推荐文章

  • 如何使用GitLab进行项目版本管理

    使用GitLab进行项目版本管理主要包括以下几个步骤:
    安装和配置GitLab Windows/Mac用户: 访问GitLab官网。
    根据系统选择相应的安装方式(Windows用户...

  • Linux hostname能包含特殊字符吗

    在Linux系统中,主机名(hostname)通常是由字母、数字、连字符(-)和点(.)组成的。根据Linux系统的规范,主机名不能包含以下特殊字符: 空格
    制表符(T...

  • 在Linux中如何使用nohup命令进行远程服务器操作

    nohup(no hang-up)命令用于在Linux中使进程忽略挂起(SIGHUP)信号,从而在用户退出登录后继续运行 打开终端。 使用SSH连接到远程服务器。例如: ssh 用户名@服...

  • GitLab在Linux上怎样部署

    在Linux上部署GitLab可以通过多种方式进行,以下是使用Docker Compose进行快速搭建的步骤: 安装Docker和Docker Compose:
    在开始之前,请确保你的系统上已...

  • Debian ifconfig检查网络状态命令

    在Debian系统中,ifconfig命令用于显示和配置网络接口的参数。要使用ifconfig检查网络状态,请按照以下步骤操作: 打开终端(快捷键:Ctrl + Alt + T)。 输入以...

  • ubuntu phpstorm插件怎么装

    在Ubuntu上安装PhpStorm插件通常涉及以下几个步骤: 安装PhpStorm:如果你还没有安装PhpStorm,你可以从JetBrains的官方网站下载并安装它。
    启动PhpStorm:安...

  • 如何检查CentOS HDFS配置是否正确

    要检查CentOS上的HDFS配置是否正确,可以按照以下步骤进行:
    检查HDFS配置文件 core-site.xml:确认fs.defaultFS和hadoop.tmp.dir等配置项是否正确设置。

  • 怎样检查centos php配置是否正确

    要检查CentOS上的PHP配置是否正确,可以按照以下步骤进行:
    1. 确认PHP版本
    首先,确认你正在使用的PHP版本。在命令行中输入以下命令来查看PHP版本:<...