安全加固(Linux加固2)
-
1.用户默认umask值
- 修改启动脚本文件
/etc/profile/etc/csh.login/etc/csh.cshre/etc/bashrc
- 在文件末尾加入
umask值
- 修改启动脚本文件
-
2.检查是否配置有
sudo权限sudo -v- 如果系统已经配置了
sudo权限,则该命令不会提示输入密码并返回成功。 - 如果系统未配置
sudo权限,则该命令将提示错误消息。

- 如果系统已经配置了
-
3.检查根账户是否
改名grep ^root: /etc/passwd

-
4.检查是否存在
UID为0的其他账户- 检查哪些账户的UID为0
awk -F: '($3 == 0) { print $1 }' /etc/passwd
对/etc/passwd文件进行逐行查找,以":"为分隔符对于第三列($3)为0的行,显示第一列的值(print 0$1),即查找所有UID等于0的账户
- 检查哪些账户的UID为0
-
5.检查是否有账户位于
高权限组grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk “ {print $2} ”awk -F: '$3>500{print $1}' /etc/passwd | xargs -I {} grep {} /etc/groupgrep -v "/sbin/nologin" /etc/passwd | awk -F : ' {print $1}' | xargs -I {} grep {} /etc/group

-
6.检查
密码生最长使用期限- 查看
cat /etc/login.defs PASS_MAX_DAYS90 最长使用期限
- 查看
-
7.检查是否开启
密码复杂性要求- 需要修改密码策略文件
vi /etc/security/pwquality.conf dcredit、ucredit、lcredit 和 ocredit 都为1,表示开启- 要禁用密码复杂性检查,请将
dcredit、ucredit、lcredit 和 ocredit的值设置为 -1。 - 修改后需要使用
wq退出然后systemctl restart systemd-logind.service重新启动服务

- 要禁用密码复杂性检查,请将
- 需要修改密码策略文件
-
8.检查是否设置
强制密码历史cat /etc/pam.d/system-auth

-
9.检查是否设置账户
登录锁定策略- 目的:防止被连续试探密码,
降低爆破可能性 - 实施方法
- 修改
pam认证文件/etc/pam.d/system-auth/etc/pam.d/sshd/etc/pam.d/login
- 添加
auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=60


- 修改
- 目的:防止被连续试探密码,
-
10.检查是否禁止
普通用户使用su切换根账户 -
目的:避免任何人使用su切换到root,减少提权风险
-
实施办法
- 修改su的配置文件
/etc/pam.d/suauth sufficient /lib.security/pam_rootok.so
- 修改su的配置文件
-
如果需要su 切换,将用户加入到
wheel组gpasswd -a username wheel

-
11.检查账户相关文件
权限是否过大ls -l查看相关文件权限sudo find / -type f -o -type d -name ".*" -prune -o -print

-
12.检查配置文件
权限是否过大sudo find /etc -type f -name "*.conf" | xargs -I{} ls -lh {}
-
13.检查是否存在
高风险别名
指令:grep -i "alias" .bashrc .bash_profile /etc/profile
效果:
解释:rm -rf,应该被认为是高风险别名。
-
在 Linux 系统中,可以通过检查
shell 配置文件和环境变量来确定是否存在高风险别名。以下是一些可能存在高风险别名的常见配置文件和环境变量:-
~/.bashrc:这是 Bash shell 的启动脚本,它包含了用户定义的别名和其他设置。
-
~/.bash_profile:这是 Bash shell 的主要配置文件,它通常会引用.bashrc文件并包含一些系统级的设置。
-
/etc/profile:这是系统级别的配置文件,它包含所有用户的 Bash shell 的默认设置。
-
-
14.检查是否存在
suid位和sgid位
find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;

-
15.检查是否正确记录
日志审核vi /etc/rsyslog.conf- 确认关键日志审计存在

-
16.检查是否配置
日志服务器- 修改应用服务器日志配置文件
vi /etc/rsyslog.conf- 开启接收日志功能
$ModLoad imudp$UDPServerRun 514$template Remote, "/var/log/%$YEAR%-%$MONTH%-%$DAV%/%fromhost-ip%.log"` 远程日志路径
:fromhost-ip, !isequal, “127.0.0.1°?Remote本地日志不存储远程服务

- 修改应用服务器日志配置文件
-
17.检查
日志文件权限是否过大 -
ls -la /var/log/

-
18.检查重要
文件底层属性是否加固lsattr /etc/resolv.conf

-
19.检查是否
启用telnet进行远程管理 -
使用命令检查
rpm -qa | grep telnet

- 显示状态
systemctl status telnet.socket
-
20.检查
sshd服务是否使用默认端口- 修改配置文件
vi /etc/ssh/sshd_config
-
禁止root登录,修改默认端口,开启v2版本
PermitRootLogin noPort 20202Protocol 2
-
重启服务
systemctl restart sshd

-
21.检查
sshd服务是否禁用根账户登录
PermitRootLogin yes表示没有禁用

-
22.检查
sshd是否配合白名单限制登录- 检查是否包含
AllowUsers或AllowGroups参数。- 包含则表示配置了白名单限制登录
- 检查是否包含
-
23.检查
hosts文件是否写入常用解析
cat /etc/hosts | egrep -v "^#|^$|localhost" | awk '{print $2}' | sort | uniq
没有输出内容
-
24.检查是否对
syn flood攻击进行防御 -
目的:缓解
syn flood攻击 -
实施方法:
- 修改系统控制文件
- `vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
- 配置生效
sysctl -p


- 修改系统控制文件
-
25.检查是否
响应ICMP协议请求 -
sudo sysctl net.ipv4.icmp_echo_ignore_all- 检测
net.ipv4.icmp_echo_ignore_all = 0 - 如果输出结果为
“net.ipv4.icmp_echo_ignore_all = 1”,则表示系统已配置为忽略所有ICMP回声请求,即不响应任何ping请求。如果输出结果为“net.ipv4.icmp_echo_ignore_all = 0”,则表示系统未配置为忽略所有ICMP回声请求,即响应所有ping请求。
- 检测
-
目的:
对ICMP请求作出响应,避免泄露信息 -
修改
网络策略布尔值
echo 1>/proc/sys/net/ipv3/icmp_echo_ignore_all -
26.检查是否开启
无源路由转发 -
目的:
- 防止被无源数据包利用
-
实施方法
- 检查是否开启了路由功能
sysctl -n net.ipv4.conf.all.accept_source_routeecho 0>/proc/sys/net/ipv4/conf/all/accept_source_route
- 检查是否开启了路由功能
-
27.检查
半连接上限是否过高- 目的:修改半连接上线,缓解
syn flood攻击 - 实施方法:
- 查询当前半连接上限:
sysctl net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_max_syn_backlog = 4096
- 查询当前半连接上限:
- 目的:修改半连接上线,缓解
-
28.检查
vsftpd服务是否启用白名单限制- 判断字段
write_enable是否启用 write_enable=YESlocal_umask=022anon_umask=022

- 判断字段
-
29.检查
vsftpd服务是否关闭匿名登录
1.systemctl status vsftpd
2.grep anonymous_enable /etc/vsftpd/vsftpd.conf
·如果输出结果为"anonymous_enable=YES",则表示该服务器允许匿名登录。

-
30.检查
vsftpd是否配置上传文件的默认权限- 查看是否包含
file_open_mode=0666字段 - 加入
local_umask=077字段- 设置掩码为
077,这意味着新创建的文件将只有vsftpd用户具有读取和写入权限。

- 设置掩码为
- 查看是否包含
-
31.检查
vsftpd是否配置低风险banner信息 -
目的:防止泄露服务信息
-
实施方法
- 检查主配置文件
/etc/vsftpd.conf是否存在如下内容 ftpd_banner=” Authorized users only. All activity may be monitored and reported.”

可以确认没配置
- 检查主配置文件
-
32.检查
nfs组件是否存在,且进程启动 -
目的:防止被外挂文件系统,导致入侵
-
实施方法
- 检查是否存在敏感进程
ps aux | grep -E "lockd|nfsd|statd|mountd"

- 检查是否存在敏感进程
-
检查
关闭NFS相关服务systemctl list-unit-files | grep nfssystemctl disable nfs-client.target

- 可以看到组件已经存在,且
进程启动。
-
33.检查是否安装了
多余风险软件
rpm -qa

-
34.检查是否
关闭登录系统时的banner信息 -
cat /etc/issue检查系统banner信息

-
35.检查是否设置
登录空闲超时 -
未在
/etc/profile中设置- TMOUT 字段
- readonly TMOUT
- export TMOUT

-
36.检查是否保留了
过长的命令历史记录 -
目的:降低之前操作被窃取的风险
-
实施方法
- 修改
/etc/profile vi /etc/profile- 修改信息
HISTSIZE=50
- 生效
source /etc/profile

- 修改
-
37.检查
grub菜单停留时间是否过长 -
目的:防止在
grup菜单对引导过程进行修改 -
实施方法
- 修改
grup配置文件vi /boot/grup2/grup.cfg
- 修改等时
set timeout=0
- 修改
-
38.检查是否存在
ctrl+atl+del重启快捷键- 默认是
有的,全部都注释掉,防止重启 vi /usr/lib/systemd/system/ctrl-alt-del.target

- 默认是































