阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

PAM禁止root用户登录,限制普通su切换

155次阅读
没有评论

共计 2802 个字符,预计需要花费 8 分钟才能阅读完成。

系统环境是 CentOS 6.4, 介绍下 PAM(Pluggable Authentication Modules)在 ssh 服务上的简单配置过程。

必须先添加普通用户,并属于 wheel 组,保证有除 root 之外的其它用户能登录到系统!!!!!!!

useradd -g wheel admin

passwd admin

 

1 禁止 root 登录

vim /etc/ssh/sshd_config

添加 UsePAM yes

 

vim /etc/pam.d/sshd 行首添加:

auth required pam_listfile.so item=user sense=deny file=/etc/ssh/denyuser onerr=succeed

 

echo “root” >> /etc/ssh/denyuser

列在 /etc/ssh/denyuser 中的用户,都会被拒绝使用密码登录!!

 

2 只允许 wheel 组用户(root 默认也不属于 wheel 的)使用 su:

vim /etc/pam.d/su 行首添加

 

auth required pam_wheel.so use_uid

 

3 附 shell:

使用须知:

A. 需要你先安全地生成自己的密钥对, 并妥善保管!!将“mykey”替换为你的公钥串

B. 脚本包括了创建普通用户 ”admin”,可以修改为你自己需要的用户, 它可以使用 su 切换到 root

C. 脚本执行结果为,限制 root 使用密码登录系统,但若设置了使用密钥,仍可以登录(安全性好)

D.add_my_key root $1(脚本中标红色),后面参数为你想添加公钥认证的所有用户,可以自己补充。

E. 脚本供大家学习交流,生产环境使用前,请先在测试环境中测试效果,作者不对任何结果负任何责任。

#!/bin/sh
LOG_FILE=$0.log
wr_log(){
TIME=`date +”%Y-%m-%d %H:%M:%S”`
if [$1 -eq 0];then
echo “[$TIME] $2 success”
echo “[$TIME] $2 success” >> ${LOG_FILE}
else
echo “[$TIME] $2 error”
echo “[$TIME] $2 error”>>${LOG_FILE}
exit 1
fi
}
gsed(){
# 用于修改配置文件, 后接 3 个参数:1. 要修改的行 2. 修改后的行 3. 被修改的文件
# 若找不到匹配的行, 会将 $2 添加到文件的首行
`/bin/grep -E “^$1” $3 >/dev/null`
ret1=$?
`/bin/grep -E “^$2” $3 >/dev/null`
ret2=$?
ret=10
if [$ret1 -eq 0] ; then
/bin/sed -i -r ‘s/^'”$1″‘/'”$2″‘/g’ $3
ret=$?
elif [$ret1 -ne 0 -a $ret2 -ne 0];then
/bin/sed -i ‘1i ‘”$2″” $3
ret=$?
else
ret=0
fi
return $ret
}
add_my_key(){
mykey=’ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtCgu1KvU/YMkPSnlEB4hyVWCc9/a5X3rqafGr7dPMdiMXXcyBpBd2t8NE/4rQ33rnd6GGUIlv3+2wPI8hFc5zU13G//jKseVS0hbY8XIq8zq8NhKzk/uX8m5ZE’
for user in $@;
do
if test $user = ‘root’;then
dir=’/root/.ssh’
else
dir=”/home/$user/.ssh”
fi
if ! test -d $dir;then
/bin/mkdir -p $dir
fi
chmod 700 $dir&&echo $mykey >>$dir/authorized_keys&&chown -R $user $dir&&chmod 600 $dir/authorized_keys
wr_log $? “add ssh key for $user”
done

}
add_user(){

/usr/sbin/useradd -g wheel $1 &&echo “$2” |/usr/bin/passwd $1 –stdin
wr_log $? “add user $1 “
}
deny_root_login(){
# 用于修改 PAM 的 su 和 sshd 配置, 禁止 root 远程登录, 禁止非 wheel 组用户登录(su) 到 root 用户
if test $# -ne 2;then
echo “usage: deny_root_login normal_user user_password”
wr_log 1 “wrong usage:$@ “
fi
add_user $1 $2
add_my_key root $1

gsed “auth[\t]+required[\t]+pam_wheel\.so use_uid” “auth required pam_wheel\.so use_uid” /etc/pam.d/su &&\
gsed “UsePAM[\t]+no” “UsePAM yes” /etc/ssh/sshd_config &&\
gsed “auth[\t]+required[\t]+pam_listfile\.so item=user sense=deny file=\/etc\/ssh\/denyuser onerr=succeed” “auth required pam_listfile.so item=user sense=deny file=\/etc\/ssh\/denyuser onerr=succeed” /etc/pam.d/sshd &&echo “root” >> /etc/ssh/denyuser&&/sbin/service sshd restart

wr_log $? “deny_root_login”
}


deny_root_login admin “yourpassword”

相关阅读

FTP 服务器工作原理及如何通过 PAM 认证实现虚拟用户登录 http://www.linuxidc.com/Linux/2013-05/84984.htm

PAM 的配置过程 http://www.linuxidc.com/Linux/2012-12/76812.htm

基于 ssl/tls 实现 vsftpd 的安全通信并通过 PAM 实现对 vsftpd 的虚拟用户认证 http://www.linuxidc.com/Linux/2013-05/84475.htm

Linux 使用 PAM_ldap 通过 ad 域认证 http://www.linuxidc.com/Linux/2012-09/71043.htm

整合 vsftp+PAM+mysql—集中管理 ftp 的虚拟帐号 http://www.linuxidc.com/Linux/2012-08/68391.htm

vsftpd2.3.5+PAM 安装配置笔记 http://www.linuxidc.com/Linux/2012-07/66658.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2802字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中