俺的SSH構築手順書(CentOS 7)

遠隔でサーバーを操作するのに使うSSHですが、手順がごっちゃになるので自分用の手順書兼備忘録を作ります。

 

SSHって何?

一応SSHについてどういうものなのかをおさらいしておきます。

SSHは、ネットワークに接続された機器を遠隔操作するために使用するアプリケーション層のプロトコルのこと。Telnetの場合、パスワード情報を含め、すべてのデータが暗号化されずに送信されるのに対して、SSHの場合、パスワード情報を含めてすべてのデータが暗号化されて送信される。”

 

SSHを構築

パッケージの確認

SSHを使うためにOpenSSHというパッケージがインストールされてるかをrpmコマンドを使って確認する。

 

# rpm -qa | grep openssh

↓実行結果

openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64

 

Configファイルの編集

初めにパスワード認証での設定を行う。(公開鍵認証は後述の方法で)

有事のことを考慮してcpコマンドでバックアップのファイルを作成しておくと〇。

下記の項目を確認・編集する。

# vi /etc/ssh/sshd_config
# Port 22(確認)
# Protocol 2(確認)
# PermitRootLogin---[rootログインの許可]
# PermitEmptyPasswords---[空パスワードの許可]
# PasswordAuthentication---[パスワード認証の許可]

↓変更後

PermitRootLogin no (セキュリティを考慮し#を外してnoと記述)
PermitEmptyPasswords no (セキュリティを考慮し#を外してnoと記述)
PasswordAuthentication yes (#を外してyesと記述)
AllowUsers hoge (ログインを許可するサーバー側のユーザーを記述)

設定が完了したらSSHを再起動して設定を反映させる。

 

アクセス制限の設定

セキュリティ強化のため、TCP WrapperとPAMによるアクセス制限を行い、rootへの切り替え制限の設定を行う。

TCP Wrapperの設定は /etcにある hosts.allowファイルと hosts.denyファイルから行う。

まずはTCP Wrapperの設定をする。

# vi /etc/hosts.deny
sshd:all (ファイルに記述)

次にhosts.allowファイルの設定を行う。

# vi /etc/hosts.allow
sshd:192.168.~.~ (許可するホストのIPアドレスをファイルに記述)

次にPAMの設定をする。

/etc/pam.d/sshdファイルと/etc/security/access.confファイルを編集する。

# vi /etc/pam.d/sshd
account  required  pam_access.so (下記設定内容を元に制限を行うようファイルの最終行に記述)

# vi /etc/security/access.conf
-:ALL EXCEPT sshgrp:ALL (sshgrpグループに属してるユーザー以外はログイン不可になるようファイルの最終行に記述)

sshd_configファイルでPAMが使用できるようになっているか確認する。

# vi /etc/ssh/sshd_config
UsePAM yes (PAMを使用する設定になっているか確認)

/access.confの設定からユーザーをsshgrpに属させる必要がある為、グループを作成しユーザーを追加する。

# groupadd sshgrp
# gpasswd -a hoge sshgrp
# grep sshgrp /etc/group
sshgrp:100~:hoge

最後にrootの切り替え制限をするためにwheelグループに属しているユーザーのみroot昇格できるよう設定する。

wheelグループにユーザーを追加し、PAM認証にするための設定を行う。

# gpasswd -a hoge wheel
# grep wheel /etc/group
wheel:x:10:hoge
# vi /etc/pam.d/su
auth  required  pam_wheel.so use_uid (#を外す)

login.defsファイルにてwheelグループのみをroot昇格できるよう設定する。

# vi /etc/login.defs
SU_WHEEL_ONLY yes (ファイルの最終行に記述)

 

SSHでリモート接続する

WinクライアントにてTeraTermを起動し、入力を進めるとログインできる。

 

公開鍵暗号方式で接続

セキュリティの面から一般的にはパスワード認証よりも公開鍵認証が推奨されている。

そのため、公開鍵でログインができるよう設定を行う。

鍵の作成

鍵の作成はクライアント側でもサーバー側でも可能なため状況に合わせて行う。

今回はサーバー側にてRSA公開鍵暗号方式を用いて作成。

接続したいユーザーのホームディレクトリにてssh-keygenコマンドを実行して鍵を作成する。

$ ssh-keygen -t rsa

passphreseの入力を行うと.ssh/が作成されその中に公開鍵と秘密鍵がある。

作成された秘密鍵のid_rsaファイルをクライアントに置く。

公開鍵の内容をcatコマンドにてauthorized_keysファイルに書き込みを行い、パーミッションを600に変更。また、.ssh/はパーミッションを700に設定。

$ cat id_rsa.pub > /home/hoge/.ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 700 .ssh/

 

Configファイルの編集

sshd_configファイル内の公開鍵暗号方式の許可を行う。

また、公開鍵暗号方式のみを使う場合パスワード認証を禁止しておく。

# vi /etc/ssh/sshd_config
PubkeyAuthentication yes (公開鍵暗号方式を許可する為#を外しyesと記述)
PasswordAutentication no (パスワード認証を禁止する為noと記述)

SSHを再起動し設定を反映させる。

# systemctl restart sshd
鍵を使用して接続

TeraTermを起動し、鍵を指定して接続する。