安全基线检查及部分中间件部署规范
@author: jerrybird,JC0o0l
@wechat: JC_SecNotes
@wechat: JC0o0l
@GitHub: github/chroblert/assetmanage
这篇⽂章是之前做基线检查⼯具参考的⼀些规范,⼤家可以通过下⾯的链接下载pdf⽂档:
链接:pan.baidu/s/1z_m0HpAWSgRYahbsI5DeAg提取码:i4ft
(⼀) Centos7安全基线0x01 初始设置1. ⽂件系统配置:2. 安全启动设置:3. 强制访问控制:0x02 服务配置1. 时间同步设置:0x03 ⽹络配置1. hosts设置:2. 防⽕墙配置0x04 审计设置1. 审计配置⽂件的设置2. 审计规则⽂件的设置0x05 ⽇志设置0x06 认证授权1. 配置cron:2. 配置SSH:3. 配置PAM:4. ⽤户账户和环境设置:0x07 系统维护1. 重要⽂件权限:2. ⽤户和组设置:(⼆) Windows2012安全基线0x01 账户策略0x02 审计策略0x03 ⽤户权限分配0x04 安全选项0x05 端⼝安全0x06 系统安全(三) MSSQL2016部署规范0x01安装更新和补丁0x02 减少受攻击⾯0x03 认证和授权0x04 密码策略0x05 审计和⽇志0x06 加密0x07
扩展存储(四) MySQL5.6部署规范0x01 操作系统级别配置0x02 安装和计划任务0x03 权限设置0x04 常规设置0x05 MySQL权限0x06 审计和⽇志0x07 ⾝份认证(五) 中间件部署规范0x01 Nginx安全部署规范1. 隐藏版本号2. 开启HTTPS3. 限制请求⽅法4. 拒绝某些User-Agent5. 利⽤referer图⽚防盗链6. 控制并发连接数7. 设置缓冲区⼤⼩防⽌缓冲区溢出攻击8. 添加Header头防⽌XSS攻击9. 添加其他Header头0x02 Tomcat安全部署规范1. 更改Server Header2. 保护telnet管理端⼝3. 保护AJP连接端⼝4. 删除默认⽂档和⽰例程序5. 隐藏版本信息(需要解jar包)6. 专职低权限⽤户启动tomcat7. ⽂件列表访问控制8. 脚本权限回收0x03 Apache安全部署规范1. 专职低权限⽤户运⾏Apache服务2. ⽬录访问权限设置3. ⽇志设置4. 只允许访问web⽬录下的⽂件5. 禁⽌列出⽬录6. 防范拒绝服务7. 隐藏版本号8. 关闭TRACE功能9. 绑定监听地址10. 删除默认安装的⽆⽤⽂件11. 限定可以使⽤的HTTP⽅法0x04 IIS安全部署规范1. 限制⽬录的执⾏权限2. 开启⽇志记录功能3. ⾃定义错误页⾯4. 关闭⽬录浏览功能5. 停⽤或删除默认站点6. 删除不必要的脚本映射7. 专职低权限⽤户运⾏⽹站8. 在独⽴的应⽤程序池中运⾏⽹站0x05 Redis安全部署规范1.专职低权限⽤户启动redis2. 限制redis配置⽂件的访问权限3. 更改默认端⼝4. 开启redis密码认证5. 禁⽤或者重命名危险命令6. 禁⽌监听在公⽹IP7. 开启保护模式0x06 RabbitMQ 规范1. 专职低权限⽤户启动RabbitMQ2.配置SSL证书3. 开启HTTP后台认证4. 删除或修改默认的guest⽤户和密码5. RabbitMQ的web ui插件存在⼀些安全漏洞
(⼀) Centos7安全基线
0x01 初始设置
1. ⽂件系统配置:
1.1 将/tmp挂载⾄⼀个单独的分区
1.2 /tmp挂载时指定noexec:不允许运⾏可执⾏⽂件
该选项使得/tmp⽬录下的⼆进制⽂件不可被执⾏
1.3 /tmp挂载时指定nosuid
该选项使得/tmp⽬录下的⽂件或⽬录不可设置Set-UID和Set-GID标志位,能够防⽌提权。
2. 安全启动设置:
2.1 设置bootloader的配置⽂件的权限为600
该配置⽂件包含了系统启动时的引导信息,该选项可防⽌该⽂件被随意读写。
2.2 设置bootloader的密码【建议】
进⼊boot loader设置界⾯需要输⼊密码
2.3 为单⽤户启动认证机制
可防⽌在不知密码的情况下更改root密码
3. 强制访问控制:
3.1 安装SELinux 【建议】
3.2 设置SELinux的状态为enforcing【建议】
3.3 设置SELinux的policy为targeted【建议】
0x02 服务配置
1. 时间同步设置:
1.1 开启时间同步服务
时间的统⼀可便于⼊侵⽇志的检测分析
1.2 不安装X-windows系统:即不使⽤可视化界⾯
X window⽤于提供⽤户登录的图形化界⾯
0x03 ⽹络配置
1. hosts设置:
1.1 配置/etc/hosts.allow⽂件
指定哪些IP可以连接到本主机
1.2 配置/etc/hosts.deny⽂件
1.3 配置/etc/hosts.allow⽂件权限为0644
1.4 配置/etc/hosts.deny⽂件的权限为0644
2. 防⽕墙配置
2.1 安装iptables
2.2 设置各个Chain的默认策略为drop
0x04 审计设置
1. 审计配置⽂件的设置
1.1 安装并使⽤auditd
1.2 配置记录审计⽇志的⽂件⼤⼩:8M 【建议】
1.3 配置记录审计⽇志的⽂件个数:5 【建议】
1.4 单个审计⽇志⽂件⼤⼩达到设定的值时触发的动作为:keep_logs/rotate【建议】
1.5 磁盘空间满后触发的动作为:rotate【建议】
2. 审计规则⽂件的设置
2.1 审计更改⽇期和时间的操作
2.2 审计更改⽤户/组信息的操作
2.3 审计更改系统⽹络环境的操作
2.4 审计更改系统强制访问控制的操作
2.5 审计登⼊登出系统的事件
2.6 审计未授权情况下企图访问⽂件未成功的事件
2.7 审计使⽤提权命令的操作
2.8 审计sudoers⽂件的变更
2.9 确保审计⽇志⽂件audit.log的规则,在系统重启前不能改变
0x05 ⽇志设置
1. 安装并启⽤rsyslog
0x06 认证授权
1. 配置cron:
1.1 开启cron服务
1.2 配置/etc/crontab,/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/hly,//etc/cron.d⽂件的权限为0700
1.3 设置cron.allow:只允许特定的⽤户可以使⽤cron
2. 配置SSH:
2.1 配置/etc/ssh/sshd_config⽂件的权限为0600
2.2 关闭X11Forwarding
X11Forwarding⽤于图形转发
2.3 设置最⼤认证尝试次数:4
2.4 开启IgnoreRhosts:不启⽤基于主机的认证
该选项决定通过RhostsRSAAuthentication或HostbasedAuthentication验证的时候是否使⽤.rhosts和.shosts⽂件
2.5 关闭HostbasedAuthentication: 关闭基于主机的认证
2.6 禁⽌使⽤root直接登录:PermitRootLogin no
2.7 禁⽌使⽤空密码登录:PermitEmptyPasswords no
2.8 禁⽌⽤户环境:PermitUserEnvironment no
该选项决定SSH是否可以使⽤环境变量,若启⽤,则可能通过LD_PRELOAD绕过安全限制
2.9 设置使⽤的MAC算法:
hmac-sha2-512-etm@openssh,hmac-sha2-256-etm@openssh,umac-128etm@openssh,hmac-sha2-512,hmac-sha2-256,umac-128@openssh,,diffie-hellman-group-exchange-sha256 2.10 设置空闲超时时间:180秒ClientAliveInterval 180
2.11 设置⼀次登录花费时间:120秒LoginGraceTime 120
2.12 SSH LogLevel设置为INFO,LogLevel INFO
2.13 SSH使⽤v2安全协议 :Protocol 2
2.14 设置能够同时连接到服务器的Client数量:3,ClientAliveCountMax 3
2.15 更改SSHD端⼝:10086,Port 10086
3. 配置PAM:
3.1 密码长度最少位数:12
3.2 密码中最少字符类型数:3
3.3 配置密码锁定
3.4 配置密码重⽤限制:不使⽤最近5次的密码
3.5 配置密码hash算法:SHA512
4. ⽤户账户和环境设置:
4.1 密码有效时间:90天
4.2 密码更改最短间隔:7天
4.3 密码过期警告:7天
4.4 ⾃动禁⽤特定时间内没有活动的账号:365天
4.5 配置系统账号的⽆法登录
4.6 配置root账号默认组的GID为0
4.7 配置shell超时关闭会话时间:900
4.8 配置可以使⽤su命令的⽤户
0x07 系统维护
1. 重要⽂件权限:
/etc/passwd 0644 uid 0 gid 0
/etc/shadow 0000 uid 0 gid 0
/
etc/group 0644 uid 0 gid 0
/etc/gshadow 0000 uid 0 gid 0
/etc/passwd- 0644 uid 0 gid 0
/etc/shadow- 0000 uid 0 gid 0
/etc/group- 0644 uid 0 gid 0
/etc/gshadow- 0000 uid 0 gid 0
2. ⽤户和组设置:
2.1 不允许密码为空的账号
2.2 只允许root账号的UID为0
2.3 设置path环境变量中的⽬录只有owner可写,group及other都没有w的权限
2.4 设置所有⽤户都有家⽬录
若⽤户没有家⽬录,则登录如会进⼊/,并且没有写⼊⽂件的权限,也不会拥有环境变量2.5 设置所有⽤户家⽬录的权限为0750
2.6 设置所有⽤户家⽬录的owner都为其⾃⾝
2.7 设置⽤户家⽬录内以.开头的⽂件,只有owner可写,group及other都没有w的权限
2.8 确保没有rc,.rhosts,.forward⽂件
2.9 确保所有在/etc/passwd中的组都在/etc/group
2.10 确保每个⽤户的UID都不同
2.11 确保每个组的GID都不同
2.12 确保⽤户名唯⼀
2.13 确保组名唯⼀
(⼆) Windows2012安全基线
0x01 账户策略
1.1 密码策略
[+]确保强制密码历史值为5或更⾼
PasswordHistorySize=5
[+]确保密码最长使⽤期限值为90天或更少,但不为0
MaximumPasswordAge=90
[+]确保密码最短使⽤期限值为1或更多
MinimumPasswordAge=1
[+]确保密码必须符合复杂性要求值为enabled
PasswordComplexity=1
[+]确保⽤可还原的加密来存储密码值为Disabled
ClearTextPassword=0
[+]确保密码长度最⼩值值为8或更⾼
MinimumPasswordLength=8
1.2 账户锁定策略
[+]确保账户锁定时间值为15分钟或更长
LockoutDuration=15
[+]确保账户锁定阈值值为5或更少,但不为0
LockoutBadCount=5
[+]确保重置账户锁定计数器值为15分钟或更多,但值要⼩于Account lockout duration的值ResetLockoutCount=15
0x02 审计策略
[+]审核策略更改:成功
AuditPolicyChange
[+]审核登录事件:成功,失败
AuditLogonEvents
[+]审核对象访问:成功
AuditObjectAccess
[+]审核进程跟踪:成功,失败
AuditProcessTracking
[+]审核⽬录服务访问:成功,失败
AuditDSAccess
[+]审核系统事件:成功,失败
AuditSystemEvents
[+]审核帐户登录事件:成功,失败
AuditAccountLogon
[+]审核帐户管理:成功,失败
AuditAccountManage
值的含义:
Setting value Explanation
0Indicates that this setting is set to None.
1Indicates that this setting is set to Success Audits Only. 2Indicates that this setting is set to Failure Audits Only.
3Indicates that this setting is set to Success and Failure Audits.
4Indicates that this setting is set to None.
0x03 ⽤户权限分配
[+]确保作为受信任的呼叫⽅访问凭据管理器值为空,没有设置任何⽤户
SeTrustedCredManAccessPrivilege
如果授予该帐户此权限,则该帐户的⽤户可以创建⼀个调⽤凭据管理器的应⽤程序,并返回另⼀个⽤户的凭据[+]确保以操作系统⽅式执⾏值为空,没有设置任何⽤户。
SeTcbPrivilege
被授予该权限的⽤户可以完全控制该计算机
[+]确保将⼯作站添加到域值仅为特定的⽤户或⽤户组,不能有513,514,515
SeMachineAccountPrivilege
该选项决定哪些⽤户具有将⼯作站添加到域的权限
[+]确保创建全局对象值为空【X】
SeCreateGlobalPrivilege
[+]确保拒绝作为批处理作业登录包含Guests
SeDenyBatchLogonRight
该选项决定哪些⽤户不能使⽤任务计划管理程序,有可能会消耗⼤量程序,造成DoS
[+]确保拒绝以服务⾝份登录包含Guests
SeDenyServiceLogonRight
该选项决定哪些⽤户可以将进程注册为服务
[+]确保拒绝本地登录包含Guests
SeDenyInteractiveLogonRight
[+]确保从远程系统强制关机值为administrators本地组和s-1-5-32-549(域控的⼀个内置组)
SeRemoteShutdownPrivilege
[+]确保修改对象标签值为空
SeRelabelPrivilege
该选项决定哪些⽤户具有更改其他对象完整性标签的权限
[+]确保同步⽬录服务数据值为空
SeSyncAgentPrivilege
该选项决定哪些⽤户具有同步域控上⽬录服务器数据的权限
0x04 安全选项
[+]确保账户:来宾账户状态值为已禁⽤
EnableGuestAccount=0
[+]确保账户:限制使⽤空密码的本地账户只能使⽤控制台登录值为Enabled
MACHINE\System\CurrentControlSet\Control\Lsa\LimitBlankPasswordUse=4,1
启⽤该选项,则没有密码的⽤户只能在本地进⾏登录
[+]配置账户:重命名系统管理员账户
NewAdministratorName="NewAdministrator"
[+]配置账户:重命名来宾账户
NewGuestName="NewGuestName"
[+]确保交互式登录:不显⽰上次登录⽤户名值为Enabled
MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\DontDisplayLastUserName=4,1
[+]确保交互式登录:⽆须按Ctrl+Alt+Del值为Disabled
MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCAD=4,0
[+]确保交互式登录:计算机不活动限制值为900秒或更少
MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\InactivityTimeoutSecs=4,900
[+]确保Microsoft ⽹络客户端: 将未加密的密码发送到第三⽅ SMB 服务器值为Disabled
MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\EnablePlainTextPassword=4,0
该选项决定是否明⽂发送⽤户名和密码
[+]确保Microsoft⽹络服务器:暂停会话前所需的空闲时间数量值为15分钟或更少,但不为0
MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\AutoDisconnect=4,15
[+]确保⽹络安全:再下⼀次改变密码时不存储LAN管理器哈希值值为Enabled
MACHINE\System\CurrentControlSet\Control\Lsa\NoLMHash=4,1
[+]确保⽹络访问:允许匿名SID/名称转换值为Disabled
LSAAnonymousNameLookup = 0
该选项决定⼀个匿名⽤户是否可以根据⽤户名请求到SID,或者根据SID请求到⽤户名
[+]确保⽹络访问:不允许SAM账户的匿名枚举值为Enabled
MACHINE\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM=4,1
该选项决定⼀个匿名⽤户是否可以枚举存在于SAM中⼯作组⽤户名或者域⽤户账户名
[+]确保⽹络访问:不允许SAM账户和共享的匿名枚举值为Enabled
MACHINE\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=4,1
该选项决定⼀个匿名是否可以枚举存在于SAM中的⽤户以及共享
[+]确保关机:允许系统在未登录前关机值为Disabled
MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\ClearPageFileAtShutdown=4,0
0x05 端⼝安全
[+]确保RDP端⼝不为3389,改为8888
for /f "skip=2 tokens=3" %i in ('REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber') do @echo %i
0x06 系统安全
关闭windows⾃动播放功能
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutoRun /
t REG_DWORD /d 233 /f
关闭TCP/IP NetBIOS Helper服务
提供TCP/IP(NetBT)服务商的NetBIOS上的NetBIOS和⽹络上客户端的NetBIOS名称解析的⽀持,从⽽使⽤户能够共享⽂件、打印和登录到⽹络关闭Print Spooler服务
管理所有本地和⽹络打印队列及控制所有打印⼯作
关闭Remote Registry服务
使远程⽤户能修改此计算机上的注册表设置
删除系统默认共享
如C$安装mysql失败
(三) MSSQL2016部署规范
0x01 安装更新和补丁
1. 确保安装了最新的SQL Server service Pack和所有的Hotfixes已经安装【建议】
select SEVERPROPERTY('ProductLevel') as SP_installed,SERVERPROPERTY('ProductVersion') as Version;
2. 确保使⽤了Single-Function Member Servers:该服务器上只作为MSQQL服务器使⽤【建议】
0x02 减少受攻击⾯
1. 确保Ad Hoc Distributed Queries服务器配置选项值为0
该选项允许⽤户查询数据并在外部数据源上执⾏语句
SELECT name,CAST(value as int) as value_configured,CAST(value_in_use as int) as value_in_use figuratioins WHERE name = 'Ad Hoc Distributed Queries';
2. 确保CLR Enabled服务器配置选项值为0
该选项指定哪些⽤户组件可以被SQL Server 运⾏
SELECT name,CAST(value as int) as value_configured,CAST(value_in_use as int) as value_in_use figurations WHERE name = 'clr enabled';
3. 确保Cross DB Ownership Chaining服务器配置选项值为0
该选项控制在instance级别上所有数据库之间的跨数据库的所有权的链。
开启后,可能造成信息泄露
SELECT name,CAST(value as int) as value_configured,CAST(value_in_use as int) as value_in_use figurations WHERE name = 'cross db ownership chaining';
4. 确保Database Mail XPs服务器配置选项值为0
该选项控制SQL Server⽣成和传输邮件信息的能⼒
SELECT name,CAST(value as int) as value_configured,CAST(value_in_use as int) as value_in_use figurations WHERE name = 'Database Mail XPs';
5. 确保Ole Automation Procedures服务器配置选项值为0
该选项控制OLE⾃动化对象能否在T-SQL批处理语句中执⾏。
SELECT name,CAST(value as int) as value_configured,CAST(value_in_use as int) as value_in_use F
figuraions WHERE name = 'Ole Automation Procedures';
6. 确保Remote Access服务器配置选项值为0:
该选项控制位于远程服务器上的本地存储过程或者位于本地服务器的远程存储过程的执⾏。
7. 确保Remote Admin Connections服务器配置选项值为0:
该选项控制位于远程计算机上的客户端应⽤是否能使⽤DAC(传⽤管理员连接),⽤于故障排查
8. 确保Scan For Startup Procs服务器配置选项值为0:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论