CentOS8は初期設定でSSHを繋げるようになっていますが、セキュリティが脆弱な状態です。
なので、サーバの公開(インターネット上から繋げるようにする)前に設定をしておかないと悪意を持った人々の餌食となってしまいます。
そうならないようにするためにもしっかりとSSH周りの設定をしておきましょう。
もしSSHを使わない場合はしっかりとSSHを停止しておきましょう。
この記事で行うこと
- SSHの起動・停止
- 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 | プログラムの状態を確認する(起動状態や最近のログなど) |
「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オプションについて追記。