当前位置: 首页 > news >正文

Linux系统等保三级安全加固执行手册(ReahtCentosKylin)

一、认证口令加固

1.1 限定口令长度和复杂度
以root用户权限执行如下操作

cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak		//备份源文件
vim /etc/pam.d/system-auth		//编辑配置文件
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

在这里插入图片描述

retry=3 定义登录/修改密码失败时,可以重试的次数;
minlen=10 密码最小长度为10个字符。
lcredit=-1 密码应包含的小写字母的至少一个
ucredit=-1 密码应包含的大写字母至少一个
Dcredit=-1 将密码包含的数字至少为一个
ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个
enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略。

1.2 限定口令的生存周期

chage -M 90 -m 7 -W 15 root
chage -l root

修改用户密码最长有效期90天,最短有效期7天,提前15天提醒。
在这里插入图片描述
通过vim /etc/login.defs命令修改配置文件

PASS_MAX_DAYS   90		//设置口令最长使用期限
PASS_MIN_DAYS   7			//设置口令最短使用期限
PASS_MIN_LEN    10		//设置口令最小长度
PASS_WARN_AGE   15		//设置口令到期前的提示日期

在这里插入图片描述
1.3 设置登陆会话超时
10分钟无操作,自动退出会话。

echo "export TMOUT=300" >> /etc/profile
source /etc/profile		//重新加载环境变量配置文件
cat /etc/profile | grep TMOUT

在这里插入图片描述
1.4 设置登陆失败锁定
输错5次密码,账号锁定10分钟。

vim /etc/pam.d/system-auth
auth required pam_tally2.so  onerr=fail  deny=5  unlock_time=300 even_deny_root root_unlock_time=600

以上配置只对控制台有效,ssh无效。
在这里插入图片描述
针对对ssh远程有效,则修改/etc/pam.d/sshd

vim /etc/pam.d/sshd
auth required pam_tally2.so  onerr=fail  deny=5  unlock_time=60 even_deny_root root_unlock_time=60

在这里插入图片描述

二、用户设定

2.1 Linux系统下新建三权分立用户

系统管理员(sysadmin):
useradd sysadmin
echo XXXxxx#gg%GG12345 | passwd --stdin sysadmin
usermod -g sysadmin sysadmin
usermod -aG wheel sysadmin安全员(security):
useradd security
echo XXXxxx#gg%GG12345 | passwd --stdin sysadminmJElf%lujfl9021审计员(auditor)用户:
useradd auditor
echo XXXxxx#gg%GG12345 | passwd --stdin sysadmin

在这里插入图片描述
2.2 设置不允许root登录
编辑/etc/ssh/sshd_config配置文件

sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

在这里插入图片描述
2.3 权限切换限制
限制用户su到root,只允许wheel组的su。
去掉该行注释,保存退出。
在这里插入图片描述

sed -i "/^#.*required/s/^#//" /etc/pam.d/su
sed -i '/required/s/pam_sysadmin.so use_uid/\/lib\/security\/pam_sysadmin.so group=sysadmin/' /etc/pam.d/su

三、日志审计及历史命令

3.1 开启日志外发至日志审计服务器
添加rsyslog日志服务器信息:

echo *.*' '@192.168.100.44:514 >> /etc/rsyslog.conf
echo *.*' '@192.168.100.45:514 >> /etc/rsyslog.conf
cat /etc/rsyslog.conf | grep 514
systemctl restart rsyslog.service

在这里插入图片描述

3.2 设置历史命令记录条数

sed -i 's/HISTSIZE=1000/HISTSIZE=10/' /etc/profile
source /etc/profile
echo $HISTSIZE

在这里插入图片描述

四、附shell执行脚本

文件 :DengBao_Level3.sh

 #!/bin/bash#1、执行命令启用auditd服务:service auditd start
systemctl start auditd#2、执行命令service rsyslog start启用rsyslog服务
systemctl start rsyslog#修改审计策略规则
cat <<EOF | tee -a /etc/audit/rules.d/audit.rules /etc/audit/audit.rules >/dev/null
-a always,exit
-F arch=b64
-S unlink
-S unlinkat
-S rename
-S renameat
-F auid>=1000
-F auid!=4294967295
-k delete
-a always,exit
-F arch=b32
-S unlink
-S unlinkat
-S rename
-S renameat
-F auid>=1000
-F auid!=4294967295
-k delete
EOFcat <<EOF | tee -a /etc/audit/rules.d/audit.rules /etc/audit/audit.rules >/dev/null
-w /etc/group
-p wa -k identity
-w /etc/passwd
-p wa
-k identity
-w /etc/gshadow
-p wa -k identity
-w /etc/shadow
-p wa
-k identity
-w /etc/security/opasswd
-p wa
-k identity
EOFcat <<EOF | tee -a /etc/audit/rules.d/audit.rules /etc/audit/audit.rules >/dev/null-w /etc/sudoers
-p wa
-k scope
-w /etc/sudoers.d/
-p wa
-k scope
EOFecho "backlog_limit = 8192" >> /etc/audit/auditd.conf#创建三权用户,只允许sysadmin用户执行用户切换及提权
#系统管理员(sysadmin):
useradd sysadmin
echo "sysadmin:XXXxxx#gg%GG12345" | chpasswd
usermod -aG wheel sysadmin#安全员(security):
useradd security
echo "security:XXXxxx#gg%GG12345" | chpasswd#审计员(auditor)用户:
useradd auditor
echo "auditor:XXXxxx#gg%GG12345" | chpasswdsed -i 's/#\s*auth\s*required\s*pam_wheel.so\s*use_uid/auth required pam_wheel.so use_uid/g' /etc/pam.d/su#检查/etc/sudoers配置sudo权限的用户,不能所有用户都配置(ALL)权限
sed -i 's/root\s*ALL=(ALL)\s*ALL/root    ALL=(sysadmin)       ALL/g' /etc/sudoers#检查`/etc/bashrc`和`/etc/profile`文件中`umask`值是否设置为`027`或更严格,否则添加或编辑umask参数: `umask 027` 执行命令:`source /etc/profile`;     
echo "umask 027" >> /etc/profile
source /etc/profile#确保每个用户的home目录权限设置为750或者更严格
chmod 750 /home/*#sed -i 's/PermitRootLogin\s*yes/PermitRootLogin no/g' /etc/ssh/sshd_config
#sed -i 's/#PermitRootLogin\s*yes/PermitRootLogin no/g' /etc/ssh/sshd_config
#sed -i 's/#PermitRootLogin\s*no/PermitRootLogin no/g' /etc/ssh/sshd_configcat <<EOF | tee -a /etc/ssh/sshd_config >/dev/null
AllowUsers root@192.168.25.100
AllowUsers root@192.168.25.200
AllowUsers sysadmin@*
AllowUsers security@*
AllowUsers auditor@*
#DenyUsers root@*
EOFusermod -L shutdown
usermod -L halt#执行以下4条命令:  ```chown root:root /etc/hosts.allow  chown root:root /etc/hosts.deny  chmod 644 /etc/hosts.deny  chmod 644 /etc/hosts.allow ```
#chown root:root /etc/hosts.allow 
#chown root:root /etc/hosts.deny 
#chmod 644 /etc/hosts.deny 
#chmod 644 /etc/hosts.allow#执行以下5条命令  ```chown root:root   chmod 0644 /etc/group  chmod 0644 /etc/passwd  chmod 0400 /etc/shadow  chmod 0400 /etc/gshadow ```
#chmod 0644 /etc/group
#chmod 0644 /etc/passwd
#chmod 0400 /etc/shadow
#chmod 0400 /etc/gshadow#设置 /etc/ssh/sshd_config 的权限:  ```chown root:root /etc/ssh/sshd_config  chmod 600 /etc/ssh/sshd_config  ```
#chown root:root /etc/ssh/sshd_config
#chmod 600 /etc/ssh/sshd_config#配置/etc/profile文件权限: ```chown root:root /etc/profile  chmod 644 /etc/profile ```
#chown root:root /etc/profile
#chmod 644 /etc/profile#运行以下命令以设置ssh主机公钥文件的权限和所有权:  ```find /etc/ssh -xdev -type f -name 'ssh_host_*_key.pub' -exec chmod 0644 {} \; find /etc/ssh -xdev -type f -name 'ssh_host_*_key.pub' -exec chown root:root {} \;  ```find /etc/ssh -xdev -type f -name 'ssh_host_*_key.pub' -exec chmod 0644 {} \;
find /etc/ssh -xdev -type f -name 'ssh_host_*_key.pub' -exec chown root:root {} \;  #运行以下命令以设置ssh主机私钥文件的权限和所有权:  ```
find /etc/ssh -xdev -type f -name 'ssh_host_*_key' -exec chmod 0600 {} \;
find /etc/ssh -xdev -type f -name 'ssh_host_*_key' -exec chown root:root {} \;#在`/etc/ssh/sshd_config`中取消`MaxAuthTries`注释符号#,设置最大密码尝试失败次数3-6,建议为5:`MaxAuthTries 5`
sed -i 's/#MaxAuthTries\s*6/MaxAuthTries 5/g' /etc/ssh/sshd_config#限定口令长度和复杂度
#备份源文件
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
#编辑修改替换配置文件
sed -i 's/password\s*requisite\s*pam_pwquality.so\s*try_first_pass local_users_only\s*retry=3\s*authtok_type=/password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root/g'  /etc/pam.d/system-authsed -i 's/password\s*requisite\s*pam_pwquality.so\s*try_first_pass\s*local_users_only/password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root/g'  /etc/pam.d/system-authchage -M 90 -m 7 -W 15 root
chage -M 90 -m 7 -W 15 sysadmin
chage -M 90 -m 7 -W 15 security
chage -M 90 -m 7 -W 15 auditorecho "export TMOUT=300" >> /etc/profile
source /etc/profileecho "auth required pam_tally2.so  onerr=fail  deny=5  unlock_time=600 even_deny_root root_unlock_time=600" >> /etc/pam.d/system-auth
echo "auth required pam_tally2.so  onerr=fail  deny=5  unlock_time=600 even_deny_root root_unlock_time=600" >> /etc/pam.d/sshdecho *.*' '@192.168.10.44:514 >> /etc/rsyslog.conf
echo *.*' '@192.168.10.45:514 >> /etc/rsyslog.confsystemctl restart rsyslog.service#sed -i 's/HISTSIZE=1000/HISTSIZE=10/' /etc/profile
#source /etc/profile#NTP时间同步
echo "server 192.168.10.250 iburst" >> /etc/chrony.conf
systemctl restart chronyd.service
chronyc sources
chronyc makestep#auditd服务器系统中被配置为不允许手动关闭及重启
#systemctl restart auditd
systemctl restart rsyslog
systemctl restart sshd.service

五、附ansible批量执行剧本

文件:DengBao_Level3_Ansible.yml

---
- name: Upload and execute script on remote servershosts: allremote_user: root  # 指定远程用户become: yes  # 如果需要以其他用户(如root)身份执行任务become_user: rootgather_facts: yesvars:local_script_path: "/zdreamsi/DengBao_Level3.sh"remote_script_path: "/tmp/DengBao_Level3.sh"tasks:- name: Upload the script to the remote serveransible.builtin.copy:src: "{{ local_script_path }}"dest: "{{ remote_script_path }}"mode: '0777'register: copy_result- name: Fail if upload failedansible.builtin.fail:msg: "Failed to upload script to {{ inventory_hostname }}"when: copy_result.failed- name: Execute the uploaded scriptansible.builtin.command: "{{ remote_script_path }}"register: script_outputignore_errors: yes- name: Display the script outputansible.builtin.debug:msg: "{{ script_output.stdout_lines }}"- name: Delete the script from the remote serveransible.builtin.file:path: "{{ remote_script_path }}"state: absentwhen: script_output is defined and script_output.rc == 0ignore_errors: yes- name: Log the resultansible.builtin.lineinfile:path: "/var/log/ansible_script_execution.log"line: "{{ inventory_hostname }} - {{ ansible_date_time.date }} - {{ script_output.rc }}"create: yes
http://www.dtcms.com/a/337621.html

相关文章:

  • mq存量消息如何处理
  • STM32G4 Park及反Park变换(一)matlab建模
  • Spark 运行流程核心组件(三)任务执行
  • C语言基础:变量与进制详解
  • 直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化
  • 计算机网络技术-交换机配置(Day.2)
  • 戴尔易安信 PowerEdge R540服务器系统安装教程
  • 深度学习篇---卷积
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • IoT/透过oc_lwm2m和at源码,分析NB-IoT通信模组和主板MCU之间的通信过程
  • 自建K8s集群无缝集成阿里云RAM完整指南
  • 重温 K8s 基础概念知识系列五(存储、配置、安全和策略)
  • Kubernetes(K8s)常用命令全解析:从基础到进阶
  • kubeadm方式部署k8s集群
  • 备考国央企-算法笔记-01链表
  • HakcMyVM-Friendly
  • MongoDB Windows 系统实战手册:从配置到数据处理入门
  • Esp32基础(③旋转编码器)
  • 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
  • 上海1KM人口热力数据分享
  • 音频分类模型笔记
  • rust 从入门到精通之变量和常量
  • 杂记 04
  • 脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像
  • python的课外学习生活活动系统
  • 视觉语言导航(13)——AIR-VLN 4.3
  • Mysql核心框架知识
  • 学习雪花算法
  • 冒泡排序——简单理解和使用
  • NVIDIA 技术沙龙探秘:聚焦 Physical AI 专场前沿技术