一回顾
建立用户:useradd mg
账户锁定: passwd -l 用户名 usermod -l 用户名
账户解锁:passwd -u 用户名 usermod -u 用户名
删除用户:userdel 用户
查看:cat /etc/passwd
切换用户:su
非登录用户设置为不能登录
usermod -s nologin 用户名
chatter 锁定重要账户文件
-i
-a
lsattr /etc/passwd /etc/shadow #查看文件的状态
chattr +i /etc/passwd /etc/shadow #锁定文件
chattr -i /etc/passwd /etc/shadow #解锁文件
history
-c 临时清空
清除历史记录
查看历史输入指令 history
history记录存放过文件 ~/.bash_history
临时清空 history -c
永久清空 echo " ">~/.bash_history
退出后清除 vim .bash_logout
开机后清除 vim .bashrc
注销时自动清空命令历史
#vim .bashrc
终端用户自动注销
减少记录命令的条数:
1.[root@localhost ~]# vim /etc/profile 进入配置文件修改限制命令条数。适合新用户
HISTSIZE=200 修改限制命令为200条,系统默认是1000条profile
[root@localhost ~]# source /etc/profile 刷新配置文件,使文件立即生效
2.[root@localhost ~]# export HISTSIZE=200 适用于当前用户
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /etc/profile 刷新配置文件,使文件立即生效
3. 开机时自动清空命令:
[root@localhost ~]# vim ~/.bashrc
echo "" > ~/.bash_history
命令历史、自动注销
减少记录命令的条数:
1.[root@localhost ~]# vim /etc/profile 进入配置文件修改限制命令条数。适合新用户
HISTSIZE=200 修改限制命令为200条,系统默认是1000条profile
[root@localhost ~]# source /etc/profile 刷新配置文件,使文件立即生效
2.[root@localhost ~]# export HISTSIZE=200 适用于当前用户
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /etc/profile 刷新配置文件,使文件立即生效
3. 开机时自动清空命令:
[root@localhost ~]# vim ~/.bashrc
echo "" > ~/.bash_history
配置文件修改记录history命令的条数(默认1000)
#vim /etc/profile
#source /etc/profile 刷新
#cat /etc/profile 刷新
使用su 切换用户
①即 switch user,切换用户身份,并且以指定用户的身份执行命令
su 目标用户:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - 目标用户:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
②密码验证
root ->任意用户,不验证密码
普通用户->其他用户,验证目标用户密码
su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
③限制使用su命令的用户
将允许使用su命令的用户加入wheel组
不在 wheel 组,不能使用 su 指令
修改完之后,不能使用 su
root 用户切换其他用户也需要密码
Linux中的PAM安全认证
在不修改应用程序代码的情况下自定义系统的身份验证、授权和会话管理策略
1、su命令的安全隐患
- 默认情况下,任何用户都允许使用 su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2 PAM可插拔式认证模块
- 高效且灵活的用户级别的认证方式
- 当前Linux服务器普遍使用的认证方式,既适用于本地登录也适用于远程登录
查看rpm的当前系统 #rpm -qi pam
3 PAM的相关文件
- /usr/lib64/security :存放功能模块 或者#ls /usr/lib64/security
- /etc/pam.d/ :配置文件
- /etc/security :复杂的配置文件
3 PAM认证原理
当用户来访问某一程序的时候,如果这个程序启用了pam模块,会先去读取配置文件,然后按照配置文件调用模块,进行操作。
PAM认证一般遵循的顺序:Service(服务)-->PAM(配置文件)-->pam_*.so
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块是不同
4 PAM认证的构成
查看某个程序是否支持PAM认证,可以用ls命令
格式:ls /etc/pam.d | grep su
查看su的PAM配置文件:cat /etc/pam.d/su
二 PAM安全认证流程
控制类型用于PAM验证类型的返回结果
required:一票否决,如果失败,最后一定会失败,但是会继续验证
requisite:一票否决,如果失败,会立即结束验证,反馈失败
sufficient:验证成功则立即返回,不再继续,否则忽略结果并继续
optional:不用于验证,只显示信息
6 limit
可打开的文件数量,可运行的进程数量,可用内存空间
#vim /etc/security/limits.conf
7 ulimit
(修改限制的实现方式)
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。
ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。
ab -c1025 -n 2000 http://192.168.10.11/ #使用压力测试工具进行测试 打开的文件数
vim /etc/security/limits.conf #永久修改不用重启(软硬一起设置可以直接使用-)
1 sudo 命令的特性
①sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
②sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
③sudo使用时间戳文件来执行类似的"检票"系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
④sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
2、配置sudo授权
visudo或vi /etc/sudoers #此文件的默认权限为440,保存退出时必须执行"wq!",强制保存退出
3 sudo指令格式
用户
主机名
命令程序列表
可使用通配符" * "表示所有,取反符号"!"表示排除
面试题 Jerry localhost=/sbin/*,!/sbin/poweroff
表示jerry用户操作localhost主机可使用sbin目录下的除poweroff以外的所有命令
要点:Jerry仍可使用init、shutdown等命令执行关机操作,因此限制命令需做到全面无漏,否则限制影响十分有限。
设置别名
格式:大写,数字可以使用但是不能使用
使用关键字User_Alias(用户)、Runas_Alias(代表用户)、Host_Alias(登录主机)、Cmds_Alias(命令)来进行设置别名
User_Alias USERS=Tom,Jerry,Mike
Host_Alias HOSTS=localhost,bogon
Cmnd_Alias CMDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOST=CMDS
root ALL=(ALL) ALL
用户 主机名ip= 命令
密码验证
①正常情况下,第一次使用sudo命令需输入密码验证,有效期为五分钟,过期后使用sudo需再次输入密码验证。
②可以设置特定用户无需密码验证
Mike ALL=(ROOT)NOPASSWD:/bin/kill,/usr/bin/killall
③也可设置组用户无需密码验证
%wheel ALL=NOPASSWD:ALL
④以及所有用户无需密码验证
USERS HOSTS=NOPASSWD:CMDS
6、查看sudo操作记录:需启用Defaults logfile配置
/var/log/sudo #默认日志文件
visudo #进入sudo配置文件
Defaults logfile="/var/log/sudo" #启动Defaults logfile
tail /var/log/sudo #查看sudo末尾10行记录
ulimit命令
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。
ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。
ulimit只影响shell进程及其子进程,用户登出后失效。
可以在profile中加入ulimit的设置,变相的做到永久生效
编辑limits里面是空的
如果 ab 命令不可用,就请先安装 httpd-tools ,然后开启 httpd 服务
测的是同一时间 192.168.11.12 这个服务器可以接待多少次的访问
三 开/关机安全控制
① 调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
② GRUB限制
通常情况下,在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,也可进入急救模式修改用户密码,这对服务器是一个极大的安全威胁。为此,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
③在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_header文件,添加密码记录
生成新的grub.cfg配置文件
grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub.pbkdf2...... # 省略部分内容为加密生成的密码字符串
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak # 制作备份
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak # 制作备份
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" #设置登录用户为 root
password_pbkdf2 root grub.pbkdf2...... # 设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg # 生成新的grub.cfg配置文件
完成配置修改工作,重启后进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。
grub2-setpassword #直接设置密码
1 限制root只在安全终端登录:
①安全终端配置 /etc/securetty vi /etc/securetty
②将tty5,tty6前加 "#" 将其注释,表示禁止root用户从终端tty5,tty6登录
2 禁止普通用户登录
①touch /etc/nologin
②删除nologin文件或重启后即恢复正常(rm -rf /etc/nologin)
五 弱口令检测
1 暴力破解工具-JR
John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过对shadow文件的口令分析,可以检测密码强度。
官方网站:http://www.openwall.com/john/
2 安装JR工具
安装方法:make clean 系统类型
主程序文件为john
3 检测弱口令账号
获得Linux/Unix服务器的shadow文件
执行john程序,将shadow文件作为参数
4 密码文件的暴力破解
准备好密码子弹文件,默认为password.lst
执行john程序,结合--wordlist=字典文件
5 模拟暴破步骤
cd /opt
tar zxf john-1.8.0.tar.gz #解压工具包
yum install -y gcc gcc-c++ make #安装软件编译工具
cd /opt/john-1.8.0/src #切换到src子目录
make clean linux-x86-64 #进行编译安装
cp /etc/shadow /opt/shadow.txt #准备待暴破的密码文件
cd /opt/john-1.8.0/run
./john /opt/shadow.txt #执行暴力破解
./john --show /opt/shadow.txt #查看已破解出的账户列表
> john.pot #使用密码字典文件,清空已破解出的账户列表以便重新分析
./john --wordlist=./password.list /opt/shadow.txt #使用指定的字典文件进行破解
网络扫描工具-NMAP
- NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术。
安装NMAP软件包
rpm -qa | grep nmap #检查是否已安装
yum install -y namp #若未安装,进行yum安装
服务的端口号