linux基线排查
1.账号管理与认证授权
用户账号口令设置
awk -F: '($2==""){print$1}' /etc/shadow
- 检查是否存在空口令账号($2表示第二个值 其实就是密码的值$1表示第一个值其实就是用户名)
- 有输出则存在,无输出则不存在
检查一下参数
vim /etc/login.defs
- PASS_MAX_DAYS 密码最长过期天数 参考值90
- PASS_MIN_DAYS密码最小过期天数 参考值80
- PASS_MIN_LEN密码最小长度 参考值8 //ubuntu中修改不了 ,只能是8位
- PASS_WARN_AGE密码过期警告天数参考值7
可以通过/ 进行检索
root用户远程登录限制
设置sudo用户
新建用户并修改密码
useradd user_01
passwd user_01
设置sudo权限
chmod u+w /etc/sudoers && vim /etc/sudoers
'u+w'表示给文件或目录的所有者(user)添加写入(write)权限
添加“用户名ALL=(ALL:ALL)ALL"
"root ALL=(ALL:ALL)ALL" 是在Unix或Linux系统中的sudoers文件中的一条配置。这条配置意味着,作为root用户,可以从任何终端(ALL)以任何用户(ALL)的身份执行任何命令(ALL)
测试sudo用户是否可用
关闭root用户远程登录
修改sshd_config文件
执行vim /etc/ssh/sshd_config找到PermitRootLogin,删除前面的#号并且修改为no
重启sshd服务,执行systemctl restart sshd或systemctl restart ssh
检查除root之外的UID为0的用户
awk -F: '($3==0){print$1}' /etc/passwd
启用密钥登录,关闭密码登录
ssh-keygen 存放在/home/kali/.ssh/id_rsa(如果没有创建文件夹用mkdir)
配置id_rsa.pub
cat /home/kali/.ssh/id_rsa.pub >> /home/kali/.ssh/authorized_keys
取出id_rsa
使用id_rsa登录ssh
关闭密码登录
vim /etc/ssh/sshd_config
重启ssh服务
systemctl restart ssh
2.Linux系统文件与访问控制
1.远程连接的安全配置
检查.netrc文件 find / -name .netrc 2>/dev/null 可能保存有明文文件
.netrc 文件是一种用于存储网络认证信息的文件,通常用于命令行工具 (例如FTP、Git、Curl等)在与远程服务器进行身份验证时使用。这个文件包含了一系列匹配规则和对应的用户名密码信息,当需要连接到远程服务器时,相应的工具会检查该文件中是否有匹配的规则,并使用其对应的用户名和密码进行认证。
find / -name.rhost 2>/dev/null 可能保存有明文文件
.rhosts 文件是Unix和类Unix系统中用于远程主机认证的文件。通常,它包含了一系列允许访问本地服务器上的文件或服务的主机名和用户列表。当远程主机尝试访问本地主机时,本地主机会检查远程主机是否在.hosts 文件中,如果是,则允许它通过身份验证并访问相应的文件或服务。
若存在需做记录再考虑是否删除
2.用户umask安全配置
cat /etc/profile /etc/csh.login /etc/csh.cshrc /etc/bashrc 2>/dev/null |grep umask
检查是否包含umask值umask 是一个Unix/Linux系统中用于设置文件和目录的默认访问权限的命令或参数。它代表用户掩码 (user mask) 。
在Unix/Linux系统中,每个文件和目录都分配了一组访问权限,包括读取 (r)、写入 (w)和执行(x)权限。这些权限决定了谁可以对文件进行何种操作。当创建新文件或目录时,默认的权限由umask值来确定。
例如,如果umask 值设置为022,则新创建的文件将被设置为权限 644 (即用户可读写,其他人只能读取),新创建的目录将被设置为权限 755(即用户具有完全权限,其他人只能访问)。
预期结果:无umask值 (设置错误可能导致文件创建时权限过高)
3.重要目录和文件的权限设置
查找未授权的SUID/SGID文件
find / -perm -04000 2>/dev/null
find / -perm -02000 2>/dev/null
04000代表suid 02000代表sgid
SUID/SGID常用提权操作
suid权限:以文件的属主用户执行进程(张三修改自己的密码 与sudo类似,but sudo是服务,suid是文件权限)
2>/dev/null作用是忽略报错
检查任何人都有写权限的目录:find / -type d -perm -o+w 2>/dev/null
检查隐藏文件和目录
find / -name "*" -print -xdev
find / -name "*" -print -xdev
预期结果:无未授权的suid/sgid权限,无未授权的可写权限目录,无未授权的隐藏文件和目录,逐一排查
4.系统core dump状态
vim /etc/security/limits.conf
添加
soft core 0
hard core 0
3.linux日志审计
syslog 登录事件记录
more /etc/rsyslog.conf
查看参数authpriv值
预期结果:对所有登录事件都记录