Linuxでユーザ単位にてSSHログインのIPアクセス制限をかける方法と注意点
2020/02/20 20:00
category:サーバ全般
/etc/hosts.allowではユーザ単位で細かく制限をかけられないので、pamを利用して制限します。
※ここから先は失敗すると遠隔ログインできなくなる可能性があるのでもう一個の端末でログインしておくと吉。
①SSHの設定確認
/etc/ssh/sshd_config に
UsePAM yes
がある事を確認。なければ該当箇所を有効化
②/etc/pam.d/sshd に追加
※順番がある為、どこに入れてもいいわけではない。
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
# Access control customization
account required pam_access.so ←ここら辺に追加
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
③/etc/security/access.confを編集する
+ : user-01 : 192.168.10.10 ←ユーザとIPを追加する。IPを追加するときはスペース区切り
+ : user-02 : 192.168.10.11
+ : user-03 : 192.168.10.12
- : ALL : ALL ←上記以外は不許可にする。
で、ここまでやってうまく動いたよかったよかったで終わってたんですが。
この状態ではcronでroot権限の処理が全く走らなくなります。
/var/log/cronにこんなエラーが出ます。
Jan 29 00:00:01 www crond[51930]: (root) FAILED to authorize user with PAM (拒否されたパーミッション)
Jan 29 00:01:01 www crond[51982]: (root) PAM ERROR (拒否されたパーミッション)
よって、/etc/security/access.confにある
# User "root" should be allowed to get access via cron .. tty5 tty6.
+:root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6 ←これ
をコメント外して必ず有効します。
うっかりcronが動いてなかった・・・なんてことが無いようにしましょう・・・・・。