数字档案馆系统网络安全防护实操技术指南
一、操作系统底层安全加固
数字档案馆系统的基石是服务器操作系统,首先需对Linux服务器(以CentOS 7/Ubuntu 20.04为例)进行底层加固,关闭不必要的端口和服务,防止系统级漏洞被利用。
1. 配置防火墙策略
使用系统自带的firewalld或ufw仅开放必要端口。档案馆系统通常仅需开放Web服务(80/443)和SSH管理端口。
执行以下命令安装并配置防火墙(Ubuntu环境):
sudo apt update
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
2. SSH服务安全配置
默认的SSH配置存在较大风险,必须禁止root远程登录并修改默认端口。编辑配置文件:
sudo vim /etc/ssh/sshd_config
找到以下参数并修改为如下值,若被注释则取消注释:
Port 22222 修改为非标准高位端口
PermitRootLogin no 禁止root直接登录
PasswordAuthentication no 强制使用密钥登录
Protocol 2 仅使用SSH2协议
MaxAuthTries 3 最大重试次数为3
保存并重启SSH服务:
sudo systemctl restart sshd
二、Web服务器与传输加密配置
Nginx作为高性能反向代理,是数字档案馆系统的常见入口。此处重点配置SSL加密及安全响应头,防止数据在传输层被窃听或篡改。
1. 强制HTTPS跳转与SSL配置
首先使用Let's Encrypt获取免费证书,确保全站HTTPS。安装Certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your.archive-domain.com
编辑Nginx站点配置文件(通常位于/etc/nginx/sites-available/default),强制HTTP跳转HTTPS并优化SSL参数:
server {
listen 80;
server_name your.archive-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your.archive-domain.com;
ssl_certificate /etc/letsencrypt/live/your.archive-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.archive-domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
其他配置...
}
2. 配置安全响应头
在Nginx配置的server块中添加以下头部,防御点击劫持、XSS等攻击:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
三、应用层防入侵部署(WAF)
仅靠系统防火墙无法防御SQL注入、WebShell上传等应用层攻击。部署Nginx自带的WAF模块ModSecurity是零成本且高效的方案。
1. 安装ModSecurity
sudo apt install libmodsecurity3 modsecurity-common
2. 下载并启用OWASP核心规则集
OWASP CRS提供了覆盖已知攻击模式的规则库。
cd /etc/modsecurity
sudo mv modsecurity.conf-recommended modsecurity.conf
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' modsecurity.conf
下载规则集:

cd /etc
sudo git clone https://github.com/coreruleset/coreruleset.git
sudo cd coreruleset
sudo mv crs-setup.conf.example crs-setup.conf
3. 关联Nginx与ModSecurity
在Nginx配置文件的http块或具体server块中引入:
modsecurity on;
modsecurity_rules_file /etc/modsecurity/modsecurity.conf;
在modsecurity.conf末尾引入OWASP规则:
Include /etc/coreruleset/rules/.conf
重启Nginx生效:
sudo nginx -t
sudo systemctl restart nginx
四、数据库访问控制与审计
数字档案馆的核心资产存储在数据库中(以MySQL为例)。必须禁止数据库直连外网,并实施严格的权限控制。
1. 账号权限最小化
登录MySQL,创建仅允许本地连接的应用专用账号,禁止使用Root账号运行Web应用。
mysql -u root -p
执行SQL语句:
CREATE USER 'archive_user'@'localhost' IDENTIFIED BY 'Strong_P@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON archive_db. TO 'archive_user'@'localhost';
FLUSH PRIVILEGES;
2. 开启二进制日志审计
编辑MySQL配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,确保以下配置开启:
[mysqld]
log-bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
expire_logs_days = 7
重启服务:
sudo systemctl restart mysql
五、自动化异地备份策略
为了应对勒索病毒或硬件故障,必须实施“3-2-1”备份策略。此处编写一个Shell脚本,实现数据库和文件目录的每日自动压缩,并上传至异地备份服务器(假设通过SCP传输)。
1. 编写备份脚本
创建文件/usr/local/bin/backup_archive.sh:
!/bin/bash
定义变量
BACKUP_DIR="/data/backup"
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER="archive_user"
DB_PASS="Strong_P@ssw0rd!"
DB_NAME="archive_db"
WEB_DIR="/var/www/html"
REMOTE_USER="backup_user"
REMOTE_IP="192.168.100.200"
REMOTE_DIR="/remote/backup"
创建本地备份目录
mkdir -p $BACKUP_DIR
1. 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz
2. 备份Web文件(排除缓存)
tar -czvf $BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR --exclude=$WEB_DIR/cache
3. 传输到异地服务器
scp $BACKUP_DIR/db_$DATE.sql.gz $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
scp $BACKUP_DIR/web_$DATE.tar.gz $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
4. 清理本地7天前的备份
find $BACKUP_DIR -name ".gz" -mtime +7 -exec rm {} \;
echo "Backup Completed at $DATE"
赋予执行权限:
sudo chmod +x /usr/local/bin/backup_archive.sh
2. 配置定时任务
使用Crontab设定每天凌晨2点执行备份:
crontab -e
添加以下内容:
0 2 /usr/local/bin/backup_archive.sh >> /var/log/backup.log 2>&1