解决云服务器被尝试登陆问题
问题:云服务器被扫描和攻击
登陆时发现会出现有别的ip尝试登陆服务器
Last failed login: Thu Nov 3 07:02:33 CST 2022 from 117.156.64.16 on ssh:notty
There were 938 failed login attempts since the last successful login.
Last login: Mon Oct 31 09:13:57 2022 from xxx.xxx.xxx.xxx
网上搜了一下大佬们的处理方法有几种:
- 禁用密码登陆改用ssh登陆生成公钥和密钥(参考)
- 使用fail2ban
- 修改安全组做、ip白名单、改端口(很简单去云服务器改一下就行了)
我这里选择用fail2ban试试,没接触过,所以接触一下新事物
fail2ban
软件简介
Fail2ban 扫描系统日志文件,例如 /var/log/pwdfail
or /var/log/apache/error_log 并从中找出多次尝试登录失败的 IP 地址,并将该 IP 地址加入防火墙的拒绝访问列表中。它通过更新系统的防火墙规则,拒绝来自这些 IP 地址的新连接。Fail2Ban 开箱即用,可以读取许多标准的日志文件,如 sshd 和 Apache 的日志文件,也可以轻松配置为读取任何你选择的日志文件。
使用
安装
yum -y install fail2ban
开机启动
sudo systemctl enable fail2ban
fail2ban安装后有两个程序,
fail2ban-server
和fail2ban-client
,对应的主配置文件是fail2ban.conf
和jail.conf
。本次主要是修改 fail2ban-client配置。fail2ban的.conf配置文件都是可以被.local覆盖,所以配置方式建议是添加.local文件,不修改原来的配置文件。
修改配置
-
cd /etc/fail2ban
-
sudo cp fail2ban.conf fail2ban.local
-
sudo cp jail.conf jail.local
-
sudo vim jail.local
-
在 sshd 加上
enabled = true
-
sudo vim fail2ban.local
-
定位到最后一行,添加如下内容
[sshd] enable = ture port = 22 # 注意改成自己对应的ssh端口 filter =sshd # CentOS logpath = /var/log/secure maxretry = 5 # 最大尝试次数 bantime = 60 #封禁时间,单位s。-1为永久封禁
保存配置
sudo systemctl restart fail2ban #重启
sudo fail2ban-client status #查看状态
sudo fail2ban-client status sshd #查看sshd的详细状态
测试
没什么好说的,测完把自己给封了
好在我设置的是60s
如果真的把自己封了,去控制台免密登录一下查看是不是真的被封了
// 解鎖
# fail2ban-client set sshd unbanip 要解鎖的 IP