【場景】公司采用ADSL撥号上網,即上網獲得是動态IP。
伺服器安全政策更新,隻允許公司内可以通路伺服器。
實作過程:
伺服器指定固定IP可以通路伺服器,其實很容易,一般有以下三下方法:
<code>方法一:</code>
<code>在</code><code>/etc/hosts</code><code>.allow中添加允許</code><code>ssh</code><code>登陸的ip或者網段 </code>
<code>sshd:192.168.1.2:allow 或者</code>
<code>sshd:192.168.1.0</code><code>/24</code><code>:allow </code>
<code>在</code><code>/etc/hosts</code><code>.deny添加不允許</code><code>ssh</code><code>登陸的IP</code>
<code>sshd:ALL </code><code>#ALL表示除了上面允許的,其他的ip 都拒絕登陸ssh</code>
<code>方法二:</code>
<code>使用iptables。 </code>
<code>iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT </code>
<code>iptables -A INPUT -p tcp --destination-port 22 -j DROP </code>
<code>方法三:</code>
<code>修改</code><code>ssh</code><code>配置檔案</code>
<code>vi</code> <code>/etc/ssh/sshd_config</code>
<code>添加一行: </code>
<code>allowusers [email protected] </code>
<code>注:xxx為你用來登入伺服器的使用者名。</code>
我以方法一實作,限制ADSL動态IP進行登入,
方法簡單:通過花生殼或者到kmdns注冊賬戶,這樣就會得到一個域名,我們在公司内網登入這個賬戶,
在伺服器上解析得到IP就可以了。
我用的是TPLINK的路由器本身支援動态域名賬戶登入,好了,拿來直接用了。
在伺服器用腳本實作
先配置hosts.allow檔案,按以下格式配置
<code>sshd:13.18.4.36:allow</code>
<code>root@Web:</code><code>/var/scripts</code><code># vi /etc/hosts.allow </code>
<code># /etc/hosts.allow: list of hosts that are allowed to access the system.</code>
<code># See the manual pages hosts_access(5) and hosts_options(5).</code>
<code>#</code>
<code># Example: ALL: LOCAL @some_netgroup</code>
<code># ALL: .foobar.edu EXCEPT terminalserver.foobar.edu</code>
<code># If you're going to protect the portmapper use the name "portmap" for the</code>
<code># daemon name. Remember that you can only use the keyword "ALL" and IP</code>
<code># addresses (NOT host or domain names) for the portmapper, as well as for</code>
<code># rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)</code>
<code># for further information.</code>
編寫獲得動态域名IP并替換allow檔案中内容腳本,
dig +short直接解析域名得到IP很簡單
<code>root@Web:</code><code>/var/scripts</code><code># vi getip.sh</code>
<code> </code>
<code>#!/bin/bash</code>
<code>#解析得到myku.kmdns.net動态域名IP</code>
<code>getip=`</code><code>dig</code> <code>+short myku.kmdns.net`</code>
<code>#得到原來allow檔案中的IP</code>
<code>oldip=`</code><code>cat</code> <code>/etc/hosts</code><code>.allow|</code><code>grep</code> <code>sshd |</code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>|</code><code>head</code> <code>-n1`</code>
<code>if</code> <code>[ $getip != $oldip ]</code>
<code> </code><code>then</code>
<code> </code><code>sed</code> <code>-i </code><code>"s/$oldip/$getip/g"</code> <code>/etc/hosts</code><code>.allow</code>
<code>else</code>
<code> </code><code>exit</code>
<code>fi</code>
<code>root@Web:</code><code>/var/scripts</code><code># chmod 777getip.sh</code>
然後加入到自動任務中,每分鐘檢測一次
<code>#allow myku ip to login server</code>
<code>*</code><code>/1</code> <code>* * * * </code><code>/var/scripts/getip</code><code>.sh > </code><code>/dev/null</code> <code>2>&1</code>
<code>别忘了</code><code>/etc/hosts</code><code>.deny添加不允許</code><code>ssh</code><code>登陸的IP</code>
這樣子就實作了hosts.allow 隻允許adsl動态ip登入功能。
同理,我們也可以用另兩個方法,這裡就不多講了。
本文轉自 jackjiaxiong 51CTO部落格,原文連結:http://blog.51cto.com/xiangcun168/1699264