ssh防暴力破解

(一)安装并配置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 idle on/off 设置某个监狱(监控)的状态
set addignoreip 添加某个监控(监狱)可以忽略的ip (即加入白名单)
set delignoreip 删除某个监控(监狱)可以忽略的ip (即移出白名单)
set banip 将ip加入监控(监狱) (即加入黑名单)
set unbanip 将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,点击确认之后双击打开会话:

Snipaste_2023-09-26_11-32-51

填写用户名,注意是填写配置了密钥对的用户名,不同用户都需要和上面的步骤一样在其家目录的“.ssh”文件夹里生成密钥对。

Snipaste_2023-09-26_11-37-03

点击确认之后再次双击会话,导入私钥:

Snipaste_2023-09-26_11-40-47

Snipaste_2023-09-26_11-41-44

这里如果在生成密钥对的时候你设置了密码,这里就需要输入密码,如果没有它是不会提示的。

Snipaste_2023-09-26_11-42-32

选中导入的密钥之后点击确认

Snipaste_2023-09-26_11-44-19

再次输入生成密钥匙设置的密码

Snipaste_2023-09-26_11-45-41

点击确认,连接成功

Snipaste_2023-09-26_11-47-35

2.3 禁用密码登录

确认没问题之后就可以禁用密码登录使用密钥登录了

修改sshd_config

 vi /etc/ssh/sshd_config

修改:

# 表示使用密钥对登录
PubkeyAuthentication yes
# 关闭密码登录
PasswordAuthentication no

重启sshd:

systemctl restart sshd
posted @   国杰响当当  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示