遠隔でサーバーを操作するのに使う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を起動し、入力を進めるとログインできる。
公開鍵暗号方式で接続
セキュリティの面から一般的にはパスワード認証よりも公開鍵認証が推奨されている。
そのため、公開鍵でログインができるよう設定を行う。
鍵の作成
鍵の作成はクライアント側でもサーバー側でも可能なため状況に合わせて行う。
接続したいユーザーのホームディレクトリにて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を起動し、公開鍵を指定して接続する。