基于生产权限控制方案

方案目的
通过禁止root账户远程登录(ssh)来避免root账户被破解的危险
通过新建专用账号来启动相关服务以达到降权启动的目的
通过对专用账号的权限控制达到减小危害的目的
两种方案备选

方案1:

禁止root账户远程登录,新建专用账户做远程登录,登录后使用su命令切换至root账号后做相关操作
优点:
简单,快速,不需要对现有操作方式做过多更改
缺点:
还是使用的root账号,权限过大

方案2:

禁止root账户远程登录,新建专用账户,通过sudo命令控制其命令权限,以该用户来启动相关服务
优点:
避免了root账户的使用,控制了专用账户的操作权限,非root账号启动服务,避免了提权危害
缺点:
需要更改现有的操作方式,权限控制存在一定的不方便性
每种服务需不同的用户名,要注意UID的统一

方法2的具体实现[以java程序为例]
步骤1:新建专用账户

useradd totodi
password totodi

步骤2:用visudo配置权限

Cmnd_Alias TOTODI_CMD=/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,\
/bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill,\
/usr/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/up2date,/usr/bin/yum,\
/sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount,\
/sbin/service,/sbin/chkconfig,/bin/cat,/bin/ls,\
!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,\
!/bin/rm,!/bin/su

totodi ALL=(root) NOPASSWD:TOTODI_CMD
步骤3:切换用户并启动服务
以ttd-fund-message:10086程序为例

#切换用户
su - totodi
#修改日志文件夹权限
chown -R totodi.totodi /data/logs/ttd-fund-message-service/
#启动服务
java -server -jar -Xms256m -Xmx256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Dinstance.flag=server1 /data/server/ttd-message-service/lib/message-service.jar --server.port=10086

步骤4:禁用root使用ssh

步骤5:历史记录修改
https://www.cnblogs.com/morgana/p/8846965.html
通过对所有用户历史记录的配置,达到将历史记录输出到指定目录,增减时间选项,多终端共享history文件
创建目录并配置权限:

mkdir /var/history

#配置目录权限,使得用户有权限创建自己的history文件

chmod 777 /var/history
chmod a+t /var/history

写入/etc/profile

if [ $UID -ge 500 ];then
    readonly HISTFILE=/var/history/$USER-$UID.log
    readonly HISTFILESIZE=50000
    readonly HISTSIZE=10000
    readonly HISTTIMEFORMAT='%F %T '
    readonly HISTCONTROL=ignoredups
    shopt -s histappend
    readonly PROMPT_COMMAND="history -a"
fi
文档更新时间: 2023-08-09 06:54   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室