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

2024-03-03 00:58

本文主要是介绍Ubuntu防止被SSH暴力破解的几点措施,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

错误禁登fail2ban

修改SSH端口

禁止root远程登录

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

使用 SSH 版本 2

关闭 TCP 端口转发和 X11 转发


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

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

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

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

错误禁登fail2ban

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

1、安装

sudo apt update
sudo apt install fail2ban

2、修改配置(如端口)

# 复制配置配置文件,local文件的配置会覆盖默认conf文件的配置。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local#编辑local配置文件
sudo vim /etc/fail2ban/jail.local

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

[sshd]
port=8022

 3、启动

sudo service fail2ban start

4、查看日志

sudo cat /var/log/fail2ban.log

5、尝试一下。

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

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


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

比如:

# 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:

sudo fail2ban-client status sshd

将IP从黑名单中移除:

fail2ban-client set sshd unbanip 8.8.8.8

修改SSH端口

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

sudo vim /etc/ssh/sshd_config

sudo /etc/init.d/ssh restart

禁止root远程登录

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

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

sudo vim /etc/ssh/sshd_config

sudo service ssh restart

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

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

sudo vim /etc/ssh/sshd_config

然后修改:

PermitEmptyPasswords no

改完重启:

sudo service ssh restart

使用 SSH 版本 2

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

Include /etc/ssh/sshd_config.d/*.conf Protocol 2

关闭 TCP 端口转发和 X11 转发

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

sudo vim /etc/ssh/sshd_config

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

X11Forwarding no 
AllowTcpForwarding no

 改完重启:

sudo service ssh restart

这篇关于Ubuntu防止被SSH暴力破解的几点措施的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767957

相关文章

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

防止缓存击穿、缓存穿透和缓存雪崩

使用Redis缓存防止缓存击穿、缓存穿透和缓存雪崩 在高并发系统中,缓存击穿、缓存穿透和缓存雪崩是三种常见的缓存问题。本文将介绍如何使用Redis、分布式锁和布隆过滤器有效解决这些问题,并且会通过Java代码详细说明实现的思路和原因。 1. 背景 缓存穿透:指的是大量请求缓存中不存在且数据库中也不存在的数据,导致大量请求直接打到数据库上,形成数据库压力。 缓存击穿:指的是某个热点数据在

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到