GNU/Linux >> Linux の 問題 >  >> Linux

ポートノッキングでSSHサービスを保護する方法

ユーザーがファイアウォールを開かずにサーバー上の特定のサービスにアクセスできるようにする場合は、ポートノッキングを使用できます。ポートノッキングは、許可されていないユーザーからサービスを保護するための方法です。ポートノッキングは、接続試行の正しいシーケンスが受信されたときに着信接続を許可します。

この投稿では、オープンSSHポート22をポートノッキングで保護します。このポートは、誰かがポート7000、8000、9000を順番に要求した場合にのみ開かれます。

前提条件

  • Atlantic.Netクラウドプラットフォーム上のUbuntu20.04サーバー
  • サーバーで構成されているrootパスワード

ステップ1-Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

apt-get update -y

ステップ2–Knockdのインストールと構成

apt-get install knockd -y

パッケージがインストールされたら、ポートノッキングのデフォルト構成ファイルを編集します。

nano /etc/knockd.conf

以下に示すデフォルトのシーケンスを見つけます:

        sequence    = 7000,8000,9000
        sequence    = 9000,8000,7000

そして、それらを次のシーケンスに置き換えます。

        sequence    = 7777,8888,9999
        sequence    = 9999,8888,7777

また、次の行を見つけます:

        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

そして、それを次の行に置き換えます:

        command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

終了したら、ファイルを保存して閉じます。

上記の構成ファイルでは、シーケンス7777、8888、9999を使用してクライアントシステムのポート22を開き、シーケンス9999、8888、7777を使用してクライアントシステムのポート22を閉じています。

次に、 / etc / default / knockdを編集します 構成ファイル:

nano /etc/default/knockd

次の行を変更します:

# Start the Knockd service
START_KNOCKD=1

# Name of your network interface
KNOCKD_OPTS="-i eth0"

終了したらファイルを保存して閉じ、Knockdサービスを再起動して、システムの再起動時に開始できるようにします。

systemctl restart knockd
systemctl enable knockd

次に、次のコマンドを使用してKnockdサービスのステータスを確認します。

systemctl status knockd

サンプル出力:

● knockd.service - Port-Knock Daemon
     Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago
       Docs: man:knockd(1)
   Main PID: 6555 (knockd)
      Tasks: 1 (limit: 2353)
     Memory: 296.0K
     CGroup: /system.slice/knockd.service
             └─6555 /usr/sbin/knockd -i eth0

Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon.
Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0

ステップ3–Iptablesのインストールと構成

KnockdはIptablesルールを使用してSSHポートを開閉するため、サーバーにIptablesパッケージをインストールする必要があります。

次のコマンドを実行して、Iptablesパッケージをインストールします。

apt-get install iptables iptables-persistent -y

パッケージがインストールされたら、すべてのユーザーのSSHポート22をブロックするIptablesルールを作成します。

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT

次に、Iptablesルールを保存し、次のコマンドでリロードします。

netfilter-persistent save
netfilter-persistent reload

この時点で、サーバーのOpenSSH用にポートノッキングが構成されています。

ステップ4–クライアントシステムからのOpenSSH接続を確認する

次に、クライアントシステムに移動し、OpenSSHポート22がブロックされているかどうかを確認します。

NMAPコマンドを使用して確認できます:

nmap your-server-ip

サーバーでポート22がフィルタリングされていることがわかります。

Nmap scan report for your-server-ip
Host is up (0.38s latency).
Not shown: 998 closed ports
PORT   STATE    SERVICE
21/tcp open     ftp
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds

次に、クライアントマシンからSSHを使用してサーバーに接続してみます。

ssh [email protected]

接続が拒否されたというメッセージが表示されます:

ssh: connect to host your-server-ip port 22: Connection refused

ステップ5–SSHサーバーに接続するようにクライアントでKnockdを構成する

次に、SSHサーバーに接続するためにクライアントシステムにKnockクライアントをインストールする必要があります。

まず、次のコマンドを実行して、Knockdクライアントパッケージをインストールします。

apt-get install knockd -y

次に、次のノックシーケンスを使用して、サーバーのSSHポート22を開きます。

knock -v your-server-ip 7777 8888 9999

サーバーは、Knockd構成ファイルで定義した正しいシーケンスを受信すると、クライアントマシンのSSHポート22を開き、SSHサーバーに接続できるようになります。

ssh [email protected]

リモートSSHサーバーでタスクを完了したら、クライアントマシンから次のシーケンスを使用して、SSHポートを再度閉じることができます。

knock -v your-server-ip 9999 8888 7777

結論

上記のガイドでは、ポートノッキングでSSHサーバーを保護する方法を学びました。同じ方法を使用して、Linuxサーバー上の他のポートを保護できます。 Atlantic.NetのVPSホスティングでお試しください!


Linux
  1. Kali LinuxにSSH(セキュアシェル)サービスをインストールする方法

  2. 22以外のポートへのSSH:それを行う方法(例付き)

  3. LinuxでSSHポートを変更する方法

  1. Ubuntu22.04LTSでSSHサービスを有効にする方法

  2. SSHトンネリングを設定する方法

  3. CSF ファイアウォールで Ubuntu サーバーを保護する方法

  1. LinuxでSSHを使用してパーソナルファイルサーバーを作成する方法

  2. VPSでSSHポートを変更する方法

  3. 別のサーバーを使用してサーバーにSSH接続する方法は??