Ubuntu 18.04でポートノッキングシーケンスを使用してSSHをさらに保護する方法

前書き

SSHのデフォルトポートを変更し、認証にキーペアを使用するほかに、ポートノッキングを使用して、SSHサーバーをさらにセキュリティで保護する(より正確には、あいまいにする)ことができます。SSHネットワークポートへの接続を拒否することで機能します。これにより、事前定義されたポートに対して一連の接続試行が行われるまで、SSHサーバーを実行しているという事実が本質的に隠されます。非常に安全で実装が簡単なポートノッキングは、悪意のあるSSH接続の試行からサーバーを保護するための最良の方法の1つです。

前提条件

  • Ubuntu 18.04を実行するVultrサーバー。
  • Sudoアクセス。

以下の手順を実行する前に、rootユーザーとしてログインしていない場合は、実行sudo -iしてパスワードを入力し、一時的なrootシェルを入手してください。または、sudoこの記事に示すコマンドの前に追加することもできます。

ステップ1:Knockdのインストール

Knockdは、サーバーにポートノッキングを実装するためにiptablesと組み合わせて使用​​されるパッケージです。' iptables-persistent'パッケージも必要です。

apt update
apt install -y knockd iptables-persistent

ステップ2:iptablesルール

次のコマンドを順番に実行します。

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4

これらのコマンドは、それぞれ次のことを行います。

  • 既存の接続を維持するようにiptablesに指示します。
  • iptablesにポートtcp / 22への接続をすべて切断するように指示します(SSHデーモンが22以外のポートで待機している場合は、上記のコマンドを適宜変更する必要があります)。
  • これら2つのルールを保存して、再起動後も保持されるようにします。

ステップ3:Knockd構成

任意のテキストエディタを使用して、ファイルを開きます/etc/knockd.conf

以下が表示されます。

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn

ポートの順序を変更し(上記のポート番号を選択し1024、他のサービスでは未使用)、安全に保管する必要があります。この組み合わせはパスワードのように扱う必要があります。忘れると、SSHにアクセスできなくなります。この新しいシーケンスをと呼びx,y,zます。

このseq-timeout行は、クライアントがポートノッキングシーケンスを完了するまでKnockdが待機する秒数です。特にポートノッキングが手動で行われる場合は、これをより大きな値に変更することをお勧めします。ただし、タイムアウト値が小さいほど安全です。15このチュートリアルでは手動でノックするので、に変更することをお勧めします。

開いた順序を選択したポートに変更します。

[openSSH]
sequence    = x,y,z

コマンドの値を次のように変更します。

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

次に、終了シーケンスを適宜変更します。

[closeSSH]
sequence    = z,y,x

変更を保存して終了し、ファイルを開きます/etc/default/knockd

  • 交換してくださいSTART_KNOCKD=0START_KNOCKD=1
  • ファイルの最後に次の行を追加しますKNOCKD_OPTS="-i ens3"ens3異なる場合は、パブリックネットワークインターフェイスの名前に置き換えます)。
  • 保存して終了。

Knockdを起動します。

systemctl start knockd

あなたが今、あなたのサーバーから切断する場合は、ポートをノックする必要がありますxyz再度接続します。

ステップ4:テスト

これで、SSHサーバーに接続できなくなります。

Telnetクライアントでポートノッキングをテストできます。

Windowsユーザーは、コマンドプロンプトからTelnetを起動できます。Telnetがインストールされていない場合は、コントロールパネルの[プログラム]セクションにアクセスし、[Windowsの機能の有効化または無効化]を見つけます。機能パネルで、「Telnetクライアント」を見つけて有効にします。

端末/コマンドプロンプトで次のように入力します。

telnet youripaddress x
telnet youripaddress y
telnet youripaddress z

これは、構成で課せられる制限であるため、15秒以内にすべて実行してください。次に、SSH経由でサーバーに接続してみます。アクセス可能になります。

SSHサーバーへのアクセスを閉じるには、コマンドを逆の順序で実行します。

telnet youripaddress z
telnet youripaddress y
telnet youripaddress z

結論

ポートノッキングを使用することの最も良い点は、秘密鍵認証と一緒に構成されている場合、誰かがポートノッキングシーケンスを知っていて秘密鍵を持っていない限り、他の誰かが侵入する可能性はほとんどありません。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。