Linuxサーバより愛を込めて。

Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。

Linuxサーバ

UbuntuでSSHサーバの構築

2013/02/19

今までいけしゃあしゃあと設定に関する話をしてきましたが、なんとSSHに関する話をしてなかったことにいまさら気づきました。。。

 

我ながら順番メチャクチャで困ったもんだ・・・

 

ということで思い出しながら設定について書いていきます。

 

SSHSecure 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

 

にてファイルを開いて以下の場所を確認・修正します。

  1. PermitRootLogin no
  2. PasswordAuthentication yes(後にnoへ変更)
  3. Port ○○(デフォルトの22ではなく任意の番号へ変更)
  4. Protocol 2
  5. RSAAuthentication no(後にyesへ変更)
  6. PermitEmptyPasswords no
  7. ServerKeyBits 2048
  8. 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

 

にてデーモンの再起動を行い設定を反映させましょう。

 

ちなみに公開鍵暗号については次回ご説明します。

-Linuxサーバ
-, ,