zoukankan      html  css  js  c++  java
  • 树莓派保卫战--防止SSH暴力破解

      自己用树莓派搭建了个小server,用了很长时间了,最近查看log发现有很多SSH登陆失败,瞬间心就碎了,一直没关心小派的安全问题,怪我咯!

      马上行动,首先研究下log:/var/log/auth.log记录了SSH登陆等权限安全信息,如何知道自己被攻击了呢?

    # grep sshd.*Failed /var/log/auth.log | less

    Nov 16 11:26:44 raspberrypi2 sshd[4876]: Failed password for root from 61.160.222.53 port 1323 ssh2
    ...
    Nov 17 01:14:49 raspberrypi2 sshd[8791]: Failed password for root from 222.186.15.160 port 2670 ssh2
    ...
    Nov 16 14:31:23 raspberrypi2 sshd[9343]: Failed password for invalid user admin from 61.160.222.53 port 1782 ssh2
    ...

      这里显示的是尝试通过SSH登陆失败的记录,描述里有IP和端口描述。一般如果遇到暴力破解的话,会尝试用root,admin等常用用户名,而且会出现很多失败记录。

      另外一种失败记录一般是端口扫描。如下:

    # grep sshd.*Did /var/log/auth.log | less

    Nov 15 12:09:49 raspberrypi2 sshd[14252]: Did not receive identification string from 198.20.69.98
    Nov 16 12:28:37 raspberrypi2 sshd[6351]: Did not receive identification string from 61.160.222.53

      统计了下,最近一个月有两万多条,我错了,小派:(

      如何防止这类闲的蛋疼的人呢?一般来说:

    1.   配置sshd_config,禁用root登陆
    2.   使用非常规SSH服务端口
    3.   使用非常规登陆名
    4.   尽量使用key登陆

      以上四条条我都注意了,但防止不了暴力破解,接下来只能通过一些工具实现了。

      Googling,发现两个工具DenyHosts和Fail2Ban,两个工具的作用是监视log,发现异常,屏蔽IP(iptables),也可同时执行发邮件等操作,都是Python写的。DenyHosts是针对SSH服务的,Fail2Ban可以适用多种服务如HTTP,FTP等,我选了Fail2Ban虽然我只用到SSH。

      安装很简单:

    # sudo apt-get install fail2ban

      修改配置(可以不修改,默认是启动SSH保护的):

    # ls /etc/fail2ban/
    action.d/  fail2ban.conf  filter.d/  jail.conf  jail.local
    # jail.local是jail.conf的override配置文件
    # vim /etc/fail2ban/jail.local
    [ssh]

    enabled  = true
    # 设置了非标准端口,需要修改为对应端口
    port     = ssh
    filter   = sshd
    action   = wechat[name=SSH]
    logpath  = /var/log/auth.log
    bantime  = 1200
    maxretry = 3

      发现异常后,屏蔽IP时fail2ban默认使用sendmail发邮件提醒,这个action是可以自定义的,在/etc/fail2ban/action.d/目录下可以添加配置文件实现。我自己弄了个微信提醒服务,当发现异常是通过微信推送给我,就能第一时间让我知道谁欺负我小派了,哼~

    [via]  [via]  [via]

  • 相关阅读:
    LeetCode(258):Add Digits
    LeetCode(7):Reverse Integer
    LeetCode(14):Longest Common Prefix
    LeetCode(58):Length of Last Word
    LeetCode(165): Compare Version Numbers
    LeetCode(20):Valid Parentheses
    LeetCode(125):Valid Palindrome
    Scala中Curring实战详解之Scala学习笔记-16
    Scala中SAM转换实战详解之Scala学习笔记-15
    Scala学习笔记-14
  • 原文地址:https://www.cnblogs.com/eshizhan/p/4975347.html
Copyright © 2011-2022 走看看