安全加固
任务一:Windows系统虚拟机的加固
参考文档:https://note.youdao.com/s/9wuN7wKd
8个条目中的条目指的是:3级标题下的内容
注意事项:
- 建议用win7,其他版本可能发生问题
- 提前为虚拟机拍摄快照
- 如果无法打开组策略编辑器进行配置,请用管理员运行群内脚本添加组策略编辑器功能
Windows配置的途径
- 组策略(gpedit.msc)
- 命令(cmd或powershell中执行,或编写bat,ps)
- 注册表(regedit)
- 配置文件
1.账户管理和认证授权
1.1账户:
1.1.1默认账户安全
- 禁用Guest账户
- 禁用或删除其他无用账户
1.1.2按照用户分配账户
按照用户分配帐户。根据业务要求,设定不同的用户和用户组。例如,管理员用户,数据库用户,审计用户,来宾用户等。
操作步骤
打开 控制面板 > 管理工具 > 计算机管理,在 系统工具 > 本地用户和组 中,根据您的业务要求设定不同的用户和用户组,包括管理员用户、数据库用户、审计用户、来宾用户等。
1.1.3定期检查并删除无关账户
操作步骤
打开 控制面板 > 管理工具 > 计算机管理,在 系统工具 > 本地用户和组 中,删除或锁定与设备运行、维护等与工作无关的帐户。
1.1.4 不显示最后的用户名
1.1.5 检查影子账户
“Win+R”键调出“运行”->regedit
打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\SAM\SAM],右击该项选择“权限”,选中“组或用户名称”列表中的“Administrators”,勾选“完全控制”后点击“确定”。
按F5刷新一下注册表就会发现可以打开该项的下级分支了,找到[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names],其下的子项就是系统中的账户名。
继续展开[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Administrator],查看并记录下该项的默认值。
查看Administrator帐号所对应的键值和”users”子项里的相对应,”users”里包含的就是该帐户的权限的键值(比如:Administrator的键值是1f4为结尾的,就从上面users里面找1f4为结尾的键)。打开Administrator所对应的”F”键值并复制里面的16进制。
依次检查[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names]下的所有子项,如果某个子项的默认值与刚才记录下的Administrator的默认值相同,那么这个就是影子账户了,当然不能给黑客留一把后门“钥匙”,毫不犹豫地删除之。
除Administrator外,黑客还可能复制出其他账户的用户数据“保管箱”的“钥匙”,所以保险起见还需检查[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names]下所有子项的默认值是否有相同。
1.2口令
1.2.1密码复杂度
密码复杂度要求必须满足以下策略:
最短密码长度要求八个字符。
启用本机组策略中密码必须符合复杂性要求的策略。
即密码至少包含以下四种类别的字符中的两种:
英语大写字母 A, B, C, … Z
英语小写字母 a, b, c, … z
西方阿拉伯数字 0, 1, 2, … 9
非字母数字字符,如标点符号,@, #, $, %, &, * 等
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 帐户策略 > 密码策略 中,确认 密码必须符合复杂性要求 策略已启用。
1.2.2 密码最长留存期
对于采用静态口令认证技术的设备,帐户口令的留存期不应长于 90 天。
操作步骤打开 控制面板 > 管理工具 > 本地安全策略,在 帐户策略 > 密码策略 中,配置 密码最长使用期限 不大于 90 天。
1.2.3账户锁定策略
1.3授权
1.3.1远程关机
在本地安全设置中,从远端系统强制关机权限只分配给 Administrators 组。
1.3.2本地关机
1.3.3用户权限指派
在本地安全设置中,取得文件或其它对象的所有权权限只分配给 Administrators 组。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 取得文件或其它对象的所有权 权限只分配给 Administrators 组。
1.3.4授权账户登录
在本地安全设置中,配置指定授权用户允许本地登录此计算机。
操作步骤
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 用户权限分配 中,配置 允许本地登录 权限给指定授权用户。
1.3.5授权账户从网络访问
2.日志配置操作
设备应配置日志功能,对用户登录进行记录。记录内容包括用户登录使用的帐户、登录是否成功、登录时间、以及远程登录时、及用户使用的 IP 地址。
3.文件权限
4.服务安全
5.启用安全选项
6.其它安全配置
执行firewall.cpl,开启防火墙
任务二:按照参考文档完成Linux系统虚拟机的加固
参考文档:https://note.youdao.com/s/GomdMUPy
本帮助手册旨在指导系统管理人员或安全检查人员进行 Linux 操作系统的安全合规性检查和加固。
账号和口令
1.1禁用或删除无用账号
1 |
|
1.2检查特殊账号
检查是否存在空口令和 root 权限的账号。
1 |
|
使用命令 passwd <用户名> 为空口令账号设定密码。
确认 UID 为零的账号只有 root 账号。
1.3添加口令策略
使用命令 vi /etc/login.defs 修改配置文件。
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
使用 chage 命令修改用户设置。
例如,chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>表示将此用户的密码最长使用天数设为 30,最短使用天数设为 0,密码 2000 年 1 月 1 日过期,过期前七天警告用户。
设置连续输错三次密码,账号锁定五分钟。使用命令 vi /etc/pam.d/common-auth修改配置文件,在配置文件中添加 auth required pam_tally.so onerr=fail deny=3 unlock_time=300。
服务
2.1 关闭不必要的服务
关闭不必要的服务(如普通服务和 xinetd 服务),降低风险。
操作步骤
使用命令systemctl disable <服务名>设置服务在开机时不自动启动。
说明: 对于部分老版本的 Linux 操作系统(如 CentOS 6),可以使用命令chkconfig –level <init级别> <服务名> off设置服务在指定 init 级别下开机时不自动启动。
1 |
|
2.2 SSH 服务安全
不允许 root 账号直接登录系统。
设置 PermitRootLogin 的值为 no。
修改 SSH 使用的协议版本。
设置 Protocol 的版本为 2。
修改允许密码错误次数(默认 6 次)。
设置 MaxAuthTries 的值为 3。
配置文件修改完成后,重启 sshd 服务生效。
3.文件系统
3.1设置umask值
3.2设置登录超时
4.日志
Linux 系统默认启用以下类型日志:
- 系统日志(默认)/var/log/messages
- cron 日志(默认)/var/log/cron
- 安全日志(默认)/var/log/secure
vim /etc/profilesource /etc/profile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20history
USER="whoami"
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}' | sed -e 's/[()]//g'
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISSIZE=4096
DT=`date + "%Y%m%d_%H:%M:%S"`
export HISFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
任务三:对nginx(一种网站中间件)配置进行加固
参考文档:https://note.youdao.com/s/Pdn507wq
适用于使用Nginx进行部署的Web网站。
技能要求
熟悉Nginx配置,能够Nginx进行部署,并能针对站点使用Nginx进行安全加固。
前置条件
1、 根据站点开放端口,进程ID,确认站点采用Nginx进行部署;
2、 找到Nginx安装目录,针对具体站点对配置文件进行修改;
3、 在执行过程中若有任何疑问或建议,应及时反馈。、
3.1 nginx.conf配置文件备份
nginx日志配置
按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式(http标签内,在所有的server标签内可以调用
在server标签内,定义日志路径
sudo nginx -t
sudo systemctl reload nginx
3.2 禁止目录浏览
3.3限制目录执行权限
需要注意两点:
1、以上的配置文件代码需要放到 location ~ .php{…}上面,如果放到下面是无效的;
2、attachments需要写相对路径,不能写绝对路径。
3.4错误页面重定向
3.5最佳经验实践
隐藏版本信息
限制HTTP请求方法
限制IP访问