ポートノッキング は、サーバー上で実行されているサービスへの正当なユーザーのアクセスのみを許可することにより、ポートへのアクセスを制御する優れた手法です。 これは、正しい接続試行のシーケンスが行われると、ファイアウォールが閉じられたポートを喜んで開くように機能します。
ポートノッキングの背後にあるロジックは、開いているポートをうろつく自動ポートスキャナーからLinuxシステムを保護することです。 このガイドでは、ポートノッキングをインストールする方法と、SSHサービスを保護するように構成する方法について説明します。 デモンストレーションの目的で、 Ubuntu 18.04。
ステップ1:ノックされたものをインストールして構成する
開始するには、Linuxシステムにログインして、 ノック 示されているデーモン。
$ sudo apt install knockd
インストールしたら、 knockd.conf お好みのテキストエディタで設定します。 ここでは、vimコマンドラインテキストエディタを使用しています。
$ sudo vim /etc/knockd.conf
デフォルトの構成ファイルは次のように表示されます。
下 [openSSH]
セクションでは、デフォルトのノッキングシーケンスを変更する必要があります– 7000,8000,9000 –何か他のものに。 これは、これらの値がすでにわかっており、システムのセキュリティを危険にさらす可能性があるためです。
テストの目的で、値を次のように設定しました 10005、10006、10007。 これは、クライアントシステムからSSHポートを開くために使用されるシーケンスです。
3行目–で始まる コマンド、 変化する -A
に -I
直後 /sbin/iptables
コマンドとその前 INPUT
。
そして最後に、 [closeSSH]
セクションでも、デフォルトのシーケンスを好みの選択に変更します。 これは、ユーザーが完了してサーバーからログアウトしたときにSSH接続を閉じるために使用されるシーケンスです。
これが完全な構成です。
完了したら、変更を保存して終了します。
変更する必要があるもう1つの構成は、 / etc / default / knockd。 もう一度、テキストエディタを使用して開きます。
$ sudo vim /etc/default/knockd
行を見つけます START_KNOCKD=0
。 コメントを外し、値をに設定します 1
。
次に、ラインに向かいます KNOCKD_OPTS=”-i eth1”
コメントを外し、デフォルトを置き換えます eth1
システムのアクティブなネットワークインターフェイスでの価値。 ネットワークインターフェイスを確認するには、ipaddrまたはifconfigコマンドを実行するだけです。
私たちのシステムでは、 enp0s3 アクティブなネットワークカードです。
完全な構成は次のとおりです。
変更を保存して終了します。
次に、開始して有効にします ノック 示されているデーモン。
$ sudo systemctl start knockd $ sudo systemctl enable knockd
のステータスを確認するには ノック デーモン、次のコマンドを実行します。
$ sudo systemctl status knockd
手順2:ファイアウォールでSSHポート22を閉じる
の目的以来 ノック サービスはsshサービスへのアクセスを許可または拒否することであり、ファイアウォールのsshポートを閉じます。 しかし、最初に、UFWファイアウォールのステータスを確認しましょう。
$ sudo ufw status numbered
出力から、それをはっきりと見ることができます SSH ポート 22 両方で開いています IPv4 そして IPv6 番号が付けられたプロトコル 5 そして 9 それぞれ。
示されているように、最も高い値から始めて、これら2つのルールを削除する必要があります。 9。
$ sudo ufw delete 9 $ sudo ufw delete 5
これで、サーバーにリモートでログインしようとすると、次のように接続タイムアウトエラーが発生します。
ステップ3:SSHサーバーに接続するようにノッククライアントを構成する
最後のステップでは、クライアントを構成し、最初にサーバーで構成したノックシーケンスを送信してログインを試みます。
しかし、最初に、インストールします ノック サーバーで行ったのと同じようにデーモン。
$ sudo apt install knockd
インストールが完了したら、示されている構文を使用してノックシーケンスを送信します
$ knock -v server_ip knock_sequence
私たちの場合、これは次のように解釈されます。
$ knock -v 192.168.2.105 10005 10006 10007
シーケンスに応じて、私たちが持っているものと同様の出力が得られるはずです。 これは、ノックの試みが成功したことを示しています。
この時点で、SSHを使用してサーバーに正常にログインできる状態になっているはずです。
リモートサーバーでの作業が完了したら、終了ノックシーケンスを送信してSSHポートを閉じます。
$ knock -v 192.168.2.105 10007 10006 10005
示されているように、サーバーにログインしようとすると失敗します。
まとめ
これで、ポートノッキングを活用してサーバー上のSSHサービスを保護する方法についてこのガイドを締めくくります。 より適切で簡単なアプローチは、SSHキーペアを使用してパスワードSSH認証を構成することです。 これにより、秘密鍵を持つユーザーのみが、公開鍵が保存されているサーバーで認証できるようになります。
Hope this helps!