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

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

内容简介: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的使用方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

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

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

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

正则表达式在线测试