Ubuntu 18.10 安装DenyHosts 防止暴露在外网服务器被恶意ssh爆破

今天一朋友突然想起来看看服务器有没有被恶意ssh爆破,结果不看不知道,还真的有。还不少,上github看了一下,果然还是有和我们一样的朋友的。。已经有大神写好了插件了,直接用就行了。

本来我准备把密码访问关闭,然后端口也改一下,后来想了想,关闭密码访问真的不方便,改端口一样可以扫出来,还不如来点儿狠得,直接拉黑得了。

一、DenyHost简介:

DenyHosts是基于Python2写的一个程序软件,运行于Linux上预防SSH暴力破解的,它会分析sshd的日志文件(/var/log/auth.log),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,并且会列入系统防火墙黑名单

  • DenyHosts官网:点击访问 http://denyhosts.sourceforge.net/

重要提示!!!

使用这个软件之前,最好清空一下已经存在的系统日志,因为软件会扫描已经存在的日志文件,如果他检测到你的允许次数 小于 日志中已经存在的ip的错误次数。那么即使是之前的登录日志中的ip也会被封的。

所以建议先清理一下旧日志,清理之后一定要重启系统日志服务!!

$ sudo cat /dev/null > /var/log/auth.log  
$ sudo service rsyslog restart    # 重启系统日志服务 不重启的话,auth.log就不会再有记录了,denyhost也就不会扫描相当于废了

二、DenyHost安装

这里以ubuntu为例

  $ sudo apt-get update      # 更新ubuntu 软件源:
  $ sudo apt-get install denyhosts   # 安装 DenyHost  提示按 “Y”
  $ tail -f /var/log/auth.log  # 查看登录系统的日志  denyhosts就是扫描的这个日志文件

安装完成后程序会自动启动 查看是否启动命令:

$ sudo ps -ef | grep denyhosts

输出: # 至少有两条记录。下面的一条为ps的进程
root      8680     1  0 13:38 ?         00:00:00 python /usr/sbin/denyhosts --daemon --purge --config=/etc/denyhosts.conf
yourname  15322 14556  0 22:19 pts/0    00:00:00 grep --color=auto denyhosts

我今天一安装,程序扫描我的日志文件,居然发现了300多个想尝试登陆我服务器得ip.天呐,
我服务器上是有什么宝吗? ?

目录:

/var/lib/denyhosts/ # 程序工作目录 所有的日志都在这里面
/etc/hosts.deny # 已加入黑名单的ip


配置文件详细解读

SECURE_LOG = /var/log/auth.log   # ssh日志文件  
HOSTS_DENY = /etc/hosts.deny    # 将阻止IP写入到hosts.deny
PURGE_DENY =     # 过多久后清除已经禁止的,空代表永不解禁 其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
BLOCK_SERVICE = sshd   # 阻止服务名
DENY_THRESHOLD_INVALID = 5  # 允许无效用户(在/etc/passwd未列出)登录失败次数,允许无效用户登录失败的次数.
DENY_THRESHOLD_VALID = 5  #  允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5  #  允许root登录失败的次数
DENY_THRESHOLD_RESTRICTED = 1  #  设定 deny host 写入到该资料夹
WORK_DIR = /var/lib/denyhosts/   # 将deny的host或ip纪录到Work_dir中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS = YES
HOSTNAME_LOOKUP=no  # 是否做域名反解
LOCK_FILE = /run/denyhosts.pid  # 将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
IPTABLES = /sbin/iptables  # 防火墙脚本文件
ADMIN_EMAIL = [email protected]  # 设置接收通知邮件的地址 多个 ,分隔
SMTP_HOST = localhost  # SMTP服务器地址
SMTP_PORT = 25  # 端口
SMTP_USERNAME = [email protected]  # 接收的邮箱看到的发送者邮箱地址
SMTP_PASSWORD= password   # 使用第三方邮箱的服务一般都有授权码 不是邮箱的密码哦
SMTP_FROM = DenyHosts [email protected]  # 显示发件人是谁 
SMTP_SUBJECT = DenyHosts Report  # 邮件主题
AGE_RESET_VALID=1d  # 有效用户登录失败计数归零的时间
AGE_RESET_ROOT=1d  # root用户登录失败计数归零的时间
AGE_RESET_RESTRICTED=5d  # 用户的失败登录计数重置为0的时间
AGE_RESET_INVALID=10d  # 无效用户登录失败计数归零的时间
DAEMON_LOG = /var/log/denyhosts  自己的日志文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 5m  # 该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间

相关命令

$ sudo service denyhosts start  
$ sudo service denyhosts stop
$ sudo service denyhosts restart
$ sudo service denyhosts status   # 如果启动失败可以查看错误信息
$ sudo dpkg -l|grep denyhost   # 查看是否安装了 denyhost
$ sudo apt-get purge denyhost  # 卸载denyhost

误封了自己的ip怎么办?我刚开始安装,为了测试,把自己ip封了,整了好久才搞好。

我之前误封之后,把ip从 hosts.deny里面移除了也不行。后来发现官网早有解释。

Ubuntu 18.10 安装DenyHosts 防止暴露在外网服务器被恶意ssh爆破_第1张图片

但是问题来了,我按照他的方法操作了,还是不行,后来我直接把这个软件卸载了,并且重启了服务器,发现我的ip依然被封禁,那这就不用想了,肯定是系统级别的禁止。果不其然。执行

$ sudo iptables -L  # 查看本机所有防火墙的防火墙规则

发现了我自己的ip。

Ubuntu 18.10 安装DenyHosts 防止暴露在外网服务器被恶意ssh爆破_第2张图片

由于官方并没有提供命令移除被封禁的ip,所以我在这里帮大家写好了一键移除的脚本。

IP=$1
if [ -n "$IP" ];then
    if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
        service denyhosts stop
        sed -i "/$IP/d" /etc/hosts.deny
        sed -i "/$IP/d" /var/lib/denyhosts/hosts-valid
        sed -i "/$IP/d" /var/lib/denyhosts/users-hosts
        sed -i "/$IP/d" /var/lib/denyhosts/hosts
        sed -i "/$IP/d" /var/lib/denyhosts/hosts-root
        sed -i "/$IP/d" /var/lib/denyhosts/hosts-restricted
        iptables -D INPUT -s $IP -j DROP
        echo $IP remove from Denyhosts
        service denyhosts start
    else
        echo "This is not IP"
    fi
else
    echo "IP is empty"
fi

用法 新建一个后缀.sh的文件,将下面代码复制进去,然后执行
$ sudo chmod +x name.sh # 添加可执行权限

解除封禁ip命令
$ sudo ./name.sh 127.0.0.1

添加白名单ip ⬇️ 官网介绍

Ubuntu 18.10 安装DenyHosts 防止暴露在外网服务器被恶意ssh爆破_第3张图片

命令

$ sudo vim /var/lib/denyhosts/allowed-hosts  
# 然后将你的白名单ip写进去  一行一个,最后一个字符支持通配符 *

现在看我的收件箱:

大概看了下ip,有国外也有国内的。。。
Ubuntu 18.10 安装DenyHosts 防止暴露在外网服务器被恶意ssh爆破_第4张图片
好了,教程到此结束。有问题的小伙伴可以留言

你可能感兴趣的:(服务器)