目录
一、系统账号清理
1、将非登录用户的shell设为/sbin/nologin;
2、锁定长期不使用的账号;
3、删除无用账号;
4、锁定账号文件passwd,shadow
二、chattr命令的用法
1、“+”:在原有参数设定基础上,追加参数;
2、“-”:在原有参数设定基础上,移除参数;
3、“=”;更新为指定参数设定。
“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”选项强制只可添加不可删除,多用于日志系统的安全设定,而“i”是更为严格的安全设定,
只有superuser(root)或具有CAP_Linux_IMMUYABLE处理能力(标识)的进程能够施加该选项。
chattr命令的应用举例:
1、设定文件/etc/passwd /etc/shadow文件不能被修改、删除、创建链接并验证
[root@server1 ~]# chattr +i /etc/passwd /etc/shadow
[root@server1 ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@server1 ~]# useradd aaa
useradd:无法打开 /etc/passwd
2、解锁并创建用户测试
[root@server1 ~]# chattr -i /etc/passwd /etc/shadow
[root@server1 ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
[root@server1 ~]# useradd abc
[root@server1 ~]# id abc
uid=1001(abc) gid=1001(abc) 组=1001(abc)
三、密码安全控制
1、设置密码有效期;
2、要求用户下次登陆修改密码。
[root@server1 ~]# vi /etc/login.defs
........
PASS_MAX_DATS 30
(适用于新建用户)
[root@server1 ~]# chage –M 30 aaa (适用于已有用户)
[root@server1 ~]# chage –d 0 aaa (强制在下次登录时更改密码)
四、命令历史限制
1、减少记录的命令条数;
[root@server1 ~]# vi /etc/profile
HISTSIZE=200
2、注销时自动清空历史命令。
[root@server1 ~]# vim ~/.bash_logout
history -c #增加
clear #增加
history –c #增加
该命令可以清空本次登入的所有输出命令,但不清空.bash_history文件,所以下次登陆后,旧命令还将出现,
历史命令是存在于当前用户根目录下的./bash_history文件。
[root@server1 ~]# echo > $home./bash_history
每个用户根目录下都有一个.bash_history文件用于保存历史命令,当每次注销时,本次登陆所执行的命令将被写入该文件。
所以可以直接清空该文件,下次登录上次保存的命令将消失,清空效果将在下次登陆生效。
五、使用su命令切换用户
[root@server1 ~]# su 目标用户
六、密码验证
1、root——任意用户 不验证密码;
2、普通用户——其他用户 验证目标用户的密码。
七、限制使用su命令的用户
1、将允许使用su命令的用户加入wheel组;
2、启用pam_wheel认证模块。
八:PAM安全认证流程
控制类型也称做Control Flags,用于PAM验证类型的返回结果。
1、required验证失败时仍然继续,但返回Fail;
2、requisite验证失败时立即结束整个验证过程,返回Fail;
3、sufficien验证成功则立即返回,不再继续,否则忽略结果并继续;
4、optional不用于验证,只显示信息(通常用于session类型)
九、PAM验证的构成
1、看某个程序是否支持PAM认证,可以用ls命令
例:查看su是否支持PAM模块认证
[root@server1 ~]# ls /etc/pam.d/ |grep su
2、查看su的PAM配置文件
[root@server1 ~]# cat /etc/pam.d/su
3、PAM认证类型包括四种:
认证管理(authentication management):接受用户名称和密码,进而对该用户的密码进行认证;
账号管理(account management):检查账户是否被允许登陆系统,账号是否已经过期,账号的登陆是否有时间段的限制等;
密码管理(password management):主要用来修改用户的密码;
会话管理(session management):主要是提供对会话的管理和记账。
十、PAM认证原理
1、一般遵循的顺序:
Service(服务)——PAM(配置文件)——pam_*.so
2、首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
3、用户访问服务器时,服务器的某一服务程序把用户的请求发送到PAM模块进行认证
4、不同的应用程序所对应的PAM模块是不同的
十一、su命令的安全隐患
1、默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登陆密码,带来安全风险;
2、为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
十二、PAM可插拔式认证模块
1、是一种高效而且灵活便利的用户级别的认证方式;
2、也是当前Linux服务器普遍使用的认证方式。
十三、使用sudo机制提升权限
1、sudo命令的用途及用法
(1)、以其他身份(如root)执行授权的命令
(2)、用法:sudo 授权命令
2、配置sudo授权
[root@server1 ~]# vim /etc/sudoers
用户 主机名列表=命令程序列表
3、查看当前可执行的sudo命令
[root@server1 ~]# sudo -l
4、查看sudo操作记录
(1)、需启用Defaults logfile配置;
(2)、默认日志文件:/var/log/sudo
十四、GRUB限制
1、使用grub2-mkpasswd-pdkdf2生成密钥;
[root@server1 ~]# grub2-mkpasswd-pbkdf2
[root@server1 ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@server1 ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
2、修改/etc/grub.d/00_header文件,添加密钥记录;
[root@server1 ~]# vim /etc/grub.d/00_header
cat << EOF
set superusers="root"
passwd_pabkdf2 root 秘钥(使用grub2-mkpasswd-pbkdf2命令生成的秘钥)
EOF
十五、限制root只在安全终端登陆
1、安全终端配置:/etc/securetty
十六、禁止普通用户登陆
1、建立/etc/nologin文件
2、删除nologin文件或重启后恢复正常
十七、Joth the Ripper,简称JR
1、一款密码分析工具,,支持字典式的暴力破解;
2、通过对shadow文件的口令分析,可以检测密码强度;
3、官方网站:http://www.openwall.com/john/
操作过程:
1、导入数据包
[root@server1 ~]# tar zxvf john-1.8.0.tar.gz
2、编译安装
[root@server1 ~]# cd john-1.8.0/
[root@server1 john-1.8.0]# cd src
[root@server1 src]# make clean linux-86-64
[root@server1 src]# cp /etc/shadow /root/shadow.txt
[root@server1 src]# cd ../run/
[root@server1 run]# ./john /root/shadow.txt
[root@server1 run]# ./john --show /root/shadow.txt
十八、网络扫描
[root@server1 ~]# rpm -ivh /mnt/Packages/nmap-****.rpm 安装nmap软件包
nmap -sT (tcp连接扫描) 127.0.0.1、192.168.4.0/24\192.168.4.100-200
-sU (UDP扫描) 127.0.0.1、192.168.4.0/24\192.168.4.100-200
-sP (icmp连接扫描) 127.0.0.1、192.168.4.0/24\192.168.4.100-200
-sS (tcp syn连接扫描) 127.0.0.1、192.168.4.0/24\192.168.4.100-200
-p (指定端口扫描) 127.0.0.1、192.168.4.0/24\192.168.4.100-200