LUKS: 리눅스 하드 디스크 데이터 암호화 및 리눅스에서 NTFS 지원

LUKS 약어는 Linux Unified Key Setup으로, 리눅스 커널에서 사용되는 디스크 암호화 방식으로, cryptsetup 패키지를 사용하여 구현됩니다.

cryptsetup 명령어는 시스템의 파일 시스템 계층구조에서 볼륨 디스크를 대칭 암호화 키로 암호화하며, 볼륨 디스크, 파티션 및 USB 스틱 등이 마운트될 때마다 제공된 패스프레이즈에서 파생된 대칭 암호화 키를 사용하며 aes-cbc-essiv:sha256 암호를 사용합니다.

Linux Hard Disk Encryption Using LUKS

LUKS는 리무버블 스토리지 미디어, 노트북 하드 디스크 또는 Linux 스왑 파일을 보호하기 위해 리눅스 시스템의 전체 블록 장치(하드 디스크, USB 스틱, 플래시 디스크, 파티션, 볼륨 그룹 등)를 암호화할 수 있어서 권장됩니다. 파일 수준의 암호화에는 권장되지 않습니다.

NTFS(New Technology File System)는 마이크로소프트에서 개발한 소유권있는 파일 시스템입니다.

Ubuntu 14.04는 LUKS 암호화 및 Windows의 NTFS 네이티브 지원을 제공하기 위해 ntfs-3g 패키지를 사용합니다.

본 튜토리얼에서 증명하기 위해 Ubuntu 14.04 시스템에 새 하드 디스크(4번째)를 추가했으며(시스템 참조용으로 새로 추가된 HDD는 /dev/sdd입니다), 이를 두 파티션으로 나눌 것입니다.

  1. 하나의 파티션(/dev/sdd1 -기본)은 LUKS 암호화에 사용됩니다.
  2. 두 번째 파티션(/dev/sdd5 -확장)은 Linux 및 Windows 기반 시스템에서 데이터에 액세스할 수 있도록 NTFS로 포맷됩니다.

또한 이 파티션들은 Ubuntu 14.04에서 자동으로 재부팅 후 마운트될 것입니다.

단계 1: 디스크 파티션 생성

1. 하드 디스크가 물리적으로 기계에 추가되면 ls 명령어를 사용하여 모든 /dev/devices 목록을 확인합니다(네 번째 디스크는 /dev/sdd 입니다).

# ls /dev/sd*
List Partitions in Linux

2. 다음으로 fdisk 명령어로 새로 추가된 HDD를 확인합니다.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

어떠한 파일 시스템도 작성되지 않았기 때문에 해당 디스크에는 아직 유효한 파티션 테이블이 없을 것입니다.

3. 다음 단계는 cfdisk 디스크 유틸리티를 사용하여 하드 디스크를 두 개의 파티션으로 나누는 것입니다.

$ sudo cfdisk /dev/sdd

4. 다음 화면에서는 cfdisk 대화식 모드가 열립니다. 하드 디스크 Free space를 선택하고 왼쪽/오른쪽 화살표를 사용하여 New 옵션으로 이동합니다.

cfdisk Interactive Mode

5. 파티션 유형을 Primary으로 선택하고 Enter를 누릅니다.

Select Your Partition Type

6. 원하는 파티션 크기를 MB 단위로 입력합니다.

Write Down Partition Size

7. 이 파티션을 하드 디스크의 Beginning에 생성합니다.

Create a Partition

8. 다음으로 파티션 Type 옵션으로 이동하여 Enter 키를 누릅니다.

Partition Type

9. 다음 프롬프트에서 모든 파일 시스템 유형과 그들의 번호 코드(16진수 번호) 목록이 표시됩니다. 이 파티션은 Linux LUKS로 암호화될 것이므로 83 코드를 선택하고 다시 Enter를 눌러 파티션을 생성합니다.

Enter File System Type

10. 첫 번째 파티션을 생성했고 cfdisk 유틸리티 프롬프트가 처음으로 돌아갑니다. 두 번째 파티션을 NTFS로 사용하려면 나머지 미사용 공간을 선택한 후 New 옵션으로 이동하여 Enter 키를 누릅니다.

Create New Partition

11. 이번에는 파티션이 확장 논리 파티션이 될 것입니다. 따라서 Logical 옵션을 선택하고 다시 Enter 키를 누릅니다.

Select Logical Partition Type

12. 파티션 크기를 다시 입력합니다. 나머지 미사용 공간을 새 파티션으로 사용하려면 크기에 기본값을 유지한 채로 Enter 키를 누릅니다.

Enter Size of Partition

13. 다시 파티션 유형 코드를 선택합니다. NTFS 파일 시스템을 위해 86 볼륨 코드를 선택합니다.

Select Partition Type

14. 파티션을 검토하고 확인한 후 Write를 선택하고 다음 대화형 프롬프트에서 yes를 응답한 다음 Quit을 선택하여 cfdisk 유틸리티를 종료합니다.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

축하합니다! 파티션을 성공적으로 생성했으며 이제 포맷하고 사용할 준비가 되어 있습니다.

15. 디스크 파티션 테이블을 다시 확인하려면 자세한 파티션 테이블 정보가 표시되는 fdisk 명령을 다시 실행합니다.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

단계 2: 파티션 파일 시스템 생성

NTFS 파일 시스템

16. 두 번째 파티션에 NTFS 파일 시스템을 생성하려면 mkfs 명령을 실행합니다.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. 파티션을 사용할 수 있도록하려면 파일 시스템에 마운트해야 합니다. 네 번째 하드 디스크의 두 번째 파티션을 /opt 마운트 지점에 mount 명령을 사용하여 마운트합니다.

$ sudo mount /dev/sdd5 /opt

18. 다음으로, /etc/mtab 파일에서 cat 명령어를 사용하여 파티션이 사용 가능하고 목록에 있는지 확인합니다.

$ cat /etc/mtab
Check Partition Availability

19. 파티션을 언마운트하려면 다음 명령어를 사용합니다.

$ sudo umount /opt
EXT4 루크스

20. 시스템에 cryptsetup 패키지가 설치되어 있는지 확인합니다.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. 이제 다음 명령어를 사용하여 네 번째 하드 디스크의 첫 번째 파티션을 ext4 파일 시스템으로 포멧합니다.

$ sudo luksformat  -t ext4  /dev/sdd1

Are you sure?” 질문에 대문자 YES로 회답하고 원하는 암호를 세 번 입력하세요.

Format Partition

참고: 파티션의 크기HDD 속도에 따라 파일 시스템 생성에는 시간이 소요될 수 있습니다.

22. 파티션 장치 상태도 확인할 수 있습니다.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS는 최대 8개의 암호를 지원합니다. 암호를 추가하려면 다음 명령어를 사용하세요.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

암호를 제거하려면 다음을 사용하세요.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24.암호화된 파티션을 활성화하려면 cryptsetup 패키지를 사용하여 /dev/mapper 디렉토리에 이름 항목을 초기화해야 합니다.

이 설정은 다음 줄의 명령문 구문을 필요로 합니다:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

device_name”은 임의의 설명 이름을 사용할 수 있습니다(나는 crypted_volume으로 지정하였습니다). 실제 명령어는 아래와 같이 보일 것입니다.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. 그런 다음 기기가 /dev/mapper에 나열되어 있는지 확인합니다. 디렉토리, 심볼릭 링크 및 장치 상태입니다.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. 이제 파티션 장치를 널리 사용할 수 있도록 시스템에서 마운트 지점에 마운트합니다. 마운트 명령을 사용합니다.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

파티션이 마운트되어 있고 데이터를 쓰기에 접근할 수 있는 것을 볼 수 있습니다.

27. 사용 불가 상태로 만들려면 시스템에서 마운트를 해제하고 장치를 닫습니다.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

단계 3: 파티션 자동으로 마운트하기

고정된 하드 디스크를 사용하고 재부팅 후 두 파티션이 자동으로 시스템에 마운트되어야 하는 경우 이 두 단계를 따라야 합니다.

28. 먼저 /etc/crypttab 파일을 편집하고 다음 데이터를 추가합니다.

$ sudo nano /etc/crypttab
  1. 대상 이름: 기기에 대한 서술적 이름 (위 22번 항목을 참조하세요. EXT4 LUKS).
  2. 소스 드라이브: LUKS로 포맷된 하드 디스크 파티션 (위 21번 항목을 참조하세요. EXT4 LUKS).
  3. 키 파일: 없음 선택
  4. 옵션: luks 지정

최종 라인은 아래와 같이 보일 것입니다.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. 그런 다음 /etc/fstab을 편집하고 기기 이름, 마운트 지점, 파일 시스템 유형 및 기타 옵션을 지정합니다.

$ sudo nano /etc/fstab

마지막 라인에 다음 구문을 사용하세요.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

그리고 특정 콘텐츠를 추가하세요.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. 장치 UUID를 가져오려면 다음 명령을 사용하세요.

$ sudo blkid
Get Device UUID

31. 이전에 만든 NTFS 파티션 유형을 추가하려면 fstab에 위의 구문을 사용한 것과 동일한 구문을 새 줄에 적용하십시오 (여기서 Linux 파일 추가 리디렉션이 사용됨).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. 변경 사항을 확인하려면 기계를 재부팅하고, “시작 구성 네트워크 장치” 부팅 메시지 후 엔터를 누르고 장치 암호를 입력하십시오.

Reboot Machine
Verify Partition is Mounted Automatically

Ubuntu 파일 시스템 계층구조에 두 디스크 파티션이 자동으로 마운트된 것을 확인할 수 있습니다. 자동으로 암호화된 볼륨을 fstab 파일에서 물리적으로 원격 서버에 사용하지 마십시오. 암호화된 볼륨 암호를 제공하기 위해 재부팅 시퀀스에 액세스할 수 없는 경우.

동일한 설정은 USB 스틱, 플래시 메모리, 외장 하드디스크 등의 모든 종류의 탈착식 미디어에도 적용할 수 있습니다. 도청이나 도난으로부터 중요하거나 민감한 데이터를 보호하기 위해.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/