温馨提示×

centos防火墙如何进行测试

小樊
63
2025-09-24 05:12:14
栏目: 智能运维

CentOS防火墙测试方法

1. 检查防火墙基础状态

首先确认防火墙服务是否运行及当前状态,这是测试的前提:

  • 执行 systemctl status firewalld:若显示“active (running)”则表示防火墙正在运行;若未运行,可通过 systemctl start firewalld 启动。
  • 执行 firewall-cmd --state:直接返回“running”则说明防火墙处于激活状态。

2. 查看开放的端口与服务

明确当前防火墙允许的流量通道,避免测试方向错误:

  • 执行 firewall-cmd --list-all:查看当前区域的所有规则(包括开放端口、允许服务、富规则等);
  • 执行 firewall-cmd --list-ports:仅查看开放的TCP端口(如80、443);
  • 执行 firewall-cmd --list-services:查看允许的服务(如http、ssh,对应预定义端口)。

3. 测试端口连通性(最常用)

通过工具模拟外部访问,验证端口是否真正开放:

  • nc(netcat):支持TCP/UDP测试,最灵活。
    • TCP测试:nc -vz <目标IP或localhost> <端口号>(如 nc -vz localhost 80);若端口开放,会显示“succeeded!”;若关闭,提示“Connection refused”。
    • UDP测试:nc -vzu <目标IP或localhost> <端口号>(如 nc -vzu localhost 53)。
  • telnet:仅支持TCP测试,简单直观。
    • 命令:telnet <目标IP或localhost> <端口号>(如 telnet localhost 22);若连接成功,显示“Connected to localhost”;若失败,提示“Connection refused”。
  • curl:针对HTTP/HTTPS服务,验证服务响应。
    • 命令:curl -v http://localhost:<端口号>(如 curl -v http://localhost:8080);若返回HTML内容或状态码(如200),说明端口及服务正常。

4. 测试服务访问权限

针对特定服务(如SSH、FTP),验证防火墙是否允许合法访问:

  • 本地测试:在服务器本机执行 curl http://localhost(HTTP)或 ssh localhost(SSH),确认服务本身是否正常运行。
  • 远程测试:从另一台电脑执行 telnet <服务器IP> <端口号>nc -zv <服务器IP> <端口号>,验证防火墙是否允许外部IP访问该端口。例如,开放SSH端口(22)后,从客户端执行 telnet 服务器IP 22,若连接成功则规则生效。

5. 测试富规则(高级场景)

若配置了针对特定IP、协议的富规则,需针对性验证:

  • 示例:添加允许192.168.1.100访问22端口的富规则:
    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port port='22' protocol='tcp' accept"
  • 验证:
    • 从192.168.1.100执行 telnet 服务器IP 22,应能连接成功;
    • 从其他IP(如192.168.1.101)执行相同命令,应被拒绝。
  • 查看富规则:firewall-cmd --list-rich-rules,确认规则是否添加成功。

6. 查看防火墙日志(排查问题)

若测试异常(如端口不通),通过日志定位原因:

  • 执行 journalctl -xe:查看系统日志,过滤“firewalld”关键字(如 grep firewalld /var/log/messages),获取防火墙拦截事件的详细信息(如拒绝的IP、端口、协议)。

7. 临时关闭防火墙测试(备用方案)

若怀疑防火墙导致问题,可临时关闭以确认:

  • 执行 systemctl stop firewalld:立即关闭防火墙;
  • 再次测试端口或服务(如 telnet localhost 80);
  • 若此时能正常访问,说明问题出在防火墙配置上;测试完成后,执行 systemctl start firewalld 恢复防火墙。

注意事项

  • 测试前确保防火墙规则已重新加载firewall-cmd --reload),避免新规则未生效;
  • 生产环境避免随意关闭防火墙,优先通过日志和规则验证排查问题;
  • UDP端口测试需使用 nc -zvu,因UDP是无连接的,结果可能不如TCP准确。

0