Windows及Linux系统加固
一、Windows加固
1、配置简介
-
通常在
Windows
安全配置中有两类对象- 一类是
Windows Server
,如win server 2012 、win server 2016、win server 2019
等 - 一类是
Windows Client
,如win 7、 win 8 、win 10
等
- 一类是
-
在
Windows
安全配置中,如果组织有条件,对Windows Client
的安全配置我们可以借助微软的活动目录来实现自动化。 -
而对
Windows Server
通常为保障服务器稳定运行,我们倾向于的是手动配置。 -
以
Windows Server 2012 R2
为例,进行加固讲解
Windows安全配置方法
- 通常我们使用组策略对
windows
进行安全配置 - 组策略中的安全配置与注册表也可以对应,但注册表可读性较差。组策略 有详细的说明,所以我们通常使用组策略
- 在windows客户端系统中,HOME版本是没有组策略的的功能。
- 打开组策略的方法是
右键开始-->运行-->gpedit.msc
WIN+R -->gpedit.msc
Windows 不论什么版本,进行安全配置均包含以下两个常用维度
- 账户策略
- 密码策略
- 账户锁定策略
- 本地策略
- 审计策略
- 用户权限策略
- 安全选项
除了上述常用的配置,还会包含以下两个维度
- 防火墙策略
- 域配置文件
- 私有网络配置文件
- 高级审计策略
- 账户登录
- 账户管理
- 详细跟踪
- 登录/注销
- 对象访问
- 策略更改
2、账户配置
密码策略
- 强制密码历史,建议设置为24个
- 密码最长使用期限,建议设置60天
- 密码最短使用期限,建议设置为1天或更多
- 密码长度最小值,建议设置为14
- 密码必需符合复杂性要求,建议设置为启用
- 用可还原的加密码来存储密码,建议设置为禁用
账户锁定策略
- 账户锁定阈值,建议设置为10次或更少
- 账户锁定时间,建议设置为15分钟或更多
- 重置账户锁定计数器,建议设置为15分钟或更多
3、本地配置
用户权限分配
- 作为受信任的呼叫方访问凭据管理器,建议设置为空。默认为空
- 从网络访问此计算机,建议设置为Administrator,Authenticated Users,ENTERPRISE DOMAIN CONTROLLERS(域控设置)
- 以操作系统方式执行,建议设置为空,默认为空
- 将工作站添加到域,建议设置为Administrators
- 为进程调整内存配额,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE
- 允许本地登录,建议设置为Administrators
- 允许通过远程桌面服务登录,建议设置为Administrators, Remote Desktop Users(客户端设置)
- 备份文件和目录,建议设置为Administrators
- 更改系统时间,建议设置为Administrators, LOCAL SERVICE
- 更改时区,建议设置为Administrators, LOCAL SERVICE
- 创建页面文件,建议设置为Administrators
- 创建一个信息对象,建议设置为空
- 创建全局对象,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE,SERVICE
- 创建永久共享对象,建议设置为空
- 创建符号链接,建议设置为Administrators
- 调试程序,建议设置为Administrators
- 拒绝从网络访问这台计算机,建议设置为Guests, 本地的administrators中的其它用户或组。
- 拒绝作为批处理作业登录,建议设置为Guest
- 拒绝以服务身份登录,建议设置为Guest
- 拒绝本地登录,建议设置为Guest
- 拒绝通过远程桌面服务登录,建议设置为Guest和需要的本地用户
- 信任计算机和用户账户可以执行委派,建议设置为空,域控设置为Administrators
- 从远程系统强制关机,建议设置为Administrators
- 生成安全审核,建议设置为LOCAL SERVICE, NETWORK SERVICE
- 身份验证后模拟客户端,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE
- 提高计划优先级,建议设置为Administrators
- 加载和卸载设备驱动程序,建议设置为Administrators
- 锁定内存页,建议设置为空
- 管理审核和安全日志,建议设置为Administrators,默认符合
- 修改固件环境值,建议设置为Administrators,默认符合
- 执行卷维护任务,建议设置为Administrators,默认符合
- 配置文件单一进程,建议设置为Administrators,默认符合
- 还原文件和目录,建议设置为Administrators
- 关闭系统,建议设置为Administrators
- 取得文件或其他对象所有权,建议设置为Administrators,默认设置
4、安全设置
1、账户
- 账户:管理员账户状态,建议设置为禁用
- 账户:阻止Microsoft账户,建议设置为用户不能添加Microsoft账户或使用 该账户登录
- 账户:来宾账户状态,建议设置为已禁用,默认设置
- 账户:使用空密码的本地账户只通话进行控制台登录,建议设置为启用,默认 设置
- 账户:重命令系统管理员账户,建议重命名为非administrator
- 账户:重命名来宾账户,建议重命名为非Guest
2、审核
- 审核:如果无法记录安全审计则立即关闭系统,建议设置为禁用,默认设置
- 审核:强制审核策略子类别设置,建议设置为启用
3、设备
- 设备:允许对可移动媒体进行格式化并弹出,建议设置为Administrators
- 设备:防止用户安装打印机驱动程序,建议设置为已启用,默认设置
4、交互式登录
- 交互式登录:不显示最后的用户名,建议设置已启用
- 交互式登录:无须按Ctrl+Alt+Del,建议设置已禁用,默认设置
- 交互式登录:计算机不活动限制,建议设置为900,不要设成0。可以理解为 锁屏。
- 交互式登录:试图登录的用户的消息文本,不要表现出任何信息,可以为空
- 交互式登录:试图登录的用户的消息标题,不要表现出任何信息,可以为空
- 交互式登录:之前登录到缓存的次数,建议设为4或更少
- 交互式登录:提示用户在过期之前更改密码,建议5到14天
- 交互式登录:需要域控制器身份验证以对工作站进行解锁,建议设置为启用
5、Microsoft网络客户端
- Microsoft网络客户端:对通信进行数字签名(始终),建议设置为已启用
- Microsoft网络客户端:对通信进行数字签名(如果服务器允许),建议设置为已启用,默认设置
- Microsoft网络客户端:将未加密的密码发送到第三方SMB服务器,建议设置为已禁用,默认设置
6、Microsoft网络服务器
- Microsoft网络服务器:暂停会话前所需空间的时间数量,建议设置15或更少
- Microsoft网络服务器:对通信进行数字签名(始终),建议设置为已启用
- Microsoft网络服务器:对通信进行数字签名(如果客户端允许),建议设置 为已启用
- Microsoft网络服务器:登录时间过期后断开与客户端的连接,建议设置为已 启用,默认设置
- Microsoft网络服务器:服务器SPN目标名称验证级别,建议设置为由客户端 提供时接受或更高
7、网络访问
-
网络访问:不允许SAM和共享的匿名枚举,建议设置为已启用
-
网络访问:不允许存储网络身份验证的密码和凭据,建议设置为已启用
-
网络访问:可匿名访问的共享,建议根据实际情况设置
-
网络访问:可远程访问的注册表路径,建议设置为
System\CurrentControlSet\Control\ProductOptions System\CurrentControlSet\Control\Server Applications Software\Microsoft\Windows NT\CurrentVersion
-
网络访问: 网络访问:可远程访问的注册表路径和子路径,建议设置为
System\CurrentControlSet\Control\Print\Printers System\CurrentControlSet\Services\Eventlog Software\Microsoft\OLAPServer Software\Microsoft\Windows NT\CurrentVersion\Print Software\Microsoft\Windows NT\CurrentVersion\Windows System\CurrentControlSet\Control\ContentIndex
8、网络安全
- 网络安全:允许本地系统将计算机标识用于NTLM,建议设置为已启用
- 网络安全:允许LocalSystem NULL会话回退,建议设置为已禁用
- 网络安全:允许对此计算机的PKU2U身份验证请求使用联机标识,建议设置为已禁用
- 网络安全:配置Kerberos允许的加密类型,建议设置
- AES128_HMAC_SHA1, AES256_HMAC_SHA1, 将来的加密类型
- 网络安全:在超过登录时间后强制注销,建议设置为已启用
- 网络安全:LNA管理器身份验证级别,建议设置为仅发送NTLMv2响应,拒绝LM和NTLM
9、用户账户控制
- 用户账户控制:用于内置管理员账户的管理员批准模式,建议设置已启用
- 用户账户控制:管理员批准模式中管理员的提升权限提示的行为,建议设置为 在安全桌面上提示凭据
- 用户账户控制:标准用户的提升提示行为,建议设置为,自动拒绝提升请求
- 用户账户控制:允许UIAccess应用程序在不使用安全桌面的情况下提升权限, 建议设置为已启用
10、高级防火墙配置
11、高级审核策略配置–账户登录
- 审核凭据验证,建议设置成功和失败
配置为:
12、高级审核策略配置–账户管理
- 审核应用程序组管理,建议审核成功和失败
- 审核安全组管理,建议审核成功
- 审核用户账户管理,建议审核成功和失败
13、高级审核策略配置–详细跟踪
- 审核进程创建,建议审核成功
14、高级审核策略配置–登录/注销
- 审核账户锁定,建议设置失败
- 审核注销,建议设置成功
- 审核登录,建议成功和失败
- 审核其他登录/注销失败,建议成功和失败
- 审核特殊登录,建议成功
15、高级审核策略配置–对象访问
- 审核详细的文件共享,建议失败
- 审核文件共享,建议成功和失败
- 审核其他对象访问事件,建议成功和失败
- 审核可移动存储,建议成功和失败
16、高级审核策略配置–策略更改
17、高级审核策略配置–特权使用
18、高级审核策略配置–系统
二、Linux加固
1、配置简介
- Linux种类较多,常见的有Redhat、Ubuntu、Centos、SUSE等
- 根据不同版本,其安全配置都不太相同,主要体现在以下三点
- 配置文件所存放的路径
- 操作系统的命令
- 操作系统自身的安全特性或工具
以Centos 7 为例,进行安全配置讲解,其它版本Linux可能 存在安全配置方式不同,但整体配置的维度和原则是一致的。
Centos 安全配置维度
- 安装配置(默认配置即可)
- 服务配置(默认配置即可)
- 网络配置
- 日志和审计
- 访问、授权和认证
- 系统运维
Centos 安全配置原则
- 最小安全(最小安装、最小权限)
- 不影响业务可用(安全与业务的矛盾)
- 职责分离
- 审计记录
因为Centos安全配置较多,本文仅列举部分典型代表,更多具体配置,可以参照 相关国内或国际标准,如等保、CIS等。
2、网络配置
- 禁用不适用的网络协议
- 禁用IPV6,执行以下命令
sysctl-wnet.ipv6.conf.all.disable_ipv6=1
sysctl-wnet.ipv6.conf.default.disable_ipv6=1
sysctl-wnet.ipv6.route.flush=1
//查看配置是否生效
sysctl net.ipv6.conf.all.disable_ipv6
-
禁用不适用的无线设备,因为Linux作为服务器工作时,无需使用无线
-
查看无线设备
iw list
- 查看当前连接
ip link show up
- 关闭网络连接
ip link set lo down
这里将环回口lo进行关闭
- 当Linux作为独立主机使用时,配置网络
- 关闭IP转发,默认即关闭
- 查看IP转发配置
sysctl net.ipv4.ip_forward
- 关闭IP转发
sysctl -w net.ipv4.ip_forward=0
- 关闭数据包重定向
- 查看重定向设置
sysctl net.ipv4.conf.all.send_redirects
- 关闭重定向设置
sysctl -w net.ipv4.conf.all.send_redirects=0
- 开启TCP SYN Cookies功能
- TCP SYN功能某种程度上可以防止TCP的SYN DDOS攻击。
- 查看TCP SYN Cookies功能
sysctl net.ipv4.tcp_syncookies
- 开启TCP SYN Cookies功能
sysctl -w net.ipv4.tcp_syncookies=1
防火墙配置
- 在Centos 较新的版本中,引入了nftables内核取代传统netfilter内核
- 通常nftables和netfilter只用安装一种即可。
- 基于netfilter,又有两种前端操作工具,即firewalld和iptables
以netfilter+firewalld
进行操作讲解
- 防火墙配置
- 确定安装了firewalld以及iptables管理工具
rpm -q firewalld iptables
yum install firewalld iptables
- 关闭iptables的服务管理(因为同时开启iptables与firewalld会冲突)
- 查看iptables服务
rpm -q iptables-services
- 如果已经安装,可以使用以下命令
systemctl stop iptables
yum remove iptables-services
- 确保没有安装nftables
- 查看安装nftables的状态
rpm -q nftables
- 如果安装,可以删除
yum remove nftables
- 确保防火墙服务自动启动,并正在运行
- 查看firewalld状态
systemctl status firewalld
firewall-cmd --state
- 开启firewalld
systemctl start firewalld
systemctl enable firewalld
-
开启防火墙,可能会导致网络中断,所以一定要分析清楚,当前网络连接 与网络配置,再来开启防火墙
-
确定防火墙区域配置
-
默认firewalld会创建一个名为public的区域
-
区域代表防火墙中的信任等级,每一个接口都应该属于区域
-
查看当前区域,默认是public
firewall-cmd --get-default-zone
- 防火墙默认区域配置
- 设置默认区域为public
firewall-cmd --set-default-zone=public
- 查看当前活动的区域和接口
firewall-cmd --get-active-zones
设置接口到区域
firewall-cmd --zone=public --change-interface=ens33
- 查看当前允许的端口和服务
firewall-cmd --list-all --zone=public
- 关闭不需要的端口与服务
- 关闭端口
firewall-cmd --remove-port=<port-number>/<port-type>
如:firewall-cmd --remove-port=25/tcp
- 关闭服务
firewall-cmd --remove-service=<service>
如:firewall-cmd --remove-service=smtp
-
系统审核
-
查看系统是否安装审核服务
rpm -q audit audit-libs
- 如果没有安装,而进行安装
yum install audit audit-libs
- 查看审核服务是否开启
systemctl status auditd
systemctl is-enabled auditd
3、日志和审计配置
- 配置审计数据大小
- 查看audit日志最大空间,默认单位为M
- 如图,显示为8M
cat /etc/audit/auditd.conf | grep max
- 审计用户和用户组的操作
- 查看当前用户和用户组相关的操作记录
grep identity /etc/audit/rules.d/*.rules
- 当前没有任何相关配置
- 配置记录如下:
vi /etc/sudit/rules.d/identity.rules
- 配置rsyslog日志
- rsyslog是取代syslog的新版本。rsyslog有一些优秀的特性,比如使用tcp连接,可以将日志存储到数据库,可以加密传输日志等。
- 确保系统安装了rsyslog
rpm -q rsyslog
- 查看rsyslog服务状态
systemctl is-enabled rsyslog
- 确保日志正常输入
- 查看当前日志目录及日志权限,日志权限应该为600(仅root可读写)
ls -l /var/log
- 查看日志归档处理
- Linux系统使用logrotate按定期或指定大小进行归档处理
- 确保logrotate正常处理syslog日志
- 查看是否存在文件
ls /etc/logrotate.d/syslog
4、访问认证和授权配置
- 查看计划任务的访问授权
stat /etc/crontab
如图展示了,仅root可以访问计划任务,且相关访问时间。
同理还应检查文件daily hourly monthly weekly
- 查看SSH配置文件权限
- 因为SSH可以使用密钥直接登录,如果SSH配置文件权限限制不严格,则造成SSH提权
- 检查/etc/ssh/sshd_config的权限
-
配置允许通过SSH访问的用户
-
使用以上命令查看当前允许SSH访问的用户
sshd -T | grep -E '^\s*(allow|deny)(users|groups)\s+\S+'
- 如果输出为空,说明没有配置
- 编辑文件
/etc/ssh/sshd_config
,配置仅允许fox用户访问 - 在文件中加入以下行:
allowusers fox
- 保存退出,重启SSH生效
-
配置SSH验证失败次数
-
查看SSH验证失败次数
-
sshd -T | grep maxauthtries
-
默认为6次,建议改为4次或更低
-
编辑SSH配置我呢见修改即可
-
vi /etc/ssh/sshd_config
-
-
禁止空密码登录SSH
-
sshd -T | grep permitemptypasswords
-
查看SSH支持的加密方式,确保不要出现如des md5这类已经不再安全的算法
-
sshd -T | grep ciphers
-
-
PAM模块配置
-
PAM(Pluggable Authentication Modules)
是Linux中的认证管理模块,所有认证相关可由PAM处理。 -
密码要求
- 由
/etc/security/pwquality.conf
管理 minlen = 14
,最小密码长度mincalss =4
,密码复杂度,分别是是大写字母、小写字母、数字、符号
- 由
-
用户账户和环境
-
查看密码过期时间,建立设为60,加图为99999,显然不合适
-
查看用户的过期时间
grep -E '^[^:]+:[^!*]' /etc/shadow | cut -d: -f1,5
-
修改用户过期时间
-
方法一,编辑默认文件中的PASS_MAX_DAYS值
vi /etc/login.defs
-
方法二
chage --maxdays 365 <user>
比如:
chage --maxdays 365 fox
-
查看密码最小天数(原理同windows密码最小天数),建议设为1
- 提示密码过期时间,建议设置为7或更多
- 自动禁用账号,建议设置为30天或更少
- 当用户指定时间没有使用时,自动禁用用户
- 查看
- 配置方法
useradd -D -f 30
5、系统运维配置
- 检查文件/etc/passwd的权限,应为644,同理应检查/etc/group
- 检查文件/etc/shadow的权限,应为0,同理应检查/etc/shadow
原文地址:https://blog.csdn.net/weixin_63172698/article/details/140615666
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!