今までいけしゃあしゃあと設定に関する話をしてきましたが、なんとSSHに関する話をしてなかったことにいまさら気づきました。。。
我ながら順番メチャクチャで困ったもんだ・・・
ということで思い出しながら設定について書いていきます。
SSH(Secure Shell)というのはサーバにリモート接続を行うためのプロトコルです。
接続するということならTelnetというプロトコルもあり昔から使用されていたようですが、パケットが平文で流れるため盗聴でもされようものなら情報がダダ漏れになってしまいます。
そこでパケットを暗号化して送受信するSSHが開発され広まったのだそうです。
では早速インストール・設定へと移りましょう。
ますは毎度お馴染み
sudo apt-get update
sudo apt-get install ssh
にてパッケージのアップデートを行ってからインストールします。
設定ファイルのパスは
/etc/ssh/sshd_config
です。
同じディレクトリ内にssh_configという紛らわしいファイルが存在しますのでお間違えなく!
sshd_configです!
vi /etc/ssh/sshd_config
にてファイルを開いて以下の場所を確認・修正します。
- PermitRootLogin no
- PasswordAuthentication yes(後にnoへ変更)
- Port ○○(デフォルトの22ではなく任意の番号へ変更)
- Protocol 2
- RSAAuthentication no(後にyesへ変更)
- PermitEmptyPasswords no
- ServerKeyBits 2048
- AllowUsers ○○
では順にご説明しましょう。
1.PermitRootLogin
rootでのログインの可否に関する項目です。
リモート環境でrootによるログインが可能というのはセキュリティ的にあまりにも物騒なので「no」にします。
2.PasswordAuthentication
パスワード認証に関する項目です。
パスワードでの認証は総当り攻撃などで容易に破られる危険性が高いため不可にするのが推奨されています。
当初は外部からの接続を弾くようにパケットを制限していたので深く考えずにパスワードを使用していたのですが、実家を出ることによって外部からSSH接続を使用する必要が出てきたため後述する公開鍵暗号方式を導入してパスワード認証を不可にしました。
詳しくは改めてご説明します。
3.Port
SSH接続で使用するポート番号です。
デフォルトは22ですが、そのまま使用するのは外部から攻撃してくださいと言わんばかりの暴挙と考えられるため任意の番号に変更しましょう。
Webサーバなどのように外部から既知のポートに接続するサービスとはちがい、使用する人間が限られていることから思い切って変更します。
4.Protocol
SSHにはバージョン1系と2系の二通りがあります。
1系は現在では脆弱性が発見されており推奨されないということでより安全性が高い2系を使用することが望ましいでしょう。
SSH2に対応するSSHクライアントも十分普及していると考えられることから「2」に設定しています。
5.RSAAuthentication
RSA認証方式による認証の可否に関する項目です。
公開鍵暗号を使用する場合は「yes」にします。
6.PermitEmptyPassword
空パスワードでの認証に関する項目です。
問答無用で「no」でしょう。
7.ServerKeyBits
通信で使用する暗号強度です。
1024でも十分な気もします。
8.AllowUsers
ログインを許可するユーザを指定します。
そもそもユーザ作成時に不要なユーザには空のシェルを与えることでssh接続できないようにしているのですが、ここでも不要なユーザが接続できないように設定しておきます。
設定ができたら「:wq」にて保存して
sudo /etc/init.d/ssh restart
にてデーモンの再起動を行い設定を反映させましょう。
ちなみに公開鍵暗号については次回ご説明します。