基本知识:
更改文件夹拥有者
chown -R root 文件夹 文件夹权限给root -R递归文件
chown -R root:root 文件夹 文件夹权限给root 文件夹权限给root组
文件夹授权
chmod [options] mode files
chmod -R 777 文件夹名 777 为最高权限 所有用户可读可写可执行
三 、开启系统审计(审计功能在用户分权之前做,要不然重启的时候涉及到文件权限麻烦)
查询审计功能
service auditd status
#审计日志文件目录
/var/log/audit/audit.log
#编辑审计配置文件
vi /etc/audit/rules.d/audit.rules
加入以下配置规则:
#自定义审计规则
设置规则所有对passwd文件的写、属性修改操作都会被记录审计日志
-w /etc/passwd -p wa -k passwd_change
-w /etc/shadow -p wa -k shadow
-w /etc/hosts -p wa -k hosts
-w /etc/hosts.allow -p wa -k hosts-allow
-w /etc/hosts.deny -p wa -k hosts-deny
-w /etc/fstab -p wa -k fstab
或者在命令前加auditctl 不需要重启审计服务器立即生效,但是是临时性的,重启后就会失效
auditctl -w /etc/passwd -p wa -k passwd_change
auditctl -w /etc/shadow -p wa -k shadow
auditctl -w /etc/hosts -p wa -k hosts
auditctl -w /etc/hosts.allow -p wa -k hosts-allow
auditctl -w /etc/hosts.deny -p wa -k hosts-deny
auditctl -w /etc/fstab -p wa -k fstab
#重启审计服务
service auditd restart
#查询审计配置规则
auditctl -l
一、应授予管理用户所需的最小权限,实现管理用户的权限分离
1、系统管理员
创建系统管理员(sys用户)并设置密码
[root@localhost ~]# useradd sys
[root@localhost ~]# passwd sys
创建组并将用户添加到组(/var是要给用户权限访问的路径)
[root@localhost ~]# groupadd sysgroup
[root@localhost ~]# usermod -G sysgroup sys
[root@localhost ~]# chown -R sys:sysgroup /var
设置目录权限(不要执行这个语句太坑了会导致SSH连接失败,/var必须是root用户的)
[root@localhost ~]# chmod 741 /var
问题修复SSH无法连接不影响 linux服务器直接登录 修改/var权限
查看用户所在组
cd /var/log
less secure
chown -R root:root /var
chmod 744 /var/empty/sshd
service sshd restart
2、安全管理员
创建用户并指定登录的起始目录
[root@localhost ~]# useradd -d /etc anquan
[root@localhost ~]# passwd anquan
只允许anquan用户访问/etc
[root@localhost ~]# chown -R anquan:anquan /etc
设置目录权限
[root@localhost ~]# chmod 700 /etc
3、审计管理员
创建用户
[root@localhost ~]# useradd shenji
[root@localhost ~]# passwd shenji
设置shenji用户只有查看权限
[root@localhost ~]# vim /etc/sudoers //或者 vi /etc/sudoers
shenji ALL = (root) NOPASSWD: /usr/bin/cat , /usr/bin/less , /usr/bin/more , /usr/bin/tail , /usr/bin/head
设置shenji用户只能访问/var/log
[root@localhost ~]# chown -R shenji:shenji /var/log
设置目录权限
[root@localhost ~]# chmod 700 /var/log
4、用户查看
cat /etc/passwd 查看所有用户 pid>=1000的为自建用户。
二、Nginx未开启审计日志access.log
1、开启审计日志
2、日志分片
#nginx日志切割脚本
#!/bin/bash
#设置日志文件存放目录
logs_path="/home/app/user/local/nginx-1.23.1/logs/"
#日志切割
cd /home/app/user/local/nginx-1.23.1/logs
if [ ! -d log-bak ] ; then
mkdir -p log-bak
fi
#重命名日志文件
#mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
mv /home/app/user/local/nginx-1.23.1/logs/access.log /home/app/user/local/nginx-1.23.1/logs/log-bak/access_$(date -d "yesterday" +"%Y%m%d").log
nginx -s reopen
#删除180天前的文件
find /home/app/user/local/nginx-1.23.1/logs/log-bak/ -mtime +180 -type f -exec rm -rf {} \;
3 、加入定时任务
配置可执行
chmod u+x /home/app/user/local/nginx-1.23.1/logs/rzqg.sh
配置到定时任务中
crontab -e
#每晚凌晨1点执行
0 1 * * * /home/app/user/local/nginx-1.23.1/logs/rzqg.sh
四、服务器未配置hosts.allow和hosts.deny管理终端的IP白名单
vim /etc/hosts.deny
sshd:ALL
vim /etc/hosts.allow
sshd:192.168.*:allow
五、linux登录用户身份标识鉴别,密码长度,密码复杂度,登录超时设置,登录失败锁定
1、密码长度
vim /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 2
PASS_MIN_LEN 15
PASS_WARN_AGE 15
PASS_MAX_DAYS 99999 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码
以上针对新用户的针对老用户
设置密码有效期90天
chage -M 90 username
2、密码复杂度
vim /etc/pam.d/system-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=15 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=1 enforce_for_root
参数说明
负数:代表最少出现次数,正数:代表最多出现次数
minlen=15,密码长度至15位;
lcredit=-1,至少包含一个小写字母;
ucredit=-1,至少包含一个大写字母;
dcredit=-1,至少包含要给数字;
ocredit=-1,至少包含一个特殊字符;
difok=1,新密码最多与旧密码重复1个字符;
enforce_for_root,对root强制执行密码复杂度策略。
3、登录超时设置
vi /etc/profile
TMOUT=9000
#刷新配置文件
source /etc/profile
4、设置登录失败锁定
控制台失败登录锁定
vim /etc/pam.d/system-auth
auth required pam_tally2.so notallow=fail deny=5 unlock_time=60 root_unlock_time=60
SSH失败登录锁定
vim /etc/pam.d/sshd或者 vim /etc/pam.d/sshd.rpmsave
auth required pam_tally2.so deny=5 unlock_time=60 even_deny_root root_unlock_time=60