安全计算环境-服务器
操作系统当前密码为弱口令,且密码未定期更换
解决参考:https://jingyan.baidu.com/article/219f4bf7d56880de442d38b9.html
位置 :控制面板 - 管理工具 - 本地安全策略 - 账户策略 - 密码策略
配置 :密码必须符合复杂性要求、密码长度最小值、密码最长使用期限
操作系统未配置密码复杂度策略、登录失败处理策略、超时策略
解决参考:https://www.cnblogs.com/XiaoZhou-cn/p/11385940.html
位置1 :控制面板 - 管理工具 - 本地安全策略 - 账户策略 - 账户锁定策略(密码策略)
配置1 :密码必须符合复杂性要求、密码长度最小值、密码最长使用期限、账户锁定时间、账户锁定阈值
可能存在账户策略-账户锁定策略下的锁定阈值和锁定时间无法修改的问题
位置2 :控制面板 - 管理工具 - 本地安全策略 - 本地策略 - 安全选项
配置2 :交互式登录:计算机不活动限制;交互式登录:计算机账户锁定阈值
Windows操作系统未重命名administrator账号
解决参考:https://jingyan.baidu.com/article/2c8c281d7f82610008252a8d.html
位置 :计算机管理 - 本地用户和组 - 用户
配置 :选中administrator,右键重命名,左上角菜单:文件 - 退出,最后重新登录
虚拟机可能更名用户需要授权才能使用。
Windows操作系统统一通过administrator进行管理,未建立其他账户进行分权管理
位置 :计算机管理 - 本地用户和组 - 用户
配置 :右键新增用户,设置账号、密码,创建后选择用户右键-属性,将隶属于改为administrators
虚拟机可能新用户需要授权才能使用。
Windows操作系统审计内容不完善未启用关键审核策略
解决参考:
http://www.360doc.com/content/18/0602/00/27086148_758884085.shtml
https://jingyan.baidu.com/article/86112f13b8fbe827379787cc.html
位置 :控制面板 - 管理工具 - 本地安全策略 - 本地策略 - 审核策略
配置 :各项策略依次在成功、失败上打勾确定
未对操作系统日志进行集中收集和保存
定期每天将本地操作系统及iis的日志文件上传到到异地备份
@echo off
title copy backup
net use * /del /y
net use \\10.44.47.21\sjj-gcsj$ "qwert123" /user:"zhao.jb"
echo start
xcopy /s /d /e /y "C:\Windows\System32\winevt\Logs\*.*" "\\10.0.0.3\temp\log\win\"
echo copy success
echo end
xcopy /s /d /e /y "C:\inetpub\logs\*.*" "\\10.0.0.3\temp\log\iis\"
echo copy success
echo end
pause
Windows操作系统存在不必要的服务(print spooler、server)和端口(135、445等)
解决参考: https://www.cnblogs.com/su-root/p/10988875.html
位置 :控制面板 - 检查防火墙状态 - 高级设置 - 入站规则
配置 :新建规则 - 端口 - [TCP - 特定本地端口:135,139,445]、[UDP - 特定本地端口:137,138] - 阻止连接 - 名称自定义 - 完成
操作系统未限制远程登录服务器的地址
解决参考: https://www.cnblogs.com/su-root/p/9656252.html
位置 :控制面板 - 管理工具 - 本地安全策略 - IP安全策略 - 创建IP安全策略
配置 :创建允许通过的ip地址
Windows操作系统未安装杀毒软件
免费的有
安全狗
小红伞
服务器安全狗或者网站安全狗安装后可以修复很多内容,比如不常用端口
无可信验证设备对操作系统进行可信验证
???
未对虚拟机操作系统采取备份措施
未提供虚拟机异地数据定时批量备份功能
Windows操作系统未配置启用“开机不显示上次用户名”功能
解决参考: https://pfyxex.30edu.com.cn/article/0031ea5f-f0c2-4187-ba7c-bb57a9de2436.shtml
位置 :控制面板 - 管理工具 - 本地安全策略 - 本地策略 - 安全选项 - 交互式登录:不显示上次的用户名
配置 :选择“已启用”,确定完成。
SSL/TLS协议信息泄露漏洞
-
SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
TLS, SSH, IPSec协商及其他产品中使用的IDEA、DES及Triple DES密码或者3DES及Triple 3DES存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。 -
SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)
SSL/TLS协议是一个被广泛使用的加密协议,Bar Mitzvah攻击实际上是利用了"不变性漏洞",这是RC4算法中的一个缺陷,它能够在某些情况下泄露SSL/TLS加密流量中的密文,从而将账户用户名密码,信用卡数据和其他敏感信息泄露给黑客。 -
SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)
安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司(Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数据完整性。SSL在传输层对网络连接进行加密。传输层安全(Transport Layer Security),IETF对SSL协议标准化(RFC 2246)后的产物,与SSL 3.0差异很小。
SSL/TLS内使用的RC4算法存在单字节偏差安全漏洞,可允许远程攻击者通过分析统计使用的大量相同的明文会话,利用此漏洞恢复纯文本信息。 -
SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司(Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数据完整性。SSL在传输层对网络连接进行加密。传输层安全TLS(Transport Layer Security),IETF对SSL协议标准化(RFC 2246)后的产物,与SSL 3.0差异很小。
当服务器SSL/TLS的瞬时Diffie-Hellman公共密钥小于等于1024位时,存在可以恢复纯文本信息的风险。
DHE man-in-the-middle protection (Logjam)
上面三个漏洞用一个方法解决:
解决参考:https://blog.csdn.net/kang0x0/article/details/114631551
解决参考:https://blog.csdn.net/vectorJ/article/details/116482613
位置 :输入
gpedit.msc
- 本地组策略编辑器 - 计算机配置 - 管理模板 - 网络 - SSL 配置设置 - SSL 密码套件顺序
配置 :默认情况下为未配置,选择已启动,并修改原字符串为下面提供的字符串
-
输入
gpedit.msc
打开本地组策略编辑器
-
打开
计算机配置 - 管理模板 - 网络 - SSL 配置设置 - SSL 密码套件顺序
-
默认情况下未配置
-
选择
已启用
,并将ssl密码套件中的内容进行更换
原字符串:
***win2008***
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_NULL_SHA256,TLS_RSA_WITH_NULL_SHA,SSL_CK_RC4_128_WITH_MD5,SSL_CK_DES_192_EDE3_CBC_WITH_MD5
***win2022***
TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_DHE_RSA_WITH_AES_256_GCM_SHA384、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_256_GCM_SHA384、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_NULL_SHA256、TLS_RSA_WITH_NULL_SHA、TLS_PSK_WITH_AES_256_GCM_SHA384、TLS_PSK_WITH_AES_128_GCM_SHA256、TLS_PSK_WITH_AES_256_CBC_SHA384、TLS_PSK_WITH_AES_128_CBC_SHA256、TLS_PSK_WITH_NULL_SHA384、TLS_PSK_WITH_NULL_SHA256
修改为
本字符串只解决前三个问题
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA,WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_NULL_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA
本字符串解决第四个问题
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_NULL_SHA256
为解决四个问题,经比较是否只留下以下部分(需网友测试):
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- 确定提交并重启服务器
安全计算环境-数据库
MySQL数据库密码未定期更换
解决参考: https://www.jb51.net/article/79347.htm
可以在MySQL的配置文件中设置一个默认值,这会使得所有MySQL用户的密码过期时间都为90天,MySQL会从启动时开始计算时间。my.cnf配置如下:
[mysqld]
default_password_lifetime=90
如果要设置密码永不过期的全局策略,可以这样:(注意这是默认值,配置文件中可以不声明)
[mysqld]
default_password_lifetime=0
在MySQL运行时可以使用超级权限修改此配置:
mysql> SET GLOBAL default_password_lifetime = 90;
//Query OK, 0 rows affected (0.00 sec)
还可以使用ALTER USER命令为每个具体的用户账户单独设置特定的值,它会自动覆盖密码过期的全局策略。要注意ALTER USER语句的
//INTERVAL的单位是“天”。
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 30 DAY;
禁用密码过期:
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
让用户使用默认的密码过期全局策略:
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE DEFAULT;
从MySQL 5.7.6版开始,还可以使用ALTER USER语句修改用户的密码:
mysql> ALTER USER USER() IDENTIFIED BY '637h1m27h36r33K';
//Query OK, 0 rows affected (0.00 sec)
MySQL数据库未启用登录失败处理策略
解决参考:
https://blog.csdn.net/ywd1992/article/details/83865537
https://blog.csdn.net/kaikai0720/article/details/108374538
安装插件(
CONNECTION_CONTROL
和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS
)
按需修改配置文件(/etc/my.cnf
),并重新登录数据库,查看配置是否生效
connection-control-failed-connections-threshold=5 #登陆失败次数限制
connection-control-min-connection-delay=1800000 #限制重试时间,此处为毫秒,注意按需求换算
或者打命令
mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.dll';
mysql> install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.dll';
mysql> show plugins;
mysql> show variables like '%connection_control%';
mysql8的插件是connection_control.dll,而以前的版本插件名是connection_control.so
MySQL未开启general_log日志功能,且数据库日志都未通过数据库审计系统集中收集存放
解决参考:
https://blog.csdn.net/Abysscarry/article/details/79949480
https://blog.csdn.net/Abysscarry/article/details/79949480
// 先执行sql指令:
show variables like '%log%';
// 如果发现genery_log为off,则使用下一句
set global general_log = ON;
// 永久修改需要在my.cnf的【mysqld】中添加:general_log = 1
顺便写一下如何开启binlog
windows打开my.ini,找到 server_id
一行,增加:
server_id=1
log_bin=mysql-bin
binlog_format=ROW
#expire_logs_days自动过期清理binlog
expire_logs_days=7
- 无可信验证设备对数据库进行可信验证
???
数据库未采取措施对重要数据在传输过程中的完整性进行监控
解决参考:
https://blog.csdn.net/snans/article/details/110622549
https://www.cnblogs.com/maggieq8324/p/11414889.html
https://jingyan.baidu.com/article/ca41422f36b35b1eae99edc3.html
查看是否已开启ssl,然后再配置mysql为ssl,同时修改程序连接方式
show global variables like '%ssl%';
未提供数据库异地数据定时批量备份功能
解决参考:https://www.cnblogs.com/gguozhenqian/p/11641191.html
位置 :计算机管理 - 任务计划程序
配置 :每天计划执行navicat批量备份,文件存储在指定目录,然后再利用计划执行一个bat文件,定期拷贝指定目录下所有文件到客户提供的共享目录。
@echo off
title copy backup
net use \\10.0.0.3\Downloads\temp\2\ "password" /user:"admin"
echo start
xcopy /s /y "F:\Downloads\temp\1\*.*" "\\10.0.0.3\Downloads\temp\2\"
echo copy success
del F:\Downloads\temp\1\*.* /q
echo end
pause
实际使用删除最后一句,如果需要账号密码,则password是密码位置,admin是账号位置。
任务计划如果选择无论是否登录都执行bat复制拷贝文件,很可能会失败,但如果选择登录后方可执行成功。
数据库未采取相关技术对用户鉴别信息所在的存储空间进行剩余信息保护管理
解决参考:
http://www.fx361.com/page/2019/0613/5198954.shtml
https://www.freebuf.com/articles/database/227336.html
https://cloud.tencent.com/developer/article/1600502
剩余信息(Residual Information)是说用户使用过的信息,当该用户不再使用或不再存在时。
在GB/T 22239-2008 《信息技术信息系统安全等级保护基本要求》中,剩余信息保护是对三级以上的系统的要求,
在GB/T 22239-2008的修订版本中,即《信息安全技术网络安全等级保护基本要求》(征求意见稿)(20170813版)中,剩余信息保护变为对二级以上的系统的要求,可见剩余信息保护的重要性逐渐被得到重视。
剩余信息中的保护对象有很多种,其中一种叫鉴别信息
鉴别信息 :操作系统用户的鉴别信息主要指用户名和密码。
Windows操作系统通常保存在C:\WINDOWS\system32\config
目录下的sam
文件中;
Linux操作系统一般保存在/etc/passwd
(或者/etc/shadow
);
AIX系统保存在/etc/security/passwd
;
HP-UX保存在/etc/passwd
(或者/etc/shadow
)。
在数据库系统层面,用户信息主要包括:鉴别信息、数据表、数据文件等。
Oracle数据库,鉴别信息存放于
DBA_USERS
视图的Password列
中。如果采用口令文件验证,对于Oracle 10.2.0.1,鉴别信息保存在/oracle/app/product/10.2.0.1/dbs
目录下的Orapwsid
文件(或者ORACLE_HOME/dbs/PWDsid.ora
)中。数据文件保存在/oracle/app/oradata/
目录下,每个实例都有自己的数据文件,属于dbf文件类型
。
总结
近年来,Web应用得到了飞速发展,但绝大部分Web应用存在安全漏洞。攻击者出于经济、政治等目的,利用RCE、SQL注入、网站挂马、跨站脚本、弱口令等漏洞对Web站点实施篡改、挂马、攻击、数据窃取等恶意行为,严重威胁着网站管理者和网络用户的数据安全。针对应用系统的整体安全建设,提出以下安全建议,仅供参考:
- 请专业的安全研究人员或安全公司对架构平台的程序和代码做全面的代码审计,修补所有发现的安全漏洞,这种白盒安全测试比较深入全面。
- 对平台的开发人员进行安全编码方面的培训,在开发过程避免漏洞的引入能起到事半功倍的效果。
- 采用专业的Web安全防火墙产品和主机安全产品,可以在不修改网站本身的情况下对大多数的Web攻击起到有效的阻断作用。
- 建议网络管理员、系统管理员、安全管理员关注安全信息、安全动态及最新的严重漏洞,特别是影响到Web站点所使用的系统和软件的漏洞,应该在事前设计好应对规划,一旦发现系统受漏洞影响及时采取措施。
参考:
安全篇 ━━ 根据安全评估报告整改php和IIS
安全篇 ━━ windows2008自建证书、IIS配置https服务器及浏览器报错处理
PHP开发日志 ━━ jsrsasign、jsencrypt、php实现前后端数据的RSA加密和解密
Xcopy使用详解