CentOS8のSSH設定 – SSHの起動とrootへの直接ログイン禁止

CentOS8は初期設定でSSHを繋げるようになっていますが、セキュリティが脆弱な状態です。

なので、サーバの公開(インターネット上から繋げるようにする)前に設定をしておかないと悪意を持った人々の餌食となってしまいます。

そうならないようにするためにもしっかりとSSH周りの設定をしておきましょう。

もしSSHを使わない場合はしっかりとSSHを停止しておきましょう。

この記事で行うこと

  1. SSHの起動・停止
  2. rootへの直接ログインの禁止

1. SSHの起動・停止

SSHの起動コマンドは以下の通りです。(正確に言うと、SSHで接続される為のプログラムの起動です)

# systemctl start sshd
  • systemctl : 主にプログラムの起動や停止、有効化、無効化などを行うコマンドです。(System Daemonがsystemdと略され、更にsystemd controlがsystemctlと略された……のだと思います)
  • start : プログラムを起動するコマンドです。
  • sshd : SSHで接続される為のプログラムを指します。(SSH Daemonの略です、恐らくは)

なお、systemctlには「start」以外にも以下のコマンドがあります。(主な物です)

startプログラムの起動
stopプログラムの停止
restartプログラムの再起動
enableサーバ起動時にプログラムが自動的に起動するようにする
disableサーバ起動時にプログラムが自動的に起動しないようにする
statusプログラムの状態を確認する(起動状態や最近のログなど)
主なsystemctlコマンド。他にも様々なコマンドがあります。

「start」でプログラムを起動してもサーバを再起動するとまた止まってしまいます。このため、「enable」でサーバが起動時に自動的にプログラムが起動するように設定する必要があります。

なお、「enable」のオプションで「–now」を追加すると、サーバが起動時に自動的にプログラムが起動するように設定すると同時に、今すぐプログラムを起動させられます。

同様に自動起動されるプログラムを「stop」で止めても、次にサーバが再起動するときにはまた立ち上がってしまいます。「disable」で自動的に起動しないように設定しておきましょう。

sshdの場合は初期設定で自動起動に設定されていますので、SSH接続を使わない場合はしっかりと「disable」を実行するようにしてください。

2. rootへの直接アクセスの禁止

以前の記事では一般ユーザとしてアクセスしてから「su」を使ってrootにログインしましたが、実は直接rootにログインすることも可能できます。

しかし、これはセキュリティ的に良くないため禁止します。(あくまでもSSHの接続での設定で、この設定を行ってもサーバに直接触れれば直接rootにログインすることが可能です)

設定ファイルは以下のファイルです。このファイルを編集します。

 /etc/ssh/sshd_config

ファイルの編集はこのページを参照。Linuxで設定ファイルを編集するときの基本

編集する箇所は以下です。「-」は削除する行(変更前)、「+」は追加する行(変更後)となります。

- #PermitRootLogin yes
+ PermitRootLogin no

設定ファイルを編集したらSSHを再起動して完了です。

# systemctl restart sshd

SSHで接続してユーザ名をrootで接続しようとしてみてください。

正しいrootパスワードを入れてもログインできなくなっているはずです。

もし、ログインできてしまった場合は設定ファイルの編集を間違っていないか、SSHを再起動したか確認してみてください。

まとめ

今回はSSHの起動・停止の方法とrootへの直接ログインを禁止する方法について触れました。

SSHの起動・停止に使ったsystemctlは他のアプリでも使いますので是非覚えておいてください。

次回・次々回はそれぞれ「SSH接続の公開鍵認証設定」「SSHの接続ポート変更」を行います。

どちらもセキュリティ上大事な設定なので是非実施するようにしてください。

2020/08/31 enableの–nowオプションについて追記。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です