要限制CentOS 7系统上不同IP地址和不同用户的攻击登录尝试,可以采用以下方法:
- 安装并配置
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
- 禁用或限制root登录:
修改/etc/ssh/sshd_config
文件,找到PermitRootLogin
这一行,把它改成下面这样:
PermitRootLogin no
或者限制只允许特定用户登录:
AllowUsers user1 user2
保存文件并重启SSH服务:
sudo systemctl restart sshd
- 使用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地址列表。通过这些信息,你可以更好地了解服务器的安全状况,并及时采取措施应对潜在的威胁。