我有一个使用 sftp/ftp 服务器(vsftp)运行的 AWS Amazon Linux EC2 实例。
出于安全目的,我想使用 AWS 实例的最佳实践解决方案来保护系统。我的目标是允许一个组的一些用户进行 ssh 访问(包括身份验证密钥),并禁止所有其他用户使用 ssh。另一个组应该被允许访问 sftp 和 ftp。
我看到 PAM 在 AMI 的默认 sshd_config 中激活。
答案1
假设您有 2 个组/etc/passwd
:
ssh_users
ftp_users
要仅允许ssh_users
通过 SSH 登录,请添加此行到/etc/ssh/sshd_config
:
AllowGroups ssh_users
从man sshd_config
:AllowGroups - 如果指定,则允许登录仅有的对于其主要组或补充组列表与其中一种模式匹配的用户。
ftp_users
例如,为了仅允许组内成员进行 FTP 登录,您可以使用pam_listfile
(请参阅man pam_listfile
详细信息)。
首先将组名写入例如
/etc/pam.d/vsftpd-groups.conf
~ # echo ftp_users > /etc/pam.d/vsftpd-groups.conf
然后添加
pam_listfile
到您的/etc/pam.d/vsftpd
文件中:auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet >> auth required pam_listfile.so item=group sense=allow file=/etc/pam.d/group-access.conf onerr=fail auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet >> account required pam_listfile.so item=group sense=allow file=/etc/pam.d/group-access.conf onerr=fail account required pam_permit.so
您还应该查看 EC2 实例安全组并且仅允许从已知的 SSH 或 FTP 用户的 IP 地址进行访问(如果可能)。
那就可以了。