如何使用firewalld彻底阻止ssh

如何使用firewalld彻底阻止ssh

我在静态 IP 上设置了专用网络,并配置了路由器,192.168.1.1将端口 XX 转发到本地服务器上的端口 22,以允许 ssh 访问。我可以使用此配置顺利进行 ssh 访问,但后来我开始思考 - 为什么允许我这样做?我对防火墙还不太熟悉,但我发现我可以输入sudo firewall-cmd --list-all-zones,以便查看我在每个区域中打开的各种端口和服务。

然而,令我沮丧的是,即使从所有区域删除了 ssh 服务并完全删除了端口 22,我仍然可以通过键入 通过互联网 ssh 到我的本地服务器。ssh -p XX [email protected]

我尝试在谷歌上搜索“如何使用firewalld完全禁用ssh访问”,但所有结果都是指阻止服务除了一个或几个特定 IP。为了测试我的网络的安全性,我希望能够完全禁止 ssh 访问我的服务器。但是,鉴于端口 22 和 ssh 服务完全不在我的防火墙配置中,防火墙怎么会不工作呢?为什么我仍然能够 ssh 访问?

编辑:这是我输入时的输出sudo firewall-cmd --list-all-zones

block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: mdns samba-client dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: mdns samba-client dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25 wlp3s0
  sources: 
  services: 
  ports: 8545/tcp 5001/tcp 33/tcp
  protocols: tcp udp
  masquerade: no
  forward-ports: 
  source-ports: 5001/tcp
  icmp-blocks: 
  rich rules: 


trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 


work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

如您所见,该ssh服务在我的任何区域中都不可用。但它却运行良好。我假设有人假设端口 22 默认是开放的,即使它没有明确说明?还是我遗漏了什么?

-保罗

答案1

通常“用户友好”的工具(例如firewalld/firewall-cmd和)也ufw只会显示由该工具创建和管理的规则集。

这些工具通常不会显示直接插入到正在运行的防火墙配置中的附加规则,无论是通过iptables直接运行命令(iptables-restore在启动时使用或从脚本或手动使用iptables),还是由其他工具生成的规则(例如,docker 可以发布端口,fail2ban 将添加规则来阻止端口)。

iptables-save通常,您可以通过使用或 使用iptables -L -v -n 以及来转储完整规则集来发现此类情况iptables -L -v -n -t nat
例如,使用firewalld,我通常会期望 ssh 的端口由firewalld 管理,例如在IN_public_allow链中,因此链中端口 22 的规则INPUT将是一个危险信号。

答案2

我最终通过使用ufw而不是获得了预期的行为firewalld。运行时sudo systemctl stop firewalld && sudo ufw enable && sudo reboot,我无法再通过 ssh 进入该计算机。但是,运行 之后sudo ufw allow ssh,它又开始正常工作,正如预期的那样。

相关内容