nginx防火墙命令有哪些常用操作?

在Linux服务器管理中,Nginx作为高性能的Web服务器和反向代理,其安全性至关重要,防火墙作为系统安全的第一道防线,正确配置防火墙规则可以有效保护Nginx服务免受未授权访问和恶意攻击,以下将详细介绍与Nginx相关的防火墙命令,涵盖不同防火墙工具(如iptables、firewalld、ufw)的使用方法,以及常见的安全配置场景。

nginx防火墙命令
(图片来源网络,侵删)

iptables防火墙与Nginx配置

iptables是Linux系统中传统的防火墙工具,基于内核的netfilter框架,通过规则链控制数据包的流动,在CentOS 7之前的版本或自定义内核环境中,iptables是主流选择。

查看当前iptables规则

sudo iptables -L -n -v
  • -L:列出所有规则链
  • -n:以数字形式显示IP和端口,避免DNS解析延迟
  • -v:显示详细信息,如数据包和字节数

允许Nginx相关端口

Nginx默认使用80(HTTP)和443(HTTPS)端口,需明确放行:

# 允许HTTP端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许HTTPS端口
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  • -A INPUT:追加规则到INPUT链(入站规则)
  • -p tcp:指定TCP协议
  • --dport:目标端口
  • -j ACCEPT:接受数据包

限制特定IP访问

仅允许信任的IP访问Nginx服务:

sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -s 192.168.1.100 -j ACCEPT
  • -s:指定源IP地址

拒绝其他未授权访问

在放行必要端口后,默认拒绝其他对80和443端口的访问:

nginx防火墙命令
(图片来源网络,侵删)
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP

保存iptables规则

不同Linux发行版的保存命令不同:

  • CentOS 6/7:sudo service iptables save
  • Debian/Ubuntu:sudo iptables-save > /etc/iptables/rules.v4

iptables规则示例表格

命令功能说明
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT允许HTTP流量
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT允许HTTPS流量
sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT允许特定网段访问HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP拒绝其他HTTPS访问

firewalld防火墙与Nginx配置

firewalld是CentOS 7/RHEL 7及之后版本默认的动态防火墙管理工具,支持区域(Zone)和运行时/永久规则配置。

启动并启用firewalld

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看firewalld状态和区域

sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones

放行Nginx端口

# 永久放行HTTP端口
sudo firewall-cmd --permanent --add-service=http
# 永久放行HTTPS端口
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙使规则生效
sudo firewall-cmd --reload
  • --permanent:表示规则永久生效,需重载后生效
  • --add-service:通过预定义的服务名称添加规则(http对应80端口,https对应443端口)

限制IP访问

# 添加信任IP到public区域
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="http" accept'
sudo firewall-cmd --reload

查看已添加的服务

sudo firewall-cmd --permanent --list-services

firewalld常用命令表格

命令功能说明
sudo firewall-cmd --permanent --add-service=http永久放行HTTP服务
sudo firewall-cmd --reload重载防火墙规则
sudo firewall-cmd --remove-service=http移除HTTP服务规则
sudo firewall-cmd --get-services查看所有预定义服务

ufw防火墙与Nginx配置

ufw(Uncomplicated Firewall)是Ubuntu/Debian系统中简单易用的防火墙工具,通过ufw命令管理规则。

启用ufw

sudo ufw enable
sudo ufw default deny incoming  # 默认拒绝入站
sudo ufw default allow outgoing # 默认允许出站

放行Nginx端口

# 允许HTTP端口
sudo ufw allow 80/tcp
# 允许HTTPS端口
sudo ufw allow 443/tcp
# 或通过服务名称放行
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'

限制IP访问

sudo ufw allow from 192.168.1.100 to any port 80 proto tcp
sudo ufw allow from 192.168.1.100 to any port 443 proto tcp

查看ufw规则

sudo ufw status verbose

ufw规则示例表格

命令功能说明
sudo ufw allow 80/tcp允许HTTP流量
sudo ufw allow 'Nginx Full'同时放行HTTP和HTTPS
sudo ufw deny from 192.168.1.0/24拒绝特定网段访问
sudo ufw delete allow 80/tcp删除HTTP放行规则

高级安全配置建议

  1. 限制访问频率:结合fail2ban工具,对频繁访问Nginx的IP进行封禁。
  2. 隐藏Nginx版本:在nginx.conf中配置server_tokens off;,避免泄露版本信息。
  3. 使用SSL/TLS:强制HTTPS访问,配置Let’s Encrypt免费证书。
  4. 定期更新:保持Nginx和系统防火墙工具的版本更新,修复安全漏洞。

相关问答FAQs

问题1:如何检查防火墙是否正确放行了Nginx端口?
解答:可以通过以下命令验证:

nginx防火墙命令
(图片来源网络,侵删)
  • 使用telnetnc测试端口连通性:telnet your_server_ip 80nc -zv your_server_ip 443
  • 查看防火墙日志:sudo iptables -L -v -n(iptables)或sudo journalctl -u firewalld(firewalld)。
  • 使用ss命令检查端口监听状态:sudo ss -tulnp | grep nginx

问题2:修改防火墙规则后,如何确保规则永久生效?
解答:不同防火墙工具的持久化方式不同:

  • iptables:需手动保存规则,如CentOS中使用service iptables save,Debian中通过iptables-save > /etc/iptables/rules.v4
  • firewalld:添加规则时使用--permanent选项,并通过firewall-cmd --reload重载。
  • ufw:规则默认永久生效,启用ufw后无需额外操作,若需修改规则,直接使用ufw allow/delete命令并重启ufwsudo ufw disable && sudo ufw enable)确保更新。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/366732.html<

(0)
运维的头像运维
上一篇2025-09-26 19:04
下一篇 2025-09-26 19:09

相关推荐

  • 创建项目命令有哪些?

    创建项目的命令是开发者在日常工作中频繁使用的基础操作,不同技术栈和框架都有对应的命令行工具来快速初始化项目结构,这些命令不仅简化了手动配置繁琐步骤,还能确保项目符合最佳实践和规范,以下将详细梳理常见技术生态中的项目创建命令,涵盖前端、后端、移动端及全栈开发等多个领域,并结合使用场景和参数说明帮助开发者全面掌握……

    2025-11-20
    0
  • 命令中如何查看ip?

    在Linux和Unix-like系统中,查看IP地址是日常管理和网络故障排查中的常见操作,通过命令行工具,用户可以快速获取本机的网络接口信息、IP地址、子网掩码、广播地址以及MAC地址等关键数据,本文将详细介绍多种查看IP地址的命令,包括它们的用法、输出解析以及适用场景,帮助用户根据实际需求选择最合适的命令,在……

    2025-11-19
    0
  • Windows Git命令如何高效使用?

    在Windows操作系统中使用Git命令是开发人员进行版本控制和管理的基础技能,Git作为分布式版本控制系统,能够高效地跟踪代码变更、协作开发和管理项目历史,以下将详细介绍在Windows上使用Git命令的完整流程,包括环境配置、基础操作和进阶技巧,帮助用户快速上手并熟练应用,Git环境配置在Windows中使……

    2025-11-19
    0
  • 苹果手机如何设置企业邮箱?

    苹果手机配置企业邮箱是许多职场人士提升工作效率的关键步骤,尤其对于需要频繁处理工作邮件、同步日程或使用企业协作工具的用户而言,正确的配置能实现邮件、通讯录、日历等数据的实时同步与管理,以下是详细的配置方法、注意事项及常见问题解决方案,覆盖不同企业邮箱类型(如Exchange、IMAP/POP3)及苹果iOS系统……

    2025-11-19
    0
  • Linux ping命令如何安装?

    在Linux系统中,ping命令是一个常用的网络诊断工具,用于测试与目标主机的连通性,某些精简版Linux系统或最小化安装时可能默认未包含ping命令,此时需要手动安装,本文将详细介绍Linux系统中ping命令的安装方法、注意事项及相关配置,确认ping命令是否已安装在安装前,首先需要确认系统是否已预装pin……

    2025-11-18
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注