Linux禁止root登錄

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章