d、部署
1、假设在~/目录下创建auto_forbid_ssh.sh脚本文件,内容如上。
2、修改文件属性使它成为可执行文件,方法:chmod 755 auto_forbid_ssh.sh。
3、备份/etc/hosts.deny文件为/etc/hosts.deny.bak。这个备份有两个作用:第一,使源文件中已有策略不会失效;第二,判断新生成的hosts.deny文件有没有变化,有变化则重启服务使设置生效。
4、添加任务,每分钟执行一次,方法:
[root@hostname ~]#crontab e
添加一行代码:1-59/1 * * * * ~/auto_banip_ssh.sh
5、重启crond服务,使任务生效,方法:
[root@hostname ~]#service crond restart。
e、运行结果
程序运行一段时间后,笔者再打开/var/log/messages日志后,可以看到下面的日志:
Mar 30 19:41:03 hostname sshd: refused connect from
::ffff:ip address (::ffff:ip address)
可以看出,服务器拒绝了入侵I P 的SSH 连接。
三种方案中,方案一配置简单,但缺点是一旦入侵者发现新的端口,那么这个配置就形同虚设了。
方案二中直接限制特定的IP或网段允许访问,安全系数较高。其缺点是缺乏灵活性,如果遇到紧急情况,管理员想远程维护服务器而又不在允许的地址列表内就会被拒绝。
方案三中有两种方法,实现的功能是相同的,都能自动判断用户登录,封禁非法SSH入侵。不同的只是实施方法,一个是安装软件,一个是自己编程部署,用户可以根据个人对Shell的了解情况,自己选择实施方法。
在实际应用中,三种方案可结合使用。例如方案一与方案三结合使用,既能限制端口访问,又能灵活封禁入侵IP。方案二可以与vpn结合使用,在方案二的允许访问列表中设置一个通过vpn登录分配的固定IP,这样就可以灵活访问了。
(作者单位为南开大学)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。