系统账户安全及应用
基本安全措施
计算机所谓的清理,很大一部分并不是删除,而是不让它起作用。首先为了安全起见,会对系统自带的账号进行清理。也就是限制登录,不让它起作用。
- 系统账号清理
- 将非登录用户的shell修改为/sbin/nologin
usermod -s
chsh命令
chsh -s
还可以直接vim编辑/etc/passwd文件进行修改
chsh命令 交互式修改用户的登录权限
chsh -s 非交互修改
- 锁定长期不使用的账号
passwd -l 将在密文前面加2个! 解锁passwd -u 查看passwd -s
usermod -L 将在密文前加1个! 解锁usermod -u
也可直接vim编辑/etc/shadow - 删除无用账号(不推荐删除)
userdel 用户名
通过+i锁的方式锁定账号文件 /etc/passwd、/etc/shadow
锁定:chattr +i 文件名 i锁通常用于很重要但是又不需要经常修改的文件
解锁:chattr -i 文件名
查看:lsattr 文件名 查看文件的特殊权限
如果不加文件名,则是查看当前目录下的所有
chattr只能超户使用,普通用户没有权限。+i锁定后的文件跳出了rwx读写执的范畴,强行进入只读权限,任何用户(包括超户)不允许进行任何修改,修改包括改变和新增。除非超户解除锁定。
如果chattr +i锁定passwd文件就无法再创建用户,也无法再进行修改。
chattr +a 文件名
chattr +a可以追加内容,但是不能修改内容。如果+a锁定passwd文件可以创建用户,但是不能修改用户。
- 密码安全控制
- 修改某个已存在的用户密码有效期
chage -M 天数 用户名
passwd -x 天数 用户名
- 设置今后添加用户的默认密码有效期
用vim编辑/etc/login.defs文件,修改“PASS_MAX_DAY”后面的数值
- 要求用户下次登录时修改密码
chage -d 0 用户名
- 命令历史限制
history查看历史记录
history -c清空历史记录
家目录下ls -a查看隐藏文件,文件.bash_history里也有记录。而且history -c无法清空。
- 减少历史的命令数量
/etc/profile文件,系统全局变量文件,所有和变量相关的都应该放在这里。可以在此文件里修改任何系统全局变量,并且永久生效。
编辑/etc/profile文件
使用vim编辑/etc/profile文件,把“HISTSIZE=”后面的值修改为想要的数字。
export HISTSIZE=数值
export全局生效命令,当前进程下所有子进程全部生效。export HISTSIZE=修改后的数值,仅当前用户环境下生效
- 注销时自动清空历史命令
vim编辑用户家目录下的.bash_logout文件,添加history -c
- 终端自助注销
TMOUT=数值 是在多长时间没有命令输入之后,退出登录
vim编辑/etc/profile文件
source强制重新加载命令
后加文件名,强制重新加载指定文件
export TMOUT=任意数值
source强制重新加载命令
后加文件名,强制重新加载指定文件
.bash_logout退出时执行此文件
为什么企业服务器用linux多
linux操作系统里子进程如果没有对操作系统做任何改变(只是读取并没有修改),是不会给它分配操作空间的。用的还是父进程的空间。
linux操作系统内存分配原理是 写时复制(copy on write)技术。这种技术会大大降低对内存的占用。
切换用户su命令
普通用户切换到别的用户都需要密码,只有超户切换到普通用户不需要密码。
切换用户的同时,并没有关闭之前的用户。可通过exit退出当前bash回到之前的用户。
格式 su [-] 目标用户
参数
-初始化环境变量,不加-环境变量不改变
加不加-的区别
环境变量不一样
起始位置不一样
如果不加-则延用之前用户的环境变量,这种方法有可能发生有些安装在用户家目录里的命令会找不到,加了-之后相当于重新登录一个用户一样。
加不加-起始位置也会发生变化。加-会切换到用户家目录,不加则位置不发生变化。
su -c
临时切换到某一个用户,执行一个命令,执行完自动返回到当前用户。切换到一个shell执行一个命令,然后退出所切换的用户环境。需要输入root的密码。
如果是root切换普通用户则不需要密码,通常用于/etc/rc/local文件里,因为此文件开机执行是以超户身份执行,但是为了确保安全有些进程必须以普通用户身份执行就会用到-c参数。
查看su操作记录
提升权限sudo命令
su命令的缺点
作用
让普通用户临时执行超户的权限
用法格式
sudo 后加授权的命令,如果是未授权的命令则会被拒绝权限。
sudo是提取权限,不是切换用户,所以输入的密码是自己账户的密码。默认为首次执行时,输入当前用户的登录密码,5分钟内再次执行sudo命令则无需再次输入密码。
参数
sudo -l
查看当前用户在主机上可用的和被禁止的命令,配置好sudo权限后,可以用这个参数来查看授权情况。
sudo -v
验证用户的时间戳,当前用户运行sudo输入用户密码后,在短时间内不用再次输入密码也可直接进行sudo提权,用此参数可以跟踪最新的时间戳
sudo -u
指定以某个用户身份执行特定的命令操作
sudo -k
效果同-K,删除时间戳,下一个sudo命令需要提供密码,前提是该用户不能有NOPASSWD参数,时间戳默认5分钟也会失效
对单用户授权
visudo命令
/etc/sudoers文件只能通过visudo命令才能修改,文件修改后只有文件关闭才会生效。
/etc/sudoers文件里98行 root ALL=(ALL) ALL
其中root为用户 第一个ALL是IP地址
第二个(ALL)是主机名,可以不写代表所有主机名
第三个ALL是所有的命令能干什么
命令前加!取反代表不能使用那个命令,取反的命令要放到后面
如果需要授权多个命令则用,逗号做区分
Nopasswd是免密码 加在第二个ALL后面,第三个ALL前面
授权命令组,但限制具体命令
限制命令执行范围
对用户组授权
%是对用户组授权,后加用户组名称
配置sudo命令用户行为日志审计