\r\n\r\n

sshサーバーを保護する最適な方法

Linuxシステムにおけるssh接続を保護し、システムとデータを守る。システム管理者もホームユーザーも同様に、インターネットに接続されたコンピュータを強化し保護する必要がありますが、sshは複雑です。ここでは、sshサーバーを保護するための簡単な10個の方法を紹介します...

LinuxシステムにおけるSSH接続を保護し、システムとデータを守る。システム管理者もホームユーザーも同様に、インターネットに接続されたコンピュータを強化し保護する必要がありますが、SSHは複雑な場合があります。ここでは、SSHサーバーを保護するための10の簡単な方法を紹介します。

sshセキュリティの基本

SSHはSecure Shellの略で、「SSH」という名称は、SSHプロトコルそのもの、またはシステム管理者やユーザーがこのプロトコルを使ってリモートコンピューターに安全に接続するためのソフトウェアツールのいずれかを意味することがあります。

SSH プロトコルは、インターネットのような安全でないネットワーク上で安全な接続を提供するために使われる暗号化プロトコルです。Linux の ssh は OpenSSH プロジェクトの移植版として構築されています。SSHサーバーがSSHクライアントからの接続を受け入れるという、古典的なクライアント・サーバーモデルで実装されています。クライアントは、サーバーに接続し、リモートユーザーにセッションを表示するために使用されます。サーバーは接続を受け入れ、セッションを実行する。

デフォルトの設定では、SSHサーバーはTCP(Transmission Control Protocol)ポート22で着信接続を待ち受けます。これは標準化されたよく知られたポートであるため、脅威の参加者や悪意のあるボットのターゲットとなるのです。

脅威の参加者は、オープンポートのために一連のIPアドレスをスキャンするボットプログラムを起動します。そして、そのポートを調査し、悪用可能な脆弱性があるかどうかを確認します。私は安全だ、悪者は私より大きくて良い標的を狙っている」と考えるのは、誤った推論です。このボットは、何のメリットもなくターゲットを選ぶのではなく、突破できるシステムを計画的に探しているのです。

システムを保護していなければ、自分を被害者としてリストアップすることになります。

安全摩擦

セキュリティ摩擦とは、セキュリティ対策を実施する際に、ユーザーなどが経験するあらゆる苛立ちの度合いを指す。私たちは、新しいユーザーをコンピュータシステムに紹介するとき、メインフレームにログオンするたびに本当にパスワードを入力しなければならないのかと、恐ろしい声で質問されたことを長く覚えています。彼らにとっては、セキュリティーの摩擦だったのです。

(ちなみに、このコードの発明者は、同じくコンピュータ科学者のパンテオンであるフェルナンド・J・コルバット氏で、その共同研究によってUnixが誕生したとされている)。

セキュリティ対策の導入は、通常、誰かに何らかの摩擦を生じさせるものです。経営者はその代償を支払わなければならない。コンピュータのユーザーは、使い慣れた方法を変更したり、別の認証情報を記憶したり、接続を成功させるために余分な手順を追加したりする必要があるかもしれません。システム管理者は、新しいセキュリティ対策を導入し、維持するために余分な作業をすることになります。

LinuxやUnixライクなオペレーティングシステムのハードニングとロックダウンは、非常に複雑で、非常に迅速に行うことができます。ここで紹介するのは、サードパーティ製アプリケーションやファイアウォールを介さずにコンピュータのセキュリティを向上させる、簡単に実行可能な一連の手順です。

これらの手順は、SSHセキュリティの最終決定版ではありませんが、デフォルトの設定から、あまり摩擦を生じさせることなく脱却することができます。

sshプロトコルバージョン2の使用

2006年、SSHプロトコルはバージョン1からバージョン2に更新され、大幅なバージョンアップが行われました。特に暗号化やセキュリティの面で多くの変更・改良が行われたため、バージョン2はバージョン1との後方互換性がありません。バージョン1クライアントからの接続を防ぐために、コンピュータがバージョン2クライアントからの接続しか受け付けないように指定することができます。

これを行うには、/etc/ssh/sshdetheu 設定ファイルを編集します。この記事を通して、頻繁に行います。このファイルを編集する必要があるときは、次のコマンドを使用します。

sudo gedit /etc/ssh/sshd_config

行を追加します。

Protocol 2

その後、ファイルを保存してください。SSHデーモンを再起動します。今回も、この記事を通して頻繁に行うことになります。以上が、それぞれのケースで使用するコマンドです。

sudo systemctl restart sshd

それでは、新しい設定がうまくいくことを確認してみましょう。別のマシンにジャンプして、テストマシンにSSH接続を試みます。ここでは、-1 (protocol1) オプションを使用して、ssh コマンドに protocolversion1 を使用するように強制します。

ssh -1 [email protected]

素晴らしい!接続要求が拒否されました。プロトコル2でも接続できることを確認しましょう。 この事実を証明するために、-2 (プロトコル2) オプションを使用します。

ssh -2 [email protected]

SSHサーバーが私たちのパスワードを要求しているということは、接続が確立され、サーバーとやりとりしていることを示す肯定的なサインです。実際、最近のSSHクライアントはデフォルトでプロトコル2を使うので、クライアントが最新である限り、プロトコル2を指定する必要はないのです。

ssh [email protected]

私たちの接続は受け入れられました。したがって、より弱く安全でないプロトコル1の接続のみが拒否されました。

22番ポートを避ける

ポート22は、SSH接続の標準的なポートです。別のポートを使用すると、システムから見えにくくなることで、少しセキュリティが高まります。サイレント・セキュリティは決して本当のセキュリティ対策ではなく、私は他の記事でこのことを憤慨しています。実際、より賢い攻撃ボットの中には、単純なポート検索リストに頼って通常のサービスを提供していると思い込むのではなく、開いているポートをすべて調べ、どのサービスを運んでいるかを判断するものもある。しかし、非標準のポートを使用することで、22番ポートのノイズや悪質なトラフィックを減らすことができます。

標準以外のポートを設定するには、以下のSSH設定ファイルを編集してください。

sudo gedit /etc/ssh/sshd_config

Port」行の先頭のハッシュを削除し、「22」を任意のポート番号に置き換えます。設定ファイルを保存して、SSHデーモンを再起動します。

sudo systemctl restart sshd

その意味するところを確認してみましょう。別のコンピューターで、sshコマンドを使ってサーバーに接続します。sshコマンドは、デフォルトで22番ポートを使用します。

ssh [email protected]

連絡は拒否されました。-p(ポート)オプションを付けて、ポート470:を指定して再試行してみましょう。

ssh -p 479 [email protected]

私たちのコンタクトは受け入れられました。

tcpラッパーを使用したコネクションのフィルタリング

TCP Wrappersは、わかりやすいアクセスコントロールリストです。接続要求の特性(IPアドレスやホスト名など)に基づいて、接続を除外したり許可したりすることができます。 TCPラッパーは、適切に設定されたファイアウォールと組み合わせて使用する必要があり、ファイアウォールの代わりに使用するべきではありません。このシナリオでは、TCP Wrappersを使用することで、コンテンツをかなり強化することができます。

この記事の調査に使用したubuntu18.04ltsマシンには、TCPラッパーがインストールされています。Manjaro 18.10とFedora 30にインストールする必要があります。

Fedoraにインストールする場合は、以下のコマンドを使用します。

sudo yum install tcp_wrappers

Manjaroにインストールする場合は、以下のコマンドを使用します。

sudo pacman -Syu tcp-wrappers

1つは許可リスト、もう1つは拒否リストです。

sudo gedit /etc/hosts.deny

これにより、geditエディタが起動し、denyファイルが読み込まれます。

行を追加する必要があります。

ALL : ALL

そして、ファイルを保存してください。すべての未承認アクセスをブロックしてください。

sudo gedit /etc/hosts.allow

これにより、geditエディタが開き、allowファイルが読み込まれます。

SSHデーモン名SSHDと、接続の確立を許可するコンピュータのIPアドレスを追加しています。ファイルを保存して、制限と許可が機能するかどうかを確認します。

まず、私たちは決して...ファイルを許可するでホストしようとします。

ここでは、IPアドレスが192.168.4.23のコンピュータから接続を試みます。

私たちのコンタクトは受け入れられました。

ここでの例は、接続するコンピュータが1台だけという少し残酷なものです。TCPラッパーは非常に多機能で、それよりもずっと柔軟性があります。ホスト名、ワイルドカード、サブネットマスクをサポートし、さまざまなIPアドレスからの接続を受け入れることができます。ぜひ、マニュアルページをご覧ください。

パスワードのない接続要求を拒否する

悪い習慣ですが、Linuxのシステム管理者は、パスワードのないユーザーアカウントを作成することができます。つまり、このアカウントからのリモート接続要求には、確認するためのパスワードがありません。これらの接続は受け入れられますが、未認証です。

SSHのデフォルトの設定は、パスワードなしで接続要求を受け入れるようになっています。これを簡単に変更し、すべての接続が認証されるようにすることができます。

SSH設定ファイルを編集する必要があります。

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#permittentypasswords no. "の行を確認します。行頭のハッシュを削除し、ファイルを保存します。SSHデーモンを再起動します。

sudo systemctl restart sshd

パスワードの代わりにsshキーを使用する

SSHキーは、SSHサーバーにログインするための安全な方法です。パスワードは推測、クラック、ブルートフォースなどの攻撃を受ける可能性がありますが、SSHキーはそのような攻撃にさらされることはありません。

SSH鍵を生成するには、鍵のペアを作成する必要があります。ひとつは公開鍵、もうひとつは秘密鍵です。公開鍵は、接続先のサーバーにすでにインストールされています。秘密鍵は、その名の通り、自分のコンピュータの中で安全に管理されます。

SSHキーは、パスワードなしで接続を確立することができ、パスワードで認証された接続よりも安全です。

お客様が接続要求を行うと、リモートコンピューターはその公開鍵のコピーを使用して暗号化されたメッセージを作成し、お客様のコンピューターに送り返します。公開鍵で暗号化されているので、コンピュータは秘密鍵で暗号化を解除することができます。

そして、あなたのコンピューターは、メッセージからいくつかの情報、特にセッションIDを取り出し、暗号化してサーバーに送り返します。サーバーがあなたの公開鍵のコピーで復号化でき、メッセージ内の情報がサーバーがあなたに送ったものと一致すれば、あなたの接続があなたから来たものであることが確認されます。

ここでは、SSH鍵を持つユーザーが192.168.4.11のサーバーに接続しています。なお、パスワードの入力は求められません。

ssh [email protected]

SSH鍵の作成とインストール方法については、以下の通りです。

関連:LinuxシェルからSSH鍵を作成・インストールする方法

パスワード認証を完全に無効にする

SSH鍵を使用する論理的な拡張は、もちろん、すべてのリモートユーザーがそれを採用することを強制される場合、パスワード認証を完全にオフにすることです。

SSH設定ファイルを編集する必要があります。

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#PasswordAuthentication yes "で始まる行を確認します。行頭のハッシュを削除し、"yes "を "no "に変更し、保存します。SSHデーモンを再起動します。

sudo systemctl restart sshd

x11転送を無効にする

X11転送により、リモートユーザーはSSHセッションを介してサーバーからグラフィカルなアプリケーションを実行することができます。脅威の担い手や悪意のあるユーザーの手にかかると、GUIインターフェースによって、悪意のある目的を容易に達成することができます。

ネットワーク・セキュリティの標準的な考え方は、「オンにする本当の理由がなければ、オフにしておく」というものです。にあるSSH設定ファイルを編集することでこれを行います。

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#X11Forwarding no. "で始まる行を確認します。行頭のハッシュを削除し、ファイルを保存します。SSHデーモンを再起動します。

sudo systemctl restart sshd

アイドルタイムアウト値の設定

お使いのコンピューターにSSH接続が確立されていて、しばらく活動がない場合、セキュリティ上のリスクがある可能性があります。ユーザーがデスクを離れ、他の場所で忙しくしている可能性があります。自分の机の前を通りかかった人は、座って自分のパソコンを使い始め、SSHで自分のパソコンを使うことができる。

タイムアウトの制限を設けた方がより安全です。非アクティブ期間が制限時間と一致した場合、SSH接続は切断されます。にて、再度SSH設定ファイルを編集します。

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#ClientAliveInterval 0 "で始まる行を確認します。行頭のハッシュを削除し、数字の0を任意の値に変更します。300秒、つまり5分かかりました。ファイルを保存して、SSHデーモン:を再起動します。

sudo systemctl restart sshd

パスワードの試行回数に制限を設ける

認証の試行回数に制限を設けることで、パスワードの推測やブルートフォースアタックを阻止することができます。指定された回数の認証要求があった場合、ユーザーはSSHサーバーから切断されます。デフォルトでは、制限はありません。しかし、これはすぐに修正されました。

ここでも、SSH設定ファイルを編集する必要があります:.

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#maxauthries 0 "で始まる行を確認します。行頭のハッシュ#を削除し、数字の0を任意の値に変更します。ここでは3つを使用しました。変更する場合は、ファイルを保存し、SSHデーモンを再起動します。

sudo systemctl restart sshd

接続を試みて、わざと間違ったパスワードを入力することで、これをテストすることができます。

MaxAuthTriesの数値は、ユーザーが許可する試行回数より1回多く表示されることに注意してください。2回の不正な試行の後、テストユーザーは切断されました。

rootログインを無効にする

Linuxコンピュータでrootユーザでログインするのはバッドプラクティスです。通常のユーザーでログインし、root権限が必要な操作はsudoで行ってください。さらに重要なことは、SSHサーバーにrootがログインすることを許可してはいけないということです。通常のユーザーしか接続できないようにする。もし彼らが管理作業を行う必要があるなら、sudoも使うべきです。もしrootユーザのログインを許可せざるを得ないなら、少なくともSSHキーを使うように強制することができます。

最後に、SSH設定ファイル:を編集する必要があります。

sudo gedit /etc/ssh/sshd_config

ファイルをスクロールして、"#permitrotlogin prohibite password "で始まる行を確認します。行頭のハッシュを削除します。

  • rootユーザーをログインできないようにしたい場合は、「パスワードを無効にする」を「いいえ」に置き換えてください。
  • rootユーザーのログインは許可するが、SSH鍵の使用を強制したい場合は、「forbidden password」のままにしてください。

で、変更を保存し、SSHデーモンを再起動します。

sudo systemctl restart sshd

最終段階

もちろん、パソコンでSSHを実行する必要が全くない場合は、無効になっていることを確認してください。

sudo systemctl stop sshd sudo systemctl disable sshd

窓を開けなければ、誰も入ってこれない。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ