当我没有打开 http 或端口 80 并且没有服务在端口 80 上监听时,为什么我能够通过端口 80 远程登录到我的机器?
sudo firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: em1
sources:
services: dhcpv6-client ssh
ports: 12345/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我试图删除该端口,但它说它不在活动区域,所以我的 telnet 连接不应该被拒绝吗?
sudo firewall-cmd --zone=public --remove-port=80/tcp
Warning: NOT_ENABLED: '80:tcp' not in 'public'
我仔细检查了一下,没有运行 iptables 服务,只有 firewalld 在运行。我仍然不明白为什么存在 iptables 命令,或者为什么使用 firewall-cmd 命令更新 iptables 文件。
我甚至尝试了“老式”方法,即丢弃所有传入流量:
sudo iptables --policy INPUT DROP
但 telnet 80 端口仍可通。
答案1
首先,您需要查找是否确实有一些服务在端口 80 上监听。对于此运行,请以 root 身份或使用 sudo:
netstat -nlp | grep :80
其次,尝试列出所有区域,查看 80 端口添加到哪个区域:
firewall-cmd --list-all-zones
第三,在 Centos 7 中,firewalld 充当 iptables 的前端,这就是为什么您仍然拥有 iptables 命令。