一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统, 根据任务要求确保各服务正常运行,并通过综合运用登录安全加 固、数据库安全策略、流量完整性策略、事件监控策略、防火墙策 略、IP 协议安全配置等多种安全策略来提升服务器系统的网络安全 防御能力。本模块要求根据竞赛现场提供的 A 模块答题模板对具体 任务的操作进行截图并加以相应的文字说明,以 word 文档的形式书 写,以 PDF 格式保存,以“赛位号+模块 A”作为文件名,PDF 格式文 档为此模块评分唯一依据。
二、服务器环境说明
Windows 用户名:administrator,密码:123456
Linux 用户名:root,密码:123456
三、具体任务(每个任务得分以电子答题卡为准)
A-1 任务一 登录安全加固
1.密码策略(Windows,Linux)
a.设置最短密码长度为 15;
Windows:secpol.msc 管理工具-本地安全策略-账户策略-密码策略,设置 密码长度即可
Linux: vi /etc/login.defs
2.用户安全管理
a.设置 user1 用户只能在上班时间(周一至周五的 9:00~18:00 可以登录,将 user1 的登录时间配置界面截图; b.在组策略中只允许管理员账号从网络访问本机;
gpedit.msc-计算机配置-Windows 设置-安全设置-本地策略-用户权限分配 -从网络访问此计算机
c.设置操作系统中的关键目录(system32、hosts、 Program Files、Perflogs)的权限为最优状态,即仅允许管理 员用户进行读取及运行。
找到文件(system32,hosts,Program Files, Perflogs) 点击属性—>安全 —->高级—>所有者—>编辑—>其他用户和组—>点击高级—>立即查找—>选择 Administrator (最高用户组)–>一路回车进行更新权限即可
A-2 任务二 数据库安全策略
3.以普通帐户 mysql 安全运行 mysql 服务,禁止 mysql 以管理 员帐号权限运行;
vi /etc/my.cnf
4.删除默认数据库(test);
drop database test;
5.改变默认 mysql 管理员用户为:SuperRoot;
Use mysql;update user set user="SuperRoot" where user='root'; 6.使用 mysql 内置 MD5 加密函数加密用户 user1 的密码为 (P@ssw0rd1!)。
Create user user1 identified by 'P@ssw0rd1!';
update mysql.user set password=md5('P@ssw0rd1!') where user='user1';
update mysql.user set authentication_string=md5('P@ssw0rd1!') where user='user1';
A-3 任务三 流量完整性
7.对 Web 网站进行 HTTP 重定向 HTTPS 设置,仅使用 HTTPS 协议 访问网站(Windows)(注:证书颁发给 test.com 并通过 https://www.test.com 访问 Web 网站)。
A-4 任务四 事件监控
8.将 Web 服务器开启审核策略
登录事件 成功/失败;
特权使用 成功;
策略更改 成功/失败;
进程跟踪 成功/失败。
运行–secpol.msc–>本地策略–>审核策略
审核策略更改:成功,失败
审核登录事件:成功,失败
审核进程跟踪:成功,失败
审核特权使用:成功
A-5 任务五 防火墙策略
9.Windows 系统禁用 445 端口;
高级安全 Windows 防火墙–>新建规则–>规则类型 设置端口–>协议 和端口设置 tcp 和 445 或者 23–>操作设置阻止连接–>配置文件设置所有–> 名称 445 和 23 端口
10.Windows 系统禁用 23 端口;
高级安全 Windows 防火墙–>新建规则–>规则类型设置端口–>协议和端 口设置 tcp 和 445 或者 23–>操作设置阻止连接–>配置文件设置所有–>名称 445 和 23 端口
11.Linux 系统使用 iptables 禁用 23 端口;
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A OUTPUT -p udp --dport 23 -j DROP
12.Linux 系统使用 iptables 禁止别人 ping 通。
iptables -A INPUT -p icmp -j DROP
A-6 任务六 IP 协议安全配置
13.指定触发 SYN 洪水攻击保护所必须超过的 TCP 连接请求数阈 值为 5;
在开始->运行->键入 regedit,在注册表项 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameter s 下,值名称为 TcpMaxPortsExhausted,推荐值为 5
14.指定处于 SYN_RCVD 状态的 TCP 连接数的阈值为 500;
在开始->运行->键入 regedit,在注册表项 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameter s 下,值名称为 TcpMaxHalfOpen,推荐值为 500
15.指定处于至少已发送一次重传的 SYN_RVCD 状态中的 TCP 连 接数的阈值为 400。
在开始->运行->键入 regedit,在注册表项 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameter s 下,值名称为 TcpMaxHalfOpenRetried,推荐值为 400
A-1 任务一 登录安全加固(Windows,Linux)
1.密码策略(Windows,linux)
a.最小密码长度不少于 8 个字符;
windows: secpol.msc 在账户策略/密码策略中将密码长度最小值修改为 8
Linux: Vi /etc/pam.d/system-auth
在配置文件中找到 password requisite pam_cracklib.so try first_pass retry=3 type= 所在行 在该行末尾空一格追加 minlen=8 (注意这里不换行)
b.密码策略必须同时满足大小写字母、数字、特殊字符。
windows: secpol.msc 在账户策略/密码策略中将密码必须符合复杂性要求修改为已启用
Linux: Vi /etc/pam.d/system-auth
在配置文件中找到 password requisite pam_cracklib.so try first_pass retry=3 type= 所在行 在该行末尾空一格追加 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
ucredit=-1 #大写字母
lcredit=-1 #小写字母
dcredit=-1 #数字
ocredit=-1 #特殊字符
2.登录策略(Windows,linux)
a.在用户登录系统时,应该有“For authorized users only” 提示信息;
Linux:vi /etc/issue 文件添加本地登录欢迎语 For authorized users only
init 3 #验证
Windows:secpol.msc -本地策略-安全选项,“交换式登录:试图登录的 用户的消息标题 属性” 修改欢迎语。
b.一分钟内仅允许 5 次登录失败的尝试,超过 5 次,登录帐号 锁定 1 分钟;
Windows:
打开 secpol.msc; (开始菜单/管理工具(管理)/本地安全策略)
在账户策略/账户锁定策略中将账户锁定时间修改为 1 分钟;
在账户策略/账户锁定策略中将账户锁定阈值修改为 6 次;
在账户策略/账户锁定策略中将重置账户锁定计数器修改为 1 分钟;
在本地策略/安全选项中将交互式登录:需要域控制器身份验证以对工作站 进行解锁修改为已启用.
6 次无效登录
Linux:
在/etc/pam.d/system-auth 配置文件第二行后追加一行添加以下内容:
auth required pam_tally2.so deny=6 unlock_time=60
auth requisite pam_tally2.so deny=6 unlock_time=60
c.远程用户非活动会话连接超时应小于等于 5 分钟。
Linux:修改/etc/ssh/sshd_config 文件,设置 ClientAliveInterval 和 ClientAliveCountMax 参数(#去掉 Max 3)Windows:管理工具-远程桌面服务-远程桌面会话主机设置,RDP-Tcp 属 性,在会话中修改
3.用户安全管理(Windows)
a.对服务器进行远程管理安全性 SSL 加固,防止敏感信息泄露 被监听;
Windows:管理工具-远程桌面服务-远程桌面会话主机设置,RDP-Tcp 属 性
b.查找并删除服务器中可能存在的帐号 hacker;
Windows: Net user
Net user hacker /del
c.普通用户进行最小权限管理,对关闭系统仅限管理员帐号。
Windows:
1.打开本地安全策略; (开始菜单/管理工具(管理)/本地安全策略)
2.在本地策略/用户权限分配中将关闭系统修改为 Administrator;
A-2 任务二 日志安全配置(Windows)
4.配置审核登陆,记录内容包括用户登录使用的账户、登录是 否成功、登录时间、以及远程登录时间、及用户使用的 IP 地址;
Secpol.msc,在 本地策略 > 审核策略 中,设置 审核登录事件。
5.启用本地安全策略中对 Windows 系统的审核策略更改,成功 和失败操作都需要审核;
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审 核策略更改。
6.启用本地安全策略中对 Windows 系统的审核对象访问,成功 和失败操作都需要审核。
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 审核策略 中,设置 审 核对象访问。
12.启用本地安全策略中对 Windows 系统的审核目录服务访问, 仅需要审核失败操作;
在 本地策略 > 审核策略 中,设置 审核目录服务器访问。
13.启用本地安全策略中对 Windows 系统的审核特权使用,成功 和失败操作都需要审核;
在 本地策略 > 审核策略 中,设置 审核特权使用。
14.启用本地安全策略中对 Windows 系统的审核系统事件,成功 和失败操作都需要审核。配置图
在 本地策略 > 审核策略 中,设置 审核系统事件。
A-3 任务三 中间件服务安全加固 VSFTPD/HTTPD/BIND (Linux)
7.VSFTPD
a.vsftpd 禁止匿名用户上传;
vi /etc/vsftpd/vsftpd.conf anon_upload_enable=YES 修改为 NO
b. 设置无任何操作的超时时间为 5 分钟;
idle_session_timeout=300 注意去掉#
c.匿名用户访问的最大传输速率为 512KB/S;(自己添加)
Vi /etc/vsftpd/vsftpd.conf anon_max_rate=524288#匿名用户的最大传输速率 512KB
d.用户访问的最大传输速率为 1M。
vi /etc/vsftpd/vsftpd.conf local_max_rate=1024 8.HTTPD
a.更改默认监听端口为 6666;
Vi /etc/httpd/conf/httpd.conf
Listen 80
把 80 修改成需要的号即
Listen 6666
b.设置禁止目录浏览;
修改 Apache 配置文件 httpd.conf:
将第 3 行的 Options FollowSymlinks
c.隐藏 Apache 版本号;
/etc/httpd/httpd.conf
1.Server Tokens Full 修改为 Server Tokens Prod
2.将 ServersSignature On 修改为 ServersSignature Off
d.将 Apache 服务降权,用户为 apache,用户组为 www。
/etc/httpd/httpd.conf
User apache
Group www
9.BIND
a.隐藏 bind 版本号;
打开 /etc/named.conf 文件,找出 options 部分,
隐藏 BIND 版本:
version “”;
b.设置不提供递归服务。
recursion no;
A-5 任务五 防火墙策略(Linux)
11.为防止 Nmap 扫描软件探测到关键信息,设置 iptables 防火 墙策略对 3306 号端口进行流量处理;
iptables -A INPUT -p tcp –dport 3306 -j DROP
12.为防止 SSH 服务被暴力枚举,设置 iptables 防火墙策略仅 允许 172.16.10.0/24 网段内的主机通过 SSH 连接本机;
iptables -A INPUT -s 172.16.10.0/24 -p tcp –dport 22 -j ACCEPT
13.为防御 IP 碎片攻击,设置 iptables 防火墙策略限制 IP 碎 片的数量,仅允许每秒处理 1000 个。
iptables -A FORWARD -f -m limit --limit 1000/s --limit-burst 1000 -j ACCEPT
A-6 任务六 WEB 安全加固(Windows)
14.为了防止 web 中.mdb 数据库文件非法下载,请对 Web 配置 文件进行安全加固;
编辑配置文件 C:WindowsSystem32inetsrvconfigapplicationHost
15.限制目录执行权限,对 picture 和 upload 目录设置执行权限 为无;
打开 IIS 管理器(开始菜单/管理工具/Internet 信息服务(IIS)管理器) 依次右键找到
16.开启 IIS 的日志审计记录(日志文件保存格式为 W3C,只记录 日期、时间、客户端 IP 地址、用户名、方法)。
打开 IIS 管理器 (开始菜单/管理工具/Internet 信息服务(IIS)管理器)
双击网站,在网站主页中选择日志
在日志文件中将格式修改为 W3C,并选择所需字段.
在右侧点击应用完成更改.
A-1 任务一 登录安全加固(Windows, Linux)
请对服务器 Windows、Linux 按要求进行相应的设置,提高服务 器的安全性。
2.用户安全管理(Windows)
a.设置取得文件或其他对象的所有权,将该权限只指派给 administrators 组;
secpol.msc,在 本地策略 > 用户权限分配 中,配置 取得文件或其它对 象的所有权 权限只分配给 Administrators 组。
b.禁止普通用户使用命令提示符;
gpedit.msc 组策略 -> 用户配置 -> 管理模板->系统
c.设置不显示上次登录的用户名。
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
A-2 任务二 Nginx 安全策略(Linux)
3.禁止目录浏览和隐藏服务器版本和信息显示;
打开 nginx.conf 文件,在 location server 或 http 段中删除
autoindex off;
写在 srver_tokens 上面
4.限制 HTTP 请求方式,只允许 GET、HEAD、POST;
• 在 nginx 配置文件中的 http 下配置
5.设置客户端请求主体读取超时时间为 10;
• Vim nginx.conf
• 设置客户端请求头读取超时时间为 10;
• Vim nginx.conf
6.将 Nginx 服务降权,使用 www 用户启动服务。
Vi /etc/nginx.conf
A-3 任务三 日志监控(Windows)
8.安全日志文件大小至少为 128MB,设置当达到最大的日志大小 上限时,覆盖早于 30 天的日志;
事件查看器 eventvwr.msc–>windows 日志–>安全–>点击属性 进行修改
9.应用日志文件大小至少为 64MB,设置当达到最大的日志大小 上限时,覆盖早于 15 天的日志;
10.系统日志大小至少为 32MB,设置当达到最大的日志大小上限 时,按需要覆盖事件。
事件查看器 eventvwr.msc–>windows 日志–>安全–>点击属性 进行修改
安装域环境 计算机配置---windows 设置---安全设置---事件日志
A-4 任务四 中间件服务加固 SSHDVSFTPDIIS(Windows, Linux)
11.SSH 服务加固(Linux)
a.修改 ssh 服务端口为 2222;
vi /etc/ssh/sshd_config
Service sshd restart 重启 ssh
为了防止密码在登录或者传输信息中被窃取,仅使用证书登录 SSH (Linux),将/etc/ssh/sshd_config 配置文件中对应的部分截图
b.ssh 禁止 root 用户远程登录;
PermitRootLogin yes 修改为 no
c.设置 root 用户的计划任务。每天早上 7:50 自动开启 ssh 服 务,22:50 关闭;每周六的 7:30 重新启动 ssh 服务;
d.修改 SSHD 的 PID 档案存放地。
cat /etc/ssh/sshd_config
#PidFile /var/run/sshd.pid
pid 文件存放位置
12.VSFTPD 服务加固(Linux)
a.设置运行 vsftpd 的非特权系统用户为 pyftp;
Vi /etc/vsftpd/vsftpd.conf
nopriv_user=pyftp
b.限制客户端连接的端口范围在 50000-60000;
Vi /etc/vsftpd/vsftpd.conf
pasv_min_port=50000
pasv_max_port=60000
将使客户端连接时的端口范围在 50000 和 60000 之间 后面加
7. c.限制本地用户登陆活动范围限制在 home 目录。
Vi /etc/vsftpd/vsftpd.conf
设置对所有的本地用户执行 chroot(即活动范围限制在自家目录)只要将 chroot_local_user 的值设 为 YES 即可, 即:
chroot_local_user=YES
local_root=/home13.IIS 加固(Windows)
b.关闭 IIS 的 WebDAV 功能增强网站的安全性。
A-5 任务五 本地安全策略(Windows)
14.禁止匿名枚举 SAM 帐户;
本地组策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全 选项
15.禁止系统在未登录的情况下关闭;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选 项
16.禁止存储网络身份验证的密码和凭据;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选 项
17. 禁止将 Everyone 权限应用于匿名用户;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全 选项
18. 在超过登录时间后强制注销。
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
A-6 任务六 防火墙策略(Linux)
19. 设置防火墙允许本机转发除 ICMP 协议以外的所有数据包;
iptables -A FORWARD ! -p icmp -j ACCEPT
20. 为防止 Nmap 等扫描软件探测到关键信息,设置 iptables 防火墙策略对 80 号端口进行流量处理;
Iptables -A INPUT -p tcp --dport 80 -j DROP
为防御拒绝服务攻击,设置 iptables 防火墙策略对传入的流量 进行过滤,限制每分钟允许 3 个包传入,并将瞬间流量设定为一次 最多处理 6 个数据包(超过上限的网络数据包将丢弃不予处理);
iptables -A INPUT -m limit --limit 3/m --limit-burst 6 -j ACCEPT
iptables -A OUTPUT -m limit --limit 3/m --limit-burst 6 -j ACCEPT
21. 只允许转发来自 172.16.0.0/24 局域网段的 DNS 解析请求 数据包。
iptables -A FORWARD -s 172.16.0.0/24 -p udp --dport 53 -j ACCEPT
A-2 任务二 本地安全策略(Windows)
8.要求登录时不显示用户名;
运行 gpedit.msc 打开组策略,在计算机配置→Windows 设置→安全设置→本地策略→安全选项→交互式登录:不显示上次的用户名。
9.在密码过期的前 5 天开始提示用户在过期之前更改密码;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
10.要求任何用户在登录到 Windows 前都必须按 CTRL+ALT+DEL;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
11.禁止 SAM 帐户和共享的匿名枚举;
本地策略编辑器 -> windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
12.禁用来宾帐户。
A-3 任务三 服务安全配置(Windows)
8.禁用 TCP/IP 上的 NetBIOS 协议,关闭监听的 UDP 137 (netbios-ns)、UDP 138(netbios-dgm)以及 TCP 139 (netbios-ssn)端口;
在 计算机管理 > 服务和应用程序 > 服务 中禁用 TCP/IP NetBIOS Helper 服务。双击
在网络连接属性中,双击 Internet 协议版本 4(TCP/IPv4),单击 高级。 在 WINS 页签中,进行如下设置:
9.在本地策略里配置禁用未登陆前关机;
secpol.msc 依次展开如下分支“计算机配置→Windows 设置→安全设置 →本地策略→安全选项”,在右侧的窗格中找到“关机:允许在未登陆前关 机”选项,双击。
10.设置从屏幕保护恢复时需要输入密码,并将屏幕保护自动开 启时间设定为五分钟;
启用屏幕保护程序,设置等待时间为 5 分钟,并启用 在恢复时使用密码 保护。
11.对于远程登录的帐户,设置不活动超过时间 5 分钟自动断开 连接。
打开 控制面板 > 管理工具 > 本地安全策略,在 本地策略 > 安全选项 中,设置 Microsoft 网络服务器:暂停会话前所需的空闲时间数量 属性为 5 分钟。
A-5 任务五 中间件安全加固 SSHDVSFTPDIIS(Windows, Linux)
15.SSHD 服务加固
a.修改 SSH 连接界面静置时间;
vi /etc/ssh/sshd_config,添加如下两行
ClientAliveInterval 300
ClientAliveCountMax 3
b.修改登录记录的等级为 INFO;
vi /etc/ssh/sshd_config
LogLevel INFO
c.禁止登陆后显示信息。
16.VSFTPD 服务加固
a.同一客户机 IP 地址允许最大客户端连接数 10;
vi /etc/vsftpd/vsftpd.conf
Max_per_ip=10
b.最大客户端连接数为 100;
vi /etc/vsftpd/vsftpd.conf
Max_clients=100
c.设置数据连接的超时时间为 2 分钟;
vi /etc/vsftpd/vsftpd.conf
data_connection_timeout=120
d.设置本地用户创建文件的权限为 022。
vi /etc/vsftpd/vsftpd.conf
local_umask=022
17.IIS 服务加固
a.关闭 FTP 匿名访问;
控制面板 –> 管理工具 –> Internet 信息服务管理器
打开后左侧选择相应的 FTP 站点
右击 –> 属性 –> 安全帐户
允许匿名连接 前面的√取消掉,点击确定
b 为了解决 IIS 短文件名漏洞,设置 URL 序列为~;
IIS-》请求筛选-》URL-》添加拒绝序列-》URL 序列设置为【~】
c.设置网站最大并发连接数为 10。
Internet 信息服务 IIS 管理器 -> 网站->高级设置 ->限制 -> 最大并发 连接数
A-6 任务六 防火墙策略(Windows)
18. 禁止任何机器 ping 本机;
19.禁止本机 ping 任何机器;
iptables -A OUTPUT -p icmp -j DROP
20.拒绝 TCP 标志位全部为 1 及全部为 0 的报文访问本机;
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
21.禁止转发来自 MAC 地址为 29:0E:29:27:65:EF 主机的数据 包。
iptables -A FORWARD -m mac --mac-source 29:0E:29:27:65:EF -j DROP
A-5 任务五 Web 安全加固(Windows)
19.防止文件枚举漏洞枚举网络服务器根目录文件,禁止 IIS 短 文件名泄露;
1. 打开命令提示符输入 fsutil 8dot3name set 1 (Windows Server 2008 R2)
A-6 任务六 防火墙安全策略(iptables)
21.为确保安全 Linux 系统禁止所有人通过 ssh 连接除了 172.16.1.1 这个 ip;
iptables -A INPUT -p tcp --dport 22 -s 172.16.1.1 -j ACEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
22.在工作时间,即周一到周五的 8:30-18:00,开放本机的 ftp 服务给 192.168.1.0 网络中的主机访问;
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time -- weekdays 1,2,3,4,5 --timestart 08:30 --timestop 18:00 -j ACCEPT
23.要求从 ftp 服务的数据下载请求次数每分钟不得超过 5 个;
iptables -A INPUT -p tcp -m state --state RELATED -m limit -- limit 5/m -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state RELATED -m limit -- limit 5/m -j ACCEPT
24.拒绝 TCP 标志位全部为 1 及全部为 0 的报文访问本机;
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
25.配置 iptables 防火墙过滤规则,以封堵目标网段 (172.16.1.0/24),并在两小时后解除封锁。
iptables -I INPUT -s 172.16.1.0/24 -j DROP
iptables -I FORWARD -s 172.16.1.0/24 -j DROP
at now +2hours
iptables -D INPUT 1
iptables -D FORWARD