zoukankan      html  css  js  c++  java
  • ssh防止暴力破解之fail2ban

    1.利用sshd服务本身防止暴力破解

    2.sshd服务防止暴力破解和fail2ban使用方法

    先说说一般的防范措施:

    方法1:

    1、密码足够复杂:

    密码的长度要大于8位最好大于14位。密码的复杂度是密码要尽可能有数字大小写字母特殊符号混合组成。       3/4     0-9  a-z    A-Z     @!#%*

    方法2:修改默认端口号   sshd 默认端口号: 22

    [root@DaMoWang ~]# nmap 192.168.94.100
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2018-07-21 13:41 CST
    Nmap scan report for localhost (192.168.94.100)
    Host is up (0.0000030s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh 
    53/tcp   open  domain
    3306/tcp open  mysql
    
    Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds
    #为了避免被扫描到22端口 修改配置文件的默认端口
    [root@DaMoWang ~]# vim /etc/ssh/sshd_config #修改 #Port 22 注释去掉并修改端口号 比如改成2222
    [root@DaMoWang ~]# systemctl restart sshd

    再次扫描端口

    [root@DaMoWang ~]# nmap 192.168.94.100
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2018-07-21 14:09 CST
    Nmap scan report for localhost (192.168.94.100)
    Host is up (0.0000050s latency).
    Not shown: 997 closed ports
    PORT     STATE SERVICE
    53/tcp   open  domain
    2222/tcp open  EtherNet/IP-1  #原本是22端口的ssh 变成了现在的2222端口
    3306/tcp open  mysql
    
    Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

    测试

    [root@ceshi ~]# ssh root@192.168.94.100
    ssh: connect to host 192.168.94.100 port 22: Connection refused
    [root@ceshi ~]# ssh root@192.168.94.100 -p 2222
    root@192.168.94.100's password: 
    Last login: Sat Jul 21 13:31:27 2018 from 192.168.94.1
    192.168.94.100 
    [root@DaMoWang ~]# ip a 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:c8:e2:0d brd ff:ff:ff:ff:ff:ff
        inet 192.168.94.100/24 brd 192.168.94.255 scope global noprefixroute dynamic ens33
           valid_lft 15118sec preferred_lft 15118sec
        inet6 fe80::1684:7113:438c:7db4/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
        inet6 fe80::a1f6:1d30:fbb2:f090/64 scope link tentative noprefixroute dadfailed 
           valid_lft forever preferred_lft forever
    [root@DaMoWang ~]# exit
    登出
    Connection to 192.168.94.100 closed.
    # 改端口号的目的是为了,避免扫描

    不使用root用户名登录,这样黑客猜不到你的用户名。也就无从暴力破解

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

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

    创建一个普通帐号,然后变成超级管理权限

    [root@DaMoWang ~]# useradd damowang
    [root@DaMoWang ~]# echo 475541270|passwd --stdin damowang
    更改用户 damowang 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    [root@DaMoWang ~]# vim /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    root:x:0:0:root:/sbin/nologin   #不让root登录系统
    damowang:x:1011:1011::/home/damowang:/bin/bash
    damowang:x:0:0::/home/damowang:/bin/bash  #修改完UID后这个普通用户就有超级管理员的权限,即时生效

    测试

    [root@ceshi ~]# ssh damowang@192.168.94.100 -p 2222
    damowang@192.168.94.100's password: 
    Last login: Sat Jul 21 14:16:22 2018 from 192.168.94.29
    [root@DaMoWang ~]# id damowang
    uid=0(root) gid=0(root) 组=0(root)
    [root@DaMoWang ~]# whoami   #查看当前登录系统的用户名
    root

    总结:以下三种方法:

    1、密码足够复杂

    2、修改默认端口号

    3、不使用root用户名登录

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

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

    客户体验非常不好,对经济造成危害

    技术源于生活,你的银行卡 输错3次密码 , 结果会怎么样???

    卡会锁24个小时。。。

    我们使用fail2ban也可以实现锁IP

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

    下载软件包:

    官方地址:

    http://www.fail2ban.org

     下载fail2ban 

      [root@ceshi ~]# tar xf fail2ban-0.8.14.tar.gz -C /usr/src/
      [root@ceshi ~]# cd /usr/src/fail2ban-0.8.14/
      [root@ceshi fail2ban-0.8.14]# less README.md

    查看使用方法 

    [root@ceshi fail2ban-0.10]# python -V
    Python 2.7.5
    [root@ceshi fail2ban-0.10]# python setup.py install
    [root@ceshi fail2ban-0.10]# echo $?
    0
    # 这样就安装完fail2ban

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

    下面是策略

    [root@ceshi fail2ban-0.8.14]# vim /etc/fail2ban/jail.conf

    # 修改或添加标记处内容

    enabled  = true  #是否激活此项(true/false)修改成 true

    logpath  = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。

    #完成:5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下

    findtime  = 300  #在5分钟内内出现规定次数就开始工作,默认时间单位:秒

    maxretry = 3    #3次密码验证失败

    bantime  = 3600         #禁止用户IP访问主机1小时

    # 在安装路径下 启动服务
    [root@ceshi fail2ban-0.8.14]# files/redhat-initd start
    [root@ceshi fail2ban-0.8.14]# files/redhat-initd start
    Starting fail2ban:                                         [  确定  ]

    测试

    #输入正确的密码可以正常登陆
    [root@ceshi ~]# ssh root@192.168.94.29 
    root@192.168.94.29's password: 
    Last login: Sat Jul 21 14:58:07 2018 from 192.168.94.100
    [root@DaMoWang ~]#
    
    #输入三次错误密码
    [root@ceshi ~]# ssh root@192.168.94.29 
    root@192.168.94.29's password: 
    Permission denied, please try again.
    root@192.168.94.29's password: 
    Permission denied, please try again.
    root@192.168.94.29's password: 
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    [root@ceshi ~]# ssh root@192.168.94.29 
    ssh: connect to host 192.168.94.29 port 22: Connection refused

    查看哪台机器在暴力破解你的服务器

    查看fail2ban服务运行状态:

    [root@DaMoWang fail2ban-0.8.14]#  fail2ban-client status
    Status
    |- Number of jail:    1
    `- Jail list:        ssh-iptables

    具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功

    [root@DaMoWang fail2ban-0.8.14]# 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.94.100   #拦截192.168.94.100成功
       `- Total banned:    1

     

     

    --求知若饥 虚心若愚
  • 相关阅读:
    【前端开发】git常见使用命令行,含git提交不交叉rebase操作方法
    【前端开发】vue项目版本提交日志插件changelog
    【git可视化】git可视化工具
    【node爬虫】简单的node爬虫实例教程
    【前端开发】常见的安全攻击
    计算机网络基础知识(待补充)
    大数据生态圈的一致性
    Android Stdio部分配置
    MySQL单机上多实例安装
    MySQL Replication
  • 原文地址:https://www.cnblogs.com/bigdevilking/p/9346981.html
Copyright © 2011-2022 走看看