sshd服务防止暴力破解

蔚落 2023-02-12 02:24 79阅读 0赞

目录

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

二、Ssh防暴力破解


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

实验环境:

服务端:daodao.cn IP:192.168.1.63

客户端:daodao1.cn IP:192.168.1.64

二、Ssh防暴力破解

方案一:足够强和足够负责的密码

  • 修改默认端口;
  • 拒绝root登陆,判断一个用户是否是管理员,通过用户的UID和GID;
  • 通过lsatb查看登陆失败的用户,多次尝试的用户可以拒绝此IP;

方案二:fail2ban软件防止,官网:http://www.fail2ban.org/

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

字典库:密码长度20位

例如:密码为:QAZ wsx!@#$123

这样的密码就不会被黑客那么容易的破解了。密码一定要足够的复杂,切记!!!

1.1.2、修改默认端口号 sshd 默认端口号: 22
使用nmap工具扫描端口号:

  1. [root@daodao ~]# rpm -ivh /mnt/Packages/nmap-5.21-4.el6.x86_64.rpm
  2. [root@daodao ~]# nmap 192.168.1.63 #扫描服务开发了哪些端口
  3. Starting Nmap 5.21 ( http://nmap.org ) at 2015-05-18 09:48 CST
  4. Nmap scan report for daodao.cn (192.168.1.63)
  5. Host is up (0.000027s latency).
  6. Not shown: 998 closed ports
  7. PORT STATE SERVICE
  8. 22/tcp open ssh
  9. 111/tcp open rpcbind
  10. Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds

将默认端口号22改为80

  1. [root@daodao ~]# vim /etc/ssh/sshd_config
  2. # 改Port 22为:Port 80
  3. [root@daodao ~]# /etc/init.d/sshd restart
  4. Stopping sshd: [ OK ]
  5. Starting sshd: [ OK ]

再次扫描:

  1. [root@daodao ~]# nmap 192.168.1.63
  2. Starting Nmap 5.21 ( http://nmap.org ) at 2015-05-22 21:13 CST
  3. Nmap scan report for daodao.cn (192.168.1.63)
  4. Host is up (0.000019s latency).
  5. Not shown: 998 closed ports
  6. PORT STATE SERVICE
  7. 80/tcp open http
  8. 111/tcp open rpcbind

测试:

  1. [root@daodao ~]# ssh root@192.168.1.63
  2. ssh: connect to host 192.168.1.63 port 22: Connection refused

正确的方法:

  1. [root@daodao ~]# ssh root@192.168.1.63 -p 80

1.1.3、不使用root用户名登录

不使用用户名为root的帐号登录系统,但是要获得root超级管理员权限。

注:判断一个用户是不是超级管理员,看的是用户的ID是否为0。

例:创建一个普通帐号

  1. [root@daodao ~]# useradd sum
  2. [root@daodao ~]# echo 123456 | passwd --stdin sum
  3. Changing password for user sum.
  4. passwd: all authentication tokens updated successfully.
  5. [root@daodao ~]# vim /etc/passwd
  6. #改:root:x:0:0:root:/root:/bin/bash 为:root:x:0:0:root:/sbin/nologin
  7. #改:sum:x:500:500::/home/mk:/bin/bash 为:sum:x:0:0::/home/mk:/bin/bash

测试:

  1. [root@daodao ~]# ssh root@192.168.1.63 -p 80 #root登录不成功
  2. root@192.168.1.63's password: 123456
  3. Last login: Sun May 10 09:43:55 2015 from daodao.cn
  4. This account is currently not available.
  5. Connection to 192.168.1.63 closed.
  6. [root@daodao ~]# ssh sum@192.168.1.63 -p 80
  7. sum@192.168.1.63's password:
  8. Last login: Sun May 10 09:49:02 2015 from daodao.cn
  9. [root@daodao ~]# whoami #查看当前登录系统的用户名
  10. root
  11. [root@daodao ~]# id sum
  12. uid=0(root) gid=0(root) groups=0(root)

以上三种方法:

1、密码足够复杂:

2、修改默认端口号

3、不使用root用户名登录

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

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

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

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

还原环境:

  1. [root@daodao ~]# vim /etc/passwd
  2. #改:root:x:0:0:root:/root:/sbin/nologin 为:root:x:0:0:root:/root:/bin/bash
  3. [root@daodao ~]# vim /etc/ssh/sshd_config
  4. #改:Port 80 为:Port 22
  5. [root@daodao ~]# service sshd restart
  6. Stopping sshd: [ OK ]
  7. Starting sshd: [ OK ]

1.2.2 安装:
[root@daodao ~]# tar -zxvf fail2ban-0.8.14.tar.gz
[root@daodao fail2ban-0.8.14]# cd fail2ban-0.8.14
#安装python:

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

生成服务启动脚本:

  1. [root@daodao fail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban
  2. [root@daodao fail2ban-0.8.14]# chkconfig --add fail2ban 添加开机启动
  3. [root@daodao fail2ban-0.8.14]# chkconfig --list fail2ban 查看启动项
  4. fail2ban 0:off 1:off 2:off 3:on 4:on 5:on 6:off

你怎么知道要复制这个文件?

找规律:

  1. [root@daodao fail2ban-0.8.14]# vim /etc/init.d/network
  2. [root@daodao fail2ban-0.8.14]# vim /etc/init.d/sshd
  3. [root@daodao fail2ban-0.8.14]# vim /etc/init.d/httpd

# 以上三个服务启动脚本都有:

  1. # chkconfig: 2345 10 90

#注: 2345系统级 10启动顺序 90关机时,关闭服务的顺序
# 过滤关键字:chkconfig

  1. [root@daodao fail2ban-0.8.14]# grep chkconfig ./* -R --color
  2. ./files/redhat-initd:# chkconfig: - 92 08

相关主要文件说明:

  1. cd /etc/fail2ban/
  2. ls
  3. /etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
  4. /etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
  5. /etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
  6. /etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

1.2.3 应用实例
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除。

  1. [root@daodao ~]# vim /etc/fail2ban/jail.conf #改以下红色标记内容
  2. [ssh-iptables]
  3. enabled = true
  4. filter = sshd
  5. action = iptables[name=SSH, port=ssh, protocol=tcp]
  6. sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]
  7. logpath = /var/log/secure
  8. findtime = 300
  9. maxretry = 3
  10. bantime = 3600

给大家介绍下配置文件的内容:

  1. [DEFAULT] #全局设置
  2. ignoreip = 127.0.0.1/8 #忽略的IP列表,不受设置限制
  3. bantime = 600 #屏蔽时间,单位:秒
  4. findtime = 500 #这个时间段内超过规定次数会被ban掉
  5. maxretry = 3 #最大尝试次数
  6. backend = auto [ssh-iptables]
  7. #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
  8. enabled = false #是否激活此项(true/false)修改成 true
  9. filter = sshd #过滤规则filter的名字,对应filter.d目录下的sshd.conf
  10. action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数,对应action.d/iptables.conf文件
  11. sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] #触发报警的收件人
  12. logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath = /var/log/sshd.log
  13. #5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
  14. bantime = 3600 #禁止用户IP访问主机1小时
  15. findtime = 300 #在5分钟内内出现规定次数就开始工作
  16. #在5分钟内内出现规定次数就开始工作
  17. maxretry = 3 #3次密码验证失败

1.2.4 启动服务:

  1. [root@daodao fail2ban-0.8.14]#service fail2ban start
  2. Starting fail2ban: [确定]
  3. [root@daodao ~]# ssh root@192.168.1.63 #只有密码对, 就可以正常登录
  4. root@192.168.1.63's password:
  5. Last login: Wed May 6 14:58:02 2015 from daodao.cn

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

  1. [root@xuegod64 ~]# ssh 192.168.1.63
  2. root@192.168.1.63's password:
  3. Permission denied, please try again.
  4. root@192.168.1.63's password:
  5. Permission denied, please try again.
  6. root@192.168.1.63's password:
  7. Permission denied (publickey,password).
  8. [root@xuegod64 ~]# ssh 192.168.1.63
  9. ssh: connect to host 192.168.1.63 port 22: Connection refused

查看fail2ban服务运行状态:

  1. [root@daodao fail2ban]# fail2ban-client status #配置好之后我们检测下fail2ban是否工作。
  2. Status
  3. |- Number of jail: 1
  4. `- Jail list: ssh-iptables
  5. [root@daodao fail2ban]# fail2ban-client status ssh-iptables
  6. #具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。
  7. Status for the jail: ssh-iptables
  8. |- filter
  9. | |- File list: /var/log/secure
  10. | |- Currently failed: 0
  11. | `- Total failed: 3
  12. `- action
  13. |- Currently banned: 1
  14. | `- IP list: 192.168.1.63
  15. `- Total banned: 1

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

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

## 总结:

1、密码足够复杂:

2、修改默认端口号

3、不使用root用户名登录

4、使用fail2ban 防止SSHD服务被暴力破解

发表评论

表情:
评论列表 (有 0 条评论,79人围观)

还没有评论,来说两句吧...

相关阅读

    相关 linux 防止ssh暴力的方法

    上两个星期发生了一件事情,让我感觉到安全是多么的重要,因为租了一天学生机Linux作为服务器,没想到用了没两个月就出现问题了。给外国黑客ssh暴力破解,然后安装挖矿病毒,导致c