文章目录
linux系统安全及应用
账号安全控制
账号安全基本措施
系统账号清理
- 将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin
- 锁定长期不使用的账号
usermod -L 用户名 usermod -U(解锁)
passwd -l 用户名 passwd -u(解锁)
passwd -S 用户名(查看状态)
- 删除无用的账号(userdel [-r])
- 锁定账号文件passwd(存用户)、shadow(存密码)
chattr +i /etc/passwd /etc/shadow
lsattr /etc/passwd /etc/shadow查看状态
chattr -i /etc/passwd /etc/shadow解锁文件
密码安全控制
-
设置密码有效期
-
要求用户下次登录时修改密码
[root@localhost ~]# vim /etc/login.defs 适用于新建用户
......
PASS_MAX_DAYS 30
[root@localhost ~]# chage -M 30 lisi 适用于已有用户
[root@localhost ~]# chage -d 0 zhangsan 强制在下次登陆时更改密码
命令历史限制
- 减少记录的命令条数
- 注销时自动清空命令历史
输入 history 可以查看曾经打过的所有命令
history -c 可以清除,但只是临时的,并不是永久生效
通过修改配置文件可以限制记录的命令数
vim /etc/profile
修改这个数字限定命令数
[root@localhost ~]# source /etc/profile
输入这段代码使修改的配置生效
注销时自动清空命令历史
[root@localhost ~]# vim .bashrc
[root@localhost ~]# source .bashrc
reboot重启
终端自动注销
- 闲置60秒后自动注销
[root@localhost ~]# vim .bash_profile
等待60秒后注销
使用su命令切换用户
用途及用法
-
用途:Substitute User,切换用户
-
格式
su - 目标用户
密码验证
- root→任意用户,不验证密码
- 普通用户→其他用户,验证目标用户的密码
[lisi@localhost ~]$ su - root
密码:
[root@localhost ~]# whoami 知道当前登陆用户是谁
root
- su带-当前目录会改变,会切换到当前目录的家目录,shell环境会改变
- su不带-则继承前一用户的shell环境和所在目录
- su默认会切换到root
限制使用su命令的用户
-
将允许使用su命令的用户加入wheel组
-
启用pam_wheel认证模块
查看su操作记录
- 安全日志文件: /var/log/secure
Linux中的PAM安全认证
-
su命令的安全隐患
-
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
-
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
-
-
PAM(Pluggable Authentication Modules)可插拔式认证模块
-
是一种高效而且灵活便利的用户级别的认证方式
-
也是当前Linux服务器普遍使用的认证方式
-
PAM是一种平台,PAM-API是一种接口认证标准
PAM认证原理
一般遵循的顺序
Service(服务——PAM(配置文件)——pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不同的应用程序所对应的PAM模块是不同的
PAM认证的构成
-
查看某个程序是否支持PAM认证,可以用Is命令
- 示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
- 查看su的PAM配置文件:
cat /etc/pam.d/su
- 每一行都是一个独立的认证过程
- 每一行可以区分为三个字段(认证类型,控制类型,PAM模块及其参数)
PAM安全认证流程
控制类型也称做Control Flags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息
(通常用于session类型)
使用sudo机制提升权限
- su命令的缺点
- sudo命令的用途及用法
- 用途:以其他用户身份(如root)执行授权的命令
- 用法
sudo 授权命令
配置sudo授权
visudo或者vi /etc/sudoers
记录格式:用户主机名列表=命令程序列表
查看sudo操作记录
- 需启用Defaults logfile配置
- 默认日志文件: /var/log/sudo
[root@localhost ~]# vim /etc/sudoers
Defaults logfile="/var/log/sudo"
[root@localhost ~]# sudo ifconfig ens33:0 192.168.*.*/24
[root@localhost ~]# cat /var/log/sudo
启用日志配置以后,sudo操作过程才会被记录
查询授权的sudo操作
sudo -l
开关机安全控制
调整BIOS引导设置
-
将第一引导设备设为当前系统所在硬盘
-
禁止从其他设备(光盘、U盘、网络)引导系统
-
将安全级别设为setup,并设置管理员密码
GRUB限制
-
使用grub2-mkpasswd-pbkdf2生成密钥
-
修改/etc/grub.d/00_header文件中,添加密码记录
-
生成新的grub.cfg配置文件
直接修改密码
[root@localhost ~]# grub2-setpassword
Enter password:
Confirm password:
[root@localhost ~]#
[root@localhost ~]#
重启
[root@localhost ~]# reboot
系统弱口令检测
John the Ripper,简称为JR
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方网站: http://www.openwall.com/john/
安装JR工具
- 安装方法
make clean 系统类型
- 主程序文件为john
检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合–wordlist=字典文件
[root@localhost opt]# rz
将安装包共享
[root@localhost opt]# tar zxvf john-1.8.0.tar.gz
解压到当前目录
[root@localhost opt]# cd john-1.8.0/
进入
[root@localhost john-1.8.0]# ls
doc README run src
[root@localhost john-1.8.0]# cd src/
[root@localhost src]# yum install gcc gcc-c++ make -y
安装
[root@localhost src]# make clean linux-x86-64
[root@localhost src]# cd ..
[root@localhost john-1.8.0]# cp /etc/shadow ./shadow.txt
准备待破解的密码文件
[root@localhost john-1.8.0]# cd run/
[root@localhost run]# ./john /opt/john-1.8.0/shadow.txt
执行暴力破解
网络端口扫描
NMAP
- 一款强大的网络扫描、安全检测工具
- 官方网站: http://nmap.orgl
- CentOS 7.7光盘中安装包nmap-6.40-7.el7.x86_64.rpm
控制位
- SYN 建立链接
- ACK 确认
- FIN 结束断开
- PSH 传送 0 数据缓存 上层应用协议
- RST 重置
- URG 紧急
安装软件包
[root@localhost ~]# rpm -q nmap-ncat p
nmap-ncat-6.40-7.el7.x86_64
未安装软件包 p
[root@localhost ~]# rpm -q nmap
未安装软件包 nmap
[root@localhost ~]# yum install nmap* -y #安装软件包
nmap命令常用的选项和描类型
- -p:指定扫描的端口。
- -n:禁用反向DNS解析(以加快扫描速度)
- -sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
- -sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
- -sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
- -sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
- -sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
- -P0:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
总结
-
账号基本安全措施
- 系统账号清理、密码安全控制、命令历史清理、自动注销
-
用户切换与提权
- su、sudo
-
开关机安全控制
- BIOS引导设置、禁止Ctrl + Alt + Del快捷键、GRUB菜单设置密码
-
终端控制
-
John the Ripper工具
-
namp命令