广告图片
TOP云-靠谱的企业级公有云服务平台

云服务器、物理服务器、云安全、SSL证书限时3折抢购!

双路E5-2640V4(40核)64G内存480G SSD硬盘30M独享带宽物理机仅需368元;香港铂金云服务器2H/2G/15M仅需19.8元/月;4H/4G/25M仅需29.8元/月,

TOP云-靠谱的企业级公有云服务平台:双路E5-2640V4(40核)64G内存480G SSD硬盘30M独享带宽物理机仅需368元;香港铂金云服务器2H/2G/15M仅需19.8元/月;4H/4G/25M仅需29.8元/月,云服务器、物理服务器、云安全、SSL证书限时3折抢购!点击这里立即抢购! 展开广告

TOP云物理服务器特惠,CPU可选双路E5-2660(32核)、双路E5-2680v2(40核)、双路E5-2696/98 V4(88核)、双路Gold 6138(80核)、双路Platinum 8173(112核);
内存从32G-128G可选,带宽有单线、多线独享20M-200M,价格低至368元。
购买链接:https://c.topyun.vip/cart?fid=1&gid=236

  在云服务器运维中,SSH服务作为远程管理的核心入口,常成为恶意攻击者的目标。暴力破解、频繁扫描等行为不仅消耗服务器资源,更可能危及系统安全。通过fail2ban工具结合自定义监狱规则,可实现SSH黑名单IP的自动识别与封禁,大幅提升安全性。本文将详细介绍fail2ban的配置方法、自定义规则技巧,并推荐一款适合此场景的TOP云物理服务器,助力您构建更安全的云环境。


一、fail2ban简介与核心功能

  fail2ban是一款开源的入侵防御工具,通过监控系统日志(如/var/log/auth.log/var/log/secure)检测恶意行为(如暴力破解、端口扫描),并自动将触发规则的IP加入防火墙黑名单,阻止其进一步访问。其核心优势包括:

  • 自动化防御:实时监控日志,无需人工干预即可封禁恶意IP。
  • 灵活规则配置:支持自定义触发条件、封禁时间和封禁方式。
  • 多服务支持:不仅限于SSH,还可保护FTP、SMTP、WordPress等应用。
  • 低资源占用:轻量级设计,对服务器性能影响极小。

二、fail2ban基础配置步骤

1. 安装fail2ban

  在Ubuntu/Debian或CentOS/RHEL系统上执行以下命令:

Bash

# Ubuntu/Debian
sudo apt update
sudo apt install fail2ban

# CentOS/RHEL
sudo yum install epel-release
sudo yum install fail2ban

2. 启动并设置开机自启

Bash

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

3. 配置默认规则

  fail2ban的默认配置文件位于/etc/fail2ban/jail.conf,但直接修改此文件可能被更新覆盖。建议创建自定义配置文件/etc/fail2ban/jail.local,并覆盖默认设置:

Bash

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

  在jail.local中,启用SSH监狱并调整参数(示例):

Ini

[sshd]
enabled = true
port    = ssh
filter   = sshd
logpath  = /var/log/auth.log  # Ubuntu/Debian
# logpath = /var/log/secure    # CentOS/RHEL
maxretry = 3                   # 允许最大尝试次数
bantime  = 86400               # 封禁时间(秒,24小时)
findtime = 3600                # 监控时间窗口(秒,1小时内)

4. 重启fail2ban生效

Bash

sudo systemctl restart fail2ban

三、自定义监狱规则:精细化防御

1. 针对特定攻击模式的规则

  场景:攻击者使用慢速暴力破解(如每分钟尝试1次密码),绕过默认的findtime限制。
  解决方案:创建自定义过滤规则,检测低频但持续的尝试行为。
  步骤

  1. 编辑或创建过滤规则文件(如/etc/fail2ban/filter.d/sshd-slow.conf):
    Ini

    [Definition]
    failregex = ^%(__prefix_line)sFailed password for (invalid user )?[<HOST>] from <HOST> port \d* ssh2\s*$
    ignoreregex =
  2. jail.local中添加自定义监狱:
    Ini

    [sshd-slow]
    enabled   = true
    port      = ssh
    filter    = sshd-slow
    logpath   = /var/log/auth.log
    maxretry  = 10                  # 允许10次尝试(低频)
    bantime   = 172800              # 封禁48小时
    findtime  = 86400               # 监控24小时窗口

2. 封禁频繁扫描的IP

  场景:攻击者扫描服务器端口,寻找潜在漏洞。
  解决方案:监控sshd日志中的Connection refusedDid not receive identification错误,封禁频繁扫描的IP。
  步骤

  1. 创建过滤规则文件(如/etc/fail2ban/filter.d/sshd-scan.conf):
    Ini

    [Definition]
    failregex = ^%(__prefix_line)sDid not receive identification string from <HOST>\s*$
                ^%(__prefix_line)sConnection refused by <HOST>\s*$
    ignoreregex =
  2. jail.local中添加监狱:
    Ini

    [sshd-scan]
    enabled   = true
    port      = ssh
    filter    = sshd-scan
    logpath   = /var/log/auth.log
    maxretry  = 5                   # 允许5次扫描
    bantime   = 43200               # 封禁12小时
    findtime  = 3600                # 监控1小时窗口

3. 结合IP白名单

  场景:需允许特定IP(如办公网络、监控系统)无限制访问SSH。
 &em�;解决方案:在jail.local中添加ignoreip参数,排除白名单IP:

Ini

[DEFAULT]
ignoreip = 192.168.1.0/24 10.0.0.1 123.123.123.123  # 示例IP

四、TOP云物理服务器:安全运维的理想选择

  在实施fail2ban自动化防御时,服务器的性能和稳定性至关重要。TOP云物理服务器提供多种高性能配置,满足您对安全与效率的双重需求:

  • 强大的CPU选项:从双路E5-2660(32核)到双路Platinum 8173(112核),确保日志监控和规则匹配的高效处理,即使面对大量攻击也能快速响应。
  • 充足的内存:内存从32G到128G可选,支持多线程日志分析和复杂规则计算,避免因资源不足导致防御失效。
  • 稳定的网络带宽:提供单线、多线独享20M-200M带宽,确保SSH连接和日志传输的稳定性,减少因网络波动引发的误封。
  • 高性价比:价格低至368元,让您以更低的成本享受高品质的云服务,轻松构建安全的服务器环境。

立即选购,为您的云服务器安全加码!
点击这里,了解更多并购买TOP云物理服务器


五、高级技巧与优化

1. 邮件通知与日志记录

  配置fail2ban在封禁IP时发送邮件通知,并记录详细日志:

  1. 安装邮件工具(如mailutilssendmail):
    Bash

    sudo apt install mailutils  # Ubuntu/Debian
    sudo yum install sendmail   # CentOS/RHEL
  2. jail.local[DEFAULT]段中添加:
    Ini

    destemail = admin@example.com
    sender = fail2ban@example.com
    action = %(action_mwl)s  # 封禁并发送邮件+日志

2. 动态调整封禁时间

  根据攻击频率动态延长封禁时间(如首次封禁1小时,重复封禁24小时):

  1. 创建自定义动作文件(如/etc/fail2ban/action.d/iptables-multiport-dynamic.conf),修改bantime为变量:
    Ini

    actionstart = iptables -N fail2ban-<name>
                  iptables -A fail2ban-<name> -j RETURN
                  iptables -I <chain> -p <protocol> --dport <port> -j fail2ban-<name>
    actionstop = iptables -D <chain> -p <protocol> --dport <port> -j fail2ban-<name>
                  iptables -F fail2ban-<name>
                  iptables -X fail2ban-<name>
    actioncheck = iptables -n -L <chain> | grep -q "fail2ban-<name>[ \t]"
    actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
                echo "[Definition]
                bantime = <bantime>" > /tmp/fail2ban-<name>-<ip>.conf
                # 结合脚本动态读取bantime
    actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP

3. 集成Cloudflare/AWS Shield

  将fail2ban封禁的IP同步至Cloudflare防火墙或AWS Shield,实现全球流量拦截(需API支持)。


六、总结与展望

  通过fail2ban的自定义监狱规则,您可构建灵活、高效的SSH黑名单自动封禁机制,显著提升云服务器的安全性。结合TOP云物理服务器的高性能配置,您的防御体系将更加稳固。未来,随着攻击手段的不断演变,fail2ban的规则优化和自动化响应将成为安全运维的核心方向。立即行动,为您的服务器穿上“防弹衣”吧!

阿, 信