温馨提示×

FetchDebian如何进行安全加固

小樊
47
2026-01-03 19:59:15
栏目: 智能运维

FetchDebian安全加固实践

一 核心原则与总体思路

  • FetchDebian通常指通过APTDebian仓库获取软件包的过程,其安全性依赖于发行版的安全更新机制可信软件源。因此,加固的重点是:及时获取并自动安装安全补丁、仅使用可信仓库、最小化暴露面与权限、持续监控与审计。

二 加固清单与操作要点

  • 软件源与完整性
    • 仅启用官方或可信镜像,编辑**/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 1PASS_WARN_AGE 30;在PAM启用pam_pwqualitypam_pwhistory强制复杂度与历史不重复(如minlen≥8、minclass≥3、remember≥3)。
    • 登录失败锁定:使用pam_faillock限制连续失败次数(如deny=5unlock_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 -tulpennmap自测仅开放必要端口;验证PermitRootLogin noFail2ban拦截效果。
  • 账户与认证
    • 使用chage -l 检查口令有效期;尝试错误口令触发faillock锁定策略;验证口令复杂度策略生效。
  • 入侵检测与审计
    • 定期查看**/var/log/auth.log**、/var/log/syslogauditd日志;按需运行AIDE/Lynis进行基线核查与完整性校验;对关键变更执行备份与回滚预案。

0