Linux系统安全及应用
一 系统账号的清理
(1) 将非登陆用户的shell设为 /sbin/nologin有三种方法
方法一;usermod -s
方法二;chsh命令 交互式修改
方法三;chsh -s
Useradd +用户 创建用户 usermod +用户 修改用户属性
Userdel +用户 删除用户
二 锁定长期不使用的账号
方法一 passwd -l (锁定用户的密码) passwd -u (解锁用户的密码)passwd -S (查看用户状态)
方法二 usermod -L (锁定用户的密码)usermod -U (解锁用户的密码)
若用passwd -l 锁定用户密码,用命令 usermod -U 解锁用户密码必须输入两次(usermod-U)命令解锁
三 锁定用户的文件 /etc/passwd /etc/shadow
加I锁 命令 chattr +i /etc/passwd /etc/shadow
解i锁 命令 chattr -i /etc/passwd /etc/shadow
查看状态 命令 lsattr /etc/passwd /etc/shadow
I锁锁定用户以后普通用户和超级用户只能读不能写
加a锁与解a锁与上面i锁类似只不过是加上a锁以后只能追加内容,不能修改内容。
三 修改某个已存在用户的密码有效期
方法一 chage -M 天数 用户名
方法二 passwd -x 天数 用户名
四 设置今后添加用户时的默认密码的有效期
Vim编辑 /etc/login.defs
修改 PASS_MAX_DAY后边的值
五 要求用户下次登陆时修改密码
命令 chage -d 0 用户名
六 命令历史限制
(1) 减少历史的命令条数
方法一 1 vi编辑/etc/profile文件,修改HISTSIZE后面的数值。
2修改完之后输入命令source /etc/profile 使/etc/profile配置文件生效,
此时全局生效
方法二 export HISTSIZE的数值。仅当前用户环境下生效
/etc/profile 全局系统变量都放在这个文件之下
Export (全局生效)
(1) 注销时自动清空历史命令
方法 ;vi编辑宿主下目录下的.bash_logout文件添加history -c
七 终端自动注销
方法一 vi编辑/etc/profile文件 添加 TMOUT=数值
Source /etc/profile 是配置文件/etc/profile生效 此时全局生效
方法二 export TMOUT=数值 仅当前用户下生效
八 更改端口号
Vi 编译/etc/ssh/sshd_config 修改port的数值
二 su命令
作用:切换用户
su 目标用户 切换账号,之前的进程并没消失;环境变量不改变
(exit也可用Ctrl+d操作,退出用户)
su - 目标用户 以普通用户的初始环境切换成普通用户,环境变量会重置成普通用户环境变量
su -c 临时切换到某一个用户,执行一个命令,执行完,自动返回当前用户;切换到一个shell,执行一个命令,然后退出所切换的用户环境
su -m 切换用户时,不重置用户环境
su -s 若/etc/shell允许,则运行指定的shell
su命令常用在/etc/rc.local
# vim /etc/rc.local
su - 用户 -c 命令 实现以普通用户实现进程,安全操作,表示仅限在xx用户下启动的服务命令脚本
查看su操作记录
安全日志文件:/var/log/secure
# tar /var/log/secure|less
sudo命令
su命令的缺点:在使用su命令时,不指定用户名默认切换至root用户,需要经常输root用户密码,但实际生产中root密码是不可以被广泛告知的。如果需要执行root用户才有权限的命令,需要通过sudo命令或wheel组的设置来实现
sudo的配置文件 /etc/sudoers
sudo命令
-l 列出用户在主机上可用的和被禁止的命令:当配置好sudo权限规则后,可用这个参数来查看授权情况
-v 验证用户的时间戳,当用户运行sudo,输入用户的密码后,在短时间内可以不用输入口令直接进行sudo操作;用-v可以跟踪最新的时间戳
-u指定以某个用户身份执行特定的命令操作,chensiqi ALL=(ALL) /bin/cp
-k同-K,删除时间戳,下一个sudo命令要求提供密码,前提是该用户授权中不能有NOPASSWD参数。时间戳默认5分钟也会失效。
配置sudo授权(激活sudo)
方法一:# visudo 或# vim /etc/sudoers 修改,只有root用户才能使用
在root这一行下面,按照root的格式,对benet进行授权
visudo授权配置中,ALL的表示:
第一个ALL:IP地址
第二个ALL:主机别名
第三个ALL:限制的命令
visudo -c 检查sudo配置文件是否有错误
sudo 授权命令
默认设置为首次执行时,需输入当前用户的登陆密码,5分钟内再次执行sudo命令式则无需再输入密码。
设置IP地址权限
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136= ALL
单独授权某个命令
在第三个ALL上操作(绝对路径)
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136= /sbin/fdisk
此时,只有sudo fdisk这个命令可以使用(因为只有fdisk被授权)
授权多个命令
在第三个ALL上操作(绝对路径),用逗号“,”分隔。
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136= /sbin/fdisk,/bin/ls
批量授权(存在优先级,先输入允许操作的命令(绝对路径),在输入不允许操作的命令(绝对路径))
对benet用户授权/sbin/下所有目录,除了/sbin/reboot命令
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136=(ALL) /sbin/*,! /sbin/reboot
批量授权,排除多个命令权限,用“,! ”分隔
若为! /sbin/fdisk /dev/sda 表示不允许/sbin/fdisk执行/dev/sda*
让一个普通用户自己分区,但禁止该用户采取任何破坏系统的操作(将A盘进行分区会破坏系统)
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136=(ALL) /sbin/*,! /sbin/reboot,! /sbin/fdisk /dev/sda*
不允许/sbin/fdisk 执行/dev/sda*,但由于授予/sbin/所有前线,则可以对其他盘进行分区
对普通用户授权:只看日志
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.232.136=(ALL) /bin/cat /var/log/messages*
!!!但是“看”的命令不仅仅是cat,还有more、less、head、tail、tac、sed、awk等,需要将它们全部授权(绝对路径)。
查看sudo操作记录
先# visudo 添加“Defaults logfile=/var/log/sudo”,再# cat /var/log/sudo