当前位置:首页 > Linux > 正文

怎样测试Linux防火墙端口

使用telnet、nc或nmap工具测试Linux防火墙端口:,1. **telnet/nc**: telnet nc -zv ,连接成功(无错误)表示端口开放,失败(如超时/拒绝)表示关闭或被阻。,2. **nmap**: nmap -p 明确显示端口状态(open/filtered/closed)。,3. **检查防火墙规则**: iptables -L -nufw status 查看是否允许目标端口流量。

外部测试:验证端口对外暴露状态

适用场景:从其他设备或互联网检测防火墙是否开放指定端口。

方法1:使用 telnet(基础连通性测试)

telnet <目标服务器IP> <端口号>  
# 示例:测试 192.168.1.100 的 80 端口  
telnet 192.168.1.100 80  
  • 结果解读
    • 连接成功 → 显示 Connected to... 或空白光标(端口开放)。
    • 连接失败 → Connection refused(服务未运行)或超时(防火墙拦截)。

方法2:使用 nc(netcat,支持TCP/UDP)

nc -zv <目标IP> <端口号>  # TCP测试  
nc -zvu <目标IP> <端口号> # UDP测试  
# 示例:测试TCP 22端口  
nc -zv 192.168.1.100 22  
  • 结果解读
    • succeeded! → 端口开放。
    • 无响应或报错 → 端口被阻。

方法3:使用 nmap(高级扫描,需安装)

nmap -p <端口号> <目标IP>  
# 示例:扫描80和443端口  
nmap -p 80,443 192.168.1.100  
  • 关键输出
    • open → 端口开放。
    • filtered → 防火墙拦截。
    • closed → 服务未监听。

安全提示:扫描他人服务器前需获授权,避免触发安全警报。


本地测试:检查防火墙规则与监听状态

适用场景:在服务器本机验证防火墙配置和服务状态。

步骤1:确认服务监听端口

ss -tuln | grep <端口号>  # 推荐(现代系统)  
netstat -tuln | grep <端口号>  
# 示例:检查22端口  
ss -tuln | grep ':22'  
  • 关键字段
    • LISTEN → 服务正常运行。
    • 无输出 → 服务未启动或配置错误。

步骤2:检查防火墙规则

  • Firewalld(CentOS/RHEL):

    怎样测试Linux防火墙端口  第1张

    firewall-cmd --list-ports       # 查看开放端口  
    firewall-cmd --query-port=<端口>/tcp  # 检查具体端口  
    # 示例:查询80端口  
    firewall-cmd --query-port=80/tcp  
  • UFW(Ubuntu/Debian):

    ufw status numbered | grep <端口号>  
    # 示例:检查443端口  
    ufw status | grep 443  
  • iptables(通用):

    iptables -L -n -v | grep <端口号>  
    # 示例:检查3306端口  
    iptables -L INPUT -n -v | grep ':3306'  

步骤3:模拟本地连接

telnet localhost <端口号>  # 测试本机服务  
curl -v http://localhost:<端口>  # HTTP服务测试  
# 示例:测试本地MySQL(3306)  
telnet localhost 3306  
  • 若本地成功但外部失败 → 防火墙拦截。

常见问题与解决方案

  1. 外部无法访问但本地正常

    • 检查防火墙规则是否开放端口(firewall-cmd --add-port=80/tcp)。
    • 确认云服务商安全组(如AWS/Azure)允许该端口流量。
  2. 服务监听但连接超时

    • 验证防火墙是否放行:firewall-cmd --list-all
    • 排查网络设备(路由器/交换机)的ACL限制。
  3. UDP端口检测无响应

    • UDP协议无握手过程,使用 nc -zvu 结合服务日志验证(如DNS服务的 dig @IP)。
  4. 误拦截合法流量

    • 临时禁用防火墙测试(生产环境慎用):
      systemctl stop firewalld  # Firewalld  
      ufw disable               # UFW  
    • 调试后需立即恢复并修正规则。

安全实践建议

  • 最小化开放端口:仅暴露必要端口(如SSH/HTTP/HTTPS)。
  • 日志监控:启用防火墙日志(journalctl -u firewalld)分析异常连接。
  • 端口伪装:使用非标准端口(如修改SSH默认22端口)降低扫描风险。
  • 自动化工具
    • 定期扫描:nmap -p- -T4 <IP>(全端口扫描)。
    • 配置审计:lynis audit system 检查防火墙配置

测试Linux防火墙端口需结合外部探测(telnet/nc/nmap)与本地验证(ss/firewall-cmd/ufw),定期检查端口状态、更新防火墙规则并遵循最小权限原则,可显著提升系统安全性,对于关键业务,建议使用载入检测系统(如Fail2ban)增强防护。

引用说明:本文方法基于Linux主流发行版(CentOS 7+、Ubuntu 20.04+)验证,参考工具手册包括:nmap官方文档、Firewalld Wiki、UFW社区指南。

0