AWSやGCP, Vultrなど、今では格安でサーバーを使用することができます。
簡単に使用できるようになった一方で、基本的なセキュリティ対策をしていないと
攻撃を受けてひどい目にあいます。
今回はCentOSやUbuntuなどLinuxサーバーを立てた際に
まず真っ先にやるべき6つのSSH設定を書き溜めます。
おすすめってあるけどやっとくべきです。
もちろん、サーバーの要件によって実際は異なりますが、
普通これはやるだろ絶対、ってのだけ書き溜めます。
概要
これだけはやっとけ! SSHデーモン設定
ssh設定をするときには何よりまず下記6つを行うほうが良い。
その後、各要件に合わせるのがいいね。
- 管理用ユーザー追加
- 公開鍵設定
- rootログイン禁止
- sshポート変更
- チャレンジ・レスポンス認証認証方式禁止
- パスワード認証方式禁止
みてわかるかと思いますが,
rootユーザー廃止&公開鍵認証をベースとしたssh設定になっています。
管理用ユーザー追加 useradd
まず何より先に、管理用ユーザーを作成します。
rootユーザーは最初のサーバー構築後は使わないぐらいの感覚でよいかと。
管理用ユーザーの追加方法は
過去軽く書き溜めたのでそちらを読んでください。
先程追加した管理用ユーザーに公開鍵を設定します。
/home/{ 管理用ユーザー名 }/.ssh/authorized_keysに, ssh-keygenで生成した公開鍵を記述します。
下記のような感じです。
ssh-keygenで公開鍵、秘密鍵を生成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
noffuy-no-MacBook-Air noffuy$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/noffuy/.ssh/id_rsa): test_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in test_rsa. Your public key has been saved in test_rsa.pub. The key fingerprint is: SHA256:pVC6W7QWbY8USNs+tz2ltMw4QVTOQ1OCly3N8DwRylo noffuy@noffuy-no-MacBook-Air.local The key's randomart image is: +---[RSA 2048]----+ | .o.. .o*Xo| | o.+ oo+===| | o + * .E+oo| | + O +o ..| | . S +.+ . .| | + o O + | | . + B | | . . | | | +----[SHA256]-----+ noffuy-no-MacBook-Air noffuy$ |
これで生成されたtest_rsa.pubの中身を
/home/{ 管理用ユーザー名 }/.ssh/authorized_keysに記述する。
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5v5xtFa94H6Hd6jbXiC5Q/UipJm7G/BSd0TosCFurOy1v20osBZ/xKpW3vbtuTkRZeOl9ZzQORLk0aLGl23F9gdr3D9sWZ0m0vvAln1OSKTOr6a8aGTSRzSL10fyncwTN1uYTXl9oTlhaH8B7NopChbi19LXjMuzetIwsrnP9UWg3xj31UbBWpxBx2v9ny7bdpaSpJhI5w2M7PlagyDN8uZt5wPczb3C2mx6A6WnF+fM70WvXyVaKyqo4dWAuOLXCkoLoM8BXGcqe879elV9SkIdnsCJw+ya8oLnjXEDW1Xw9Xgd7XUlUBvG9BGbHyF/Ssp+xGihIP11R+9k5s+Ul noffuy@MacBook-Air.local |
.sshディレクトリ、authorized_keysの権限を変更する。
1 2 |
chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
PubkeyAuthentication yes
公開鍵認証方式を採用するため、
/etc/ssh/sshd_configを編集します。
/etc/ssh/sshd_config内で「PubkeyAuthentication」を検索して
PubkeyAuthentication yesと書き直してください。
公開鍵認証方式を使用することになります。
これで、管理用ユーザーの作成と
そのユーザーへの公開鍵認証の準備が整いました。
rootログイン禁止 PermitRootLogin no
rootユーザーはlinuxでは基本存在するユーザー名のため
総当たり攻撃の標的として利用されます。
うっかりそのままサーバーを公開した場合, /var/log/secureをみると
rootユーザーへのログイン履歴で溢れかえります。
今後は、先程作成した管理用ユーザーでログインするようにして
rootユーザーでのログインを禁止します。
禁止するには/etc/ssh/sshd_configを編集します。
/etc/ssh/sshd_config内で「PermitRootLogin」を検索して
PermitRootLogin noと書き直してください。
これで、rootでのssh認証を禁止しました。
sshポート変更 Port 22
デフォルトで使用されるポート番号は22番です。
これもそのまま公開すると22番ポートにえらい数のログイン履歴があふれます。
/etc/ssh/sshd_configを編集します。
/etc/ssh/sshd_config内で「Port 22」を検索して
54900などに変更してください。
! Firewalldを使用している場合(Centos7)は、ポートを開放する必要があります。
ポートの開放方法は別記事に書いたので簡単なのでそちらをどうぞ。
これでポートの変更は完了です。
firewalldの変更を忘れると大変 笑
チャレンジ・レスポンス認証認証方式禁止 ChallengeResponseAuthentication no
公開鍵認証方式を採用するため、
チャレンジ・レスポンス認証認証方式は使いません。
禁止するには/etc/ssh/sshd_configを編集します。
/etc/ssh/sshd_config内で「ChallengeResponseAuthentication」を検索して
ChallengeResponseAuthentication noと書き直してください。
これで、チャレンジ・レスポンス認証認証方式を禁止しました。
パスワード認証方式禁止 PasswordAuthentication no
公開鍵認証方式を採用するため、
パスワード認証認証方式は使いません。
禁止するには/etc/ssh/sshd_configを編集します。
/etc/ssh/sshd_config内で「PasswordAuthentication」を検索して
PasswordAuthentication noと書き直してください。
これで、チャレンジ・レスポンス認証認証方式を禁止しました。
必ずsshdを再起動
設定が終了したら
最後に必ずsshdを再起動してくださいね。
1 |
sudo systemctl restart sshd |
これで設定変更が適応されるので
sshでログインできます!
その他、ssh設定について
詳しく知りたい人は公式を見てください。
セキュリティは攻撃とのいたちごっこの面があるから
この記事も適宜更新していきます。
じゃあね〜〜〜〜。