目录
一、账号安全控制
1.1 账号安全基本措施1-1
■ 系统账号清理
- 将非登录用户的shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
- 锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
1.1.1 修改shell环境让账户无法登陆
1、vi /etc/passwd进入编译
2、把想锁定的账户后面改成/sbin/nologin,wq保存退出
3、这样就不能登录了
1.1.2 两种账户锁定和解锁方法
1、passwd -l tang 锁定tang用户
2、passwd -u tang 解锁tang用户
1、usermod -L tang 锁定tang用户
2、usermod -U tang 解锁tang用户
usermod命令锁定和解锁用户的的时候没有交互信息(就是不会有提示)
1.1.3 删除账户
1、删除tang1账户
1.1.4 锁定文件
1、用chattr +i 命令锁定/etc/passwd 和 /etc/shadow文件
2、进入文件验证一下
3、随便输入一下,wq保存一下发现无法保存,只能读不能写
1.1.5 解锁文件
1、用chattr -i 命令解锁/etc/passwd 和 /etc/shadow文件
2、随便输入,发现可以保存退出了
1.2 账号安全基本措施1-2
■ 密码安全控制
- 设置密码有效期
- 要求用户下次登陆时修改密码
[root@localhost ~]# vim /etc/login.defs ###适用于新建用户
......
PASS_MAX_DAYS 30 ###适用于已有用户
[root@localhost ~]#chage -d 0zhangsan ###强制在下次登录时更改密码
1.2.1 设置新建用户密码有效期实验:(适用于新建用户)
1、进入vi编辑
2、找到PASS_MAX_DAYS 99999改成30 就是30天
3、新建一个账号zk1
4、进入shadow里看一下
5、zk1账户密码有效期变成了30天
1.2.2 设置用户密码有效期实验:(适用于已有账户)
1、把zk1账户密码有效期设置成40天
2、进shadow查看一下
3、zk1账户变成了40天
1.2.3 设置账户下次登录强制更改密码实验
1、把zk1账户设置成下次登录强制更改密码
1.2 账号安全基本措施1-3
■ 命令历史限制
- 减少记录的命令条数
- 注销时自动清空命令历史
■ 终端自动注销 - 闲置600s后自动注销
[root@localhost lisi]# vim /etc/profile '进入/etc/profile'
HISTSIZE=200
[root@localhost /]# vim ~/.bash_logout
history -c
clear
[root@localhost /]# vim ~/.bash_profile
.......
export TMOUT=600
1.3.1 编辑全局更改命令记录限制
1、编辑全局变量文件
2、查询 一下HISTSIZE 在哪里,然后把后面的数值改成100,这样就只记录100条
3、刷新一下文件,让生效
4、查看一下记录命令
5、一百多条,我们重启一下看看
6、用history命令在查看一下,就只保存一百条,多出来的不保存
1.3.2 使用命令直接更改命令记录限制
1、直接命令更改成命令记录限制200条,然后重启
1.3.3 注销时自动清空命令历史实验
1、vi编辑
2、输入此命令,设置成注销时自动清空历史命令,wq保存退出
1.3.4 终端闲置时自动注销账户实验 (600秒注销账户实验:1-1(针对全部用户))
1、编辑全局变量文件
2、设置600秒后注销,wq保存退出
3、刷新文件生效一下
1.3.4 终端闲置时自动注销账户实验 600秒注销账户实验:1-2(针对单个用户)
1、编辑全局变量文件
2、设置600秒后注销,wq保存退出
3、刷新文件生效一下
二、系统引导和登陆控制
2.1 使用su命令切换用户2-1
■ 用途及方法
- 用途: Substitute User, 切换用户
- 格式:
su - 目标用户
■ 密码验证
- root切换到任意用户,不用验证密码
- 普通用户切换到其他用户,需要验证目标用户的密码
[root@localhost /]# su - root
[root@localhost ~]# whoami
root
2.2 使用su命令切换用户2-2
■ 限制使用su命令的用户
- 将允许使用su命令的用户加入wheel组
- 启用pam_wheel认证模块
■ 查看su操作记录
- 安全日志文件:/var/log/secure
[root@localhost ~]# gpasswd -a root wheel
正在将用户“root”加入到“wheel”组中
2.2.1 将用户添加到组里
1、将zk1用户加到wheel组
2、进去看一下是否添加成功
3、已成功
2.2 使用su命令切换用户2-2
■ 限制使用su命令的用户
2.2.2 限制用户使用su命令
1、vi编辑
2、把这两条命令前面#字符去掉启动
3、vi编辑
4、然后设置成不在组能不能运行SU命令登陆
5、验证一下,用不在组里的su命令切换一下,发现输入正确密码也无法登陆(没有权限)
2.3 Linux中的PAM安全认证
■ su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换
■ PAM(Pluggable Authentication Modules)可拔插式认证模块 - 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
2.4 PAM认证原理
■ 一般遵循的顺序
- Service(服务)>PAM(配置文件)>pam_*.so
■ 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
■ 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
■ 不同的应用程序所对应的PAM模块也是不同的
2.5 PAM认证的构成
■ 查看某个程序是否支持PAM认证,可以用ls命令
- 示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
■ 查看su的PAM配置文件:cat /etc/pam.d/su
- 每一行都是独立的认证过程
- 每一行可以区分为三个字段
-
- 认证类型
-
- 控制类型
-
- PAM模块及其参数
-
2.6 PAM认证流程
■ 控制类型也可以乘坐Control Flags,用于PAM验证类型的返回结果
1、required验证失败时仍然继续,但返回Fail
2、requisite验证失败则立即结束整个验证过程,返回fail(最重要的一步)
3、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4、optional不用于验证,只显示信息(通常用session类型)
2.7 使用sudo机制提升权限2-3
■ su命令的缺点
■ sudo命令的用途及用法
- 用途:以其他用户身份(如root)执行授权的命令
- 用法:
sudo 授权命令
2.8 使用sudo机制提升权限2-4
■ 配置sudo授权
- visudo命令 或者 vim /etc/sudoers
- 记录格式:
用户 主机名列表 = 命令程序列表
2.8.1 给账户提权创建网卡信息
1、用root用户 进入vi /etc/sudoers添加提权用户
2、zk用户在zk主机下执行/sbin下所有命令,出了reboot
3、去zk账户里创建一个网卡,输入密码
4、用ifconfig命令查看一下是否创建成功了
2.9 使用sudo机制提升权限2-5
■ 查看sudo操作记录
- 需启用Defaults logfile配置
- 默认日志文件:/var/log/sudo
[root@localhost ~]# visudo
Defaults logfile ="、var/log/sudo"
■ 查询授权的sudo操作
- sudo -l
2.10 开关机安全控制
■ 调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为isetup,并设置管理员密码
■ GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
2.10.1 设置BIOS密码实验
1、设置BIOS密码
2、重启f2进入BIOS ,就需要刚刚设置的密码进入了
2.10.2 GRUB限制实验
1、设置grub密码
2、开机在这个界面按e
3、输入账号、密码
4、进入grub菜单
2.11 终端登录安全控制
■ 限制root只在安全终端登录
- 安全终端配置:/etc/securetty
[root@localhost ~]# vi /etc/securetty
......
#tty5 ###禁止root用户从终端tty5登录
#tty6 ###禁止root用户从终端tty6登录
■ 禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin #禁止普通用户登录
[root@localhost ~]#rm -rf /etc/nologin #取消上述登录限制
2.11.1 限制root安全终端登录实验
1、在字符界面先用who看一下在哪个终端
2、进入编辑
3、我们把tty2终端注释掉,或者删掉
4、Carl+alt+f2切到tty2终端,输入账号密码看看能不能登录,显示不能登录,成功!
2.11.2 禁止普通用户登录实验
1、创建/etc/nologin文件(如果该文件存在,那么Linux上的所有用户(除了root以外)都无法登录)
2、编辑
3、里面输入什么普通用户登录的时候就显示什么,但登录不上
4、用zk1账户登录,就会登录不上,并显示刚刚输入的提示内容
5、删掉这个文件,我们就可以恢复账号登录
三、弱口令检测
3.1 系统弱口令检测3-1
■ Joth the Ripper,简述为JR
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方网站:http://www,openwall.com/john/
3.2 系统弱口令检测3-2
■ 安装JR工具
- 安装方法
make clean 系统类型
- 主程序文件为john
■ 检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
■ 密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合–wordlist=字典文件
3.2.1 弱口令检测实验(弱口令自定义账号密码破解)
1、先用Xmanager Enterprise软件的xftp 把JR包上传上去
2、cd 进入opt看一下压缩包是否在
3、解压包
4、解压完后 ,ll 查看一下
5、进入解压的目录看一下
6、进入 src子目录 ,ls查看一下
7、编译一下linux-x86-64
8、退到上一层,进入run目录,ls查看一下,在进入/目录
9、复制shadow文件到root下面的shadow.txt里
10、进入root目录,查看一下有没有复制过去
11、创建一个字典,里面写入密码
12、破解密码
13、ll查看一下,破解的密码放在john.pot里面
14、编辑john.opt ,里面就是刚刚破解的密码
15、注意! 如果在破解刚刚的账号,会提示已经破解了 不能在破解
3.2.2 弱口令检测实验(弱口令穷举账号密码破解)
1、编辑 john.opt
2、直接按 100dd 键清除里面所有东西,wq保存退出
3、输入穷举破解,等待就好!!!
4、已经破解出来
5、用此条命令就能直接看到刚刚破解的账号密码
四、端口扫描
4.1 网络端口扫描4-1
■ NMAP
- 一款强大的网络扫描、安全监测工具
- 官方网站:http://nmap.org/
- CentOs 7.3光盘中安装包nmap-6.40-7.el7.x86_64.rpm
4.2 网络端口扫描4-2
■ NMAP的扫描 nmap [扫描类型] [选线] <扫描目标...>
■ 常用的扫描类型
- sS、sT、-sF、-sU、-sP、-P0
■ 示例1
- 分别查看本机开放的TCP端口、UDP端口
■ 示例2
- 检测192.168.4.0/24网段有哪些主机提供FTP服务
■ 示例3
- 检测192.168.4.0/24网段有哪些存活主机
4.2.1 网络端口扫描实验
1、虚拟机要连接
2、挂载一下,并安装一下nmap扫描工具
3、查看本机开了多少端口
4、扫描本机开的udp端口
5、查看20.0.0.0/24字段的ftp服务(-p后面21是ftp端口)
6、查看20.0.0.0/24段的存活哪些主机(能ping通)
7、查看20.0.0.0-200主机是否开启文件共享
转载:https://blog.csdn.net/weixin_44733021/article/details/107495478