この記事は、もうとっくにCentOSが死んで長いのにさらにCentOS6で行ったもののため、この内容は最新の情報にマッチしないことがあります。
手元のサーバーで行う際は、十分に情報を確認の上行ってください。
はじめに
セキュリティのため、サーバーへsshアクセスを行うのにIP制限を行うようにすることにした。
適当に調べたところによると、/etc/security/access.confを編集し、/etc/pam.d/sshdファイルにaccess.confを確認するように記述してアクセス制限を行うらしいが、そのまま行うといくつかの落とし穴にハマってしまった。
この記事はそれら落とし穴にはまらないようにIP制限を行う手順書である。
IP制限を書こう!
/etc/security/access.conf
の中にはデフォルトでコメントの形で「どのように記述すればいいのか」が書いてある。
そのコメントを参考に記述内容を事前に決めておく。
なお、そのままコメントの下に記述を行うと、crontabコマンドにもアクセス制限がかかってしまうので、別ファイルを作成する。
+ : ALL : 192.168.0.0
- : ALL : ALL
もしも解禁したいIPが複数ある場合はスペースを挟んで書いたり、複数行並べることもできる。
.htaccessのように上から順に「まずすべて禁止して…」と書きたくなるが、access.confでは逆なので注意。
IP制限を反映させよう!
実際にsshへのアクセス制限を記述しているファイルは/etc/pam.d/sshd
である。
こちらも上から順に認証をかけているようなので、終了されてしまう前に制限をかけるようにする。
具体的には、account include password-auth
が成功したら以降の処理をすべてスキップして処理終了の動きをしてしまっているので、それよりも前に記述する。
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
#↓を追加
account required pam_access.so accessfile=/etc/security/sshd_access.conf
account include password-auth
password include password-auth
...以下色々書いてある
なおここのファイルは記述ミスするとエラーメッセージ無しで全アクセスが不能になるので必ずチェックすること。
最後に/etc/ssh/sshd_config
の中身を確認し、そもそもpam.dの設定が使えるかどうかを確認する。
以下の記述があれば利用できます。
UsePAM yes
以上で完了です。
最後にservice sshd reload
を忘れずに。
そしてセッションを切ってしまう前に別のbashでアクセスし、ちゃんと制限がかかっている(または余計な制限をかけてしまっていないか)確認すること。
最後に
この記事は以下のURLを参考にしました。