linux系统实用篇-17、动手操作之DVWA应用/系统安全防护配置
基于《网络安全等级保护三级要求》(等保三级),对安装有数据库和Web服务的DVWA环境进行加固,从操作系统、数据库、Web服务以及网络通信等多个层面进行全面的安全配置。
1.操作系统加固
操作系统是数据库和Web服务的基础,必须确保其安全性。
1.1 身份鉴别
- 强化密码策略:
编辑
/etc/pam.d/common-password(Debian/Ubuntu)或/etc/pam.d/system-auth(CentOS/RHEL),设置密码复杂度:
password requisite pam_pwquality.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
解释:
- minlen=12:密码最小长度为12。
- lcredit=-1:至少包含1个小写字母。
- ucredit=-1:至少包含1个大写字母。
- dcredit=-1:至少包含1个数字。
- ocredit=-1:至少包含1个特殊字符。
设置密码有效期,编辑 /etc/login.defs:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
解释:
- PASS_MAX_DAYS:密码最长使用90天。
- PASS_MIN_DAYS:密码修改间隔至少7天。
- PASS_WARN_AGE:密码过期前14天提醒用户。
- 限制登录失败次数: 使用pam_tally2模块:
auth required pam_tally2.so deny=5 unlock_time=600
解释:
- deny=5:连续失败5次后锁定账户。
- unlock_time=600:锁定10分钟。
1.2 访问控制
- 禁用root用户直接登录: 编辑 /etc/ssh/sshd_config:
PermitRootLogin no
- 最小权限原则: 使用sudo限制用户权限,编辑 /etc/sudoers:
username ALL=(ALL) NOPASSWD:ALL
- 文件权限控制:
设置关键文件和目录的权限:
chmod 600 /etc/passwd /etc/shadow /etc/group
chmod 700 /root
chmod 750 /home/*
使用chattr防止关键文件被修改:
chattr +i /etc/passwd /etc/shadow /etc/group
1.3 安全审计
- 启用审计日志: 安装并配置auditd:
sudo apt install auditd
编辑 /etc/audit/audit.rules:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /var/log/ -p wa -k logs
1.4 入侵防范
- 安装Fail2Ban: 防止暴力破解:
sudo apt install fail2ban
配置 /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 3
bantime = 3600
1.5 恶意代码防范
- 安装ClamAV: 定期扫描系统:
sudo apt install clamav
sudo freshclam
sudo clamscan -r /
2.数据库加固
数据库是系统的核心,必须确保其安全性。
2.1 身份鉴别
- 强化数据库用户密码: 设置复杂密码策略:
ALTER USER 'username'@'localhost' IDENTIFIED BY 'StrongPassword123!';
- 限制数据库用户权限: 遵循最小权限原则:
GRANT SELECT, INSERT, UPDATE ON database.* TO 'username'@'localhost';
2.2 访问控制
- 限制数据库访问IP:
- 只允许特定IP访问数据库:
GRANT ALL PRIVILEGES ON database.* TO 'username'@'192.168.1.100';
- 禁用远程root登录:
- 编辑MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf:
bind-address = 127.0.0.1
2.3 安全审计
- 启用数据库审计日志: 配置MySQL审计插件:
INSTALL PLUGIN audit_log SONAME 'audit_log.so';
2.4 数据加密
- 启用SSL/TLS加密: 配置MySQL使用SSL:
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
3.Web服务加固
Web服务是系统的对外接口,必须确保其安全性。
3.1 身份鉴别
- 启用HTTPS: 使用Let's Encrypt免费SSL证书:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
- 强化Web应用密码策略: 确保Web应用使用强密码策略。
3.2 访问控制
- 限制Web目录权限: 设置Web目录权限:
chown -R www-data:www-data /var/www/html
chmod -R 750 /var/www/html
- 配置Web服务器防火墙: 使用UFW限制访问:
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
3.3 安全审计
- 启用Web服务器日志: 确保Apache/Nginx日志启用:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
3.4 防止常见Web攻击
- 防止SQL注入和XSS: 确保Web应用使用参数化查询和输入验证。
- 配置WAF: 使用ModSecurity等Web应用防火墙:
sudo apt install libapache2-mod-security2
4.网络通信加固
确保网络通信的安全性。
4.1 使用VPN
- 配置OpenVPN或IPSec VPN,确保远程访问安全。
4.2 配置防火墙
- 使用iptables或UFW限制不必要的端口:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow from 192.168.1.0/24 to any port 161 proto udp
sudo ufw allow from 192.168.1.0/24 to any port 162 proto udp
sudo ufw allow from 192.168.1.0/24 to any port 514 proto udp
sudo ufw enable
4.3 启用IDS/IPS
- 使用Snort或Suricata进行入侵检测和防御。
5.定期安全评估
- 使用Lynis进行系统安全评估:
sudo lynis audit system
- 定期进行漏洞扫描和渗透测试。
总结
通过以上步骤,安装有数据库和Web服务的DVWA系统可以得到安全防护。需要注意的是,安全防护是一个持续改进的过程,建议定期进行安全评估和加固,确保系统始终符合安全标准。