Contents
概要
SSHを設定します。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
標準ポート番号
TCP:22 (SSH)
設定
/etc/ssh/sshd_config
/etc/ssh/sshd_configはSSHの設定ファイルです。
sshd_configのデフォルト値
コメント行等を削除し、最小化したsshd_configは下記の通りです。
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV PermitRootLogin yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server
sshd_configの設定
SSHは特別な要件が無ければデフォルトのままでも問題ありませんが、一般的に変更される場合が多い項目を取り上げます。
rootユーザーのSSHログインを許可するか
rootユーザーのSSHログインを制御します。デフォルト値はyesで許可されています。セキュリティ観点で無効化(no)されるケースが多いのですが、OS関連の設定管理は不便になります。
PermitRootLogin [yes|no]
rootユーザーのSSHログインを許可しないのであれば、suコマンドの制限と合わせて設定すると良いと思います。
パスワード認証を許可するか
パスワード認証を制御します。デフォルト値はyesで許可されています。セキュリティ観点で無効化(no)されるケースが多いのですが、秘密鍵を紛失した場合はコンソールログインしかできなくなります。
PasswordAuthentication [yes|no]
DNSの逆引きを行うか
DNSの逆引きはセキュリティを高める意図(おそらくホスト名をログに残す等?)があったようですが、現在ではあまり意味が無いとされており、CentOS8のデフォルト値はnoになっています。ちなみにCentOS7までのデフォルト値はyesです。yesの場合、DNSを参照できない環境ではSSH接続に非常に時間がかかります。
UseDNS [yes|no]
どのユーザーにSSHログインを許可するか
SSHログイン可能なユーザーを制御します。ある程度の絞り込みができる環境であれば設定しておくと安心ですが、多数の場合は設定しないほうが良いでしょう。
AllowUsers [user1 user2 ...]
送信元IPアドレスにより設定値を変更する
Match Addressを使用すると、送信元IPアドレスにより先に設定した値を変更できます。
Match Address [xxx.xxx.xxx.xxx/xx,yyy.yyy.yyy.yyy/yy,...] PermitRootLogin yes PasswordAuthentication yes
サービス再起動
設定変更を反映する為、SSHを再起動します。
[root@centos ~]# systemctl restart sshd.service [root@centos ~]# systemctl status sshd.service