项目安全等保测评加固手册



前言

安全等级测评的目的是通过对目标系统在安全技术及管理方面的测评,对目标系统的安全技术状态及安全管理状况做出初步判断,给出目标系统在安全技术及安全管理方面与其相应安全等级保护要求之间的差距。测评结论作为委托方进一步完善系统安全策略及安全技术防护措施依据


一、服务器侧等保测评项目及加固

1、服务器未启用密码长度以及口令复杂度、且未定期更新口令

	整改建议:
		建议修改密码长度、口令复杂度以及定期90天更换口令。
		
	整改方法:
		logindefs(){
   
		  echo "---口令生存期---"
		  cp -p /etc/login.defs /etc/login.defs_bak
		  sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/g' /etc/login.defs
		  sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS 10/g' /etc/login.defs
		  sed -i 's/^PASS_WARN_AGE.*/PASS_WARN_AGE 7/g' /etc/login.defs
		}
		system_auth_crack(){
   
		  echo "---口令复杂度及密码长度---"
		  # 判断 system-auth 配置文件中是否包含 password requisite pam_cracklib.so 的配置
		  if grep -q 'password requisite pam_cracklib.so' /etc/pam.d/system-auth; then
		  # 如果有,则使用 sed 命令替换原有的行
		        sed -i 's/^password.*requisite.*pam_cracklib.so$/& try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8/g' /etc/pam.d/system-auth
		  else
		    # 如果没有,则添加新的一行
		       echo "password requisite  pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8" >> /etc/pam.d/system-auth
		  fi
		}

2、服务器未限制非法登录次数,未设置登录连接超时自动退出

	整改建议:
		建议限制非法登录次数;设置登录连接超时自动退出,如:连续登录3次锁定10分钟,并无操作10分钟自动退出。
	
	整改方法:
		login_timeout(){
   
			  # 检查 /etc/profile 文件是否存在
			if [ ! -f /etc/profile ]; then
			  echo "/etc/profile 文件不存在"
			  exit 1
			fi
			
			# 使用 sed 命令检查文件末尾是否已经存在所需的两行内容,不存在则添加
			if ! grep -q '^TMOUT=' /etc/profile; then
			  echo 'TMOUT=300' >> /etc/profile
			else
			  sed -i 's/^TMOUT=.*/TMOUT=300/' /etc/profile
			fi
			
			if ! grep -q '^export TMOUT' /etc/profile; then
			  echo 'export TMOUT' >> /etc/profile
			fi
	}

3、服务器只采用密码技术对用户的身份进行鉴别,未采用双因子认证;服务器未限制管理终端登录

	整改建议:
		服务器只采用密码技术对用户的身份进行鉴别,未采用双因子认证。
		因为维护的项目都是通过vpn(短信验证)-->堡垒机(短信验证)-->登录服务器,最后沟通这项可以按如下修复。即服务器配置ssh白名单,只允许堡垒机登录
	
	整改方法:
		vim /etc/hosts.deny #添加以下配置
		sshd:all:deny 

		vim /etc/hosts.allow #添加以下配置
		sshd:堡垒机IP:allow

4、Rc3.d文件权限过大755

	整改建议:
		建议修改rc3.d的读写权限为755以下
	
	整改方法:
		chmod 644  -R /etc/rc.d/rc3.d

5、未有第三方审计系统,未对审计记录进行定期备份

	整改建议:
		未有第三方审计系统,未对审计记录进行定期备份;

	整改方法:
		1、服务器开启audit服务
		2、使用aidutctl -l命令查看审计策略
		3、使用auditctl -w 路径/文件 -p 权限 命令对文件或目录配置审计策略
		   补充: 使用auditctl -W 路径/文件 -p 权限 命令是取消审计策略
		4、使用ausearch -f 配置的路径/文件  查看对应的审计日志
		5、使用AuditLogSync.py脚本+ip_address.txt文件实现将全部服务器的audit.log日志备份并同步到日志归档服务器。脚本如下所示
		6、在日志归档服务器配置定时同步,即可
			[root@LogArchive]# crontab -e
				* */23 * * *  /usr/bin/python3 -W ignore /path/AuditLogSync.py
    #!/usr/bin/env python3
	#Date: 202403212005
	import os
	import time
	import paramiko
	import logging
	from datetime import datetime
	import threading
	import inspect
	
	
	class AuditLogSync:
	    def __init__(self, ip_file,audit_path,username,password,port):
	        """
	        初始化AuditLogSync类
	
	        Parameters:
	        ip_file (str): 包含IP地址列表的文件路径
	        audit_path (str): 审计日志路径
	        username (str): 用户名
	        password (str): 密码
	        port    (int):  端口
	        """
	        self.ip_file = ip_file
	        self.audit_path=audit_path
	        self.username = username
	        self.password = password
	        self.port = port
	        #生成日期
	        self.current_time = datetime.now().strftime("%Y%m%d")
	        #生成审计日志归档目录
	        self.export_dir = f"/export/AuditLogSync/{
     self.current_time}"
	        #生成执行日志
	        self.info_log_file = "/export/AuditLogSync/sync_info.log"
	        self.error_log_file = "/export/AuditLogSync/sync_error.log"
	         # 设置 info 日志记录器
	        self.info_logger = logging.getLogger('info_logger')
	        info_handler = logging.FileHandler(self.info_log_file)
	        info_handler.setLevel(logging.INFO)
	        info_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
	        info_handler.setFormatter(info_formatter)
	        self.info_logger.addHandler(info_handler)
	        self.info_logger.setLevel(logging.INFO)
	        # 设置 error 日志记录器
	        self.error_logger = logging.getLogger('error_logger')
	        error_handler = logging.FileHandler(self.error_log_file)
	        error_handler.setLevel(logging.ERROR)
	        error_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
	        error_handler.setFormatter(error_formatter)
	        self.error_logger.addHandler(error_handler)
	        #判断审计日志归档目录是否存在
	        if not os.path.exists(self.export_dir):
	            os.makedirs(self.export_dir)
	    
	    def run_operations(self):
	        """
	        运行一系列操作:连接到服务器,打包日志文件,执行rsync同步
	        """
	        # 从文件中读取IP地址列表
	        with open(self.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值