文章目录
一、账号安全控制
1.1 系统账号清理
-
将非登录用户的Shell设为/sbin/nologin
-
锁定长期不使用的账号 'usermod -L ’
-
删除无用的账号 ‘userdel -r’
-
锁定账号文件passwd、shadow,用以控制用户(包括root)无法创建删除修改账户
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow '给passwd和shadow加锁+i' [root@localhost ~]# lsattr /etc/passwd /etc/shadow 'ls查看attr是否锁定,即查看状态' ----i----------- /etc/passwd '锁定' ----i----------- /etc/shadow '锁定'
+i 进行加锁 -i 解锁
lsattr 查看是否锁定
1.1.1 chattr命令的用法
chattr命令的用法
+∶在原有参数设定基础上,追加参数。
-:在原有参数设定基础上,移除参数。
= ∶更新为指定参数设定。
A∶文件或目录的atime(access time)不可被修改(modified),可以有效预防例如手提电脑磁盘I/O错误的发生。
S∶硬盘I/O同步选项,功能类似sync.
a∶即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c∶即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d∶即no dump,设定文件不能成为dump程序的备份自标。
i∶设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助
j∶即journal,设定此参数使得当通过mount参数∶data-ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s∶保密性地删除文件或目录,即硬盘空间被全部收回。
u∶与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
各参数选项中常用到的是a和i。
a选项强制只可添加不可删除,多用于日志系统的安全设定。
1.2 密码安全控制
-
设置密码有效期
-
要求用户下次登陆时修改密码
修改默认配置文件适用于在修改配置文件保存之后的时间点后的用户创建,这个方法不会修改已创建的用户的密码有效期。(适用于新用户)
[root@localhost ~]# vim /etc/login.defs '进入默认配置文件' ...... PASS_MAX_DAYS 99999 '默认设置为99999天' PASS_MAX_DAYS 100 '可以先修改为100天验证'
对已存在的用户的密码有效期设置命令是
[root@localhost ~]# chage -M 时间 用户名
[root@localhost ~]# chage -M 100 lisi
'设置lisi密码的有效期为100'
[root@localhost ~]# tail -2 /etc/shadow '查看'
xu:$6$hvsmeCiXcljt0SY.$YZ0MI3Co28NWfnAZ9rWZASqK1iGSp0WOL9awIK3e.g1nSW6yMBQTOsCc22gqbBxRZyPGqAb7ieFXJTk18.Etk1::0:99999:7:::
lisi:$6$90LFOoRw$YjodULzX4RGUSirIQicTBYikxWHR3HoH.xJJrTnFt6Y/jo1kS0tUpDstDkQtJcsdGRQEUNHmb/C9t1p65OqGu1:18556:0:100:7:::
小结:
chage -d 0 用户名 下次登录时及时修改密码(修改的密码不允许连续数字、连续字母,可以为asd196!
1.3 命令历史限制
-
减少记录的命令条数
[root@localhost lisi]# vi /etc/profile '进入/etc/profile' HOSTNAME=`/usr/bin/hostname 2>/dev/null` HISTSIZE=1000 '默认为1000,可以修改为200,减少历史命令缓存'
-
注销时自动清空命令历史
[root@localhost /]# vim ~/.bash_logout '进入root家目录~中的注销变量文件去配置' # ~/.bash_logout history -c '清除历史命令' clear '清屏' echo "" /root/.bash_history [root@localhost /]# source bash_logout '使配置文件生效' ~
history -c
该命令可以清空本次登入的所有输出命令,但不清空.bash history文件,所以下次登陆后,旧命令还将出现,历史命令是存在于当前用户根目录下的./bash_history文件。
1.4 终端自动注销
-
闲置600s后自动注销
[root@localhost /]# vim ~/.bash_profile '编辑root家目录的环境变量' # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi 'export TIMOUT=600' '超过600s会自动注销' # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH
注意:
注销时间不要太快,不然不容易修改回来。
二 、使用su命令切换用户
2.1 用途及用法
- 用途: Substitute User, 切换用户
- 格式: su 目标用户
2.2 密码验证
-
root切换到任意用户,不用验证密码
-
普通用户切换到其他用户,需要验证目标用户的密码
[root@localhost /]# su - gsy '带-选项标识将使用目标用户的登录shell环境' 上一次登录:三 10月 21 15:14:46 CST 2020pts/0 上 [gsy@localhost ~]$ su - root 密码: 上一次登录:三 10月 21 15:15:08 CST 2020pts/0 上 [root@localhost ~]# whoami root [root@localhost ~]#
2.3 限制使用su命令的用户
-
将允许使用su命令的用户加入wheel组,在wheel组内的用户才可以使用su切换用户命令
[root@localhost ~]# id xhc uid=1000(xhc) gid=1000(xhc) 组=1000(xhc) [root@localhost ~]# gpasswd -a xhc wheel 正在将用户“xhc”加入到“wheel”组中 [root@localhost ~]# id xhc uid=1000(xhc) gid=1000(xhc) 组=1000(xhc),10(wheel)
-
启用pam_wheel认证模块
[root@localhost ~]# vim /etc/pam.d/su %PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid '把#删掉即可启用' auth substack system-auth auth include postlogin :wq //保存退出
pam.su需要手动开启,在开启的时候,是默认只有wheel组用户可以使用su命令。
三 、 Liunx中的PAM安全认证
3.1 su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换
PAM(Pluggable Authentication Modules)可拔插式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式。
3.2 PAM认证原理
-
PAM认证一般遵循的顺序:
-
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。
-
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。
-
不同的应用程序所对应的PAM模块也是不同的。
3.3 PAM认证的构成
-
查看某个程序是否支持PAM认证,可以用ls命令
示例:查看su是否支持PAM模块认证ls /etc/pam.d | grep su
-
查看su的PAM配置文件:cat /etc/pam.d/su
- 每一行都是独立的认证过程
- 每一行可以区分为三个字段
- 认证类型
- 控制类型
- PAM模块及其参数
3.4 PAM安全认证流程
控制类型也可以乘坐Control Flags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回fail(最重要的一步)
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- 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
备注:
可以使用通配符号*和取反符号!
类似别名还包括user_Alias、Host_Alias;
用户与主机名列表间用制表符隔开,=号左右有空格,命令程序列表中若是有两个及以上命令,命令与命令之间用逗号隔开;
命令程序要写绝对路径,用which查看为准。
[root@localhost /]# vim /etc/sudoers 'vim进入配置文件'
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL '这个命令,上面是解释'
lisi client3=(root) /usr/bin/touch, /usr/bin/mkdir, /usr/sbin/ifconfig '新加入这一行'
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
4.4 查看sudo操作记录
-
需启用Defaults logfile配置
-
默认日志文件: /var/log/sudo
[root@localhost ~]# visudo '或者 vim /etc/sudoers也可以' ...... ## Allow root to run any commands anywhere root ALL=(ALL) ALL lisi localhost = /usr/sbin/ifconfig Defaults logfile = "/var/log/sudo" '输入设置' ## Allows members of the 'sys' group to run networking, software,
在启用默认配置文件/var/log/sudo后进行的sduo操作过程才会在此文件内记录
[root@localhost ~]# cat /var/log/sudo
Nov 14 19:24:15 : lisi : TTY=pts/1 ; PWD=/home/lisi ; USER=root ;
su -l 也是切换到root的指令
五 : 开关机安全控制
5.1 调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为isetup,并设置管理员密码
备注:禁止从其他设备引导系统操作,感觉若是出现忘记root密码就可能无法从光驱去修改,所以还是谨慎操作
5.2 GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
pbkdf2 是一种算法
使用方向键来改变选择。按“e”来编辑选择的项目,或“c”作为命令提示符。所选条目将在4s中自动启动
按e键时的界面
按c键时的界面
按e或c
输入错误的用户或密码就会退出去,正确则会安全进入
六 :终端登录安全控制
6.1 限制root只在安全终端登录
-
安全终端配置:/etc/securetty
-
不想root在哪登录,就把哪个给注释掉
[root@localhost etc]# vim /etc/securetty '默认没有#,都可以登陆。 #tty5 //禁止root用户从终端tty5 登录
6.2 禁止普通用户登录
-
建立/etc/nologin文件 (用于维护时创建使用,设置这个文件可以方便有效防止变量出现)
-
删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin '禁止普通用户登录' [root@localhost etc]# rm -rf /etc/nologin '删除掉/etc/nologin文件即可取消'
七 : 系统弱口令检测
7.1 John the Ripper,简称为JR
-
一款密码分析工具,支持字典式的暴力破解
-
通过对shadow文件的口令分析,可以检测密码强度
-
无法通过yum下载,想要的评论处+1
tar zxvf john-1.8.0.tar.gz cd john-1.8.0/ cd src make clean linux-x86-64 //执行编译文件 ls ../run/john //查看是否生成john程序 cp /etc/shadow /root/shadow.txt //复制密码文件 cd ../run ./john /root/shadow.txt ./john --show /root/shadow.txt
使用密码字典文件
[root@localhost run]#∶>john.pot //清空已破解出的账户列表,以便重新分析
[root@localhost run]#./john --wordlist=./password.lst /root/shadow.txt
[root@localhost run]#./john --show /root/shadow.txt
7.2 安装JR工具
- 安装方法:make clean 系统类型
- 主程序文件为john
7.3 检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
7.4 密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合–wordlist=字典文件
八 : 网络端口扫描
8.1 NMAP
- 一款强大的网络扫描、安全检测工具
- 官方网站:http://nmap.org/
- 可从CentOS 7.3光盘中安装nmap-6.40-7.el7.x86_64.rpm包
- 可以使用yum下载
8.2 NMAP的扫描语法
nmap 【扫描类型】 【选项】 <扫描目标…>
8.3 常用的扫描类型
九 、总结
账号基本安全措施
- 系统账号清理、密码安全控制、命令历史清理、自动注销
用户切换与赋权
- su、sudo
开关机安全控制
- BIOS引导设置、禁止Ctrl+Alt+Del快捷键、GRUB菜单设置密码
终端控制
- john the ripper工具
- nmap命令