(一)安装并配置fail2ban
1.1安装
yum -y install epel-release
yum -y install fail2ban
1.2启动fail2ban
systemctl start fail2ban
systemctl enable fail2ban
1.3编辑封禁规则
vim /etc/fail2ban/jail.conf
#使用shift+G跳转到最后添加如下规则
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
#sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
logpath = /var/log/secure
maxretry = 3
findtime = 5h
bantime = 48h
maxretry = 3 //最多试三次
findtime = 5h //5小时内只能试三次
bantime = 48h //三次不对,封禁48小时
1.4重新加载配置文件
fail2ban-client reload
systemctl restart fail2ban
1.5 fail2ban常用命令(均省略fail2ban-client前缀)
命令 | 作用 |
---|---|
start | 启动fail2ban server和监狱 |
reload | 重新加载配置文件 |
stop | 暂停fail2ban和监狱 |
status | 查看运行的监控服务数量和列表 |
set loglevel | 设置日志等级,有CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG |
get loglevel | 获取当前日志的等级 |
set |
设置某个监狱(监控)的状态 |
set |
添加某个监控(监狱)可以忽略的ip (即加入白名单) |
set |
删除某个监控(监狱)可以忽略的ip (即移出白名单) |
set |
将ip加入监控(监狱) (即加入黑名单) |
set |
将ip从监控(将于)删除 (即移出黑名单) |
1.6 查看监狱状态
查看监狱名称
[root@VM-8-14-centos ~]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh-iptables
#这里可以看到刚刚添加的封禁规则
查看被拉进黑名单的ip
[root@VM-8-14-centos ~]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- Filter
| |- Currently failed: 44
| |- Total failed: 498
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 25
|- Total banned: 25
`- Banned IP list: 35.230.66.101 146.190.49.11 141.98.11.90 93.123.118.22 14.40.106.169 141.98.11.11 218.92.0.92 150.158.166.64 80.66.83.207 217.119.27.48 31.184.198.71 103.10.86.100 185.224.128.187 170.64.183.31 37.201.10.170 114.104.188.219 77.170.59.124 185.224.128.142 185.224.128.141 193.201.9.109 31.41.244.61 31.41.244.62 218.91.157.54 2.59.254.244 221.215.21.91
(二)linux禁用密码登录
2.1 服务器端密钥的生成和配置
1.1 在需要配置使用密钥登录的用户的家目录下,新建一个.ssh目录,并将目录权限修改为700(仅用户自己可以读写操作):
mkdir .ssh
chmod 700 .ssh
1.2 进入.ssh目录,使用ssh-keygen命令生成rsa密钥对:
cd .ssh
# 生成密钥对(如果不设置密钥对可以一直回车即可)
ssh-keygen -t rsa -b 4096
[guojie@localhost .ssh]$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
#选择密钥存放路径
Enter file in which to save the key (/home/guojie/.ssh/id_rsa):
#密钥对的密码,可以为空
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/guojie/.ssh/id_rsa.
Your public key has been saved in /home/guojie/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QdSxsaJGEVNHQhz9fIhudUpi656bdAh4hSfPbkLbUOU guojie@localhost.localdomain
The key's randomart image is:
+---[RSA 4096]----+
| +*B==.. |
| +.+o* |
| . = *+E. |
| . o X+ * o |
| + Soo= + |
| . o *+.. |
| oo* . |
| +.+ |
| .=. |
+----[SHA256]-----+
1.3 这时生成了两个文件,id_rsa和id_rsa.pub,其中前一个为私钥,后一个为公钥,公钥须保留在服务器上,私钥拷贝到客户端机器上。
sz id_rsa
1.4 在.ssh目录中新建一个文件名为:authorized_keys,将公钥内容拷贝到这个文件中,并将文件权限改为600(仅用户自身有读写权限)
touch authorized_keys
cat id_rsa.pub > authorized_keys
chmod 600 authorized_keys
2.2 客户端
2.2.1 windows系统
windows登录服务器我们 一般使用远程工具连接,需要先将私钥导入到登录工具的密钥管理器,建立一个新的连接,用户名和主机的填写与采用用户名密码登录一样,登录不再选择”Password”而是”Public key",User Name填写自己的登录用户名,User Key选择之前导入的服务器私钥 ,保存之后,即可无密码登录。
2.2.2 linux系统
2.2.2.1、与服务器端一样,在用户家目录下新建一个.ssh目录,并将其目录权限改为700(仅用户自身有读写操作权限):
mkdir -p ~/.ssh/hosts
2.2.2.2、将服务器上的私钥id_rsa拷贝到当前主机.ssh/hosts目录下并修改成一个便于区分的文件名,如"主机名_用户名",然后将其移动到~/.ssh/hosts目录下
mv ./id_rsa ./minghu_guojie
mv ./minghu_guojie ~/.ssh/hosts/
2.2.2.3、查看文件权限是否为600,如果不是的话需要修改
ls -l ~/.ssh/hosts/minghu_guojie
chmod 600 ~/.ssh/hosts/minghu_guojie
2.2.2.4、登录测试
ssh -i ~/.ssh/hosts/minghu_guojie 用户名@IP地址
2.2.3 使用远程工具连接
这里以xshell为例:
新建会话,填上名称和ip,点击确认之后双击打开会话:
填写用户名,注意是填写配置了密钥对的用户名,不同用户都需要和上面的步骤一样在其家目录的“.ssh”文件夹里生成密钥对。
点击确认之后再次双击会话,导入私钥:
这里如果在生成密钥对的时候你设置了密码,这里就需要输入密码,如果没有它是不会提示的。
选中导入的密钥之后点击确认
再次输入生成密钥匙设置的密码
点击确认,连接成功
2.3 禁用密码登录
确认没问题之后就可以禁用密码登录使用密钥登录了
修改sshd_config
vi /etc/ssh/sshd_config
修改:
# 表示使用密钥对登录
PubkeyAuthentication yes
# 关闭密码登录
PasswordAuthentication no
重启sshd:
systemctl restart sshd
标签:暴力破解,登录,rsa,密钥,guojie,fail2ban,ssh
From: https://www.cnblogs.com/luguojie/p/18617534