Ubuntu 16.04에서 eCryptfs로 디렉터리를 암호화하는 방법

Ubuntu 16.04에서 eCryptfs로 디렉터리를 암호화하는 방법

2022-10-19 last update

8 minutes reading security storage ubuntu
이 튜토리얼은 eCryptfs를 사용하여 Ubuntu 16.04(Xenial Xerus)에서 디렉토리를 암호화하는 방법을 보여줍니다. eCryptfs는 Linux용 POSIX 호환 엔터프라이즈급 스택 암호화 파일 시스템입니다. 기본 파일 시스템, 파티션 유형 등에 관계없이 파티션 및 자체 파티션을 사용하지 않는 디렉토리를 암호화하는 데 사용할 수 있습니다.

1 서문


이 자습서에서는 새 디렉토리/home/secure를 암호화합니다. 이것은 일반 디렉토리이며 자체 파티션을 사용하지 않습니다.

2 eCryptfs 설치


eCryptfs는 다음과 같이 쉽게 설치할 수 있습니다.

apt-get -y install ecryptfs-utils

3 eCryptfs로 디렉터리 암호화


이제 새 디렉토리/home/secure/를 암호화하겠습니다. mkdir 명령으로 디렉토리를 생성하십시오:
mkdir /home/secure
기존 디렉토리를 사용하는 경우 해당 디렉토리에 이미(암호화되지 않은) 파일이 있을 수 있습니다. 이 경우 나중에 암호화된/home/secure/디렉터리로 복원할 수 있도록 백업해야 합니다(그렇지 않으면 디렉터리가 암호화된 동안 이러한 채우기에 액세스하거나 읽을 수 없음).
cp -pfr /home/secure/ /tmp/
이제 파일 시스템 유형 ecryptfs로 마운트하여/home/secure/디렉토리를 암호화할 수 있습니다.
mount -t ecryptfs /home/secure /home/secure
처음 이 작업을 수행할 때 몇 가지 질문에 답해야 합니다.
[email protected]:~# mount -t ecryptfs /home/secure /home/secure
Passphrase: <-- Enter a secure password
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32
2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: <-- Press ENTER
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: <-- 32
Enable plaintext passthrough (y/n) [n]: <-- Press ENTER
Enable filename encryption (y/n) [n]: <-- Press ENTER
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
Mounted eCryptfs
[email protected]:~#
여기에서 선택한 기본 설정은 파일의 내용을 암호화하지만 파일 이름은 암호화하지 않습니다. 파일 이름도 안전하게 유지하려면 위의 설정 중에 파일 이름 암호화 옵션을 활성화하십시오.
의 출력을 살펴보십시오.
mount
이제/home/secure/가 암호화된 것을 볼 수 있습니다.
[email protected]:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1002992k,nr_inodes=250748,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204440k,mode=755)
/dev/mapper/server1--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered,jqfmt=vfsv0,usrjquota=quota.user,grpjquota=quota.group)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd,nsroot=/)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids,nsroot=/)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer,nsroot=/)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio,nsroot=/)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,nsroot=/)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,nsroot=/)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct,nsroot=/)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio,nsroot=/)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory,nsroot=/)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event,nsroot=/)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices,nsroot=/)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=27,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl)
tmpfs on /run/lxcfs/controllers type tmpfs (rw,relatime,size=100k,mode=700)
devices on /run/lxcfs/controllers/devices type cgroup (rw,relatime,devices,nsroot=/)
perf_event on /run/lxcfs/controllers/perf_event type cgroup (rw,relatime,perf_event,nsroot=/)
memory on /run/lxcfs/controllers/memory type cgroup (rw,relatime,memory,nsroot=/)
net_cls,net_prio on /run/lxcfs/controllers/net_cls,net_prio type cgroup (rw,relatime,net_cls,net_prio,nsroot=/)
cpu,cpuacct on /run/lxcfs/controllers/cpu,cpuacct type cgroup (rw,relatime,cpu,cpuacct,nsroot=/)
cpuset on /run/lxcfs/controllers/cpuset type cgroup (rw,relatime,cpuset,nsroot=/)
hugetlb on /run/lxcfs/controllers/hugetlb type cgroup (rw,relatime,hugetlb,nsroot=/)
blkio on /run/lxcfs/controllers/blkio type cgroup (rw,relatime,blkio,nsroot=/)
freezer on /run/lxcfs/controllers/freezer type cgroup (rw,relatime,freezer,nsroot=/)
pids on /run/lxcfs/controllers/pids type cgroup (rw,relatime,pids,nsroot=/)
name=systemd on /run/lxcfs/controllers/name=systemd type cgroup (rw,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd,nsroot=/)
lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204440k,mode=700,uid=1000,gid=1000)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=204440k,mode=700)
/home/secure on /home/secure type ecryptfs (rw,relatime,ecryptfs_sig=bd28c38da9fc938b,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs)
[email protected]:~#
기존 디렉토리를 사용하는 경우: 이제 암호화된 디렉토리/home/secure/에 백업을 복원하고 나중에 백업을 삭제하겠습니다.
cp -pfr /tmp/secure/ /home/
rm -fr /tmp/secure/
테스트 목적으로 다른 파일을 복사해 보겠습니다./etc/hosts,/home/secure/로 이동하여 실제로 암호화되는지 확인합니다.
cp /etc/hosts /home/secure
/home/secure/가 ecryptfs 파일 시스템 유형으로 마운트되는 동안/home/secure/hosts의 내용을 읽을 수 있어야 합니다.
cat /home/secure/hosts

이제 마운트 해제/home/secure/...
umount /home/secure
... 그리고/home/secure/hosts를 다시 읽으려고 시도하면 몇 가지 수수께끼 같은 것을 얻을 것입니다:
cat /home/secure/hosts


4 링크


  • eCryptfs: https://launchpad.net/ecryptfs
  • 데비안: http://www.debian.org/