• DenyHosts 简单使用


    零、前言

    DenyHosts是一个Python脚本程序,它会监控并分析服务器(Linux系统)sshd的日志文件(/var/log/secure), 当发现重复的攻击时就会记录IP到指定的/etc/hosts.deny文件中,从而达到自动屏蔽IP的功能,阻止该IP继续攻击我们的服务器。
     
    比如我们在使用云服务器的时候,一开始登陆后就会提示有多少次尝试登陆你服务器的统计,往往这个数很大的时候就说明你的服务器被人关注了:
    我们可以使用下面命令(centos7.6):
    登陆成功的ip及登陆次数列表
    grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    登陆失败的ip及登陆次数列表
    grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more

    一、下载、安装DenyHosts

    [DenyHosts GitHub页面](https://github.com/denyhosts/denyhosts)
    使用DenyHosts可以参考GitHub页面的README.md文件进行安装,当前时间最新的稳定版本是3.0,下载denyhosts-3.0.tar.gz文件,并复制到Linux系统中(比如我将它放在/home目录下)
    =>解压:
    tar zxvf denyhosts-3.0.tar.gz
    =>进入源文件目录:
    cd denyhosts-3.0
    =>使用root用户权限安装:
    =>This will install the DenyHosts modules into python's site-packages directory.
    python setup.py install
    因为网上很多教程都是安装的2.6版本的,所以安装完这一步之后会在/usr/share/下面找到deny-hosts目录,可是我安装3.0版本后却没有,不过没关系,denyhosts用到的文件在/usr/bin下面都有我们切到usr/bin下操作就可以了(cd /usr/bin)
    在此我们需要配置denyhosts.conf文件,进行个性化配置:
    还是在一开始的目录下(cd /home/denyhosts-3.0)
    => 将denyhosts.conf文件复制到/etc下(上面的install就会将该文件复制过去,这里如果提示是否覆盖的话就说明已经存在,输入no就可以了)
    cp denyhosts.conf /etc
    => 使用vim编辑denyhosts.conf文件(官网里面使用的是nano编辑器)
    vim /etc/denyhosts.conf
    以下是需要配置的地方:本人服务器环境:centos7.6
            ############ THESE SETTINGS ARE REQUIRED ############
    SECURE_LOG = /var/log/secure    # 监控的sshd日志文件,系统不同位置不同
    HOSTS_DENY = /etc/hosts.deny    # 屏蔽IP的记录文件
    PURGE_DENY = 7d                 # IP被屏蔽后,多久清除屏蔽记录(m-minutes,h-hours,d-days,w-weeks,y-years)
                                    # PURGE_DENY =  设置为空代表永远不清除
    PURGE_THRESHOLD = 3             # 某个host最多被清除的次数,如果清除次数超过这个值就不会再被清理了
     
    BLOCK_SERVICE  = sshd           # 阻止的服务名,默认是sshd,也可以设置FTP、SMTP等
     
    DENY_THRESHOLD_INVALID = 3      # 允许无效用户尝试失败次数(过了这个次数还是失败就加入屏蔽)
    DENY_THRESHOLD_VALID = 3        # 有效用户(普通用户)尝试失败次数
    DENY_THRESHOLD_ROOT = 3         # root用户尝试失败次数
    DENY_THRESHOLD_RESTRICTED = 1   # 设定denyhosts将屏蔽host写入到/etc/hsots.deny文件中
    WORK_DIR = /var/lib/denyhosts   # denyhosts工作数据目录
    HOSTNAME_LOOKUP=YES             # 是否做域名反解
    LOCK_FILE = /var/lock/subsys/denyhosts    # 将DenyHost启动的pid记录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
           ############ THESE SETTINGS ARE OPTIONAL ############
    AGE_RESET_VALID=6h              # 普通有效用户登陆失败计数清零时间
    AGE_RESET_ROOT=6h               # root用户登陆失败计数清零时间
    AGE_RESET_RESTRICTED=25d        # /etc/hosts.deny文件清除数据时间
    AGE_RESET_INVALID=1d            # 无效用户登陆失败计数清零时间
           ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
    DAEMON_LOG = /var/log/denyhosts # denyhosts日志默认存放路径
    DAEMON_SLEEP = 30s              # 当以后台方式运行时,每读一次日志文件的时间间隔
    DAEMON_PURGE = 1h               # 当以后台方式运行时,清除机制在hosts.deny中终止就条目的时间间隔,这个会影响PURGE_DENY参数
     
    => 查看与配置IP白名单、黑名单(当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准)
    vim /etc/hosts.deny         # 黑名单无需手动配置,denyhosts会自动检测添加
    vim /etc/hosts.allow        # 配置规则:sshd:171.113.244.96:allow, 配置多个:171.113.244.96,158.51.96.58:allow

    => 配置、启动、停止、查看denyhosts服务

    cd /usr/bin                # 切换到/usr/bin目录下(因为该目录下有daemon-control,^-)
    cp daemon-control-dist daemon-control
        => 编辑适合自己系统环境的daemon-control文件,以下是我个人环境的相关denyhosts文件目录,这里需要自己去核对
        vim daemon-control
        ###############################################
        #### Edit these to suit your configuration ####
        ###############################################
     
        DENYHOSTS_BIN   = "/usr/bin/denyhosts.py"
        DENYHOSTS_LOCK  = "/var/lock/subsys/denyhosts"
        DENYHOSTS_CFG   = "/etc/denyhosts.conf"
     
        PYTHON_BIN      = "/usr/bin/env python"
        注意一点:一般centos默认有python2,这里启动denyhosts会报错,我们需要修改下安装的/DenyHosts/report.py包
        vim /usr/lib/python2.7/site-packages/DenyHosts/report.py
        将# from types import ListType, TupleType 取消注释:from types import ListType, TupleType
        
        => 修改权限:
        chown root daemon-control
        chomod 700 daemon-control

    启动denyhosts

    daemon-control start

    查看denyhosts是否运行

        方法一:daemon-control status
        方法二:ps -ef | grep deny

    停止denyhosts

    daemon-control stop
  • 相关阅读:
    静态方法和类方法
    DEL: Restore Boxes after VirtualBox Upgrade
    DEL: IE "Your current security settings put your computer at risk. Click h
    EV: Using GitHub Repository
    EV: Windows Commands 命令
    EV: Notepad++ Regular Express syntax
    html页面的三个width: document, window, screen
    DEL: View web content zone in IE9
    EV: 关于min-width样式的使用
    EV: Linux Shell Commands
  • 原文地址:https://www.cnblogs.com/suguangti/p/12952210.html
Copyright © 2020-2023  润新知