一、项目和任务描述
假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用用户安全管理和密码策略、本地安全策略、服务安全配置、日志安全审计、中间件安全配置、防火墙策略等多种安全策略来提升服务器系统的网络安全防御能力。
二、服务器环境说明
Win7 用户名:administrator,密码:Aa123456
Kali 用户名:kali,密码:kali
三、具体任务
请对服务器Win7、Kali按要求进行相应的设置,提高服务器的安全性。
A-1任务一 登录安全加固(Win7, Kali)
1.密码策略(Win7, Kali)
a.最小密码长度不少于13个字符;
b.密码必须符合复杂性要求。
2.用户安全管理(Win7)
a.设置取得文件或其他对象的所有权,将该权限只指派给administrators组;
b.禁止普通用户使用命令提示符;
c.设置不显示上次登录的用户名。
A-2任务二 本地安全策略(Win7)
3.要求登录时不显示用户名;
4.在密码过期的前5天开始提示用户在过期之前更改密码;
5.要求任何用户在登录到Windows前都必须按CTRL+ALT+DEL;
6.禁止SAM 帐户和共享的匿名枚举;
7.禁用来宾帐户。
A-3任务三 数据库安全策略
8.以普通帐户mysql安全运行mysql服务,禁止mysql以管理员帐号权限运行;
9.删除默认数据库(test);
10.改变默认mysql管理员用户为:SuperRoot;
11.使用mysql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!)。
A-4任务四 日志安全审计(Win7)
12.启用本地安全策略中对Windows系统的审核目录服务访问,仅需要审核失败操作;
13.启用本地安全策略中对Windows系统的审核特权使用,成功和失败操作都需要审核;
14.启用本地安全策略中对Windows系统的审核系统事件,成功和失败操作都需要审核;
15.启用本地安全策略中对Windows系统的审核帐户管理,成功和失败操作都要审核;
16.启用本地安全策略中对Windows系统的审核进程追踪,仅失败操作需要审核。
A-5任务五 流量完整性保护(Win7)
17.对Web网站进行HTTP重定向HTTPS设置,仅使用HTTPS协议访问网站(Windows)(注:证书颁发给test.com 并通过https://www.test.com访问Web网站)。
A-6任务六 防火墙策略(Kali)
18.设置防火墙允许本机转发除ICMP协议以外的所有数据包;
19.为防止Nmap等扫描软件探测到关键信息,设置iptables防火墙策略对80号端口进行流量处理;
20.为防御拒绝服务攻击,设置iptables防火墙策略对传入的流量进行过滤,限制每分钟允许3个包传入,并将瞬间流量设定为一次最多处理6个数据包(超过上限的网络数据包将丢弃不予处理);
21.只允许转发来自172.16.0.0/24局域网段的DNS解析请求数据包。
Linux 操作系统安全加固措施
1.定期更新系统和软件包
定期更新操作系统和软件包可以保持系统最新,以修复已知的安全漏洞和弱点。您可以使用以下命令在 CentOS 上更新软件包:
sudo yum update
2.禁用不必要的服务
禁用不必要的服务可以减少系统暴露在攻击风险之下的机会。您可以使用以下命令列出所有正在运行的服务:
systemctl list-unit-files --type=service
然后,您可以使用以下命令禁用任何不必要的服务:
sudo systemctl disable <服务名称>
3.安装并启用防火墙
防火墙是保护 Linux 系统的重要组成部分。您可以使用以下命令在 CentOS 上安装 firewalld:
sudo yum install firewalld
然后,您可以使用以下命令启动和启用 firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalld
4.禁止 root 用户 SSH 登录
禁止 root 用户 SSH 登录可以减少暴露在恶意攻击风险之下的机会。您可以使用以下命令修改 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
在文件中找到 PermitRootLogin yes 行,并将其更改为 PermitRootLogin no。然后,重新启动 SSH 服务:
sudo systemctl restart sshd
5.配置强密码策略
强密码策略可以防止使用弱密码对系统进行攻击。您可以使用以下命令安装 cracklib 库和 pam_pwquality 模块:
sudo yum install cracklib pam_pwquality
然后,您可以使用以下命令编辑 /etc/pam.d/system-auth 文件,以添加密码策略:
sudo vi /etc/pam.d/system-auth
在文件中找到以下行,并进行修改:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
添加以下内容:
minlen=14 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
然后,保存并退出文件。
6.禁用不必要的系统用户
禁用不必要的系统用户可以减少系统面临的攻击风险。您可以使用以下命令禁用不必要的用户:
sudo usermod -s /sbin/nologin <用户名>
例如,禁用 apache 用户:
sudo usermod -s /sbin/nologin apache
7.限制文件和目录权限
限制文件和目录权限可以防止未经授权的访问和修改。以下是一些常见的文件和目录权限设置:
为目录设置 700 权限: chmod 700 <目录>
为文件设置 600 权限: chmod 600 <文件>
为 SUID 文件设置 4755 权限: chmod 4755 <文件>
为 SGID 文件设置 2755 权限: chmod 2755 <文件>
为 Sticky Bit 目录设置 1777 权限: chmod 1777 <目录>
8.配置 SELinux
SELinux 是一种强制访问控制机制,可防止未经授权的访问和操作。您可以使用以下命令安装 SELinux:
sudo yum install selinux-policy selinux-policy-targeted
然后,您可以使用以下命令启用 SELinux:
sudo setenforce 1
9.禁用 IPv6
禁用 IPv6 可以减少系统受到攻击的机会。您可以使用以下命令编辑 /etc/sysctl.conf 文件:
sudo vi /etc/sysctl.conf
在文件底部添加以下行:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
然后,保存并退出文件。
10.定期备份数据
定期备份数据可以保护您的数据免受灾难性事件和安全漏洞的影响。您可以使用以下命令将数据备份到远程服务器或本地存储设备:
rsync -avz --delete <源目录> <目标目录>
11.安装防病毒软件
安装防病毒软件可以帮助检测和清除病毒和恶意软件,从而保护您的系统和数据。您可以选择市场上广泛使用的防病毒软件,例如 ClamAV 或 Sophos。
12.配置 SSH
SSH 是远程登录的主要方式,但它也是黑客攻击的一个重要入口。以下是一些安全配置 SSH 的建议:
禁用 SSH root 登录:在 /etc/ssh/sshd_config 文件中设置 PermitRootLogin no。
更改 SSH 端口:在 /etc/ssh/sshd_config 文件中设置 Port <新端口号>。
配置 SSH 公钥认证:在 SSH 客户端上生成公钥和私钥,然后将公钥上传到服务器,将私钥保留在客户端。
禁用 SSH 1:在 /etc/ssh/sshd_config 文件中设置 Protocol 2。
启用 SSH 会话超时:在 /etc/ssh/sshd_config 文件中设置 ClientAliveInterval 300 和 ClientAliveCountMax 0。
配置 Fail2Ban:Fail2Ban 可以监视 SSH 登录尝试,当有多次失败的登录尝试时,它会暂时禁止来源 IP 的访问。
13.配置审计
配置审计可以跟踪系统和应用程序活动,并为您提供有关访问和操作的详细信息。您可以使用以下命令安装审计工具:
sudo yum install auditd
然后,您可以使用以下命令编辑 /etc/audit/auditd.conf 文件:
sudo vi /etc/audit/auditd.conf
在文件中找到并取消注释以下行:
max_log_file_action = ROTATE
space_left_action = SYSLOG
admin_space_left_action = SUSPEND
https://deepinout.com/linux-cmd/linux-audit-system-related-cmd/linux-cmd-auditctl.html
14.安装和配置防火墙
防火墙可以帮助防止未经授权的访问和攻击。您可以使用以下命令安装和配置防火墙:
sudo yum install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-port=<端口号>/tcp
sudo firewall-cmd --reload
第一行命令安装防火墙,第二行命令启用防火墙,第三行命令启动防火墙。第四行命令允许 HTTP 和 HTTPS 流量,第五行命令允许指定端口的流量。最后一行命令重新加载防火墙规则。
15.安装和配置 IDS/IPS
IDS/IPS 是入侵检测和预防系统,可以监视网络流量并检测潜在的攻击。您可以使用以下命令安装和配置 IDS/IPS:
sudo yum install snort
sudo snort -T -c /etc/snort/snort.conf
sudo systemctl enable snort
sudo systemctl start snort
第一行命令安装 Snort,一个广泛使用的 IDS/IPS 工具。第二行命令测试 Snort 配置是否正确。第三行和第四行命令启用并启动 Snort 服务。
https://blog.leonshadow.cn/763482/1255.html
16.配置 SELinux
SELinux(Security-Enhanced Linux)是一种强制访问控制机制,可以限制进程的访问权限,防止恶意进程的执行。在 CentOS 中,SELinux 默认是开启的。您可以使用以下命令配置 SELinux:
sudo setenforce 1
sudo vi /etc/selinux/config
第一行命令开启 SELinux。第二行命令编辑 /etc/selinux/config 文件,并将 SELINUX 的值设置为 enforcing,以确保 SELinux 在系统重启后仍然保持开启状态。
17.配置 sudo
sudo 可以授予普通用户执行特权命令的权限。为了防止滥用,应该限制哪些用户可以使用 sudo,以及哪些命令可以使用 sudo。您可以使用以下命令编辑 /etc/sudoers 文件:
添加以下行,以允许 username 用户使用 command 命令:
username ALL=(ALL) command
18.禁用不必要的服务
不必要的服务可能存在漏洞,或者可能被黑客用来入侵系统。因此,您应该禁用不必要的服务。您可以使用以下命令列出正在运行的服务:
sudo systemctl list-unit-files --type=service --state=running
然后,您可以使用以下命令禁用服务:
sudo systemctl disable service-name
其中,service-name 是要禁用的服务的名称。
19.配置 SSH 隧道
SSH 隧道可以加密和保护通过公共网络传输的数据。您可以使用以下命令创建 SSH 隧道:
ssh -L <本地端口>:<目标地址>:<目标端口> <SSH 服务器地址>
其中,本地端口 是您本地计算机上要使用的端口,目标地址 是要访问的目标地址,目标端口 是要访问的目标端口,SSH 服务器地址 是 SSH 服务器的地址。
20.安装并使用加密工具
加密工具可以帮助加密和保护敏感数据,例如加密文件、加密邮件和加密聊天。您可以选择使用市场上广泛使用的加密工具,例如 GnuPG 或 OpenSSL。
21.配置系统日志
系统日志可以记录重要事件和错误,以便在需要时进行故障排除。您可以使用以下命令配置系统日志:
sudo vi /etc/rsyslog.conf
然后,您可以将以下行添加到 rsyslog.conf 文件中,以将系统日志记录到 /var/log/messages 文件中:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
22.定期备份数据
数据备份是防止数据丢失和恢复数据的重要步骤。您应该定期备份数据,并将备份文件存储在安全的位置。您可以使用以下命令备份文件:
tar -czvf backup.tar.gz /path/to/backup
其中,/path/to/backup 是要备份的文件夹的路径,backup.tar.gz 是要创建的备份文件的名称。
23.定期更新系统和应用程序
定期更新系统和应用程序是保持系统安全的重要步骤。您可以使用以下命令更新系统和应用程序:
sudo yum update
24.定期进行漏洞扫描和安全评估
定期进行漏洞扫描和安全评估是发现潜在漏洞和安全问题的重要步骤。您可以使用市场上广泛使用的漏洞扫描和安全评估工具,例如 OpenVAS 或 Nessus。
25.配置访问控制列表 (ACLs)
访问控制列表 (ACLs) 可以帮助您控制用户或用户组对特定文件或目录的访问权限。您可以使用以下命令设置 ACL:
setfacl -m u:: <file/directory>
其中 是用户的用户名, 是要授予的权限,<file/directory> 是要设置 ACL 的文件或目录。例如,以下命令将用户 john 添加到 /var/www/html 目录的 ACL,并授予读取和写入权限:
setfacl -m u:john:rw /var/www/html
26.禁用不必要的服务和端口
Linux 操作系统默认启动许多服务和端口,这些服务和端口可能存在安全风险。您可以使用以下命令检查系统上正在运行的服务和端口:
sudo netstat -tulpn
然后,您可以禁用不必要的服务和端口,以提高系统安全性。
27.配置 SELinux
SELinux 是 Linux 操作系统的一个强制访问控制 (MAC) 机制,它可以帮助您保护系统免受恶意代码和攻击。您可以使用以下命令配置 SELinux:
arduino
Copy code
sudo vi /etc/selinux/config
然后,您可以将 SELINUX 设置为 enforcing,并重新启动系统:
SELINUX=enforcing
28.配置 SSH
SSH 是一种安全远程登录协议,它可以帮助您在网络上安全地远程登录 Linux 系统。您可以使用以下命令配置 SSH:
sudo vi /etc/ssh/sshd_config
然后,您可以禁用密码身份验证,并启用密钥身份验证:
PasswordAuthentication no
PubkeyAuthentication yes
29.配置防火墙
Linux 操作系统默认启用防火墙,但您可以使用以下命令检查防火墙状态:
sudo systemctl status firewalld
如果防火墙未启用,则可以使用以下命令启用防火墙:
sudo systemctl enable firewalld
然后,您可以使用以下命令添加防火墙规则:
css
Copy code
sudo firewall-cmd --add-port=/tcp --permanent
sudo firewall-cmd --reload
其中 是要开放的端口号。