웹사이트 검색

Debian 8에서 eCryptfs로 디렉토리/파티션을 암호화하는 방법(Jessie)


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 8(제시)
  • 데비안 6(스퀴즈)

이 페이지에서

  1. 1 서문
  2. 2 eCryptfs 설치
  3. 3 디렉토리 암호화\n
  4. 4 부팅 시 암호화된 파티션을 자동으로 마운트하는 방법\n
  5. 5개의 링크

eCryptfs는 Linux용 POSIX 호환 엔터프라이즈급 스택 암호화 파일 시스템입니다. 기본 파일 시스템, 파티션 유형 등에 관계없이 자체 파티션을 사용하지 않는 파티션 및 디렉터리를 암호화하는 데 사용할 수 있습니다. 이 자습서에서는 eCryptfs를 사용하여 Debian Jessie에서 디렉터리를 암호화하는 방법을 보여줍니다.

1 서문

이 자습서에서는/파티션에 있는 내 홈 디렉터리 /home/falko/를 암호화합니다(즉, /home/falko/는 일반 디렉터리이며 자체 파티션을 사용하지 않음).

2 eCryptfs 설치

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

apt-get -y install ecryptfs-utils

3 디렉토리 암호화

이제 내 홈 디렉토리 /home/falko/를 암호화하겠습니다. 해당 디렉터리에 이미 (암호화되지 않은) 파일이 있기 때문에 나중에 암호화된 /home/falko/ 디렉터리로 복원할 수 있도록 해당 파일을 백업해야 합니다(그렇지 않으면 디렉터리가 있는 동안 이러한 채우기에 액세스하거나 읽을 수 없습니다) 암호화됨):

cp -pfr /home/falko/ /tmp/

이제 파일 시스템 유형 ecryptfs로 마운트하여 /home/falko/ 디렉토리를 암호화할 수 있습니다.

mount -t ecryptfs /home/falko /home/falko

이 작업을 처음 수행하는 경우 몇 가지 질문에 답해야 합니다.

:/tmp# mount -t ecryptfs /home/falko /home/falko
Select key type to use for newly created files:
1) tspi
2) passphrase
Selection: <-- 2
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]: <-- Press ENTER
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
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? : <-- yes
Would you like to append sig [bd28c38da9fc938b] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : <-- yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
:/home/administrator#

의 출력을 살펴보십시오.

mount

이제 /home/falko/가 암호화되었음을 확인할 수 있습니다.

이제 암호화된 디렉터리 /home/falko/에 백업을 복원하고 나중에 백업을 삭제합니다.

cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/

테스트를 위해 다른 파일을 복사해 보겠습니다. /etc/hosts에서 /home/falko/로 이동하여 실제로 암호화되는지 확인합니다.

cp /etc/hosts /home/falko

/home/falko/가 ecryptfs 파일 시스템 유형으로 마운트되는 동안 /home/falko/hosts의 내용을 읽을 수 있어야 합니다.

cat /home/falko/hosts

이제 마운트 해제 /home/falko/...

umount /home/falko

... 그리고 /home/falko/hosts 읽기를 다시 시도하면 몇 가지 비밀스러운 내용이 표시됩니다.

cat /home/falko/hosts

4 부팅 시 암호화된 파티션을 자동으로 마운트하는 방법

물론 /home/falko/를 매번 수동으로 마운트하고 싶지는 않습니다. 부팅 시 자동으로 마운트될 수 있다면 더 좋을 것입니다. 이를 위해서는 암호 파일이 필요하며 보안상의 이유로 이 암호 파일을 USB 키에 배치하고 싶습니다.

USB 키를 연결하고 실행

fdisk -l

장치 이름과 파일 시스템 유형을 찾으려면 다음을 수행하십시오.

:~#

필자의 경우 장치 이름은 /dev/sdb1이고 FAT32 파일 시스템을 사용합니다.

USB 키를 /mnt/usb에 마운트할 수 있습니다.

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

의 출력을 살펴보십시오.

mount

... 파일 시스템 유형 vfat(FAT32)로 마운트되었음을 확인해야 합니다. 나중에 이 정보가 /etc/fstab 파일에 필요합니다.

:~#

이제 /root/.ecryptfs/sig-cache.txt의 내용을 살펴보십시오.

cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b

다음과 같이 생성하는 /root/.ecryptfsrc 파일에 대해 이 서명이 필요합니다.

nano /root/.ecryptfsrc

ecryptfs_sig 행에 있는 /root/.ecryptfs/sig-cache.txt 파일의 서명을 사용하는지 확인하십시오.

key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt
ecryptfs_sig=bd28c38da9fc938b
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=n

이제 USB 키에 암호 파일을 만듭니다.

nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase

올바른 암호, 즉 디렉토리를 수동으로 마운트한 경우 사용할 암호를 사용했는지 확인하십시오.

다음 열기 /etc/fstab...

nano /etc/fstab

... 그리고 다음 두 줄을 추가합니다(USB 키에 대해 올바른 파일 시스템 유형을 사용했는지 확인하십시오. 제 경우에는 vfat).

[...]
/dev/sdb1       /mnt/usb        vfat    ro      0 0
/home/falko /home/falko ecryptfs defaults 0 0

(암호화된 파티션을 마운트하기 전에 USB 키를 마운트해야 하므로 USB 키 행이 암호화된 파티션 행 앞에 오는 것이 중요합니다!)

그런 다음 시스템을 재부팅합니다.

reboot

모든 것이 정상이면 재부팅 후 암호화된 파티션이 자동으로 마운트됩니다. 그러나 시스템이 부팅 중에 USB 키를 마운트하지 못할 수 있으며 이는 암호화된 파티션도 마운트할 수 없음을 의미합니다. 이 경우 /etc/rc.local을 편집합니다(이 스크립트는 부팅 프로세스가 끝날 때 실행됨)...

nano /etc/rc.local

... exit 0 줄 앞에 /bin/mount -a 줄을 추가합니다.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/bin/mount -a
exit 0

이렇게 하면 부팅 프로세스가 끝날 때 모든 파티션(USB 키 및 암호화된 파티션 포함)이 (재)마운트됩니다.

5 링크

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