Ubuntu如何配置LNMP防火墙
导读:Ubuntu 上配置 LNMP 防火墙的实用步骤 一、方案总览与原则 在 Ubuntu 上,LNMP 常用防火墙工具有:ufw(默认简化工具)、firewalld(动态管理)、iptables(底层规则)。原则是:只开放必要端口(如 80...
Ubuntu 上配置 LNMP 防火墙的实用步骤
一、方案总览与原则
- 在 Ubuntu 上,LNMP 常用防火墙工具有:ufw(默认简化工具)、firewalld(动态管理)、iptables(底层规则)。原则是:只开放必要端口(如 80/443/SSH),数据库端口 3306 默认仅本地,必要时按来源 IP 白名单开放,变更前先备份并避免误封 SSH。为降低风险,建议同时部署 Fail2Ban 做暴力破解防护。
二、使用 UFW 配置(Ubuntu 默认推荐)
- 安装与启用
- 安装:
sudo apt update & & sudo apt install ufw - 设置默认策略:
sudo ufw default deny incoming;sudo ufw default allow outgoing - 启用:
sudo ufw enable
- 安装:
- 放行 LNMP 必要端口
- Web:
sudo ufw allow 80/tcp;sudo ufw allow 443/tcp - SSH(推荐限制来源 IP):
sudo ufw allow from < 你的IP> to any port 22
- Web:
- 可选:放行数据库端口(不建议对公网开放)
sudo ufw allow 3306/tcp(更安全的做法是仅对受信网段开放)
- 查看与维护
- 状态:
sudo ufw status verbose - 重载:
sudo ufw reload;临时关闭:sudo ufw disable
- 状态:
- 提示:若通过云厂商安全组对外暴露服务,请与安全组策略保持一致,避免遗漏。
三、使用 firewalld 配置(可选)
- 安装与启动
- 安装:
sudo apt install -y firewalld - 启动与开机自启:
sudo systemctl start firewalld & & sudo systemctl enable firewalld
- 安装:
- 放行 LNMP 必要端口
- 服务方式:
sudo firewall-cmd --permanent --add-service=http;--add-service=https;--add-service=ssh - 或端口方式:
sudo firewall-cmd --permanent --add-port=80/tcp;--add-port=443/tcp;--add-port=22/tcp - 生效:
sudo firewall-cmd --reload
- 服务方式:
- 验证:
sudo firewall-cmd --list-all - 说明:firewalld 在 Ubuntu 上可用,但 ufw 更贴合 Ubuntu 的使用习惯。
四、使用 iptables 配置(进阶)
- 备份与默认策略
- 备份:
sudo iptables-save > /etc/iptables/rules.v4.bak - 默认策略:
sudo iptables -P INPUT DROP;sudo iptables -P FORWARD DROP;sudo iptables -P OUTPUT ACCEPT
- 备份:
- 放行基础与业务端口
- 回环与已建立连接:
sudo iptables -A INPUT -i lo -j ACCEPT - 已建立/相关连接:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 业务端口:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT;--dport 80 -j ACCEPT;--dport 443 -j ACCEPT - 可选 ICMP(便于排障):
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
- 回环与已建立连接:
- 持久化(Debian/Ubuntu)
- 安装持久化工具:
sudo apt install iptables-persistent -y - 保存:
sudo netfilter-persistent save(或/etc/init.d/netfilter-persistent save)
- 安装持久化工具:
- 验证:
sudo iptables -L -n --line-numbers - 警告:在远程 SSH 会话中设置默认 DROP 前,务必先放行 22 端口,避免被立即断开。
五、安全加固与验证
- 数据库访问最小化
- 防火墙侧:不建议对公网开放 3306;如确需远程管理,仅允许受信 IP:
sudo ufw allow from < 可信IP> to any port 3306 - 服务侧:在 MySQL 配置中绑定本地
bind-address = 127.0.0.1,并通过专用账户与最小权限进行远程授权(如仅授予应用库所需权限)。
- 防火墙侧:不建议对公网开放 3306;如确需远程管理,仅允许受信 IP:
- 组件层加固
- Nginx:隐藏版本号
server_tokens off;,全站跳转 HTTPS,添加安全响应头(如 X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、Content-Security-Policy、Strict-Transport-Security)。 - PHP:关闭暴露
expose_php = Off,限制危险函数disable_functions = exec,passthru,shell_exec,system,proc_open,popen,...,开启错误日志。 - 访问控制:部署 Fail2Ban 保护 SSH 与 Nginx 登录端点,降低暴力破解风险。
- Nginx:隐藏版本号
- 变更验证与回滚
- 每次变更后用
sudo ufw status或sudo firewall-cmd --list-all或sudo iptables -L -n核对规则;保留备份,必要时回滚。
- 每次变更后用
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何配置LNMP防火墙
本文地址: https://pptw.com/jishu/784272.html
