You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora系统中fail2ban规则未在iptables -L中显示的问题求助

解决Fedora上fail2ban规则不显示及配置文件问题

我在Fedora上折腾fail2ban时也碰到过类似的iptables规则不显示的问题,还有配置文件调整时的坑,给你梳理下排查和解决的步骤:

一、为什么iptables -L看不到fail2ban-ssh规则?

最常见的原因是Fedora默认用nftables而非iptables作为防火墙后端,其次是配置没生效或者服务没正常跑起来,一步步来:

  • 先确认防火墙后端类型
    Fedora 31及以后版本默认切换到nftables,iptables命令只是兼容层,fail2ban如果适配nftables的话,规则不会出现在iptables -L的输出里。你可以用这条命令查看当前后端:

    firewall-cmd --get-backend
    

    如果输出是nftables,那得用nft list ruleset才能看到fail2ban的规则,别再死磕iptables -L了。

  • 检查fail2ban服务状态
    先确保服务没躺平:

    systemctl status fail2ban
    

    如果显示未启动,先启动并设置开机自启:

    systemctl start fail2ban
    systemctl enable fail2ban
    
  • 确认ssh jail是否真的启用
    注意:别直接修改jail.conf,系统更新时这个文件会被覆盖,正确做法是复制一份为jail.local,然后在jail.local里修改配置。打开文件后,找到[sshd]段,确保enabled = true:

    [sshd]
    enabled = true
    port    = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    

    如果%(sshd_log)s变量指向的路径不对(比如Fedora的sshd日志默认是/var/log/secure),可以直接写死logpath = /var/log/secure。

  • 查看fail2ban日志找错误
    要是服务跑起来但规则没加载,看日志找线索:

    journalctl -u fail2ban
    

    日志里如果有Failed to start jail 'sshd'这类报错,大概率是日志路径不对、后端配置错误,或者日志文件权限问题(fail2ban要有读取日志的权限)。

  • 切换fail2ban的防火墙后端到iptables
    如果你非要用iptables看规则,可以修改jail.local里的banaction配置:

    banaction = iptables-multiport
    

    然后重启fail2ban:

    systemctl restart fail2ban
    

    再跑iptables -L应该就能看到fail2ban-ssh链了。

二、修改为sshd.conf时的常见错误及解决

你提到改sshd.conf时出错,虽然没贴具体错误,但我碰到过几个典型坑:

  • 配置文件放错地方
    fail2ban的自定义jail配置要放在/etc/fail2ban/jail.d/目录下,文件名可以是sshd.conf,里面只需要写[sshd]段的配置,比如:

    [sshd]
    enabled = true
    port = 22
    logpath = /var/log/secure
    maxretry = 3
    bantime = 3600
    

    要是放在其他路径,fail2ban根本读不到。

  • 语法错误
    比如把enabled写成enable,或者键值对没对齐、少了括号,都会导致加载失败。仔细检查配置项的拼写和格式,比如不要出现maxretry=3(虽然也能识别,但规范是加空格)。

  • 权限问题
    确保sshd.conf的属主是root:root,权限是644,否则fail2ban读不了:

    chown root:root /etc/fail2ban/jail.d/sshd.conf
    chmod 644 /etc/fail2ban/jail.d/sshd.conf
    

    改完权限记得重启服务。

  • 与默认配置冲突
    比如你在sshd.conf里设置了一个不存在的backend值,或者logpath指向的文件不存在,都会触发错误。可以把sshd.conf里的配置简化,只保留必要项,逐步排查。

最后提醒一句:任何配置修改后都要重启fail2ban服务才能生效!

内容的提问来源于stack exchange,提问作者We are Borg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:34