当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : PAM登陆与加密文件系统:保护你的照片
帖子发表于 : 2008-04-21 15:42 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
#!/usr/bin/gvim
#
# PAM认证与加密文件系统
# http://www.linuxsir.org/bbs/showthread.php?t=211899
# http://www.ubuntufans.com.cn/html/02/n-102.html
# http://forums.gentoo.org/viewtopic-t-27 ... eb524406d5

*. PAM 介绍: 查看以上链接

*. 在 ubuntu 8.04 里安装
代码:
   apt-get install libpam-mount openssl dmsetup cryptsetup


1. 产生随机字符串
代码:
   KEY=`tr -cd [:graph:] < /dev/urandom | head -c 79`


2. 加密生成密码文件,输入两次密码, 一般用 用户登录密码
代码:
   echo $KEY | openssl aes-256-ecb > /home/user1_dc.key



3. 格式化分区 /dev/sdb5 (!注意查看自己的分区名)
代码:
   openssl aes-256-ecb -d -in /home/user1_dc.key | cryptsetup -v -c aes -s 256 luksFormat /dev/sdb5
   ## 也可以用文件代替
   # dd if=/dev/zero of=/home/user1_dc.img bs=1M count=100
   # losetup /dev/loop0 /home/user1_dc.img
   # openssl aes-256-ecb -d -in /home/user1_dc.key | cryptsetup -v -c aes -s 256 luksFormat /dev/loop0


4. 打开分区
代码:
   openssl aes-256-ecb -d -in /home/user1_dc.key | cryptsetup luksOpen /dev/sdb5 user1_dc
   # openssl aes-256-ecb -d -in /home/user1_dc.key | cryptsetup luksOpen /dev/loop0 user1_dc



5. 创建FS (注意:设备是 /dev/mapper/ 里的,不是 /dev/sdb5 或 /dev/loop0)
代码:
   mkfs.reiserfs /dev/mapper/user1_dc


6. mount
代码:
   mkdir /media/test
   mount /dev/mapper/user1_dc /media/test
   chown user1: /media/test -R
   echo "TEST" > /media/test/testfile1
   umount /dev/mapper/user1_dc


7. 关闭
代码:
   cryptsetup luksClose user1_dc
   # losetup -d /dev/loop0



8. 设置
libpam-mount 包带一个 /etc/pam.d/common-pammount 配置文件,
在 /etc/pam.d/ 里的 login gdm 等与用户登录有关的程序里加上一行 @include common-pammount
代码:
   echo "@include common-pammount" >> /etc/pam.d/login
   echo "@include common-pammount" >> /etc/pam.d/gdm

不要加到 sshd 和 su 里,因为这样的登录在退出时不会自动卸载卷(后有说明)
更不要加到 common-auth 和 common-session 里,以 common- 开头的认证配置几乎每个服务的配置都会包含它们

另外,在安装 pam-mount 时会提示是否转换 /etc/security/pam_mount.conf 文件格式之类的
*) 如果有 /etc/security/pam_mount.conf.xml ,则在文件尾部(</pam_mount>)之前加入
在 /etc/security/pam_mount.conf.xml 文件里有很多示例
代码:
    <volume
        user="user1"
        invert="0"
        fstype="crypt"
        path="/dev/sdb5"
        mountpoint="/home/CRYPTO_d1"
        options="user,exec"
        fskeycipher="aes-256-ecb"
        fskeypath="/home/user1_dc.key" />
    <!--
    <volume
        user="user1"
        invert="0"
        fstype="crypt"
        path="/home/user1_dc.img"
        mountpoint="/home/CRYPTO_d1"
        options="loop,user,exec"
        fskeycipher="aes-256-ecb"
        fskeypath="/home/user1_dc.key" />
    -->
    <!-- invert为0时,只有user选项中列出的用户登录时挂载这个卷,为1时表示除了user里列出的用户外登陆时都执行挂载 -->

*) 如果是 /etc/security/pam_mount.conf ,则在文件最后加入
代码:
# volume <user> <type> <server> <volume> <mount point>
#        <mount options> <fs key cipher> <fs key path>
volume user1 crypt - /dev/sdb5 /home/CRYPTO_d1 user,exec aes-256-ecb  /home/user1_dc.key
#volume user1 crypt - /home/user1_dc.img /home/CRYPTO_d1 loop,user,exec aes-256-ecb  /home/user1_dc.key



**. pam_mount 工作流程:
用户执行如登录程序登录系统时,pam-mount模块根据设置判断当前用户是否要执行 mount 某个卷,
如果是就根据设置用用户登陆口令解密 /home/user1_dc.key 文件,得到 aes 密码,使用 aes 密码打开分区和挂载
gdm 登录时可能会提示输入两次密码,一次是登录密码,一次是解密 /home/user1_dc.key 的密码

**. 问题:可能还有设置选项没有设置
*) 如果在 /etc/pam.d/common-auth 里添加了 auth optional pam_mount.so use_first_pass
在 /etc/pam.d/common-session 里添加 session optional pam_mount.so
或者在 /etc/pam.d/su 和 /etc/pam.d/sshd 里添加了 @include common-pammount
在 ssh 登录以及用 su 切换用户都会挂载分区,但退出时不会自动卸载
相关信息: 设置 /etc/security/pam_mount.conf.xml 里 debug=1 后,用户登录退出后查看 /var/log/auth.log
查看 pmvarrun 程序及 /var/run/pam_mount/ 下以用户名为名字的文件
ssh 登陆及 su 切换用户的用户在 logout/exit 时,pam_mount 的日志显示没有权限 umount ?? 分区
https://bugs.launchpad.net/ubuntu/+sour ... bug/117736
https://lists.sourceforge.net/lists/lis ... mount-user
opensuse 10.3 的能 su ,exit 能自动卸载,ssh 登录不自动挂载,没有仔细对比
*) 如果配置里设置了user选项并且invert值为1,在user中未列出的不同用户如果密码相同,即密码能用来解密 /home/user1_dc.key 文件,则都会挂载分区!!
*) 在开启 selinux 后,cryptsetup 格式化设备,登录挂载设备都非常慢
*)

**. 其它:
*) 在一个单独分区加密用户数据,设置 mountpoint="~" 挂载点为用户家目录,把密码文件存优盘随身携带,理论上别人得了你的硬盘也看不到里面的艳照了(如果有的话) zz ;-)
*) 登陆时如果挂载失败,需要手工挂载,执行 4, 6, 7 步骤
*) 用户更改了登录密码,也应该更改 aes 密码文件的解密密码。
代码:
   mv /home/user1_dc.key /home/user1_dc_old.key
   KEY=`openssl aes-256-ecb -d -in /home/user1_dc_old.key`
   echo $KEY | openssl aes-256-ecb > /home/user1_dc.key

注意不同时间执行同样加密命令,使用同样加密口令生成的密码文件也是不一样的。
密码文件应该多做几个备份,丢失了密码文件和忘记了解密 /home/user1_dc.key 的口令,那应该是一件很悲惨的事。。。 ^&^

## 如果你的电脑真的很重要,或者以为自己是一个人物,系统的根分区、交换分区都能加密,参考:
# 加密文件系统
# http://www.hacker.com.cn/article/view_13676_4.html
# http://wiki.ubuntu.org.cn/UbuntuHelp:En ... stemHowto3
# http://wiki.ubuntu.org.cn/UbuntuHelp:En ... mHowtoEdgy
# http://www.debian.org/releases/stable/s ... html.zh_CN


# ==============================================================================


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-21 15:51 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
照片.....

reiser4 也有加密功能


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-21 15:56 
头像

注册: 2006-10-25 18:10
帖子: 2677
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
用 TrueCrypt 不简单些。


_________________
你是自由的。别人也是。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-21 18:58 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
支持不同的方法研究。只是我不需要。没艳照。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-21 18:58 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
BigSnake.NET 写道:
照片.....

reiser4 也有加密功能


看了一下, reiser4 好像还没有加密的plugin


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-22 11:30 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
这里主是不是介绍加密文件系统 ,是介绍 PAM 的 libpam-mount 模块,

可以实现在用户登录的时候 挂载某个卷(nfs,smb,各种加密的不加密的分区..等等) ,在用户退出登录的时候自动卸载

reiser4 还没用过,不知道是不是密码和文件系统可以分离的, 其它加密格式之类的,只要 libpam-mount 能挂载,爱用哪种用哪种


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 5 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译