Skip to main content

moregeek program

ubuntu防止被ssh暴力破解的几点措施_小锋学长生活大爆炸的博客-多极客编程


目录

​​错误禁登fail2ban​​

​​修改SSH端口​​

​​禁止root远程登录​​

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

​​使用 SSH 版本 2​​

​​关闭 TCP 端口转发和 X11 转发​​


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

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

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

Ubuntu防止被SSH暴力破解的几点措施_服务器_02

无奈不用时关掉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

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

 3、启动

sudo service fail2ban start

4、查看日志

sudo cat /var/log/fail2ban.log

5、尝试一下。

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

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

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

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


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

比如:

# 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

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

sudo /etc/init.d/ssh restart

禁止root远程登录

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

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

sudo vim /etc/ssh/sshd_config

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

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

©著作权归作者所有:来自51CTO博客作者小锋学长生活大爆炸的原创作品,请联系作者获取转载授权,否则将追究法律责任

【算法】用java解出来的算法,移除链表元素,只出现一次的数字_小冷的博客-多极客编程

(算法题) 1.只出现一次的数字 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 Java代码解决思路参考 class Solution {

编写代码,求一个整数在内存中的二进制中1的个数_归澈的博客-多极客编程

首先,我们应该知道整数在内存中的存储形式为其补码。1.常规性:#include<stdio.h>#include<string.h>#define _CRT_SECURE_NO_WARNINGS1int main(){ int num = 0; int count = 0;//统计1的个数 scanf_s("%d", &num); while (num)

verilog语法入门_zhang_shiwei的博客-多极客编程

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公

基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机app交互、温湿度/新闻热点/日期显示等_小锋学长生活大爆炸的博客-多极客编程

目录​​功能清单​​​​界面演示​​​​系统框图​​​​设计方案​​​​整体结构​​​​网站设计​​​​ app设计​​​​ 魔镜界面设计​​​​ 温湿度传感器​​​​ 光电传感器​​​​相关教程​​​​第三方库的安装​​​​安装库​​​​换源​​​​安装mqtt​​​​安装Qt5​​​​git clone提速​​​​安装Adafruit_DHT​​​​opencv安装​​​​安装字体​​​​安装

#yyds干货盘点# leetcode 腾讯精选练习 50 题:二叉搜索树中第k小的元素_灰太狼_cxh的博客-多极客编程

题目:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3代码实现:class Solution { public int kthSmalles

#yyds干货盘点# 动态规划专题:小红取数_风的博客-多极客编程

1.简述:描述小红拿到了一个数组,她想取一些数使得取的数之和尽可能大,但要求这个和必须是  的倍数。你能帮帮她吗?输入描述:第一行输入两个正整数  和 第二行输入  个正整数 输出描述:如果没有合法方案,输出 -1。否则输出最大的和。示例1输入:5 54 8 2 9 1输出:20说明:取后四个数即可2.代码实现:import java.util.*;public class Main { p

verilog语法入门_zhang_shiwei的博客-多极客编程

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公

用户画像分析的应用及搭建_枫叶飘飘的博客-多极客编程

1、什么是用户画像分析我们经常在淘宝网购物,作为淘宝方,他们想知道用户是什么样的,年龄、性别、城市、收入、购物品牌偏好、购物类型、平时的活跃程度等,这样的一个用户描述就是用户画像分析。在实际工作中,用户画像分析是一个重要的数据分析手段,帮助产品策划人员对产品功能进行迭代,帮助产品运营人员做用户增长。作为产品策划人员,需要策划一个好的功能,获得用户最大的可见价值与隐形价值、必须价值与增值价值,那么了

#yyds干货盘点#今天讲讲时间管理_文本、的博客-多极客编程

有朋友说工作一天基本上没有时间和精力去阅读了,这里讲讲我的时间管理。​我并不是读书狂,忙里偷闲看的这些书并不算多,其中技术类的书需要精神高度集中,读完一章赶紧做些练习巩固。非技术书主要是上下班的路上、饭后休息和晚上睡觉前读完的。很多畅销书,比如《番茄工作法》、《小强升职记》、《高效能人士的七个习惯》等等,但是发现这些书虽然理论性强,但在自己身上的实践却差强人意,在自身综合素质并不很高的情况下采用这

基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机app交互、温湿度/新闻热点/日期显示等_小锋学长生活大爆炸的博客-多极客编程

目录​​功能清单​​​​界面演示​​​​系统框图​​​​设计方案​​​​整体结构​​​​网站设计​​​​ app设计​​​​ 魔镜界面设计​​​​ 温湿度传感器​​​​ 光电传感器​​​​相关教程​​​​第三方库的安装​​​​安装库​​​​换源​​​​安装mqtt​​​​安装Qt5​​​​git clone提速​​​​安装Adafruit_DHT​​​​opencv安装​​​​安装字体​​​​安装

【c/c++】%2d,%02d是什么意思_kieary的博客-多极客编程

1、%d就是普通的输出了2、%2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格:3、%02d,和% 2d差不多,只不过左边补0修饰符 格式说明 意义: 1、M%md 以宽度m输出整型数,不足m时,左补空格2、0m%0md 以宽度m输出整型数,不足m时,左补零3、m,n%​​m.nf​​ 以宽度m输出实型小数,小数位为n位如图所示,2表示输出宽度,当大于输出宽度时,数据按

mongodb游标学习(五)_雍州无名的博客-多极客编程

mongodb语法与js类似1.快速插入10000条数据for(var i=0;i<10000;i++) { db.bar.insert({_id:i+1,title:'hello world',content:'aaa'+i});}2.游标例子1 手工获取游标数据var mycursor = db.bar.find({_id:{$lte:5}});printjson(mycursor.n