首页 > 编程 > Perl > 正文

perl脚本实现限制ssh最大登录次数(支持白名单)

2020-10-31 15:05:56
字体:
来源:转载
供稿:网友

ssh limit perl脚本主要作用:
1.限制一个ssh用户的最大登录数为n,n可自定义。
2.支持白名单,如root、test登录不受限制。

如果一个ssh用户的最大登录数超过指定数字,则后登录的会把先前登录的踢掉,以此达到控制登录数的目的。

该脚本需要主机支持perl,如果没有,可yum安装。

脚本源码:

#!/usr/bin/perl -wuse strict;#white listmy @ALLOW_USERS = qw{  test  root  lulu1};#the maximum number of ssh loginmy $LOGIN_TIMES = 1;sub main{  my @lines = `ps -eo user,pid,etime,cmd | grep sshd`;  my $users;  for my $line (@lines) {    if(my ($user, $pid, $etime, $cmd) = $line =~ /^([^/s]+)/s+(/d+)/s+([^/s]+)/s+(sshd:.+)$/) {      next if grep {$user eq $_} @ALLOW_USERS;      my $proc = {'pid', $pid, 'etime', $etime, 'cmd', $cmd};      push @{$users->{$user}}, $proc;    }  }  for my $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 = 1 if $LOGIN_TIMES < 1;    for (1 .. $LOGIN_TIMES) { pop @sshs; };    for my $ssh (@sshs) {      kill 9, $ssh->{'pid'};    }  }}while(1) {  main;  sleep 3;}


【使用方法】

另存脚本存到root目录,命名为limit.pl,然后执行:

echo "/root/limit.pl &" >> /etc/rc.d/rc.local (加入开机启动)/root/limit.pl & (运行脚本)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表