Linux禁止root登录

添加受限用户secadmin,初始密码123456

useradd secadmin -p '$6$tTJtWS.J$8eGiEiCAbhVO9FjCxW8tGBh8uC0iG5Cdkfe/2paMs7XHltv95HnlwRvuKqwj/WcfbHjgsELo0B0CrroIFqxr/0'

只允许secadmin通过ssh登录

/etc/ssh/sshd_config查看是否有AllowUsers配置,如果有,将其修改为:

AllowUsers secadmin

如果没有,在文件底部添加如下内容:

AllowUsers secadmin

脚本如下:

# only allow secadmin ssh login
allowusers=`grep -E '^#*AllowUsers ' /etc/ssh/sshd_config`
if [ -z "$allowusers" ]; then
    echo "AllowUsers secadmin" >> /etc/ssh/sshd_config
else
    sed -i 's/^[#]*AllowUsers .*$/AllowUsers secadmin/g' /etc/ssh/sshd_config
fi

禁止root本地登录

在/etc/pam.d/login文件顶部加入如下内容:

auth    required    pam_succeed_if.so user != root quiet

脚本如下:

#disable root login
norootlogin='auth    required    pam_succeed_if.so user != root quiet'
removeroot=`grep '$norootlogin' /etc/pam.d/login`
if [ -z "$removeroot" ]; then
    sed -i '2i\auth    required    pam_succeed_if.so user != root quiet' /etc/pam.d/login
fi

禁止su命令

把/etc/pam.d/su配置文件里的#auth required pam_wheel.so use_uid注释去掉。
脚本如下:

#disable su command
nosucmd=`grep -E 'auth\s+required\s+pam_wheel.so\s+use_uid' /etc/pam.d/su`
if [ -z "$nosucmd" ]; then
    echo "auth            required        pam_wheel.so use_uid" >> /etc/pam.d/su
else
    linenum=`grep -nE 'auth\s+required\s+pam_wheel.so\s+use_uid' /etc/pam.d/su | awk -F\: '{print $1}'`
    sed -i "${linenum}s/.*/auth            required        pam_wheel.so use_uid/" /etc/pam.d/su
fi

限制secadmin可执行命令

  1. 先将所有命令other的执行权限取消,再保留必需的基本命令。
chmod o-x /bin/*
chmod o+x /bin/su /bin/bash

chmod o-x /usr/bin/*
chmod o+x /usr/bin/id /usr/bin/tty /usr/bin/sudo

chmod o-x /sbin/*
chmod o+x /sbin/consoletype

chmod o-x /usr/sbin/*

chmod o-x /usr/local/bin/*

chmod o-x /usr/local/sbin/*
  1. 添加允许通过sudo来执行的命令。
    在/etc/sudoers.d/目录下创建一个名为secadmin的文件,内容如下:
Cmnd_Alias      SECCMD = /bin/date, /bin/df, /bin/dmesg, /bin/ps
secadmin        ALL=NOPASSWD:SECCMD

脚本如下:

#enable command for secadmin
rm -rf /etc/sudoers.d/secadmin
echo "Cmnd_Alias      SECCMD = /bin/date, /bin/df, /bin/dmesg, /bin/ps" >> /etc/sudoers.d/secadmin
echo "secadmin        ALL=NOPASSWD:SECCMD" >> /etc/sudoers.d/secadmin

该配置意味着secadmin可以通过sudo来执行:date、df、dmesg和ps命令,并且执行时不需要输入密码。
如果需要更多的命令,在Cmnd_Alias SECCMD =后依次加入即可。
注意
1. 命令需要指定全路径
2. 设定命令的操作需在禁止root登录之前,否则secadmin无权限修改该配置文件。
3. 如果想留个后门,可以在Cmnd_Alias SECCMD =列表里加入可编辑该配置文件的权限/bin/vi /etc/sudoers.d/secadmin

Logo

更多推荐