mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

CentOS 7.0 - SSHサーバ OpenSSH 設定!

[ サーバ構築 ] [ CentOS, Linux, SSH ]

こんばんは。

「CentOS 7.0 - SSHサーバ OpenSSH 設定」についての記録です。

(旧バージョンでの作業記録を更新しました。興味がなければスルーしてください)

0. 前提条件

  • CentOS 7.0-1406(x86_64) を NetInstall で最小限インストールしている。
  • サーバ用途なので、作業は基本的に全て一般ユーザから root になって行う。
  • クライアント側は Linux Mint 17 を想定。
  • ローカルネットワークは 192.168.11.0/24 を想定。
  • 開放ポートはデフォルトから変更する。(例として “9999/TCP” を使用)
  • FirewallD のゾーンは public を使用する。
  • 主に「CentOSで自宅サーバー構築」を参照。

1. 鍵ペア(公開・秘密)の生成

クライアント側で以下のコマンドで公開鍵・秘密鍵を生成する。 作成先・ファイル名を指定しなければ、/home/(ユーザ名)/.ssh/ に id_rsa, id_rsa.pub が作成される。 途中、鍵用のパスワードも入力する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/masaru/.ssh/id_rsa): /home/masaru/.ssh/id_rsa_vbox_centos
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/masaru/.ssh/id_rsa_vbox_centos.
Your public key has been saved in /home/masaru/.ssh/id_rsa_vbox_centos.pub.
The key fingerprint is:
96:af:59:18:9c:a0:c2:da:86:7e:d7:24:05:d0:31:da masaru@p183
The key's randomart image is:
+--[ RSA 2048]----+
|   .oo.          |
|    oo.          |
|   . Eo          |
| .   . + o       |
|  o . . S        |
| + . . o +       |
|o o   + . o      |
|.. . . . +       |
| .. .   o        |
+-----------------+

2. 公開鍵設定

サーバ側で公開鍵の設定を行う。(ログインしようと考えているユーザで作業する)

まず、公開鍵格納用ディレクトリを作成して、パーミッションを変更する。

1
2
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh

次に、クライアント側で作成した公開鍵("xxxx.pub")の内容を丸ごとコピー&ペーストして authorized_keys に保存する。

~/.ssh/authorized_keys
1
ssh-rsa xxxxx・・・xxxxx

そして、"authorized_keys" のパーミッションを変更する。

1
$ chmod 600 ~/.ssh/authorized_keys

3. SSH サーバ設定ファイル編集

root ユーザになって、SSH サーバ設定ファイルを以下のように編集する。

/etc/ssh/sshd_config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#Port 22
Port 9999                    # <= ポートはデフォルト設定から適当に変更

#Protocol 2
Protocol 2                   # <= SSH2 での接続のみ許可

#SyslogFacility AUTH
SyslogFacility AUTHPRIV      # <= ログを "/var/log/secure" に記録する(CentOS デフォルトに合わせる)

#PermitRootLogin yes
PermitRootLogin no           # <= root でのログイン禁止

#PasswordAuthentication yes
PasswordAuthentication no    # <= パスワードでのログイン禁止(鍵認証方式でのログインのみ許可)

#PermitEmptyPasswords no
PermitEmptyPasswords no      # <= パスワードなしでのログイン禁止

#ClientAliveInterval 0       # <= SSH 接続が途切れる場合はコメント解除して設定を変更してみる
#ClientAliveCountMax 3       # <=       〃

# chroot 設定(最終行へ追加)
# 管理者用ユーザ(wheel グループ所属ユーザ)以外は、
# 一般ユーザが自身のホームディレクトリ以外を参照できないようにする。
Match Group *,!wheel
        ChrootDirectory /home/%u/./

4. wheel 設定

wheel グループに追加する。
初期設定時に wheel グループに追加していても、OpenSSH サーバを入れ直した場合は、初期設定時に設定していても解除されているので再度設定する必要がある。(ダブって設定しても問題ない)

1
# usermod -G wheel masaru

5. SSH サーバのリロード

変更した設定を反映させるために SSH サーバをリロードする。

1
# systemctl reload sshd

6. SSH アクセス制限設定

パスワード認証による接続は許可していないのでログインされる心配はないが、大量にログ出力されて煩わしいので、SSH サーバへアクセスできるホストを制限する。 (指定のもの以外のアクセスは全て拒否する設定)

/etc/hosts.allow
1
2
sshd: 127.0.0.1    # <= 自身のアクセスを許可
sshd: 192.168.11.  # <= 内部ネットワーク(例:192.168.11.XXX)からのアクセスを許可
/etc/hosts.deny
1
sshd: ALL

7. ファイアウォール設定

ポートをデフォルトの TCP:22 から変更した場合は、ファイアウォールの設定も変更する。(セキュリティ上変更するのが通例)

1
2
3
4
5
6
# firewall-cmd --add-port=9999/tcp
success
# firewall-cmd --add-port=9999/tcp --permanent
success
# firewall-cmd --list-ports
9999/tcp

8. クライアント側から接続

一旦ログアウトし、再度クライアントマシンから SSH 接続してみる。

1
$ ssh -i ~/.ssh/id_rsa <サーバ IP アドレス or ホスト名> -p <ポート番号>

2回目からは以下でよい。

1
$ ssh <サーバ IP アドレス or ホスト名> -p <ポート番号>

9. 注意

SSH のポートはデフォルトでは 22 となっているが、セキュリティ上変更するのが望ましい。


以上。

Comments