Ubuntu Linux

Linux/UbuntuにインストールしたOpenSSHのセキュアな設定についての覚え書きです。

 

 

環境

Desktop (Ubuntu 16.04)

Raspberry Pi3 Model B (Raspbian)

OpenSSHのインストール

OpenSSHがインストールされていない場合は公式リポジトリからインストールします。

公開鍵認証の設定

SSHで公開鍵認証を利用するとパスワード方式よりも安全にログインできるので設定します。

SSHで公開鍵認証を利用する方法について下記を参照。

【Linux/Ubuntu】SSH公開鍵認証の設定方法 | 積水成淵日記

OpenSSHの設定

/etc/ssh/sshd_config を編集してOpenSSHの設定を変更します。

ポート番号の変更

まず不正ログイン対策として ssh のポート番号をデフォルトの22から適当な値に変更します。

ここや /etc/services を確認して割り当てられていないポート番号を設定します。

パスワード認証の禁止

パスワード認証は公開鍵認証と比較してセキュリティが低いので公開鍵認証による設定を済ませた後 PasswordAuthentication と ChallengeResponseAuthentication を no に設定して禁止します。

ChallengeResponseAuthentication はデフォルトで no に設定されていましたが一応確認しておく。

rootユーザのログインを禁止

一般ユーザでも sudo グループに追加しておけばシステムの変更も可能なので root ユーザのログインを禁止します。

OpenSSH v7.0 から PermitRootLogin がデフォルトで prohibit-password になりパスワードによる root ユーザのログインが禁止されるようになったようですが、とりえあず root でログインするつもりはないので公開鍵認証によるログインも禁止しておきます。

ユーザの制限

AllowUsers でログイン可能なユーザを制限します。

ユーザ名 hiyoshi のところは適宜置き換え。

AllowUsers がホワイトリスト、DenyUsers がブラックリストのように使えます。

ログレベルの変更

ログの詳細度は LogLevel の値によって変更できます。

下記の引用元を参考にしより詳細なログが確認できるよう LogLevel VERBOSE に変更しました。

By default, the OpenSSH server logs to the AUTH facility of syslog, at the INFO level. If you want to record more information – such as failed login attempts – you should increase the logging level to VERBOSE.

設定の再読み込み

設定を再読み込みして変更後の設定を反映させます。

/etc/services の変更

ポート番号を変更したので /etc/services も編集しておきます。

/etc/services のポート番号を修正しなくても動きますが更新しておくと netstat などでポート番号をプロトコルと置き換えてくれるます。

確認

最後に変更した内容の確認です。

ポート番号の指定

ポート番号をデフォルトから変更したので ssh 実行時にポート番号を指定しないと接続が拒否されます。

ssh の pオプションで別途ポート番号を指定すると接続できます。

ログの確認

/var/log/auth.log を開きアクセスログを確認してみます。

接続元のIPアドレスや認証失敗のログもきちんと残るので不正ログインを試みてるユーザの有無なども確認できそうです。

不正なポート番号でのアクセス履歴はゲートウェイで弾かれて OpenSSH までたどり着いてないので残っていません。

netstat の確認

netstat を実行して /etc/services で追加したSSHとポート番号の対応が正しく反映されているか確認します。

下の結果ではプロトコルの ssh がポート番号 xxxx と置き換えて表示されているので問題なしです。

 

【Linux/Ubuntu】OpenSSHのセキュアな設定
Tagged on:             

コメントを残す