FetchDebian如何进行安全加固
小樊
47
2026-01-03 19:59:15
FetchDebian安全加固实践
一 核心原则与总体思路
- FetchDebian通常指通过APT从Debian仓库获取软件包的过程,其安全性依赖于发行版的安全更新机制与可信软件源。因此,加固的重点是:及时获取并自动安装安全补丁、仅使用可信仓库、最小化暴露面与权限、持续监控与审计。
二 加固清单与操作要点
- 软件源与完整性
- 仅启用官方或可信镜像,编辑**/etc/apt/sources.list与/etc/apt/sources.list.d/,确保包含security.debian.org的安全仓库;定期执行sudo apt update**获取最新索引。
- 变更前后校验仓库与软件包完整性,必要时比对SHA256等散列值,防止篡改与投毒。
- 自动安全更新
- 安装并启用unattended-upgrades,自动仅拉取并安装安全更新:sudo apt install unattended-upgrades && sudo dpkg-reconfigure unattended-upgrades。
- 用户与认证
- 日常使用普通用户+sudo,禁止root远程登录:在**/etc/ssh/sshd_config设置PermitRootLogin no**;禁用空密码:设置PermitEmptyPasswords no。
- 强化口令策略:在**/etc/login.defs设置PASS_MAX_DAYS 90**、PASS_MIN_DAYS 1、PASS_WARN_AGE 30;在PAM启用pam_pwquality与pam_pwhistory强制复杂度与历史不重复(如minlen≥8、minclass≥3、remember≥3)。
- 登录失败锁定:使用pam_faillock限制连续失败次数(如deny=5、unlock_time=300),并记录审计日志。
- 服务与端口最小化
- 关闭不必要的服务与端口,仅开放业务必需端口(如22/80/443);对外最小化暴露,内部服务绑定127.0.0.1或内网接口。
- 防火墙与入侵防护
- 使用ufw/iptables实施最小入站规则,仅放行必要来源与端口;对SSH可结合Fail2ban自动封禁暴力破解来源。
- 进程与内核加固
- 启用AppArmor(Debian默认),为关键服务(如nginx、sshd、docker)加载或编写强制访问控制策略,限制越权访问。
- 日志与审计
- 确保rsyslog运行并集中存储日志;按需部署auditd记录关键系统调用与管理员操作,定期审计异常行为。
三 快速执行脚本示例
- 更新索引与升级
- sudo apt update && sudo apt full-upgrade -y && sudo reboot(如有内核更新)
- 启用自动安全更新
- sudo apt install -y unattended-upgrades
- echo ‘APT::Periodic::Update-Package-Lists “1”;’ | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
- echo ‘APT::Periodic::Unattended-Upgrade “1”;’ | sudo tee -a /etc/apt/apt.conf.d/20auto-upgrades
- sudo dpkg-reconfigure --priority=low unattended-upgrades
- 加固SSH与密码策略
- sudo sed -i ‘s/^#PermitRootLogin./PermitRootLogin no/’ /etc/ssh/sshd_config
- sudo sed -i ‘s/^#PermitEmptyPasswords./PermitEmptyPasswords no/’ /etc/ssh/sshd_config
- echo ‘PASS_MAX_DAYS 90’ | sudo tee -a /etc/login.defs
- echo ‘PASS_MIN_DAYS 1’ | sudo tee -a /etc/login.defs
- echo ‘PASS_WARN_AGE 30’ | sudo tee -a /etc/login.defs
- sudo apt install -y libpam-pwquality
- echo ‘password requisite pam_pwquality.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 minclass=3 enforce_for_root retry=3’ | sudo tee /etc/pam.d/common-password
- echo ‘password requisite pam_pwhistory.so remember=3 enforce_for_root use_authtok’ | sudo tee -a /etc/pam.d/common-password
- 登录失败锁定
- echo ‘deny = 5’ | sudo tee /etc/security/faillock.conf
- echo ‘unlock_time = 300’ | sudo tee -a /etc/security/faillock.conf
- echo ‘auth required pam_faillock.so preauth silent audit’ | sudo tee /etc/pam.d/common-auth
- echo ‘auth [success=1 default=ignore] pam_unix.so’ | sudo tee -a /etc/pam.d/common-auth
- echo ‘auth [default=die] pam_faillock.so authfail silent audit’ | sudo tee -a /etc/pam.d/common-auth
- echo ‘auth sufficient pam_faillock.so authsucc silent audit’ | sudo tee -a /etc/pam.d/common-auth
- echo ‘account required pam_faillock.so’ | sudo tee -a /etc/pam.d/common-account
- 防火墙与入侵防护
- sudo apt install -y ufw fail2ban
- sudo ufw default deny incoming
- sudo ufw allow 22,80,443/tcp
- sudo ufw enable
- sudo systemctl enable --now fail2ban
- 进程与内核加固
- sudo apt install -y apparmor apparmor-utils
- sudo aa-enforce /etc/apparmor.d/* 2>/dev/null || true
- 日志与审计
- sudo apt install -y rsyslog auditd
- sudo systemctl enable --now rsyslog auditd
- 重启与验证
- sudo reboot
- 验证:unattended-upgrades --dry-run -v;ufw status;fail2ban-client status;aa-status;last -x | head;grep -i “faillock” /var/log/auth.log。
四 验证与持续运维
- 安全更新与重启
- 确认unattended-upgrades已启用并成功运行;内核/关键库更新后按计划重启以完成生效。
- 服务与端口
- 使用ss -tulpen与nmap自测仅开放必要端口;验证PermitRootLogin no与Fail2ban拦截效果。
- 账户与认证
- 使用chage -l 检查口令有效期;尝试错误口令触发faillock锁定策略;验证口令复杂度策略生效。
- 入侵检测与审计
- 定期查看**/var/log/auth.log**、/var/log/syslog与auditd日志;按需运行AIDE/Lynis进行基线核查与完整性校验;对关键变更执行备份与回滚预案。