SSH防止暴力破解及fail2ban的使用方法

栏目: 服务器 · 发布时间: 6年前

内容简介:SSH防止暴力破解及fail2ban的使用方法

1 5年出现的 JAVA 反序列化漏洞,另一个是 redis 配置不当导致机器入侵。 只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/root/.ssh/目录下实现免密码登陆他人的 Linux 服务器。从而达到入侵成功的效果。 fail2ban是一款很棒的开源服务软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大! 简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 本文将从以下四个方面是说明ssh防止暴力破解的常用方法以及如何用fail2ban来防止暴力破解。

一、实战: sshd服务防止暴力破解

二、fail2ban的安装。

三、fail2ban如何防止暴力破解

四、ssh服务器免秘钥登录

说明:本文的服务器和客户端说明

服务端:xiaolyu76        IP:192.168.31.76

客户端:xiaolyu77         IP:192.168.31.77

一、实战: sshd服务防止暴力破解

1、 密码足够复杂,不使用弱口令

密码的长度要大于8位最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成,

拓展:弱口令

运维安全最核心的问题就是弱口令

qwe@123 1qaz2wsx 6yhnNHY^ 这些都是弱口令

为什么是弱口令? 因为这些都是英文键盘常见的组合。

强口令: 8位数以上的无规则大小写和数字组合

之前发生的漏洞: 15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵。

只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/root/.ssh/目录下实现免密码登陆他人的Linux服务器。从而达到入侵成功的效果。

2、修改默认端口号

1)安装nmap 扫描工具。nmap  

[root@xiaolyu77 ~]# rpm -qa | grep nmap

[root@xiaolyu77 ~]# yum install -y nmap

SSH防止暴力破解及fail2ban的使用方法

[root@xiaolyu77 ~

]# nmap xiaolyu77  #扫描自己的ip地址

5.51 ( http: // nmap.org ) at 2016-09-19 08:56 CST
Nmap scan report for xiaolyu77 ( 192.168 . 31.77

)

0

.0000080s latency).

999 closed ports PORT STATE SERVICE 22 /tcp open  ssh        #22端口,判断出来是ssh服务。
done : 1 IP address ( 1 host up) scanned in 0.19

seconds

~

]# nmap xiaolyu76 #扫描xiaolyu76服务器的ip地址

5.51 ( http: // nmap.org ) at 2016-09-19 08:57 CST
Nmap scan report for xiaolyu76 ( 192.168 . 31.76

)

Host is up (

0

.00028s latency).

Not shown:

999 closed ports PORT STATE SERVICE 222 /tcp open  rsh-

spx      #222端口判断不出来是ssh服务,发生误判。

MAC Address:

00 :0C: 29 : 58

:6F:7B (VMware)

Nmap

done : 1 IP address ( 1 host up) scanned in

1.20

seconds

SSH防止暴力破解及fail2ban的使用方法

现在将服务器的端口修改成8099:

[root@xiaolyu76 ~]# vim /etc/ssh/sshd_config

SSH防止暴力破解及fail2ban的使用方法

SSH防止暴力破解及fail2ban的使用方法

3、不使用root用户名登录。

是否可以禁止root身份登录? 不行,因为有些程序需要使用root身份登录并运行。另外判断一个用户是不是超级管理员,看的是用户的ID是否为0。

[root@xiaolyu76 ~ ]# useradd mk  #创建一个用户mk,用它来冒充root用户。

[root@xiaolyu76 ~]# passwd mk   #给mk用户添加密码。

Changing password for user mk.

New password:

BAD PASSWORD: it is too simplistic/systematic

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

[root@xiaolyu76 ~]# vim /etc/passwd
# passwd文件修改前
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiao:x:500:500::/home/xiao:/bin/bash
mk:x:501:501::/home/mk:/bin/bash
#passwd文件修改后:(只修改了文件中表蓝色的部分,修改后变成了这种颜色)

root:x:0:0:root:/root:/sbin/nologin   #修改后的root用户,不在具有登录权限了。

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

xiao:x:500:500::/home/xiao:/bin/bash

mk:x:0:0::/home/mk:/bin/bash  #修改后的mk用户,它的uid,gid都为0。

也就是将/etc/passwd中的这两行做了修改:

改:mk:x:500:500::/home/mk:/bin/bash

为:mk:x:0:0::/home/mk:/bin/bash

改:root:x:0:0:root:/root:/bin/bash

为:root:x:0:0:root:/sbin/nologin

好了,修改完成,分别用root和mk这两个用户来登录一下试试:

[root@xiaolyu77 ~]# hostname - i
192.168 . 31.77
[root@xiaolyu77
~]# ssh -p 8099 xiaolyu76
root@xiaolyu76
' s password:
Last login : Mon Sep 19 10 : 04 : 10 2016 from 192.168 . 31.160
Warning
! From now on, all of your operations have been recorded!
This account is currently not available.
Connection to xiaolyu76 closed.
[root@xiaolyu77
~]# ssh -p 8099 mk@xiaolyu76
mk@xiaolyu76
' s password:
Last login : Mon Sep 19 10 : 06 : 00 2016 from xiaolyu77
Warning
! From now on, all of your operations have been recorded!
[root@xiaolyu76
~]# hostname - i
192.168 . 31.76
[root@xiaolyu76
~]# whoami
root
[root@xiaolyu76
~]#

SSH防止暴力破解及fail2ban的使用方法

当然了,修改下面内容后,mk用户也是登录不上的。只判断UID是否为0,不查看用户名的:

[root@xiaolyu76 ~]# vim /etc/ssh/sshd_config

SSH防止暴力破解及fail2ban的使用方法

改:

#PermitRootLogin yes

为:

PermitRootLogin no 

再来登录一下试试。

[root@xiaolyu76 ~]# ssh -p 8099 mk@xiaolyu76

SSH防止暴力破解及fail2ban的使用方法

一般情况这个就可以解决了暴力破解的问题了。

二、fail2ban的安装。

对于上面的三种方法来防止暴力破解,是远远不够的,有一种情况,暴力破解问题比较严重, 需要把暴力破解的用的IP地址直接禁掉。

实战背景:

最近公网网站一直被别人暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!

简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 

1. fail2ban的安装:

方法一、使用rpm升级,再通过yum进行安装

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #Uvh升级该软件包。

然后 yum install fail2ban 

#因为yum安装比较简单,基本上就像傻瓜式安装,这里不演示了。

方法二、源码安装

首先去官网下载最新版fail2ban :   http://www.fail2ban.org

下面是打开官网的样子:

SSH防止暴力破解及fail2ban的使用方法

选择下载fail2ban,进入如下界面:

SSH防止暴力破解及fail2ban的使用方法

我这里为了直接从CentOS中下载(免去了用xshell或其它 工具 再拖放到虚拟机 的麻烦),将下载地址复制出来了:

SSH防止暴力破解及fail2ban的使用方法

然后,我直接在虚拟机中下载安装:

SSH防止暴力破解及fail2ban的使用方法

这里出现了一个问题:目前还没有搞定,为什么我在线wget下载的fail2ban文件名单单只有0.8.14呢?

对于陌生的软件,如果进行编译安装的话,通常都要先看它的readme文件,如何进行安装。

解压查看readme文件

[root@xiaolyu76 ~]# tar  -zxvf fail2ban-0.8.14.tar.gz

[root@xiaolyu76 fail2ban- 0.8 . 14

]# vim README.md

#说明:下面的readme仅仅是我择要摘取,原文太长了。

This README is a quick introduction to Fail2ban. More documentation, FAQ, HOWTOs

in fail2ban( 1 ) manpage and on the website http: // www.fail2ban.org

Installation:

-------------
**It is possible that Fail2ban is already packaged for

your distribution.  In

case , you should use it instead.**

Required:

- [Python >= 2.4 ](http: // www.python.org)

Optional:

- [pyinotify >= 0.8 . 3 ](https: // github.com/seb-m/pyinotify)

- Linux >= 2.6 . 13

- [gamin >= 0.0 . 21 ](http: // www.gnome.org/~veillard/gamin)

To install , just do

:

tar xvfj fail2ban- 0.8 . 12 . tar

.bz2

cd fail2ban

- 0.8 . 12     python setup.py install This will install

fail2ban. The executable scripts are

placed into

/usr/bin, and configuration under /etc/fail2ban.

SSH防止暴力破解及fail2ban的使用方法

需要安装 python 开发环境,并且版本要大于2.4

查看当前系统中python的版本:

[root@xiaolyu76 ~]# python -V

Python 2.6.6

[root@xiaolyu76 ~]# cd fail2ban-0.8.14

SSH防止暴力破解及fail2ban的使用方法

[root@xiaolyu76 fail2ban-0.8.14]# ls setup.py

setup.py

[root@xiaolyu76 fail2ban-0.8.14]# python setup.py install

SSH防止暴力破解及fail2ban的使用方法

SSH防止暴力破解及fail2ban的使用方法

生成服务启动脚本:

#下面是生成服务启动脚本的程序:

- 0.8 . 14 ]# pwd 
/root/fail2ban- 0.8 . 14 [root@xiaolyu76 fail2ban - 0.8 . 14 ]# grep

/*

-R --color  #查看服务启动脚本是哪个文件,同时着色显示。

./files/RedHat-initd:# chkconfig: - 92 08

[root@xiaolyu76 fail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban #将服务启动脚本复制到存放开机启动的服务的目录下

[root@xiaolyu76 fail2ban-0.8.14]# chkconfig --add fail2ban  #设置服务的开机启动

[root@xiaolyu76 fail2ban-0.8.14]# service fail2ban start    #service fail2ban start|stop|status|restart测试服务是否正常

Starting fail2ban:                                        [  OK  ]

[root@xiaolyu76 fail2ban-0.8.14]# service fail2ban status

fail2ban-server (pid  5874) is running...

Status

|- Number of jail:    0

`- Jail list:       

[root@xiaolyu76 fail2ban-0.8.14]# service fail2ban restart

Stopping fail2ban:                                        [  OK  ]

Starting fail2ban:                                        [  OK  ]

[root@xiaolyu76 fail2ban-0.8.14]# service fail2ban stop

Stopping fail2ban:                                        [  OK  ]

[root@xiaolyu76 fail2ban-0.8.14]#

为什么要生成服务启动脚本呢?生成服务启动脚本,我可以设置开机自启动,可以使用服务的相关命令service 服务名  start|stop|restart|status等等。非常方便。

拓展:

grep的用法

grep  ssh  /etc/passwd

2) echo -e  “this is a world \n nest line” |grep world

3)打印除包含 math_pattern 行之外的所有的行

grep -v match_pattern file

4)统计文件或文本中包含匹配字符串的行数:

grep -c “test” filename

5)忽略大小写

echo “hello  world” |grep -I “HELLO”

2、用tree /etc/fail2ban来查看fail2ban的文件目录树。

[root@xiaolyu76 ~]# tree /etc/fail2ban

SSH防止暴力破解及fail2ban的使用方法

通过文件树,可以看到在安装fail2ban的过程中生成了很多文件,这里给出相关主要文件说明:

/etc/fail2ban/action.d            #动作文件夹,内含默认文件。iptables以及mail等动作配置

/etc/fail2ban/fail2ban.conf    #定义了fai2ban日志级别、日志位置及sock文件位置

/etc/fail2ban/filter.d              #条件文件夹,内含默认文件。过滤日志关键内容设置

/etc/fail2ban/jail.conf           #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值 ( jail  [dʒeɪl]  监狱)

/etc/rc.d/init.d/fail2ban        #启动脚本文件

更多详情见请继续阅读下一页的精彩内容 http://www.linuxidc.com/Linux/2017-06/144911p2.htm


以上所述就是小编给大家介绍的《SSH防止暴力破解及fail2ban的使用方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ES6 标准入门(第2版)

ES6 标准入门(第2版)

阮一峰 / 电子工业出版社 / 2016-1 / 69.00元

ES6(又名 ES2105)是 JavaScript 语言的新标准,2015 年 6 月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。《ES6标准入门(第2版)》是国内仅有的一本 ES6 教程,在前版基础上增补了大量内容——对标准进行了彻底的解读,所有新增的语法知识(包括即将发布的 ES7)都给予了详细介绍,并且紧扣业界开发实践,给出了大量简洁易懂、可以即学即用的示例代码。 《......一起来看看 《ES6 标准入门(第2版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试