SSHの設定に関する世界観です。SSHも参照のこと。
sshdの設定は/etc/ssh/sshd_configで行います。また、ログイン時の秘密鍵の設定などは~/.ssh/configに記述できます。
基本的に、
・デフォルトの22番ポートからポートを変える。
・rootログインを禁止する。
・ssh可能なユーザーを制限する。
・認証時の時間と試行回数を制限する。
・パスワード認証を禁止する。
などの制限をしておこう。
以下はsshの最低限のセキュリティ設定。
デフォルトの22番ポートは危険。ボットに攻撃される。/etc/servicesにある予約ポートではないポートで、適当に決めよう。
Port 2367
デフォルトのポート番号を変えるだけで、多くの場合ボットは狙わないでくれる。
また、rootログインは絶対に禁止すべき。
PermitRootLogin no
rootログインを禁止することで、もしハッキングされてもroot権限は使われないで済む。
ssh可能なユーザーは以下で限定できる。
AllowUsers assy zaidou # DenyUsers schwarz inoue
AllowUsersはそのユーザーだけ許可する。DenyUsersはそのユーザーだけ排除する。
また、認証時の時間と試行回数を制限する。これをしておくと、ハッキングされづらい。
LoginGraceTime 60 MaxAuthTries 5
また、パスワード認証はとても危険なため、必ず公開鍵暗号方式を使うこと。
PasswordAuthentication no ChallengeResponseAuthentication no
上記の設定例は以下のページを参考に記述しました。
公開鍵はssh-keygenコマンドで作成する。
$ ssh-keygen -t rsa
上のコマンドで秘密鍵のid_rsaと公開鍵のid_rsa.pubの鍵ペアが作成できる。
秘密鍵のid_rsaはローカルマシンに置き、公開鍵のid_rsa.pubはリモートマシンの~/.ssh/authorized_keysにコピー(既にある場合は追記)する。
ログインは、以下のようにする。
$ ssh assy@hogehoge.com -i ~/ssh_keys/id_rsa
以下のページが参考になります。
暗号も参照のこと。
~/.ssh/configを書くことで、鍵さえあれば認証作業なく、簡単にリモートログインできます。
~/.ssh/configの設定は
Host assy HostName hogehoge.com User assy Port 2367 IdentityFile ~/.ssh/id_rsa
のようになります。これで、
$ ssh assy
のようにログインできます。
(~/.ssh/configについて - Qiitaと~/.ssh/configを使ってSSH接続を楽にする - RAKUS Developers Blog | ラクス エンジニアブログを参考に執筆しました。)
sshdの設定を変えたら、
service sshd restart
か、systemdの場合は
systemctl restart sshd
でsshdを再起動しよう。
SSHログインでは、セキュリティ上の不安がつきまとう。鍵ファイルが漏れたら終わりである。
そのため、SSHで二段階認証・ワンタイムパスワードを有効にすることができる。
詳しくは以下のようなページを参照のこと。