DenyHosts是Python語言寫的一個程序它會分析sshd的日誌文件/var/log/secure當發現重 復的***時就會記錄IP到/etc/hosts.deny文件從而達到自動屏IP的功能。
1、安裝腳本
要求安裝服務器能上網並建立 /work目錄
#!/bin/bash
wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz #下載軟件
tar -zxvf DenyHosts-2.6.tar.gz #解壓
mv DenyHosts-2.6 denyhost #爲了方便改個名
cd denyhost/ #進入目錄
yum install python -y #安裝python
python setup.py install #安裝denyhost,腳本
cd /usr/share/denyhosts/ #進入配置目錄
cp daemon-control-dist daemon-control #爲了方便改變配置文件名稱
cp denyhosts.cfg-dist denyhosts.cfg #修改服務文件名稱
chown root daemon-control #修改服務文件名稱
chmod 700 daemon-control #提高安全級別修改權限
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts #創建啓動服務連接軟連接
chkconfig denyhosts on #添加啓動項
cp denyhosts.cfg denyhosts.cfg.bak #備份配置文件爲修改配置做準備
cat /workspace/denyhost.txt > /usr/share/denyhosts/denyhosts.cfg
#將配置文件內容導入配置文件我的配置文件安裝之前已經配置好了
/etc/init.d/denyhosts start #啓動服務
echo install succeed!
2.配置文件內容
cat /workspace/denyhost.txt > /usr/share/denyhosts/denyhosts.cfg
###########################2##################################
[root@107 workspace]# more denyhost.txt
SECURE_LOG = /var/log/secure
#ssh日誌文件
HOSTS_DENY = /etc/hosts.deny
#將阻止IP寫入到hosts.deny
PURGE_DENY = 5m
#過多久後清除已經禁止的其中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 = /usr/share/denyhosts/data
#將deny的host或ip紀錄到Work_dir中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS = YES
HOSTNAME_LOOKUP=YES
#是否做域名反解
LOCK_FILE = /var/lock/subsys/denyhosts
#將DenyHOts啓動的pid紀錄到LOCK_FILE中已確保服務正確啓動防止同時啓動多個服務。
ADMIN_EMAIL = [email protected]
#設置管理員郵件地址
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=1d
#有效用戶登錄失敗計數歸零的時間
AGE_RESET_ROOT=1d
#root用戶登錄失敗計數歸零的時間
AGE_RESET_RESTRICTED=5d
#用戶的失敗登錄計數重置爲0的時間(/usr/share/denyhosts/data/restricted-usernames)
AGE_RESET_INVALID=10d
#無效用戶登錄失敗計數歸零的時間
DAEMON_LOG = /var/log/denyhosts
#自己的日誌文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 5m
#該項與PURGE_DENY 設置成一樣也是清除hosts.deniedssh 用戶的時間
3.其它
如果想刪除一個已經禁止的主機IP並加入到允許主機例表只在 /etc/hosts.deny 刪除是沒用的。需要進入 /var/lib/denyhosts 目錄進入以下操作
1、停止DenyHosts服務$ sudo service denyhosts stop
2、在 /etc/hosts.deny 中刪除你想取消的主機IP
3、編輯 DenyHosts 工作目錄的所有文件通過
$ sudo grep 192.168.1.191 /usr/share/denyhosts/data/*
然後一個個刪除文件中你想取消的主機IP所在的行
* /usr/share/denyhosts/data/hosts
* /usr/share/denyhosts/data/hosts-restricted
* /usr/share/denyhosts/data/hosts-root
* /usr/share/denyhosts/data/hosts-valid
* /usr/share/denyhosts/data/users-hosts
4、添加你想允許的主機IP地址到
/var/lib/denyhosts/allowed-hosts
vi /usr/share/denyhosts/data/allowed-hostsps
# We mustn’t block localhost
127.0.0.1
192.168.1.*
5、啓動DenyHosts服務 service denyhosts start
報錯排查
#service denyhost start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py –daemon
–config=/usr/share/denyhosts/denyhosts.cfg
python: can’t open file ‘/usr/bin/denyhosts.py’: [Errno 2] No such file or
directory
cd /usr/share/denyhosts/
vi daemon-control
DENYHOSTS_BIN = “/usr/bin/denyhosts.py”
改爲
DENYHOSTS_BIN = “/usr/local/bin/denyhosts.py”
cd /usr/local/lib/python2.7/site-packages/
cp -rp DenyHosts /usr/lib/python2.4/site-packages/
/etc/init.d/denyhosts restart