web-dev-qa-db-ja.com

動的IPからIP制限付きサーバーにアクセスする

私たちのサーバー(すべてCentOS)はすべてIPによって制限されていますが、多くの場合、私は外出していて、動的IPアドレスに固執しています。 DynDNSウィジェットを使用して、この動的IPを常にDynDNSホスト名と同期するように設定しましたが、hosts.allow内のIPにこれを解決するにはどうすればよいですか。今のところ、数分ごとに実行され、そのホスト名に割り当てられたIPをチェックし、動的IPをhosts.allowに書き込むcronスクリプトを作成しましたが、解決策としてはあまり熱心ではありません。私がこれを行うことができるよりエレガントな方法はありますか?

ありがとう。

5
robjmills

次のスクリプトは、動的アドレスにpingを実行し、IPのみを取得してから、last_ip.txtに保存されているIPと比較します。異なる場合は、hosts.allowのIPが削除され、last_ipのIPと同様に新しいIPに置き換えられます。 。txt。

次に、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
3
Prix

これに対する私の現在の解決策は webknocking 最初に特別なWebページ(オプションでユーザー/パスを使用)にリクエストを送信し、リクエスト元のIPのSSHゲートを開きます。これは私が私の電話から私のサーバーのいくつかにSSH接続する方法です。これにより、余分なソフトウェアが最小限に抑えられるため、カフェのコンピューターに座って数秒で標準のsshアクセスを許可できますが、侵入者は私のsshポートで遊ぶことさえできなくなります。ノッキングソリューションの欠点は、余分な障害点です。私のセーフティネットは、アクセスが許可されているいくつかのハードコードされたIPであり、それらを処理するノッキングスクリプトまたはWebサーバーで問題が発生した場合は、永続的にアクセスできる他のマシンの1つを使用して、壊れたものにアクセスして修正する必要があります。ボックス。

あるいは、一部の動的IPシステムには、IPアドレスの変更の自動通知を取得するために使用できる「フック」または「コールバック」があります。これは、「ノック」として使用される可能性のある電子メールまたはhttpリクエストを介して行われる可能性があります。または、これをローカルエンドでスクリプト化して、ネットワークスクリプトが実行されたり、ローカルIPが変更されたりするたびに、動的IPアクセスリストを強制および更新する何らかのノックまたはトリガーを自動的に起動することもできます。

2
Caleb

サードパーティがオープンSSHポートで遊んでいることについてのあなたの懸念を理解できます。私はこれを別の方法で解決しました。私のプライベートサーバーでは、SSHポートは誰でも利用できますが、debian(およびおそらく他のほとんどのディストリビューション)で利用できるスマートな小さなパッケージであるfail2banによって監視されています。同じIPアドレスから3回試行した後、誰かがログインに失敗するとすぐに、そのアドレスはファイアウォールで数日間ブロックされます。

これをインストールして以来、サーバーは静かで静かでした。また、世界中のどこからでも(USBスティックのキーを使用して)ログインできます。

そのサーバーにログインしているのが1人だけの場合は、ファイアウォールで単純なポートフォワードを実行するか、別のポートでsshdを実行することもできます。

2
wolfgangsz

私は別の方法でこれにアプローチします。サーバーにそれぞれホワイトリストに登録されたIPのリストを維持させるのではなく、「内部」IPからのsshのみを許可するようにすべてのサーバーを構成します。次に、VPNで接続できる別のゲートウェイ/ランディングパッドホストをセットアップします。これで、そのボックスをバウンスして、残りのサーバーに安全に到達できます。

これにより、攻撃対象領域がすべてのボックスではなく、単一のボックスに制限されます。さらに、多くの/ほとんどのVPNソリューションでは、証明書、2要素認証、およびその他のものを単純なパスワードとともに(またはその代わりに)使用して、接続のセキュリティ要件を強化できます。全体として、これにより、セキュリティ、柔軟性、および保守性が大幅に向上します。

デバイスの安全なアクセスポイントを適切にセットアップするために使用できるVPNオプションがいくつかあります(私は OpenVPN の大ファンです)。それらの多くはセットアップが比較的簡単で、このような小さなセットアップの場合、必要なリソースは最小限です。

1

ConfigServerFirewallには、必要な機能があります。インストールしたら、これをチェックしてください フォーラム投稿 良い説明があります。

1
calman

別の方法として ポートノッキング をお勧めします。または、サードパーティのサーバーでsshアカウントをレンタルし、そこからSSHを使用します。

1
Hubert Kario