保护SSH的利器——sshguard

鉴客 发布于 2011/05/10 15:55
阅读 904
收藏 5

由于服务器开放着SSH协议,经常在互联网上会有一些莫名的“骇客”在扫描我服务器的22端口并试图登录,这给服务器安全带来了很多的隐患。如何保障SSH的安全,自然成为了我们管理员工作的重中之重。 ­

BSD的Ports系统收录了N多的 SSH保护软件,其中有denyhosts,sshit,sshguard,file2ban(ports中无此项)等,起初,我用denyhosts来 阻挡SSH的恶意登录,发现它是调用TCP wrapper来实现的,感觉上并不是太好。后来,无意间发现了SSHguard,它可以结合BSD系统内置的防火墙(IPFW、PF、 IPFILTER)来过滤SSH登录,非常不错。实现过程如下: ­

1)安装SSHguard ­

 
  1. # cd /usr/ports/security/sshguard-pf 
  2. # make install distclean 

2)删除syslogd里的注释,启动SSHguard ­

 
  1. auth.info;authpriv.info     |exec /usr/local/sbin/sshguard 

3)重新加载syslogd ­

 
  1. # /etc/rc.d/syslogd reload 

如看到以下信息,证明成功启动 ­

 
  1. Nov 20 08:00:01 test sshguard[54247]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan. 

4)在PF里加入以下规则,即可

 
  1. # Define Tables for SSH 
  2. table <sshguard> persist 
  3. block in quick on $ext_if proto tcp from <sshguard> to any port 22 label "ssh bruteforce" 

看日志,已经有人试图登录,被SSHguard阻止了,帅吧

 
  1. Nov 20 03:56:44 test sshd[52381]: Invalid user globus from 88.191.121.114 
  2. Nov 20 03:56:47 test sshd[52383]: Invalid user condor from 88.191.121.114 

最后,屏蔽所有人对我服务器外网口的icmp探测Default PF rules is block all) ­

 
  1. pass out inet proto icmp all icmp-type $icmp_types keep state label "allow ping" 

注意哦,是pass out,而非pass in,这样,内网用户依然可以检测与外网的通讯,而外网用户无法探测我服务器外网口是否存活。

查看SSH阻击列表

 
  1. #pfctl -tsshguard -Tshow
    59.63.157.63
    109.123.126.166
    116.125.127.120
    123.212.43.243
    125.250.249.34
    174.123.157.66
    182.18.29.190
    195.49.134.149
    202.170.126.6
    218.240.1.117
    218.241.155.13
    221.132.34.138

哇,这么多IP被block了

加载中
0
mark35
mark35

简单用 hosts.allow/deny, 复杂用iptable

0
晓亮
晓亮

很强大的。。。什么时候我也试试,没注意过着方面..

0
ddatsh
ddatsh

呀 这东西真的是好多年前就看过文章了

返回顶部
顶部