理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

第十章 系统安全及应用

1、账号安全基本措施

1.1、系统账号清理

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

锁定长期不使用的账号

删除无用的账号

锁定账号文件passwd、shadow

[[email protected] ~]# chattr +i /etc/passwd /etc/shadow ###锁定文件并查看状态 解锁“-i”

[[email protected] ~]# lsattr /etc/passwd /etc/shadow ###查看状态

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

1.2、密码安全控制

设置密码有效期

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

[[email protected] ~]# vi /etc/login.defs ###适用于新建用户

PASS_MAX_DAYS 30

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

[[email protected] ~]# chage -M 30 jerry ###适用于已有用户

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

[[email protected] ~]# chage -d 0 jerry ###强制在下次登录时修改密码

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

1.3、命令历史、自动注销

1.31、命令历史限制

减少记录的命令跳数

注销时自动清空命令历史

1.3.2、终端自动注销

闲置600秒后自动注销

[[email protected] ~]# vi /etc/profile

HISTSIZE=200 ###200条信息

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

[[email protected] ~]# vi ~/.bash_logout

history -c

clear ###退出会清空历史命令

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

[[email protected] ~]# vi ~/.bash_profile

export TMOUT=600 ###闲置600秒后自动注销

2、用户切换与提前

2.1、适用su命令切换用户

2.1.1、用途及用法

用途:Substitute User,切换用户

格式:su - 目标用户

2.1.2、密码验证

root➡任意用户,不验证密码

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

[[email protected] ~]$ su -root ###带-选项表示将使用目标用户的登录Shell环境

口令

[[email protected] ~]# whoami ###当前账户

root

限制使用su命令的用户

将允许使用su命令的用户加入wheel组

启用pam_wheel认证模块

[[email protected] ~]# gpasswd -a jerry wheel

jerry

正在将用户“jerry”加入到“wheel”组中

2.1.3、限制使用su命令的用户

将允许使用su命令的用户加入wheel组

启用pam_wheel认证模块

[[email protected] ~]# vi /etc/pam.d/su

#%PAM-1.0

auth sufficent pam_rootok.so

auth required pam_wheel.so use_uid

[[email protected] ~]# echo"SU_wheel_ONLY yes">>/etc/login.defs

加入语句到行末以上操作完毕后,能够再建立一个新用户。然后用这个新建的用户测试会发现,没有加入到wheel组的用户,运行“su -”命令。即使输入了正确的rootpassword,也无法登录为root用户

2.1.4、查看su操作记录

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

2.1.5、使用sudo机制提升权限

sudo命令的用途及用法

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

用法:sudo 授权命令

配置sudo授权

visudo或者vi /etc/sudoers

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

[[email protected] ~]# visudo

%wheel ALL=NOPASSED:ALL

jerry localhost=/sbin/ifconfig

syrianer localhost=/sbin/,!/sbin/ifconfig,!/sbin/route ###可以使用通配符、取反符号!

Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum

mike localhost=PKGTOOLS

3、Linux中的PAM安全认证

3.1、PAM及其作用

PAM(Pluggable Authentication Modules)可插拔式认证模块

是一种高效而且灵活便利的用户级别的认证方式

也是当前Linux服务器普遍使用的认证方式

3.2PAM认证原理

一般遵循的顺序

Server(服务)➡PAM(配置文件)➡pam_*.so

首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证

用于访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证

不同的应用程序所对应的PAM模块时不同的

PAM认证的构成

查看某个程序是否支持PAM认证,可以用ls命令

示例:查看su是否支持PAM模块认证

​ ls /etc/pam.d | grep su

查看su的PAM配置文件:cat /etc/pam.d/su

每一行都是一个独立的认证过程

每一行可以区分为三个字段

​ 认证类型

​ 控制类型

​ PAM模块及其参数

认证管理:接收用户名和密码,进而对该用户的密码进行认证;

账户管理:检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等;

密码管理:主要是用来修改用户的密码;

会话管理:主要是提供对会话的管理和记账。

3.3、PAM安全认证流程

控制类型也称作Control Flags,用于PAM验证类型的返回结果

1、required验证失败时仍然继续,但返回Fail

2、requisite验证失败则立即结束整个验证过程,返回Fail

3、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

4、optional不用于验证,只显示信息(通常用于session类型)

理论篇·系统安全及应用(su命令,sudo命令、密码安全控制、终端自动注销)

4、开关机安全控制

调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
GRUB限制
设置grub2菜单密码
1、grub2-setpassword ###生成grub2菜单密码 —输入密码
2、cat /boot/frub2/user.cfg ###查看密码是否添加
3、reboot ###重启验证
终端登录安全控制
限制root只在安全终端登录
安全终端配置:/etc/securetty
[[email protected] ~]# vi /etc/securetty

#tty5
#tty6

系统弱口令检测
Joth the Ripper,简称为JR
一款密码分析工具,支持字典式的暴力**
通过对shadow文件的口令分析,可以检测密码强度
官方网站:http://openwall.com/john/
安装JR工具
安装方法 ###make clean 系统类型
主程序文件为john
检测弱口令账号
获得Linux/Unix服务器的shadow文件
执行john程序,将shadow文件作为参数
密码文件的暴力**
准备号密码字典文件,默认为passwoed.lit
执行john程序,结合–wordlist=字典文件

5、网络扫描NMAP

NMAP是一个强大的端口扫描类安全评测工具
NMAP被设计为检测众多主机数量的巨大网络,支持ping扫描、多端口检测、OS识别等多种技术。使用NMAP定期扫描内部网络,可以找出网络中不可控的应用服务,即使关闭不安全的服务、减少安全风险。
1、安装NMAP软件包
[[email protected] ~]# yum -y install nmap
2、扫描语法及类型
-sS,TCPSYN扫描(半开扫描):只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接:否则认为目标端口并未开放。
-sT,TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务。否则认为目标端口并未开放。
-sF,TCPFIN扫描:开放的端口会忽略这种数据包,关闭的端口会响应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包,这种类型的扫描可间接检测防火墙的健壮性。
-sU,UDP扫描:探测目标主机提供哪些UDP服务,UDP扫面描的速度会比较慢。
-sP,ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。