不懂博客—所知甚少因而建立此博客记录不懂知识;学习、关注、体验互联网。

远程密令通过iptables临时开启ssh端口

来源:原创 作者:不懂 时间:2015-02-01 【 打印

Linux服务器我们一般是通过ssh远程管理,这就需要开启服务器的ssh端口(默认是22),但开启端口有被暴力破解的风险,网上自动扫描的机器一大堆,很多刚刚上线的服务器,并没开通任何服务都经常遭到ssh、ftp之类的扫描和恶意破解,一般情况想我们都是通过设置复杂的密码或修改ssh端口来避免被破解,但就算破解不了密码,但openssh也可能会有漏洞,更改ssh端口还是容易被扫描出来。还有一种选择,我们可以只允许指定IP访问ssh,通过vpn登录管理服务器,但局限很明显,万一紧急情况vpn的那台机器出了问题登录不上去了怎么办?

现在要说的就是一种我觉得比较满意的解决方案,即使用iptables的recent模块,通过“密令”临时开启ssh端口。当然,密令需要根据自己情况设置好,别让它人容易的尝试出来。方法如下:

1、iptables规则设定
#指定78字节的icmp数据包(包含IP头部20字节,ICMP头部8字节)通过被加入sshopen列表。
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT
#检查sshopen列表是否存在你的来源IP,如果存在,即从第一次使用密令开始15秒钟内开启ssh端口22,超过15秒端口自动关闭,不再允许新连接,已连接的不会断开。
iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT

2、临时开启ssh端口方法:
linux下:ping -s 50 host
windows下:ping -l 50 host

3、我目前使用的iptables规则:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443  -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

iptables防火墙recent模块可模块参考:http://linux.fcbu.com/iptables-recent.htm
分类目录: 电脑维修 > linux > | 标签:iptables 防火墙 recent ssh
上一篇:iptables防火墙recent模块使用方法示例详解
下一篇:没有了

验证码:点击输入框获取验证码

评论列表

查看全部0条评论