Linux安全基线配置
本文记录了在CentOS7服务器上通过SSH终端进行的安全基线配置实验。主要内容包括:1)账号管理与认证授权(设置口令策略、文件权限、访问控制,删除冗余账户);2)系统认证检查(排查风险文件、限制root远程登录、检查特殊权限文件);3)日志审计配置(rsyslog和AUDITD服务);4)进阶安全增强(创建最小权限账户、配置网络防火墙规则、搭建远程日志监控)。实验涉及大量Linux安全命令操作,
实验环境:CentOS 7 Server
备注:因为我安装的CentOS系统没有图形界面,实验步骤将在SSH终端进行,SSH工具为GMSSH
1. Linux 安全基线配置
1.1. 账号管理和认证授权
1.1.1. 用户口令安全基线配置
1.1.1.1. 编辑/etc/login.defs文件修改账户口令的生存期
Vim /etc/login.defs

1.1.1.2. 编辑/etc/pam.d/system-auth文件,设置账户口令长度至少为8位,
Vim /etc/pam.d/system-auth

1.1.1.3. 检查是否存在空口令账户
Awk -F: ‘($2 == “”) {print $1}’ /etc/shadow

1.1.2. 用户访问控制
1.1.2.1. 设置重要文件权限,
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group

1.1.2.2. 由不同人员维护系统和数据库
adduser admin #创建用户admin
passwd admin #为用户admin设置密码
chmod -v u+w /etc/sudoers #增加sudoers文件的读写权限,默认为只读
vim /etc/sudoers #修改sudoers文件
#Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
chmod -v u-w /etc/sudoers #删除sudoers的写入权限



1.1.2.3. 为系统不需要登录的账户设置 nologin
useradd www #创建www用户
useradd mysql_1 #创建mysql_1用户
useradd mysql_2 #创建mysql_2用户
cat /etc/passwd
cat /etc/group



将 www,mysql_1,mysql_2 设置为 nologin

1.1.2.4. 账户和共享账户删除
cat /home/* #检查home目录下的文件
userdel -r username #删除账户


1.1.3. 检查是否存在除 root 以外 UUID 为 0 的用户
awk -F: '($3 == 0) {print $1}' /etc/passwd

1.1.4. root 用户环境变量的安全性
检查用户环境变量是否包含 root 用户的父目录
echo $PATH | egrep '(^|:) (\.|:$)'
'(^|:) (\.|:$)' 666 这啥神仙命令,linux 系统我用了两年没遇到过这种命令!!!!

环境变量不包含 root 用户的父目录
检查是否包含组目录权限为 777 的目录
find / -type d -perm 777

不包含权限为 777 的组目录
1.2. 认证
1.2.1. 检查系统中是否有.netrc 和.rhosts 文件,
运行结果为空则安全,否则不安全,若返回值不为空,需删除文件
find /-name.netrc
find /-name.rhosts

1.2.2. 禁止 root 用户远程登录
不是!不让 root 用户远程登录那我 ssh 呢?
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak #备份sshd_config文件
vim /etc/ssh/sshd_config

1.2.3. 用户的 umask 配置
more /etc/profile
more /etc/csh.login
more /etc/csh.cshre
more /etc/bash

不是!这咋这么多,我本来就没多少时间,这我得看到啥时候,不看了😁直接跳过
1.2.4. 查找未授权的 suid/sgid 文件
for PART in `grep -v ^#/etc/fstab | awk '($6 !="0"){print $2}'`; do
find $PART -perm -04000 -o -perm -02000 -perm -04000 -o -perm -02000 -type f -print
done

?这啥命令?怎么感觉哪里怪怪的
1.2.5. 检查任何人都有写权限的目录
for PART in `grep -v ^#/etc/fstab | awk '$3=="ext2"||$3=="ext3"{print $2}'`; do
find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
done

?咋还是不对劲?运行结果呢??目录呢?
1.2.6. 查找任何人都有写权限的目录
for PART in `grep -v ^#/etc/fstab | awk '($6!="0"){print $2}'`; do
find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print
done

1.2.7. 检查没有属主的文件
for PART in `grep -v ^# /etc/fstab | awk '($6!="0"){print $2}'`; do
find $PART -nouser -o -nogroup -print
done

1.2.8. 检查异常隐含文件
find /-xdev -name ".. *" -print
find /-xdev -name "... *" -print|cat -v

1.3. 日志审计
1.3.1. rsyslog 登录事件记录
more /etc/rsyslog.conf
Authpriv.*/var/log/secure 查看参数Authpriv的值

1.4. rsyslog 的配置审核
1.4.1. 设置 AUDITD 开机自启动
systemctl enable auditd

1.4.2. 判定条件
系统能够审计用户操作
1.4.3. 查看 AUDITD 开机自启状态
systemctl is-enabled auditd

成功设置开机自启!!
2. 提高 Linux 安全基线配置实验
2.1. 用户和权限管理
2.1.1. 创建非 root 账户用户
adduser alpha02

2.1.2. 为用户分配最需要的权限
usermod -aG sudo alpha02

2.1.3. 配置 sudo 规则,限制特定用户对敏感命令的执行
vim sudo
alpha02 ALL=(ALL)NOPASSWD:/path/to/sensitive/command

2.2. 网络和服务配置
2.2.1. 锁定网络配置文件,防止未授权更改
sudo chown root:root /etc/sysconfig/network-scripts/ifcfg-eth0
sudo chown 644 /etc/sysconfig/network-scripts/ifcfg-eth0

2.2.2. 配置防火墙规则,允许或拒绝特定的网络流量
#放行192.168.0.0/24访问TCP 22端口
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="22" accept'
#拒绝192.168.0.0/24访问TCP 80端口
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="80" reject'

2.3. 日志和监控配置
2.3.1. 配置远程日志服务器,确保日志的完整性和可用性
sudo yum install rsyslog-gnutls
sudo vim /etc/rsyslog.conf
#在末尾添加以下内容
*.* @@remote_server:port


2.3.2. 设置实时监控告警,以便快速响应潜在的威胁
sudo yum install nagios-nrpe-plugin
sudo vim /etc/nagion3/nrpe.cfg
#在文件末尾添加以下内容
command{check_disk}=/usr/lib/nagion3/plugin3/plugins/check_disk


终于写完了!这么长的作业是不是应该加 90 学分!😁😁😁😁
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)