安全加固

任务一: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
2
3
userdel <用户名>
passwd -l <用户名> 锁定不必要的账号
passwd -u <用户名> 解锁必要的账号

1.2检查特殊账号

检查是否存在空口令和 root 权限的账号。

1
2
awk -F:'($2=="")' /etc/shadow     # 检查空口令账号
awk -F:'($3==0)' /etc/passwd # 查看UID为0的账号

使用命令 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
systemctl list-unit-files --type=service --state=enabled
systemctl list-timers --all

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/profile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    history
    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
    source /etc/profile

任务三:对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访问


安全加固
https://43.242.201.154/2025/07/20/安全加固/
Author
Dong
Posted on
July 20, 2025
Licensed under