perl脚本实现限制ssh最大登录次数(支持白名单)
sshlimitperl脚本主要作用:
1.限制一个ssh用户的最大登录数为n,n可自定义。
2.支持白名单,如root、test登录不受限制。
如果一个ssh用户的最大登录数超过指定数字,则后登录的会把先前登录的踢掉,以此达到控制登录数的目的。
该脚本需要主机支持perl,如果没有,可yum安装。
脚本源码:
#!/usr/bin/perl-w usestrict; #whitelist my@ALLOW_USERS=qw{ test root lulu1 }; #themaximumnumberofsshlogin my$LOGIN_TIMES=1; submain { my@lines=`ps-eouser,pid,etime,cmd|grepsshd`; my$users; formy$line(@lines){ if(my($user,$pid,$etime,$cmd)=$line=~/^([^\s]+)\s+(\d+)\s+([^\s]+)\s+(sshd:.+)$/){ nextifgrep{$usereq$_}@ALLOW_USERS; my$proc={'pid',$pid,'etime',$etime,'cmd',$cmd}; push@{$users->{$user}},$proc; } } formy$key(keys(%$users)){ my@sshs=sort{ my($lb,$la)=(length($b->{'etime'}),length($a->{'etime'})); if($lb==$la){ $b->{'etime'}cmp$a->{'etime'}; }else{ $lb<=>$la; } }@{$users->{$key}}; $LOGIN_TIMES=1if$LOGIN_TIMES<1; for(1..$LOGIN_TIMES){pop@sshs;}; formy$ssh(@sshs){ kill9,$ssh->{'pid'}; } } } while(1){ main; sleep3; }
【使用方法】
另存脚本存到root目录,命名为limit.pl,然后执行:
echo"/root/limit.pl&">>/etc/rc.d/rc.local(加入开机启动) /root/limit.pl&(运行脚本)