免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5776 | 回复: 15
打印 上一主题 下一主题

数据保护 加密磁盘分区 gbde [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-07 02:49 |只看该作者 |倒序浏览
近来在ChinaUnix上,从零开始,学会了安装FREEBSD系统,并成功配置出了WEB服务器,十分感谢ChinaUnix上各位前辈!

刚刚根据HANDBOOK配置好了加密分区,搜索的时候,看到论坛里资料不多,故把过程发表出来,请大家指教~

先说说我的实际情况:
为某院校内网配置了一套ELEARNING系统,该校内网与外网物理隔离,之前该校仅有一个最简单的ASP网站、邮箱,硬件上还算完备,有个高配的PC做服务器,最多时也就200人同时在线。但所有硬件是由另一家公司做维护。

ELEARNING系统为了推广,现在处于免费试用阶段,签了合同,但原PHP程序未做任何ZEND加密,其实ZEND加密的能力,大家也都清楚。

故很担心如下:
1、如果校方违约,我们接触不到服务器,程序无法停止(这倒好说~定时删除就可以了),另找一家合作。毕竟我们根据校方的要求,做了很多改动。
2、另一家维护硬件的公司,随时可以接触到服务器,担心程序被盗版。

一开始运行在WIN下,最近一个月我终于在ChinaUnix从零学起,配置好了WEB服务器。看手册,有加密一项,正和我意。

FreeBSD 提供了极好的数据保护措施,防止未受权的数据访问。文件权限和强制访问控制(MAC)(看 第 16 章) 可以帮助预防在操作系统处于运行状态和计算机加电时未受权的第三方访问数据。但是,和操作系统强制受权不相关的是,如果黑客有物理上访问计算机的可能,那他就可以简单的把计算机的硬件安装到另一个系统上复制出敏感的数据。

  无论攻击者如何取得停机后的硬件或硬盘驱动器本身, FreeBSD GEOM Based Disk Encryption (基于 GEOM 的磁盘加密, gbde) 和 geli 加密子系统都能够保护计算机上的文件系统数据,使它们免受哪怕是训练有素的攻击者获得有用的资源。与那些只能加密单个文件的笨重的加密方法不同, gbde 和 geli 能够透明地加密整个文件系统。明文数据不会出现在硬盘的任何地方。


也就是说,就算有人拿到硬盘,装在其它系统上,绕过ROOT密码,也无法读取加密的内容。
我想,这项功能,很多托管服务器的朋友,也需要吧。

1、成为 root

配置 gbde 需要超级用户的权力。

2、在内核配置文件中添加对 gbde(4) 的支持

在您的内核配置中加入下面一行:

options GEOM_BDE

按照 第 8 章 所进行的介绍重新编译并安装内核。

重新引导进入新的内核。

另一种无需重新编译内核的方法, 是使用 kldload 来加载 gbde(4):

# kldload geom_bde

3、挂载新的硬盘或分区
如果想加密原有分区,需要将此分区所有数据备份出来 下面是我的分区,假设要将 /WWW分区加密
#df -h

Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a        496M    261M    195M    57%    /
devfs              1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e        9.7G     14K    8.9G     0%    /tmp
/dev/ad0s1f        9.7G    3.2G    5.7G    36%    /usr
/dev/ad0s1d        9.7G    212M    8.7G     2%    /var
/dev/ad0s1g     24G    2.6G     19G    12%    /www

先将 /WWW分区中有用数据备份,然后:
#ee /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1d             /var            ufs     rw              2       2
/dev/ad0s1g             /www            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
删除 /WWW 分区这一行,然后保存退出重启。

4、创建一个目录来保存 gbde Lock 文件

# mkdir /etc/gbde
gbde lock 文件包含了 gbde 需要访问的加密分区的信息。 没有 lock 文件, gbde 将不能解密包含在加密分区上的数据。 每个加密分区使用一个独立的 lock 文件。

5、初始化 gbde 分区

一个 gbde 分区在使用前必须被初始化,这个初始化过程只需要执行一次:

# gbde init /dev/你的分区 -i -L /etc/gbde/你的分区.lock
gbde( 将打开您的编辑器, 提示您去设置在一个模板文件中的配置变量。 使用 UFS1 或 UFS2,设置扇区大小为 2048:



$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working.  512 is the
# minimum and always safe.  For UFS, use the fragment size
#
sector_size     =       2048
[...]
gbde( 将让您输入两次用来加密数据的密钥短语。 两次输入的密钥必须相同。 gbde 保护您数据的能力依靠您选择输入的密钥的质量。 [1]

gbde init 命令为您的 gbde 分区创建了一个 lock 文件, 在这个例子中存储在 /etc/gbde/你的分区.lock中。 gbde lock 文件必须使用 “.lock” 扩展名才能够被 /etc/rc.d/gbde 启动脚本正确识别。

小心: gbde lock 文件 必须 和加密分区上的内容同时备份。 如果发生只有 lock 文件遭到删除的情况时, 就没有办法确定 gbde 分区上的数据是否是解密过的。 另外, 如果没有 lock 文件, 即使磁盘的合法主人,不经过大量细致的工作也无法访问加密分区上的数据, 而这是在设计 gbde( 时完全没有考虑过的。

6、把加密分区和内核进行关联

# gbde attach /dev/你的分区 -l /etc/gbde/你的分区.lock
在加密分区的初始化过程中您将被要求提供一个密码短语。 新的加密设备将在 /dev 中显示为 /dev/device_name.bde:

# ls /dev/ad*
/dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
/dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
/dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/你的分区.bde

7、在加密设备上创建文件系统

当加密设备和内核进行关联后, 您就可以使用 newfs( 在此设备上创建文件系统, 使用 newfs( 来初始化一个 UFS2 文件系统比初始化一个 UFS1 文件系统还要快,摧荐使用 -O2 选项。

# newfs -U -O2 /dev/你的分区.bde
注意: newfs( 命令必须在一个 gbde 分区上执行, 这个分区通过一个存在的 *.bde 设备名进行标识。

8、挂接加密分区

为加密文件系统创建一个挂接点。

# mkdir /你想用的分区名称
挂接加密文件系统。

# mount /dev/你的分区.bde /刚设置的 你想用的分区名称

9、校验加密文件系统是否有效

加密的文件系统现在对于 df(1) 应该可见并可以使用。

% df -H
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a        520M    274M    204M    57%    /
devfs              1.0k    1.0k      0B   100%    /dev
/dev/ad0s1e         10G     14k    9.6G     0%    /tmp
/dev/ad0s1f         10G    3.5G    6.1G    36%    /usr
/dev/ad0s1d         10G    222M    9.3G     2%    /var
/dev/ad0s1g.bde     26G    4.0G     20G    17%    /www

以下为HANDBOOK手册原文~~~

挂接已有的加密文件系统
  每次系统启动后, 在使用加密文件系统前必须和内核重新进行关联,校验错误和再次挂接。使用的命令必须由 root用户来执行。

关联 gbde 分区到内核

# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock
接下来系统将提示您输入在初始化加密的 gbde 分区时所用的密码短语。

校验文件系统错误

加密文件系统不能列在 /etc/fstab 文件中进行自动加载,在加载前必须手动运行 fsck( 命令对文件系统进行错误检测。

# fsck -p -t ffs /dev/ad4s1c.bde
挂接加密文件系统

# mount /dev/ad4s1c.bde /private
加密后的文件系统现在可以有效使用。

18.16.1.2.1 自动挂接加密分区
  可以创建脚本来自动地附加、 检测, 并挂接加密分区, 然而, 处于安全考虑,这个脚本不应包含 gbde( 密码。 因而,我们建议这类脚本在控制台或通过 ssh(1) 执行并要求用户输入口令。

  除此之外, 系统还提供了一个 rc.d 脚本。这个脚本的参数可以通过 rc.conf(5) 来指定,例如:

gbde_autoattach_all="YES"
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"
  在启动时将要求输入 gbde 的口令。 在输入正确的口令之后, gbde 加密分区将被自动挂接。 对于将 gbde 用在笔记本电脑上时, 这就很有用了。

18.16.1.3 gbde 提供的密码学保护
  gbde( 采用 CBC 模式的 128-位 AES 来加密扇区数据。 磁盘上的每个扇区都采用不同的 AES 密钥来加密。要了解关于 gbde 的密码学设计,包括扇区密钥如何从用户提供的口令字中生成等细节, 请参考 gbde(4)。

18.16.1.4 兼容性问题
  sysinstall( 是和 gbde 加密设备不兼容的。 在启动 sysinstall(8) 时必须将 *.bde 设备和内核进行分离,否则在初始化探测设备时将引起冲突。与加密设备进行分离在我们的例子中使用如下的命令:

# gbde detach /dev/ad4s1c
  还需要注意的是, 由于 vinum(4) 没有使用 geom(4) 子系统,因此不能同时使用 gbde 与 vinum 卷。



两点注意事项:
1、必须以ROOT身份操作
2、加密原有分区时,必须先将其删除。

论坛徽章:
0
2 [报告]
发表于 2010-05-07 11:42 |只看该作者
这想法有点天真了,任何能够操作实体机的人都可以轻松获得你的程序。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
3 [报告]
发表于 2010-05-07 11:52 |只看该作者
系统正常运转情况下,直接用root进去就行了吧.

论坛徽章:
0
4 [报告]
发表于 2010-05-07 13:18 |只看该作者
系统正常运转情况下,直接用root进去就行了吧.

ROOT密码当然不能泄露


这想法有点天真了,任何能够操作实体机的人都可以轻松获得你的程序。


在下刚刚接触FREEBSD,之前也没有UNIX基础,WIN也是勉强会用。
请教下,如果不知道ROOT密码,不知道GBDE密码,也能破解吗?

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
5 [报告]
发表于 2010-05-07 16:54 |只看该作者
服务器放哪应该是校方来定吧. 自家的机器没root密码说得过去吗?
只要能物理接触机器,要root权限不是难事.

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
6 [报告]
发表于 2010-05-10 17:33 |只看该作者
有意思,如果能加密mfs似乎更好一些

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
7 [报告]
发表于 2010-05-10 17:34 |只看该作者
服务器放哪应该是校方来定吧. 自家的机器没root密码说得过去吗?
只要能物理接触机器,要root权限不是难事.
congli 发表于 2010-05-07 16:54

呵呵,物理能接触到路由器,不见得能获取里面的软件

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
8 [报告]
发表于 2010-05-10 17:35 |只看该作者
这想法有点天真了,任何能够操作实体机的人都可以轻松获得你的程序。
macafee 发表于 2010-05-07 11:42


所以为了防止非法获取,使用加密技术。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
9 [报告]
发表于 2010-05-10 19:32 |只看该作者
呵呵,物理能接触到路由器,不见得能获取里面的软件
mirnshi 发表于 2010-05-10 17:34



lz是服务器而不是路由器

论坛徽章:
0
10 [报告]
发表于 2010-05-10 20:03 |只看该作者
呵呵,物理能接触到路由器,不见得能获取里面的软件
mirnshi 发表于 2010-05-10 17:34



我只能说你经验比较少,路由器里的软件能放在哪?直接拆开,用热风枪吹下FLASH,编程器一读程序就到手了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP