一、账号安全控制
1.1、账号安全基本措施
1.1.1、系统帐号清理
- 将非登录用户的Shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
- 锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# Isattr /etc/passwd /etc/shadow
-------- /etc/passwd
-------- /etc/shadow
①更改用户登录权限操作
1、进入vi /etc/passwd
2、在root用户选更改tx用户的登录权限 改成/sbin/nologin
3、然后tx用户退出登录在登陆时,已经登陆不上了
②用passwd -l 锁定账户 ,登陆不上;passwd -u 解锁账户
用usermod -L 锁定账户 ;usermod -U 解锁账户
③删除无用账户
useradd先创建一个模拟的无用账户;
userdel -r 删除无用账户
④锁定文件
1、chattr +i /etc/passwd /etc/shadow
在vi编辑器里只能读,不能写
2、lsattr /etc/passwd /etc/shadow 查看文件状态
3、在vi编辑器里面操作是否可以读写,只读不写
解锁文件
1、chattr -i /etc/passwd /etc/shadow
在vi编辑器里可读可写了
2、lsattr /etc/passwd /etc/shadow 查看文件状态
1.1.2、密码安全控制
- 设置密码有效期
- 要求用户下次登录时修改密码
[root@localhost ~]# vi /etc/login.defs 适用于新建用户
PASS MAX DAYS 30
[root@localhost ~]# chage -M 30 lisi ## 适用于已有用户
[root@localhost ~]# chage -d 0 zhangsan ##强制在下次登录时更改密码
①新建用户更改密码有效期:
1、进入 vi /etc/login.defs
2、找到下面这句话 ,把数值改为30(就是有效期为30天)
3、新建tx1用户 ,给tx1设置密码
4、这时候 vi /etc/shadow 查看新建的 tx1 用户的密码有效期已经改好了
②已有用户更改密码有效期:
1、更改已有用户 tx 的密码有效期为30天
2、进入vi /etc/shadow 查看
3、发现已经改为 ,密码有效期改为30天了
③强制指定用户在下次登录时更改密码
1、这句代码的意思就是 强制指定tx用户下次登陆时更改密码
2、tx用户原来的更改密码有效期
3、tx用户改完之后的更改密码有效期
大家注意看,后面的时间参数是不一样的!!!
4、重新登陆的时候,按照图片输入要输入的密码就可以了
然后在回车重新登录的时候输入刚才的密码
下次登录改密码的时候要把密码弄复杂点
我弄的是 Tx!@#¥%……&W*
如果要取消强制登陆,直接进入vi编辑器直接更改成原来的参数
1.1.3、命令历史限制
- 减少记录的命令条数
- 注销时自动清空命令历史
修改历史命令数量的限制
方法一:
1、进入vi /etc/profile 里面直接改里面的参数,从而达到修改历史命令数量的限制
2、按 shift+:然后输入 /HIST 然后回车,会跳到这个地方,然后手动修改一下参数,修改成70条
3、刷新一下
4、重启一下
5、然后查看一下历史命令,修改成功
方法二:
1、进入vi /etc/profile 里面
2、在最后一行直接输入这句话,这次我们改成最多只能60条
3、这条命令刷新一下
4、重启虚拟机
5、查看历史命令,只有60条命令,试验成功
1.1.4、终端自动注销
- 闲置600秒后自动注销
注意,注销的时候必须是闲置的时候!!!不能动
[root@localhost ~]# vi /etc/profile
HISTSIZE=200
[root@localhost ~]# vi ~/.bash_ logout
history -C
clear
①针对所有用户的注销
1、进入vi编辑器后,在最后一行输入这句话,100秒后注销
2、退出编辑器,然后刷新下
3、账户注销了
②针对单个用户修改注销时间
1、修改时间为20S
2、刷新一下
3、账户注销了
二、系统引导和登录控制
2.1、使用su命令切换用户
2.1.1、用途和用法
■用途及用法
- 用途: Substitute User, 切换用户
- 格式: su - 目标用户
■密码验证
- root→任意用户,不验证密码
- 普通用户>其他用户,验证目标用户的密码
2.1.2、限制使用su命令的用户
■限制使用su命令的用户
- 将允许使用su命令的用户加入wheel组,在wheel组内的用户才可以使用su切换用户命令
- 启用pam_wheel认证模块
■查看su操作记录
- 安全日志文件:/var/log/secure
限制使用su命令的用户实验
1、把 tx 用户加入 wheel 组
2、查看是否把 tx 用户放进 wheel 组
3、tx 用户在 wheel 组
4、进入 vi /etc/pam.d/su
5、把框出来的行前面的#号删掉
6、进入 vi /etc/login.defs
7、在末行输入这句话
8、查看一下 cat /etc/group ,tx 用户 在 wheel 组
9、这是我们登录 tx 用户然后切换为 root用户可以切换,因为已经把 tx 用户放入 wheel组了
10、但是 tx1 用户却不能切换为 root 用户,因为 tx1 用户没有放进 wheel 组
三、Liunx中的PAM安全认证
3.1、su命令的安全隐患
- su命令的安全隐患
默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换
PAM(Pluggable Authentication Modules)可拔插式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式
3.2、PAM认证原理
- PAM认证一般遵循的顺序:Service(服务)>PAM(配置文件)>pam_*.so
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块也是不同的
.so 为结尾的就是模块文件
3.3、PAM认证的构成
- 查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d,然后管道符号检索想要查询的程序;例如查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是独立的认证过程
每一行可以区分为三个字段
认证类型
控制类型
PAM模块及其参数
3.4、PAM安全认证流程
- 控制类型也可以乘坐Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回fail(最重要的一步)
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用session类型)
四 、使用sudo机制提升权限
4.1、su命令的缺点
- 默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险
4.2、sudo命令的用途及用法
- 用途:以其他用户身份(如root)执行授权的命令
- 用法:sudo 授权命令
4.3、配置sudo授权
- visudo命令 或者 vim /etc/sudoers
- 记录格式: 用户 主机名列表 = 命令程序列表
root@localhost log]# visudo
......
用户 主机名列表 = 命令程序列表
%wheel ALL = NOPASSWD:ALL
jerry localhost = /sbin/ifconfig
syrianer localhost = /sbin/*,!/sbin/ifconfig,!/sbin/route
'可以使用通配符号*和取反符号!'
Cmnd_Alias PKGTOOLS = /bin/rpm,/usr/bin/yum
mike localhost = PKGTOOLS
4.4、查看sudo操作记录
■查看sudo操作记录
- 需启用Defaults logfile 配置
- 默认日志文件: /var/log/sudo
■查询授权的sudo操作
- sudo -|
使用sudo机制提升权限实验
1、先在tx用户上测试,先输入(ifconfig ens33:1 192.168.10.10)创建网卡;
发现是不允许操作的,因为没有权限
2、需要在root用户visudo 或者/etc/sudoers都可以进配置文件添加提权用户;
3、配置文件末行加入你想要提权的用户;(KGC是主机名)
tx KGC=/sbin/*,!/sbin/reboot (tx用户在KGC主机下执行/sbin下所有命令,除了reboot)
4、再去tx用户上再去(sudo ifconfig ens33:1 192.168.10.10)创建网卡那条命令,发现是可以做操作的权限已经有了
5、ifconfig 查看一下是不是创建成功
五、开关机安全控制
5.1、调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为isetup,并设置管理员密码
- 备注:禁止从其他设备引导系统操作,感觉若是出现忘记root密码就可能无法从光驱去修改,所以还是谨慎操作
调整BIOS引导设置实操
虚拟机重启之后,按F2进入BIOS
设置进入BIOS的密码,设置完之后确认
设置开机就要输入密码
F10保存退出!
5.2、GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
5.3、终端登录安全控制
5.3.1、限制root只在安全终端登录
■限制root只在安全终端登录
- 安全终端配置: /etc/securetty
[root@localhost ~]# vi letc/securetty
......
#tty5 ## 禁止root用户从终端tty5,tty6登录
#tty6
限制root只在安全终端登录实验:
1、先在虚拟机终端里面 init 3切换字符界面,然后登陆进去
2、who 查看一下当前用户登陆的终端
3、打开 vi /etc/securetty,在tty2前加上#号,然后wq保存退出
4、记住当前我们是在tty1终端里面,然后按ctrl+alt+F2切换成tty2终端。
进tty2终端后,正常输入root用户和密码,应该是进不去的。
因为刚才我们已经把终端tty2给关闭了。
意思就是禁止 root 用户从终端tty2进入
注意:如果我们此时在tty1终端,然后在进入vi /etc/securetty把tty1终端给关掉,是没有用的,因为我们当时已经在tty1终端里面了,所以是没有效果的。
ctrl+alt+F1—9 是切换终端用的(在字符界面使用)
5.3.2、禁止普通用户登录
■禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin ## 禁止普通用户登录
[root@localhost ~]# rm -rf /etc/nologin ## 取消上述登录限制
禁止普通用户登录实验:
当服务器正在进行备份或调试等维护工作时,可能不希望在有新的用户登陆系统。这时候,只需要间的建立 /etc/nologin文件即可。login程序会检查 /etc/nologin 文件是否存在,如果存再则拒绝普通用户登录系统(root用户不受限制)。这里我们做个实验验证一下。
1、先创建并进入touch /etc/nologin文件里面
2、这时候我们在登录普通用户试验一下看是否可以登录成功
3、登陆失败!
4、当我们在 vi /etc/nologin 里面输入别的字符,当其他用户(除root用户)在登陆自己的用户时就会显示我们刚才在 vi /etc/nologin里面输入的字符,我们这里验证一下。
①我们先进入 vi /etc/nologin ,在里面输入 Hello World,并 wq 保存退出
②当我们登录 tx 用户时,虽然登录不上,但是显示了刚才在 vi /etc/nologin里面输入的字符 Hello World
取消登录限制:
- rm -rf /etc/nologin 就是把这个文件删除
- 删除 /etc/nologin 文件之后,其他的用户又可以登录了
六、系统弱口令检测
6.1、Joth the Ripper,简称为JR
- 款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方网站: http://www.openwall.com/john/
6.2、安装JR工具
- 安装方法 make clean系统类型
- 主程序文件为john
6.3、检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
6.4、密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合–wordlist=字典文件
6.5、弱口令自定义字典破解实验
1、把软件包放入 /opt目录里
2、进入 /opt目录
3、用tar软件包解压这个压缩包
4、进入 john-1.8.0/
5、ll 查看一下解压过后软件包的内容
6、回到上一层为了进入run/目录
7、进入run/并查看下里面有这个文件
8、把/etc/shadow复制到/root/shadow.lst(这时候没有shadow.lst)
9、进入 /root目录查看下shadow.lst文件是否创建成功
10、创建passwd.lst文件并打开,在里面输入root的密码是Tx123,然后随便输入几个其他的密码
11、进入 /opt目录看下文件是否依然还在
12、输入如下代码,就可以查出root用户的密码和tx用户的密码。
注意!!!
输入 vi john.opt会查看刚才root和tx用户密码的密文
这时候退出来在破解密码,就不能在进行破解了,提示已经破解过了
弱口令穷举破解实验:
1、进入之后,按 100dd,就会把下面的密文密码一次性清除了
2、这是已经把密文密码清除了
3、输入如下代码就可以进行暴力破解了
七、网络端口扫描
7.1、NMAP的扫描
- nmap [扫描类型] [选项] <扫描目标…
7.2、NMAP的扫描
- -sS、-sT、 -sF、 -sU、-sP、-PO
7.3、端口扫描实验
1、进行挂载
2、安装nmap扫描工具
3、查看本机开了多少端口(127.0.0.1是本机的回环口)
4、扫描本机的UDP端口
5、查看扫描20.0.0.0/24字段的FTP服务(21是FTP端口号)
6、查看扫描20.0.0.0/24段存活哪些主机(能ping通);-sP类似于ping检测,快速判断目标主机是否存活,不做其他扫描
7、查看20.0.0.0—200主机是否开启文件共享
今天博客的内容就到此结束啦,内容有点多,希望大家可以仔细观看,写的非常详细了,真是呕心沥血啊!希望大家可以给我这个新手来个一键三连!感谢各位铁汁了!
转载:https://blog.csdn.net/m0_46563938/article/details/107497220