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

Ubuntu18.04でSSHセキュリティを改善する方法

SSHサービスは、クラウドサーバーへの主要なアクセスポイントであると同時に、攻撃に最もさらされているサービスの1つです。このガイドは、さまざまなトリックやテクニックのおかげで、サービスのセキュリティを向上させるのに役立ちます。

リスニングポートの変更

SSH接続をリッスンするためのデフォルトのポートは22です。この設定を変更すると、サービスがクラウド化され、接続のセキュリティが向上します。

マシン上の他の既存のサービスとの干渉を避けるために、netstatコマンドを使用して現在使用されているポートを確認することをお勧めします。

$ netstat -n -l
    
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address State
tcp        0 0 127.0.0.1:3306          0.0.0.0:* LISTEN
tcp        0 0 127.0.0.53:53           0.0.0.0:* LISTEN
tcp        0 0 0.0.0.0:22              0.0.0.0:* LISTEN
tcp6       0 0 :::80                   :::* LISTEN
tcp6       0 0 :::22                   :::* LISTEN
udp        0 0 127.0.0.53:53           0.0.0.0:*

netstatに渡される-lパラメータを介して、LISTEN状態にあるすべての接続を強制的に出力します。この例では、次のポートが使用されています。

  • 3306MySQLサービス

  • 22 SSH

  • 80 Apache2 / HTTP

  • 53 DNS

ポートを変更するには、/ etc / ssh / sshd_configの構成ファイルを編集し、Portディレクティブのコメントを解除します。

#Port 22

次に、新しい値(場合によっては高い値)を設定して、自動ポートスキャンソフトウェア(2200、5574、1022など)によって傍受されないようにします。

Port 5574

変更を適用するには、次の方法でサービスをアップロードします:

$ sudo service sshd reload

。エラーを修正し、別のSSHクライアントとの新しいアクセスを確認するような方法でリロードを使用して接続を維持します

変更が適用されたら、新しいポートを指定してサーバーに接続します。たとえば、コマンドラインからSSHクライアントを使用している場合:

$ ssh [email protected]<SERVER.IP> -p 5574
認証のためのキーの使用

セキュリティのために広く使用されているRSAキーによるアクセスは、パスワードベースのログインの代わりになります。このタイプの認証では、クライアントは秘密鍵と関連する公開鍵を生成します。これらの公開鍵はサーバーマシンにインストールされ、クライアントを明確に認証します。 。

公開鍵をインストールするには、クライアントは最初にssh-keygenコマンドを使用して鍵ペアを生成する必要があります。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file where to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

生成を続行する前に、ssh-keygenは認証に使用できるオプションのパスフレーズを要求します。この例では、アクセスを容易にするために、次のファイルは空のままになっています。

終了すると、ソフトウェアは指定された場所に2つのファイルを保存します:

  • id_rsa:クライアントの秘密鍵。誰とも共有しないでください。

  • id_rsa.pub:共有可能な公開鍵。

サーバー環境を準備するには、ログインに使用するユーザーフォルダー内の.sshフォルダーにauthorized_keysという名前のファイルを作成します。

$ sudo mkdir ~/.ssh
$ sudo touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys
ファイルに上記の権限があることを確認してください。

次に、クライアントマシンによって事前に準備された公開鍵を貼り付けます。

$ sudo nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoTzd9RnqT0yioQG1klsLEK/VG9myo7CQ47aRXu7hnPit6Lgw5kAjC7vzNWYLTy2oIlsrVI7R/tvWmVNISGkWDp9U3fONbSLp+vgBKDzRUVAIqP/AIJ2THanyZxj2b8XU/4s2uzGoTLSR3ViX0JU6zTc+IkaBp1o3W3OolvO15E10/VYJCKN3TkxPsSSGE3QReXnCcnIZYAnrPf9f1DPP1Lo+VUCIzZ7IzcZajAWQ53hC71mTYNHkUgIlWxpRyEhnsRfmqEfUSFbTwpNEarv7vGlK686C4xVxlVfKbqlNa3/g2Vrae4ArVBM958JPZ6aa+7KDZfH5TDgPPtlFCIGkd [email protected]

ファイルを保存し、SSHサービスをリロードします:

$ sudo service sshd reload

この時点で、パスワードを必要とせずにサーバーにアクセスできるはずです。

$ ssh [email protected]<SERVER.IP>

すべてが正常に機能する場合は、ファイル/ etc / ssh / sshd_configを次のパラメーターで変更して、サーバーマシンからのパスワードアクセスを無効にします。

ChallengeResponseAuthentication no
    PasswordAuthentication no

他の公開鍵は、サーバーマシンのファイル〜/ .ssh/authorized_keysファイルの最後に保存するだけで追加できることを忘れないでください。

サービスの利用可能時間の制限

不要なアクセスとブルートフォース攻撃を減らすための戦略は、SSHサービスの可用性時間を短縮することです。特定の時間(たとえば、午後11時から翌日の午前8時まで)にサーバーに接続する必要がないことが確実な場合は、接続ポートをブロックする自動スケジュールを設定します。

これを行うには、iptablesと呼ばれるデフォルトのファイアウォールを使用しますが、構成を進める前に、iptablesはその性質上、入力された構成を保存しないことに注意してください。

構成の保存と読み込みを高速化するには、iptables-persistentパッケージを使用します。これにより、システムの起動時に保存された構成が再読み込みされます。

次に、パッケージのインストールを続行します:

$ sudo apt-get install iptables-persistent

インストールが完了したら、「チェーン」を入力してSSHサービスをブロックします。

$ sudo iptables -N chain-ssh
$ sudo iptables -A INPUT -p tcp --dport 22 -j chain-ssh

このようにして、ポート22宛てのすべての接続(SSHサービスが別のポートを使用する場合は、この値を変更します)は、新しく作成された「chain-ssh」チェーンを通過します。

現在の構成(iptables-persistentによってロードされます)を次のコマンドで保存します:

$ sudo iptables-save > /etc/iptables/rules.v4

次に、crontabを次のように変更して、チェーンのルールを入力および削除するためのタイムスケジュールを作成します。

$ sudo crontab -e
    
# m h  dom mon dow   command
0 23   * * *   iptables -A chain-ssh -j DROP
0 8    * * *   iptables -F chain-ssh

ご覧のとおり、最初の操作では午後11時の接続のDROPルールが追加され、2番目の操作では午前8時00分にチェーンが空になってサービスが復元されます。

ファイルを保存して変更を適用します。


Linux
  1. パスワードなしでSSHログインを設定する方法

  2. SSHキーペアを生成する方法(例付き)

  3. SSHキーを設定する方法

  1. Ubuntu18.04でSSHを有効にする方法

  2. Ubuntu16.04でSSHキーを設定する方法

  3. Ubuntu18.04でSSHキーを設定する方法

  1. パスワードなしのSSHログインを設定する方法

  2. Windows10でSSHキーを生成する方法

  3. Ubuntu18.04でSSHキーを設定する方法