Top image

Perl Monk

主にPerlとRaspberryPiの個人的技術研鑽

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が動いてなかった・・・なんてことが無いようにしましょう・・・・・。