2016年3月21日 星期一

加裝denyhosts防止ssh暴力破解

本文參考自 站長評測網
  1. 清除SSH登錄記錄,防止裝完屏蔽自己。
    echo "" > /var/log/auth.log
  2. 安裝denyhosts
    apt-get install denyhosts
  3. vim /etc/denyhosts.conf
    SECURE_LOG = /var/log/auth.log
    PURGE_DENY = 30m #過多久清除已阻止IP
    HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny
    BLOCK_SERVICE = sshd
    DENY_THRESHOLD_INVALID = 3 #允許無效用戶登錄失敗的次數
    DENY_THRESHOLD_VALID = 5 #允許普通用戶登錄失敗的次數
    DENY_THRESHOLD_ROOT = 3 #允許root登錄失敗的次數
    DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾
    WORK_DIR = /var/lib/denyhosts #將deny的host或ip紀錄到Work_dir中
    SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
    #如果為YES,所有在$WORK_DIR/allowed-host時面的IP地址將會被認為是可疑的,如果設置為NO,所有在allowd-hosts試圖登陸的結果,將不會發送警告郵件!所有不在$WORK_DIR/allowed-host時面的IP地址將會發送警告!
    HOSTNAME_LOOKUP=NO #是否將IP地址解析為主機名。
    LOCK_FILE = /var/run/denyhosts.pid #定義PID文件的位置,確保同時只有一個Denyhost進程在運行
    ADMIN_EMAIL = root@localhost
    SMTP_HOST = localhost
    SMTP_PORT = 25
    SMTP_FROM = DenyHosts
    SMTP_SUBJECT = DenyHosts Report
    AGE_RESET_VALID=5d #多長時間后,用戶登錄失敗的次數被置為0,這里是指在/etc/passwd里面定義的用戶,如果不設置,永遠都不會置0
    AGE_RESET_ROOT=25d #多長時間后,root用戶登錄失敗的次數置為0,如果不設置,永遠都不會置0
    AGE_RESET_RESTRICTED=25d #在$WORK_DIR/hosts-restricted時面定義的用戶,多長時間失敗次數計數器被置為0
    AGE_RESET_INVALID=10d #無效用戶(不在/etc/passwd里面的用戶)的失敗次數計數器,多長時間被置為0
    RESET_ON_SUCCESS = yes #當某個IP使用某個用戶登錄成功后,該IP對應的用戶失敗次數將會被置為0
    DAEMON_LOG = /var/log/denyhosts #當denyhost運行在守護進程模式的時候,日志文件存儲的位置
    DAEMON_SLEEP = 30s #輪詢查看SSHD日志的間隔
    DAEMON_PURGE = 1h #多長時間清空$HOSTS_DENY中的IP地址,如果PURGE_DENY為空,這個設置將無效
  4. 重啟/etc/init.d/denyhosts restart
  5. 設定白名單(出現不小心打錯密碼被列入黑名單後, 雖然手動去 /etc/hosts.deny 移除, 但不久又被 denyhosts 自動加回時, 需要處理的程序)
    vim /etc/hosts.allow