关于debian安全

发布时间 2023-10-23 22:43:33作者: e-8bit

Debian总指南: https://www.debian.org/doc/manuals/securing-debian-manual/index.zh-cn.html

debian安全信息

保持您 Debian 系统的安全性
想收到最新的 Debian 安全警报的话,请订阅 debian-security-announce (https://lists.debian.org/debian-security-announce/) 邮件列表。

此外,您还可以使用 APT 来方便地获取最新的安全更新。要使您的 Debian 操作系统获得最新的安全更新,请把下面这行加入到您的 /etc/apt/sources.list 文件中:
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

保存修改后,请执行以下两个命令以下载并安装安全更新:
apt-get update && apt-get upgrade

安装前和安装过程中

1、选择一个 BIOS 密码
注:不使用厂家自带的默认密码

2、系统分区
2.1 选择明智的分区方案
一份明智的分区方案依赖于机器的用途. 合理使用分区是一条不错的经验, 并注意一下因素:
(1) 用户具有写入权限的任何目录树,例如 /home、/tmp 和 /var/tmp/,都应该位于单独的分区上

(2) 变化较大的分区, /var (特别是 /var/log), /var 应该放在一个独立的分区上. 在 Debian 系统中, 您创建的 /var 应当比在其它系统中稍大一点, 因为下载的软件包(apt缓存) 存放于 /var/cache/apt/archives 目录下.
(3) 您打算安装 non-distribution 软件的任何分区都应是是独立的. 根据文件层次标准, 应当是 /opt 或 /usr/local 目录. 如果这些在独立分区上, (必须)重装 Debian 系统时将不会被删除.
释义:Debian 12 中有一个关于管理“非自由”固件包的根本变化。Debian 创建了一个新的软件源,以便轻松访问那些专有包,即sources.list中
(4) 从安全的角度考虑, 应当将静态数据放在独立的分区上, 并将此分区以只读的方式挂载. 将这些数据存放在只读介质上会更好
(5) 某些情况下您可能无法确定是否需要独立的分区, 可以安装逻辑卷管理器(Logical Volume Manager), 使用lvm可创造扩展多物理容量的卷组. 


在系统分区期间,您还必须决定要使用的文件系统。在 Debian Linux 分区安装中选择的默认文件系统是ext3,一个日志文件系统。建议您始终使用日志文件系统,例如 ext3、reiserfs、jfs 或 xfs,以最大程度地减少在以下情况下系统崩溃引起的问题:
1、为笔记本电脑安装任何文件系统. 在意外的电池耗尽或因为硬件问题(如一般的 X 配置问题) 引起系统锁死, 重起后可能丢失数据.
2、对于存放大量数据的系统来说(像邮件服务器, ftp服务器, 网络文件系统...)推荐使用这些分区格式. 这样当系统出现故障时, 系统用于恢复和检查文件系统的时间就会大大缩短, 同时数据丢失的可能也会降低.


无论怎样, 在ext3下数据完整性也许更好,因为它是真正的文件-数据记录, 而其它的仅仅是元-数据记录, 参见 http://lwn.net/2001/0802/a/ext3-modes.php3

准备好前不要连入互联网

系统在安装过程中不应该被连入互联网.因为网络安装是最常用的方法. 系统安装后服务马上被激活, 如果系统连入互联网但服务没有被正确配置,那么您将面临着被攻击.
同时应当注意到您所安装软件包中的一些服务可能存在着未被修复的安全漏洞. 如果您的系统是由老版本安装的, 通常会是如此. 在这种情况下,安装完成前您的系统是非常脆弱的!

设置GRUB密码

参考
或者

在grub 2中,没有/boot/grub/menu.lst,它已被/boot/grub/grub.cfg代替,无论何时添加或删除内核或者当用户运行update-grub时grub.cfg都会被某些grub 2软件包更新覆盖
启用 grub 2 密码保护必须遵守以下条件
1、必须识别授权用户
2、必须指定他们的密码
3、必须确定要保护的菜单项
用户和密码手动添加到/etc/grub.d/00_header文件中,该文件必须由具有管理权限 (root) 的用户编辑,因为它是一个系统文件。
运行 update-grub 时用户/密码信息会自动添加到 GRUB 2 菜单配置文件 (grub.cfg)

生成加密密码
要使 GRUB 需要密码才能启动系统,我们必须使用命令 grub-mkpasswd-pbkdf2 生成加密密码。此加密密码保护已在所有版本的 grub 2 中可用
rambo@test1:~$ grub-mkpasswd-pbkdf2
Enter password:         # 这里我输入的是hackme,输入时不会显示
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.30F51D71DAC572ACF82F1F7558FDED508F0ED44FA73AB989425C3FDA3F7F912078B4C1A80F2B04D54D4B6B3F13F5F9C35C1154615DD1B0B79F4B94EF11FCF478.3FFC1A21117D847703A9173F1D3ACCF467390DCC567E759F1ABC9D8488E6C4BA56877524D5D135B2F66D5F2681EA63B816DF7F08365DC8CE480CBE6B4C9F1C66

在grub2主配置文件上设置密码
超级用户/用户信息和密码不必包含在/etc/grub.d/00_header文件中,/etc/grub.d会将该文件合并到grub.cfg中,该信息就可以放在任何文件中。
用户可能更愿意将此数据输入到自定义文件中,这样/etc/grub.d/40_custom即使在更新 grub 包时它也不会被覆盖。
rambo@test1:~$ sudo cp /etc/grub.d/40_custom{,-bak}
rambo@test1:~$ sudo vim /etc/grub.d/40_custom
方法1:本次采用该方法
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.30F51D71DAC572ACF82F1F7558FDED508F0ED44FA73AB989425C3FDA3F7F912078B4C1A80F2B04D54D4B6B3F13F5F9C35C1154615DD1B0B79F4B94EF11FCF478.3FFC1A21117D847703A9173F1D3ACCF467390DCC567E759F1ABC9D8488E6C4BA56877524D5D135B2F66D5F2681EA63B816DF7F08365DC8CE480CBE6B4C9F1C66

方法2:
set superusers="root"
password_pbkdf2 root hackme
释义:password_pbkdf2 <用户> <密码>


更新grub文件
(执行命令配置生成新的grub.cfg文件)
rambo@test1:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-6.1.0-10-amd64
Found initrd image: /boot/initrd.img-6.1.0-10-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done


===============================================
fedora用户可执行如下命令
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
===============================================


rambo@test1:~$ sudo reboot

下图输入密码时屏幕上不会出现任何内容,如密码正确系统就会启动
只有密码正确才可进入图2,进入图2后直接回车 或 如进入图2后按e编辑grub2菜单项 或 按c访问grub2命令行都需要密码
下图中的2个选项都需要密码正确,只有密码正确才能往下进行


只有密码保护才能编辑菜单或 grub 命令行。
即任何用户都可以启动菜单条目,但是当尝试编辑菜单,转到子菜单,访问grub命令控制台时,它会要求输入用户名和密码。
rambo@test1:~$ sudo vim /etc/grub.d/10_linux
....
    ....
CLASS="--class gnu-linux --class gnu --class os --unrestricted"          # 该行最后添加--unrestricted
SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"
....
    ....


rambo@test1:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
rambo@test1:~$ sudo reboot
重启后当选择第一个默认菜单条目时可正常进入,但选择第二项菜单条目时直接回车、按e、按c等编辑条目菜单时,系统会要求输入密码

虽然可以在grub启动菜单中添加密码保护,但其他人仍然可以通过USB安装程序破解您的系统。因此,加密文件系统是迄今为止的最佳选择。
仅编辑菜单条目和命令控制台的密码保护并不完美!因为grub软件包的系统更新将覆盖 /etc/grub.d/10_linux 文件

2023-10-23 22:38 待续....