SSH和谐主机的iptables设置参考

这是一个关于SSH番羽土啬的话题,标题及文中的“和谐”=“番羽土啬”,感叹一下我们的文字。

因为21现在手上的VPS数量比较乐观(不是壮观……),因此其中有专司VPN和谐的、SSH和谐的、第三方推和谐的等用途,当然,Mr. 21博客也在其中一个VPS上,用的LNMP包。

写这个话题的起因是这样的,在北山老卫大神的Q群里面,有人提到了想以SSH和谐帐号来换取一些东西,因此引发了21对此的讨论。我的主要观点是不支持这么做,因为不安全(可以参考《利用Linux内核的多个安全漏洞提权》,不过本文内容与此关系不大),加上之前帮番茄童鞋配置iptables,因此引发了21对SSH和谐主机安全方面的思考,其中的一方面就是用iptables来过滤不和谐的东西。

是这样的,因为做实验的这个VPS我只用于SSH和谐,并且一般和谐仅限于Web浏览及各种基于Web的应用,所以,以下策略仅开放SSH的22端口并对其它的东西做了相应的限制。

初始化防火墙

第一步,我们总是要把一些知道的和不知道的先通通打倒了再说,于是,请如此:

以上是一些初始化的动作,以下是具有具体功能的策略。

防火墙规则参考一

这几条规则实现的效果是:

  1. 22端口允许用户主动发起TCP连接,一般用于提供SSH服务,如果你的SSH端口不是22,请修改;
  2. 其它端口需要ESTABLISHED、RELATED两种状态的数据包才能通过,而通常这两种状态的数据包在TCP协议上的定义是已经建立了连接的后续数据包,也就说,别人无法对你的任何端口主动发起连接,但是由你主动发起连接的数据包可以通过,比如说看网页的数据;
  3. 包状态NEW允许SSH用户对外的主动发起连接;
  4. 允许外部用户PING本机,这个嘛,方便自己测试,要不挂了都不知道。
  5. 关于数据包状态,我是参考这里 http://liubin.blog.51cto.com/282313/110394

这样,虽然防住了外面进来的问题,但一定程度上来说,用户通过SSH登录以后就可以干他想干的事情了,对于应用的范围不能达到一个控制的目的,比如说,我前面提到的“一般和谐仅限于Web浏览及各种基于Web的应用”,是的,和谐嘛,也就是用这些了,顶天了再来个FTP或者跳板另外的SSH,于是,21便想到了稍微BT一点的限制,请看参考二。

防火墙规则参考二

好吧,规则二实际上能实现跟规则一差不多的效果,就是让SSH和谐用户能正常浏览Web内容及使用Web应用,那区别在哪里呢?之前提到了规则一的SSH用户只要登录进系统,就可以对外发起任何连接了,而规则二只允许用户发起目标端口为80、81、8080、443(https)的TCP连接和任意UDP连接,这样就能有效的限制用户对于SSH的应用范围。

小结

基本上,两个规则都实现了主机仅提供SSH服务(参考一)用于浏览网页(参考二)的目的,并且使用iptables对服务器的其它端口都进行了一些屏蔽,同时提供两种规则方式来实现不同的需求,实际上仅仅这样还是不够的,因为让用户登录到shell里面毕竟还是有一定风险的,特别是一些弱密码的用户也有被暴力猜解的风险,我个人是使用fail2ban的方案来解决暴力猜解的问题,请参考《小内存优化VPS的LNMP及fail2ban配置》,同时还有denyhosts也是用于防止暴力猜解的,可以参考:《Linux VPS上DenyHosts阻止SSH暴力攻击》。

以上内容是21这两天闲来无事的个人研究成果,才疏学浅难免存在一些不合理或不够精简的地方,如果你有任何意见,请留言指教,谢谢。

-EOF-

——————–
参考引用:
1. Google: http://www.google.com/ncr
2. iptables 状态机制的描述:http://liubin.blog.51cto.com/282313/110394
3. 定制iptables防火墙策略:http://ailixing.blog.51cto.com/188828/37309

Published by

贰壹

忙忙碌碌仍在路上的人,热爱IT,挚爱16。

3 thoughts on “SSH和谐主机的iptables设置参考”

Leave a Reply

Your email address will not be published.

Captcha Code

This site uses Akismet to reduce spam. Learn how your comment data is processed.