sshd服务防止暴力破解

摘要:
有三种方法可以防止暴力破解:方法1.配置安全的sshd服务。1.密码足够复杂。密码的长度应该大于8位,最好大于20位#禁止只是为了防止暴力破解。启用sshd服务的日志分析并指定操作阈值。默认值为logpath=/var/log/shd log#密码验证在五分钟内失败三次,用户的IP地址被禁止在一小时内访问主机。要配置fail2ban以监视sshd服务,需要修改配置文件:vimjail。conf#修改iptables操作中的端口号。

防止暴力破解的方法有三种:
方法一、
配置安全的sshd服务
1: 密码足够的复杂,密码的长度要大于8位最好大于20位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成

2:修改默认端口号
3 :不允许root账号直接登陆,添加普通账号,授予root的权限
互动:是否可以禁止root身份登录? 不行,因为有些程序需要使用root身份登录并运行。另外判断一个用户是不是超级管理员,看的是用户的ID是否为0。

4:不允许密码登陆,只能通过认证的秘钥来登陆系统

方法二、通过开源的防护软件来防护安全

简单、灵活、功能强大

实战背景:
最近公网网站一直被别人暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。
fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!

#ban (bæn)禁令

简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。
注:重启iptables服务的话,所有DORP将重置。
下载软件包:
http://www.fail2ban.org/wiki/index.php/Downloads
官方地址:
http://www.fail2ban.org

安装

#解压查看readme文件
tar  -zxvf fail2ban-0.8.14.tar.gz
 vim README.md  #查看以下内容

这里写图片描述


#需要安装python开发环境,并且版本要大于2.4
#查看当前系统中python的版本:


 cd fail2ban-0.8.14 
python setup.py install #安装

# 相关主要文件说明:
// 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]  监狱的意思

生成服务启动脚本:


cp files/redhat-initd  /etc/init.d/fail2ban
chkconfig --add fail2ban  # 开机自动启动

一般的话服务器的启动脚本文件中都含有chkcofnig

grep chkconfig ./* -R --color

启动脚本里都包含chkconfig 字段 

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

应用实例
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。
因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用sshd服务的日志分析,指定动作阀值即可。
实例文件/etc/fail2ban/jail.conf及说明如下:

[DEFAULT]               #全局设置
ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制
bantime  = 600             #屏蔽时间,单位:秒
findtime  = 600             #这个时间段内超过规定次数会被ban掉
maxretry = 3                #最大尝试次数
backend = auto            #日志修改检测机制(gamin、polling和auto这三种)

[ssh-iptables]               #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled  = true             #是否激活此项(true/false)修改成 true
filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.c
om, sendername="Fail2Ban"]   #触发报警的收件人
logpath  = /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath  = /var/log/sshd.log
#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
bantime  = 3600   #禁止用户IP访问主机1小时
findtime  = 300    #在5分钟内内出现规定次数就开始工作
maxretry = 3    #3次密码验证失败

#启动服务:
service fail2ban start

#测试:
> /var/log/secure  #清日志。 从现在开始
/etc/init.d/fail2ban restart #重新启动


#测试:故意输入错误密码3次,再进行登录时,会拒绝登录
 ssh 192.168.1.63


 fail2ban-client status  #配置好之后我们检测下fail2ban是否工作。
    Status
    |- Number of jail:  1
    `- Jail list:       ssh-iptables
#具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。
 fail2ban-client status ssh-iptables 

    Status for the jail: ssh-iptables
    |- filter
    |  |- File list:    /var/log/secure 
    |  |- Currently failed: 0
    |  `- Total failed: 3
    `- action
       |- Currently banned: 1
       |  `- IP list:   192.168.1.64 
       `- Total banned: 1

查看fail2ban的日志能够看到相关的信息

 tail /var/log/fail2ban.log
    2015-03-03 19:43:59,233 fail2ban.actions[12132]: WARNING [ssh-iptables] Ban 192.168.1.64

需要注意的四点:

1、如果做错了,想清空一下记录,还原:
只需要把 > /var/log/secure 清空就可以了。
service fail2ban restart

2、另外如果后期需要把iptables清空后或iptables重启后,也需要把fail2ban重启一下。

3、如果修改ssh默认端口22为2015后 。 配置fail2ban来监控sshd服务
需要修改配置文件:

 vim jail.conf
#修改iptables动作中的端口号。 默认为ssh。 
改:port=ssh 为 port=2015
 vim  /etc/fail2ban/action.d/iptables.conf  #修改动作文件中默认端口号。 改: port=ssh  为port=2015
 # 重启服务即可

4、如果想要使用fail2ban发送告警邮件,请确保系统的邮件服务能够正常发送邮件!

可以发一封测试邮件到指定邮箱来测试下:
echo “test mail”|mail -s test root@192.168.1.63.com

免责声明:文章转载自《sshd服务防止暴力破解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇配置zabbix当内存剩余不足15%的时候触发报警[C#]使用Quartz.NET来创建定时工作任务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SSH远程登录配置文件sshd_config详解

转载自http://blog.51cto.com/lookingdream/1826618 SSH由客户端和服务端的软件组成,在客户端可以使用的软件有SecureCRT、putty、Xshell等,而在服务器端运行的是一个sshd的服务,通过使用SSH,可以把所有传输的数据进行加密,而且也能够防止dns和IP欺骗,此外,SSH传输的数据是经过压缩的,可以加...

Systemd简介与使用

按下电源键,随着风扇转动的声音,显示器上开启的图标亮起。之后,只需要静静等待几秒钟,登录界面显示,输入密码,即可愉快的玩耍了。 这是我们大概每天都做的事情。那么中间到底发生了什么? 简单地说,从BIOS或者UEFI开始读取硬盘。接下来,进入bootloader(LILO或者GRUB),bootloader开始载入内核,内核初始化完毕后,紧接着进入用户空间的...

挂载远程主机

在windows下可以局域网共享,mount可以在本地挂载磁盘,也可以挂载局域网的网络共享。但有没有想过远程主机的目录挂载到本地主机中(非局域网)。之前了解windows有winscp软件,很方便的在两个系统之间上传和下载数据,但现在有了sshfs,用远程主要的资源和本地没有什么区别,太方便了。 (1) 远程服务器安装ssh ## centos sudo...

Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password

Centos7.5 执行ansible命令报错 问题: [root@m01 ~]# ansible servers -a "hostname" -i ./hosts -u root 172.16.1.7 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect t...

初始设置ubuntu 16.04 Vps部署rails

参考 https://blog.longwin.com.tw/2005/12/ssh_keygen_no_passwd/ 1 选择搬瓦工左边菜单栏中的“Root password modification”,然后“Generate and set new root password”,重置前请先把V-P-S关机,否则会重置失败。重置得到的root密码务必记...

CA证书安装以及SSLH协议转发

1.安装CA证书           生成一个证书文件 http://127.0.0.1/certsrv/ 申请证书 选择高级证书申请 将之前生成的base64证书文件内容贴进来 ok,完成 挂起的申请—所有任务—颁发 在颁发的证书中可以看到我们已经申请好 的证书。   访问http://127.0.0.1/certsrv/...