要限制CentOS 7系统上不同IP地址和不同用户的攻击登录尝试,可以采用以下方法:

  1. 安装并配置fail2ban:
    fail2ban是一个通过扫描日志文件,并在检测到多次失败登录尝试后封禁IP地址的工具。
  • 首先,安装EPEL源:
sudo yum install epel-release
  • 接下来,安装fail2ban:
sudo yum install fail2ban
  • 创建fail2ban的本地配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • 编辑/etc/fail2ban/jail.local文件,设置[DEFAULT]部分的参数,例如:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
action = iptables-multiport[name=%(__name__)s, port="ssh", protocol=tcp]
backend = auto
usedns = warn
enabled = true
  • 启动fail2ban服务并设置为开机自启动:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
  1. 禁用或限制root登录:
    修改 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 这一行,把它改成下面这样:
PermitRootLogin no

或者限制只允许特定用户登录:

AllowUsers user1 user2

保存文件并重启SSH服务:

sudo systemctl restart sshd
  1. 使用SSH密钥对而非密码进行认证:
    禁用基于密码的SSH登录可以有效减少暴力破解尝试。
  • 在客户端生成SSH密钥对:
ssh-keygen
  • 把公钥复制到服务器上的~/.ssh/authorized_keys文件中:
ssh-copy-id user@your_server_ip
  • 编辑 /etc/ssh/sshd_config 文件,找到 PasswordAuthentication 这一行,把它改成下面这样:
PasswordAuthentication no
  • 保存文件并重启SSH服务:
sudo systemctl restart sshd

通过以上方法,CentOS 7系统应该能在很大程度上抵御不同IP地址和不同用户的攻击登录尝试。

下面是每个参数的详细解释:

  • bantime: 封禁IP地址的时长(单位:秒)。例如,设置为3600表示被封禁的IP地址将在1小时(3600秒)后自动解封。
  • findtime: 用于指定在多长时间内检测失败登录尝试(单位:秒)。例如,设置为600表示在10分钟(600秒)内检查失败登录尝试。
  • maxretry: 允许的最大失败登录尝试次数。当在findtime指定的时间内,一个IP地址的失败登录尝试超过maxretry次时,该IP地址将被封禁。例如,设置为3表示允许最多3次失败登录尝试。
  • action: 当检测到恶意行为时执行的操作。在这个例子中,使用iptables-multiport操作来阻止对应IP地址的SSH连接请求。 %(__name__)s 是一个占位符,表示当前监控规则的名称。
  • port: 需要保护的端口。在这里,我们设定了 "ssh" 这个预定义值,表示默认的 SSH 端口(通常是22)。
  • protocol: 使用的网络协议(如:“tcp” 或 “udp”)。
  • backend: 指定日志处理方式。auto表示让fail2ban自动选择最合适的日志处理方式。
  • usedns: 用于指定是否通过DNS (域名系统) 解析来查找IP地址。warn表示在无法解析IP对应的主机名时发出警告,但不影响封禁功能。
  • enabled: 是否启用此规则。true表示启用,false表示禁用。

通过这些参数配置,fail2ban可以按照指定的规则来检测失败登录尝试并采取相应的封禁措施,从而提高服务器的安全性。

查看日志:

要查看由fail2ban拦截和封禁的日志,你可以查看/var/log/fail2ban.log文件。这个文件包含了关于被拦截的IP地址、时间以及解封操作等相关信息。

要实时查看fail2ban日志,可以使用以下命令:

sudo tail -f /var/log/fail2ban.log

该命令会持续打印日志文件的最新内容,直到你按下Ctrl + C停止。

此外,你还可以使用fail2ban-client命令来获取关于封禁情况的统计数据和其他信息。例如,以下命令列出了所有启用的监控规则:

sudo fail2ban-client status

要查看特定监控规则(如:sshd)的详细信息,可以使用以下命令:

sudo fail2ban-client status sshd

此命令会显示与sshd规则相关的统计数据,包括被封禁的IP地址列表。通过这些信息,你可以更好地了解服务器的安全状况,并及时采取措施应对潜在的威胁。