2017-03-15 9 views
0

次の状況:私はインターネットでサーバを稼働しています。 hosts.allowの例外ルールにもかかわらず、サーバーは誰でもポート22で閉じられます。私のホストにpingを実行し、ICMPアドレスを取得し、スクリプト内でhosts.allowを開きます。

家庭にいるときにプロバイダと接続するときは、常に別のIPアドレスを使用するため、私がやっていることは、ブラウザのコンソールから私のサーバにログインし、tcpdump ip proto ICMPを実行し、tcpdumpの出力からホスト名を取り出し、/etc/hosts.allowを編集して、サービスを再起動してからsshを再起動し、 ssh(パテ)経由で私のサーバにログインする。

私のプロバイダが(ほとんどの場合、夜間に発生する)私のIPを変更しない限り、これは機能します。

ここで私が探しているのは、このプロセスを自動化することです。問題は、私はそれが私がpingしている私のサーバーであることを伝える必要があります。だから、私は秘密のパターンでpingをするか、他の手段で自分自身を認証します。私はまた、私のウェブサイトのa(ssl secured)リンクをクリックして、私が座っているクライアントのためにサーバを開くために必要なステップをいくつかのWebサービスにさせることを考えました。

答えて

1

Single Packet Authenticationを使用していただければ幸いです。これはポートノッキングの方法の進化であり、基本的な考え方は説明したのと同じです。ファイアウォールで保護されたマシンの特定のポートに暗号化されたペイロードを含む単一のパケットを送り、ファイアウォールによってパケットが破棄されます。しかし、舞台裏で、ペイロードのチャレンジが成功すると、ペイロードの送信者にポート22を開くためのルールがiptablesに追加されます。その後、サーバにsshを送ることができます。

便宜上、最初にFwknopを使用してファイアウォールでドアを開け、引き数を渡してsshを実行するBash機能を再定義することができます。それはかなりうまくいく。

Fwknopも、あなたの携帯電話からの暗号化されたペイロードを送信し、特定のIPアドレスに対してファイアウォールを開くことができますAndroidアプリを持っています。いつもより別のマシンから接続しているときにこれを使うことができます。

+0

私は 'iptables'と一緒に使っていますが、私は' hosts.allow'を使うためにパラメータ化されていると思います – damienfrancois

関連する問題