在生產環境中,有可能會出現被其他管理員或使用者修改hosts.allow允許更多的ip登陸機器;為了方便統一管理,我們可以在使用者退出的時候統一修改allow和deny檔案成預設設定。同時也能自動擷取機器所配ip的整個ip段為允許登陸
test -f /root/.bash_logout && chattr -i /root/.bash_logout
cat >/root/.bash_logout <<EOF
export TERM=xterm
/usr/bin/chattr -i /etc/hosts.allow /etc/hosts.deny
#for hosts.deny
/bin/awk 'BEGIN{FS="[=.]";RS="\n"};/^IPADDR/{print "sshd:all EXCEPT "\$2"."\$3"."\$4".0/255.255.255.0"}' /etc/sysconfig/network-scripts/ifcfg-* | grep -v 127.0.0 | uniq 1>/etc/hosts.deny
/bin/cat >>/etc/hosts.deny << iEOF
sshd:all EXCEPT ip
iEOF
#for hosts.allow
/bin/awk 'BEGIN{FS="[=.]";RS="\n"};/^IPADDR/{print "sshd:"\$2"."\$3"."\$4".0/255.255.255.0"}' /etc/sysconfig/network-scripts/ifcfg-* | grep -v 127.0.0 | uniq 1>/etc/hosts.allow
/bin/cat >>/etc/hosts.allow << iEOF
sshd:ip
iEOF
/usr/bin/chattr +i /etc/hosts.allow /etc/hosts.deny
clear
EOF
sh /root/.bash_logout 2>&1 >/dev/null
ssh登入限制ip的方法
vi /etc/hosts.allow
sshd:192.168.0.100:allow //允許IP 192.168.0.100 登入
sshd:192.168.0.:allow //允許IP 192.168.0. 網段登入
sshd:all:deny //禁止其他的所有IP登入
或者
sshd:223.227.223.*:allow //允許IP 223.227.223.* 網段登入
sshd:192.168.0.*:allow //允許IP 192.168.0.* 網段登入
sshd:all:deny //禁止其他的所有IP登入
fedora下 修改後儲存後生效
freeBSD限制特定ip的ssh登陸:
1.
#ee /etc/hosts.allow
在ALL : ALL : allow的前面加上
sshd : 192.168.0.100 : allow
sshd : 223.227.223.* : allow
sshd : ALL : deny
2.
修改/etc/ssh/sshd_config
加入
Allowusers admin@172.16.2.188
意思為
只允許admin從172.16.2.188登陸
FreeBSD 改IP ,不用重啟電腦:
在rc.conf裡改完後/etc/netstart
iptables自動封IP指令碼
#!/bin/bash
#Created by haiyun
num=10 #上限
for i in `awk '/Failed/{print $(NF-3)}' /var/log/secure|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
do
iptables -I INPUT -p tcp -s $i --dport 22 -j DROP
done
加入crontab計劃任務
crontab -e
* */5 * * * sh /path/file.sh #5小時執行一次