Ubuntu防止被SSH暴力破解的几点措施

2022-12-02 14:59:11 浏览数 (1)

目录

错误禁登fail2ban

修改SSH端口

禁止root远程登录

禁止使用空白密码的用户访问

使用 SSH 版本 2

关闭 TCP 端口转发和 X11 转发


我的服务器只要一放开SSH端口,就会遭受暴力攻击,像这样:

只好改了SSH默认端口,但没有用,可以用NMAP扫出来,比如:

无奈不用时关掉SSH端口,用的时候再打开,但这也太麻烦了。

下面给出几种方法,建议看情况组合使用

错误禁登fail2ban

这里使用了一个软件:fail2ban。它可以在尝试失败一定次数后,禁止其登录一段时间,让尝试破解的黑客付出超长的时间代价。

1、安装

代码语言:javascript复制
sudo apt update
sudo apt install fail2ban

2、修改配置(如端口)

代码语言:javascript复制
# 复制配置配置文件,local文件的配置会覆盖默认conf文件的配置。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

#编辑local配置文件
sudo vim /etc/fail2ban/jail.local

如果用的默认22端口,则不需要配置;若改过,则在下面填写对应端口:

代码语言:javascript复制
[sshd]
port=8022

 3、启动

代码语言:javascript复制
sudo service fail2ban start

4、查看日志

代码语言:javascript复制
sudo cat /var/log/fail2ban.log

5、尝试一下。

本地尝试登录,故意多次输入错误密码。可以看到前两次还能登录,第三次开始就直接拒绝了。

 看一下服务器后台的登录记录:


更详细用法可自行另外搜索~

比如:

代码语言:javascript复制
# bantime,findtime和maxretry选项的值定义了禁止时间和禁止条件。
# bantime是禁止使用IP的持续时间。 如果未指定后缀,则默认为秒。 默认情况下,bantime值设置为10分钟。 通常,大多数用户都希望设置更长的禁止时间。 根据您的喜好更改值:
/etc/fail2ban/jail.local/bantime = 1d

# 要永久禁止IP,请使用负数。
# findtime是设置禁令前的失败次数之间的持续时间。 例如,如果将Fail2ban设置为在五次失败之后禁止IP(maxretry,请参见下文),则这些失败必须在findtime持续时间内发生。
/etc/fail2ban/jail.local/findtime = 10m

# maxretry是禁止IP之前失败的次数。 默认值设置为5,对于大多数用户来说应该可以。
/etc/fail2ban/jail.local/maxretry = 5

查看哪些IP被ban:

代码语言:javascript复制
sudo fail2ban-client status sshd

将IP从黑名单中移除:

代码语言:javascript复制
fail2ban-client set sshd unbanip 8.8.8.8

修改SSH端口

打开配置文件,修改Port项改为8022(自定义的端口),保存重启SSH。

代码语言:javascript复制
sudo vim /etc/ssh/sshd_config
代码语言:javascript复制
sudo /etc/init.d/ssh restart

禁止root远程登录

        一般攻击者只知道有个root用户,不知道你自己创建了哪些用户,所以可以禁止root远程登录,他也没法了。

        打开配置文件,修改PermitRootLogin项改为no,保存重启SSH。

代码语言:javascript复制
sudo vim /etc/ssh/sshd_config
代码语言:javascript复制
sudo service ssh restart

禁止使用空白密码的用户访问

        这个设置完就非常安全了,只能通过key来连接。但也有点麻烦,必须在要连接的电脑上都生成添加一次key。需要将 sshd_config 文件中的 PermitEmptyPasswords 行值设置为 no

代码语言:javascript复制
sudo vim /etc/ssh/sshd_config

然后修改:

代码语言:javascript复制
PermitEmptyPasswords no

改完重启:

代码语言:javascript复制
sudo service ssh restart

使用 SSH 版本 2

        版本2修复了一些漏洞,相对安全一些。通过将 Protocol 参数添加到 sshd_config 文件来启用服务器使用第二个版本。

代码语言:javascript复制
Include /etc/ssh/sshd_config.d/*.conf Protocol 2

关闭 TCP 端口转发和 X11 转发

        这一点也供参考吧,X11转发可以支持在命令行模式下显示GUI界面,对有些同学可能需要。在 sshd_config 文件中关闭 AllowTcpForwarding 和 X11Forwarding 功能。

代码语言:javascript复制
sudo vim /etc/ssh/sshd_config

​​​​​​​然后修改:

代码语言:javascript复制
X11Forwarding no 
AllowTcpForwarding no

 改完重启:

代码语言:javascript复制
sudo service ssh restart

0 人点赞