我们的服务器(所有的CentOS)都受到IP的限制,但是我常常被困在一个dynamic的IP地址上。 使用DynDNS小部件,我已经设置这个dynamicIP始终与一个DynDNS主机名同步,但我应该如何解决这个问题的IP在hosts.allow。 目前我写了一个每隔几分钟运行一次的cron脚本,并检查分配给该主机名的IP,并将dynamicIP写入hosts.allow,但我并不太热衷于此。 有没有更优雅的方式可以做到这一点?
谢谢。
下面的脚本会ping你的dynamic地址,只抓取ip,然后与存储在last_ip.txt中的ip进行比较,如果它们不同,hosts.allow中的ip将被删除,并replace为新的ip以及last_ip中的ip 。文本。
然后你可以在你的crontab上设置这个代码,每隔5分钟或者10分钟或者你觉得合适的时候运行。
这并不复杂,可能会解决你的问题…
#!/bin/bash DYN_IP="www.google.com.br" CMD=$(ping -c1 $DYN_IP | head -1 | awk -F' ' '{ print $3}' | sed 's/(\|)//g') FILE="./last_ip.txt" NEW_IP=$CMD if [ -e $FILE ]; then OLD_IP=$(cat $FILE) else OLD_IP="0" fi if [ $OLD_IP != $NEW_IP ]; then echo $NEW_IP > last_ip.txt sed -i "/^sshd: $OLD_IP/d" /etc/hosts.allow echo "sshd: $NEW_IP" >> /etc/hosts.allow echo "Allow ip changed to $NEW_IP" fi
我目前的解决scheme是在网页上 ,我首先向一个特殊的网页请求(可select用我的用户/密码),打开我请求的IP的SSH门。 这是我从我的手机ssh到我的一些服务器。 这使得所涉及的额外软件减less到最低限度,所以我可以坐下来在一些咖啡馆电脑,并在几秒钟内授权它进行标准的ssh访问,但是让入侵者甚至无法使用我的ssh端口。 任何敲击解决scheme的缺点是额外的失败点。 我的安全网是一些硬编码的IP,允许访问,如果敲门脚本或处理它们的Web服务器出了问题,我只需要使用其他永久访问的机器之一来进入并修复损坏框。
或者,某些dynamicIP系统具有可用于获取IP地址更改的自动通知的“挂钩”或“callback”。 这可能是通过电子邮件或HTTP请求,可以用作“敲”。 另外,你可以在本地编写脚本,这样无论你的networking脚本运行还是本地IP改变,你都会自动触发某种敲击或触发,强制和更新dynamicip访问列表。
我可以理解你对使用开放SSH端口的第三方的担心。 我以不同的方式解决了这个问题。 在我的私人服务器上,SSH端口对每个人都是开放的,但是它是由debian(也可能是大多数其他发行版)提供的一个智能小软件包fail2ban监视的。 只要有人从相同的IP地址尝试3次后无法login,该地址就会在防火墙中被阻塞数天。
自从我安装这个服务器之后,我就安静了。 而且我仍然可以从世界上的任何地方login(使用我的密钥)。
如果您是唯一一个login到该服务器的用户,则还可以在防火墙中执行简单的端口转发,或者在另一个端口上运行sshd。
我build议作为替代端口敲门 ,或者从第三方服务器和SSH租用SSH帐户。
我会以不同的方式处理这个问题。 而不是让你的服务器维护一个列入白名单的IP列表,我将它们全部configuration为只允许来自“内部”IP地址的ssh。 然后设置一个单独的网关/登陆板主机,你可以VPN进入。 现在,您可以通过popup框来安全地到达其他服务器。
这将您的攻击面限制在一个框中,而不是所有的框。 此外,许多/大多数VPN解决scheme允许您提高连接的安全性要求,使用证书,双因素身份validation以及其他简单密码(或代替简单密码)。 总之,这会给你更大的安全性,更大的灵活性,更好的可维护性。
有很多VPN选项可供select(我是OpenVPN的忠实粉丝,我自己),您可以使用它来为您的设备正确设置安全接入点。 它们中的许多都相对容易设置,而对于这样的小型设置,它们只需要最less的资源。
ConfigServerFirewall具有你想要的function。 一旦安装,你可以看看这个论坛post ,一个很好的解释。