[系统账号清理]

将非登录用户的Shell设为/sbin/nologin

  • 如bin,daemon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,haldaemon等

锁定长期不使用的账号

  • usermod -L abc //锁定账号

  • usermod -U abc //解锁账号

  • passwd -S //查看账号状态

删除无用的账号

  • 如new,uucp,games,gopher等

锁定账号文件passwd、shadow

  • chattr +i /etc/passwd /etc/shadow //锁定文件

  • chattr -i /etc/passwd /etc/shadow //解锁文件

  • lsattr /etc/passwd /etc/shadow //查看锁定状态

Linux系统安全基础应用(一) -- 理论部分_第1张图片


[密码安全控制]

设置密码有效期

[root@steven ~]# vi /etc/login.defs   #适用于新建的用户
……
PASS_MAX_DAYS    30
[root@steven ~]# chage -M 30 lisi     #使用于已有的lisi用户


要求用户下次登录时修改密码

[root@steven ~]# chage -d 0 zhangsan  #强制在下次登录时更改密码


[命令历史限制]

减少记录的命令条数

[root@steven ~]# vi /etc/profile
……
HISTSIZE=200         #适用于新登录用户
export HISTSIZE=200  #适用于当前用户

注销时自动清空命令历史

[root@steven ~]# vi ~/.bash_logout
……
history -c
clear


[终端自动注销]

闲置600秒后自动注销

[root@steven ~]# vi ~/.bash_profile
……
export TMOUT=600


[su用途及用法]

  • 用途:Substitute User,切换用户

  • 格式:su - 目标用户

  • "-"等同于"--login"或"-l",表示切换后进入目标用户的登录shell环境

密码验证

  • root → 任意用户, 不验证密码

  • 普通用户 → 其他用户,验证目标用户的密码

210929563.png

210929237.png


限制使用su命令的用户

  • 启用pam_wheel认证模块

[root@steven ~]# vim /etc/pam.d/su
#%PAM-1.0
auth        required    pam_wheel.so use_uid
  • 将允许使用su命令的用户加入wheel组

[root@steven ~]# gpasswd -a abc wheel
Adding user abc group wheel


查看su操作记录

安全日志文件:/var/log/secure


[sudo用途及用法]

  • 用途:以其他用户身份(如root)执行授权的命令

  • 用法:sudo 授权命令

密码验证

  • 初次执行sudo命令时,验证当前用户的密码

  • 不需验证目标用户的密码


配置sudo授权

  • visudo 或者 vi /etc/sudoers

  • 记录格式:用户 主机名列表=命令程序列表

[root@steven ~]# visudo
……
%wheel        ALL=NOPASSWD: ALL
jerry         localhost=/sbin/ifconfig
#支持“*”通配,“!”取反
syriane       localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
#支持命令别名,类似别名还包括:User_Alias、Host_Alias
Cmnd_Alias    PKGTOOLS=/bin/rpm,/usr/bin/yum
mike          localhost=PKGTOOLS


查看sudo操作记录

  • 需启用 Defaults logfile 配置

  • 默认日志文件:/var/log/sudo

[root@steven ~]# visudo
……
Defaults logfile = "/var/log/sudo"


查询授权的sudo操作

sudo -l

[abc@steven ~]$ sudo -l
[sudo] password for syrianer:    #初次使用sudo时需验证当前用户的密码
……
User syrianer may run the following commands on this host:
    (root) /sbin/*, (root) !/sbin/ifconfig, (root) !/sbin/route
#默认超时为5分钟,在此期间不再重复验证
[abc@steven ~]$ sudo /sbin/fdisk -l
……
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       10443    83778975   8e  Linux LVM


[开关机安全控制]

调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘

  • 禁止从其他设备(光盘、U盘、网络)引导系统

  • 将安全级别设为setup,并设置管理员密码


禁用重启热键Ctrl+Alt+Del

  • 避免因用户误操作导致重启

[root@steven ~]# vi /etc/inittab
……
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
[root@steven ~]# init q   #重新读取配置


GRUB菜单限制

  • 未经授权禁止修改启动参数

  • 未经授权禁止进入指定系统

密码设置方式(grub.conf)

  • password 明文密码串

  • password --md5 加密密码串

密码记录的位置

  • 全局部分(第一个“title”之前)

  • 系统引导部分(每个“title”部分之后)


GRUB限制的实现

使用grub-md5-crypt获得加密字串

[root@steven ~]# grub-md5-crypt
Password:
Retype password:
$1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/


修改grub.conf文件,添加密码记录

[root@steven ~]# vi /boot/grub/grub.conf
……
password --md5 $1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-194.el5.img


修改系统登录提示

  • 本机登录提示:/etc/issue

  • 网络登录提示:/etc/issue.net


减少开放终端个数

[root@steven ~]# vi /etc/inittab
……
#禁用三个终端:tty1、tty2、tty3
# Run gettys in standard runlevels
#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
[root@steven ~]# init q


限制root只在安全终端登录

  • 安全终端配置:/etc/securetty

[root@steven ~]# vi /etc/securetty
……
#禁止root用户从终端tty5、tty6登录
tty1
tty2
tty3
tty4
#tty5
#tty6


禁止普通用户登录

  • 建立/etc/nologin文件

  • 删除nologin文件或重启后即恢复正常

[root@steven ~]# touch /etc/nologin  #禁止普通用户登录
[root@steven ~]# rm -rf /etc/nologin  #取消上述登录限制