홈서버용 Linux에서 선택하기 쉬운 파일 시스템은 무엇입니까?

홈서버용 Linux에서 선택하기 쉬운 파일 시스템은 무엇입니까?

Debian 8(jessie)을 실행하는 10GB ECC 메모리를 갖춘 HP Proliant Microserver Gen7에서 실행되는 홈서버가 있습니다. 현재 저는 mdadm을 사용하여 Raid 1로 설정된 작은 시스템 디스크(rsnapshot을 사용하여 백업됨) 1개와 3TB 스토리지 디스크 2개를 가지고 있습니다. 맨 위에는 다양한 목적을 위한 LVM 그룹이 있습니다. 그 중 하나는 추가로 dm-crypt/luks로 암호화됩니다. 개인 데이터를 보유합니다.

저는 스토리지 풀을 위해 동일한 크기의 HD 2개를 추가로 구입하고 아마도 처음부터 서버를 설정할 계획입니다. 확실히 다시 Debian을 사용하지만 이번에는 아마도 xenserver 가상화를 사용할 것입니다. 따라서 스토리지 풀은 4x 3TB가 되며 Raid1은 사용 가능한 6TB를 남기고 Raid5(또는 raidz1)는 9TB가 됩니다.

mdadm / lvm / dm-crypt의 조합은 훌륭하게 작동하지만 특히 손쉬운 재해 복구 전략을 계획하는 것이 엄청나게 복잡하다는 것을 알았습니다. 각 계층에 대해 최상의 메타데이터 백업 및 복원 프로세스가 무엇인지 조사해야 합니다.

완벽한 세상에서 나는 전체 스토리지를 암호화된 raidz1 풀로 만들 것이지만 암호화는 아직 Linux의 Zfs에 적용되지 않았으며 내 연구에 따르면 언제 구현될 것으로 예상할 수 있는지 완전히 불분명합니다.

Btrfs는 약간 동일한 상황을 가지고 있습니다. 적어도 생산이 안정적인 것처럼 보이지만 아쉽게도 암호화도 예측할 수 없는 미래에만 도착할 것입니다.

따라서 내가 사용하고 싶은 파일 시스템 중 둘 다 (아직) Linux에서 기본적으로 암호화를 지원하지 않습니다. 글쎄, ZFS 또는 BtrFS와 함께 LUKS 암호화된 LVM을 사용하는 방법에 대한 많은 방법과 튜토리얼이 있습니다. ZFS 위에 LVM을 사용하거나 LVM 위에 ZFS를 사용하는 접근 방식이 있습니다. 제게는 그것은 끔찍한 혼란처럼 들립니다.

나는 EncFS의 개념을 전혀 좋아하지 않으므로 그것도 선택 사항이 아닙니다.

내가 들어보지 못한 몇 가지 옵션이 있기를 바랍니다. 따라서 여기에 제 질문이 있습니다. 홈 서버용 Linux에서 선택할 파일 시스템을 관리하기 위한 "쉬운(zfs와 같은 확장 가능 등, 오류 수정 등)"을 달성하기 위한 또 다른 방법은 무엇입니까? 완전히 또는 부분적으로 암호화할 수 있습니까?

2017년 12월 업데이트: 암호화 기능을 갖춘 Linux의 ZFS 출시 예정: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/

답변1

mdadm / lvm / dm-crypt가 아마도 가장 좋은 방법일 것입니다. 전혀 복잡하지 않습니다. 각 레이어를 적절하게 처리하면 됩니다. 또는 필요에 따라 mdadm /dm-crypt/lvm(모든 LV를 원하는 경우) 1개의 암호로 단일 장치를 공유합니다)

encf를 사용하지 않는 것이 옳습니다.안전하지 않아.

답변2

ZFS 설정을 선택하는 경우 다음을 제안합니다.

  • LVM을 사용하지 말고 풀 위에 ZVOL을 생성하십시오.

  • OS용 - 미러(또는 raidz)가 있는 암호화되지 않은 ZFS 풀을 위한 GPT 파티션

  • 개인 데이터의 경우 - GPT 파티션에서 LUKS를 사용한 다음 맨 위에 ZFS 풀 미러(또는 raidz)를 구축합니다.

부팅 후 SSH를 통해 로그인하고, 암호화된 파티션의 비밀번호를 입력하고, LUKS 위에 있는 풀을 가져온 다음, 가상 머신을 시작합니다(셸 스크립트 작성이 가장 좋습니다).

따라서 제안된 스키마는 다음과 같습니다.GPT/LUKS/ZFS/데이터 또는 VM용 ZVOL

UEFI 부팅을 사용하지 않는 경우 BIOS 파티션(크기 1M)을 만드는 것을 잊지 마십시오. GRUB용 파티션(예: 150M)을 만드는 것도 잊지 마십시오.

무작위 IO가 많은 경우 ZFS 프리페치를 비활성화하는 것이 좋습니다(echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable).

답변3

이는 Grub 파티션, 시스템 파티션, 홈 파티션, 데이터 파티션, 스왑 등 여부에 관계없이 일부 데이터를 암호화하고 컴퓨터에 연결된 가능한 모든 저장소를 항상 100% 암호화하려는 모든 사람을 위한 조언입니다. 모두 암호화하세요.

왜? 애플리케이션/시스템에서 데이터가 저장되는 위치를 제어할 수 없기 때문입니다.

Disarter 샘플 이벤트 시퀀스:

  1. 정상 부팅
  2. 앱 사용
  3. '비공개' 문서 열기
  4. 시스템 충돌(소프트웨어 또는 하드웨어)
  5. 다음 부팅이 작동하지 않습니다
  6. 하나의 장치가 수명을 다합니다(다시 작동하지 않음).

그러한 장치에 있는 것을 삭제할 수도 없고(작동하지도 않음) 읽을 수도 없는데 거기에 무엇이 저장되어 있습니까? 뭔가 '비공개'일까요? 당신은 무엇을 어디서도 알 수 없습니다.

그러나 다른 사람(어쩌면 주머니에 수백만 달러를 가지고 있을 수도 있음)이 그것을 빨간색으로 지정하므로 '개인' 데이터가 없다는 것을 확인할 때까지는 해당 장치를 휴지통에 넣을 수 없습니다... 하지만 제공하지 않으면 알 수 없습니다. 장치를 회사에 전달했지만 다시 '개인'이 위험에 처해 있습니다. 어쩌면 회사에서 일하는 나쁜 사람 등을 '복사'할 수도 있습니다.

이것을 물어보십시오: 당신이 사용하는 모든 코드(부팅 코드, 시스템 코드, 애플리케이션 코드 등), 스스로 컴파일한 소스 코드의 각 소스 라인을 알고 있습니까? 그리고 어떤 종류의 '바이너리'도 사용하지 마십시오. . 그래서 당신은 연필과 종이를 사용하여 컴파일러를 작성했을 것입니다.

그렇지 않으면 그것이 무엇을 하는지 모르는 코드를 사용하게 됩니다.

참고 사항: '개인' 데이터를 사용해야 하는 경우 해당 컴퓨터를 다시는 인터넷에 연결하지 마십시오. 아마도 사용했던 앱의 일부가 일부 데이터를 저장했고 나중에는 이를 인터넷 서버로 보낼 수도 있습니다.

극단적인 샘플: 쓰기 앱을 사용하여 TXT 파일을 읽고, 어딘가에 숨겨두는 숨겨진 코드가 있습니다. 그런 다음 몇 년 동안 업데이트한 후 해당 앱(또는 다른 앱)에 숨겨진 저장된 데이터를 읽는 숨겨진 코드가 있습니다. 인터넷 서버나 제3자 컴퓨터 등으로 전송합니다.

사례가 극단적인가요? 나는 그것들을 어려운 방법으로 배웁니다... 내 Linux에서 트로이안을 입력하면(사용하려는 앱 내부) 분명히 아무것도 하지 않지만(소켓 연결이 없는 등) 일종의 '쓰기'를 기록하고 있었습니다. 디스크를 사용하고 이중 쓰기를 하는 중... 거의 2주 후에 다른 toyan이 해당 정보를 가져와서 IP로 보내려고 했습니다. 맙소사 내 인터넷 연결의 '중간'에 다른 컴퓨터가 있었습니다(예, 물론 저는 그렇습니다. 나는 완전히 편집증적이어서 나를 구해주었습니다.) 그 연결을 '발견'하고 '차단'했습니다. 말할 것도 없이 Windows에서는 통제할 수 없기 때문에 'Linux'만 사용합니다. 이러한 트로이안은 앱 작성자의 지식 없이 거기에 있었으며 앱이 저장소에 저장될 때 삽입되었습니다. 지금부터 어떤 앱이 '수정'되었는지 말하고 싶지 않다는 점을 이해하시기 바랍니다... 언제부터인지 누가 알겠어요!

내가 트로이안, 숨겨진 것 등만 생각하고 있다고 생각하시나요? 전혀 생각하지 않고, 스왑, 임시 파일 등을 기억하세요. 일부 앱은 사용자가 수행한 작업을 잃지 않도록 돕기 위해 사용/생성 중인 문서를 저장합니다. , 도대체 그 데이터는 어디에 저장하는 걸까요? 암호화된 파티션, SWAP, 임시 폴더 또는 일반적으로 앱 작성자가 원하는 위치에는 필요하지 않으므로 저장 위치를 ​​항상 알 수는 없습니다.... 다시 모두 암호화합니다.

아, 예, grub.cfg는 RAID0, LUKS 위의 LUKS ... LUKS 위 등 내부에 상주할 수 있습니다. Grub2를 허용하려면 비포맷(대량 덤프)에서 8MiB 이하의 스테이지 1.5 또는 2에 대해 매우 작은 파티션만 필요합니다. 부팅... 인터넷에서 BIOS GRUB 파티션을 검색하세요.

죄송합니다. 아직 ZFS를 시도하지 않았고 Grub 파일(grub.cfg 등)이 ZFS 내부에 있을 수 있는지 확실하지 않습니다. 하지만 해당 파일을 테스트해 보았습니다. Ext4 over LVM over LUKS over LVM over LUKS ... 등 일부 수준 ... EFI 파티션이 없는 실제 GPT(MBR의 경우도 있음)에 대한 LUKS를 통해 부팅하면 괜찮습니다... grub2를 설치할 때 'crypto' 및 'lvm' 확장만 추가하면 됩니다... 입력하는 것을 선호합니다 내 자신의 grub.cfg이므로 grub2와 관련된 grub2-install 이외의 다른 것을 사용하지 않습니다 (다시 말하지만 나는 편집증입니다).

나는 항상 다른 부트로더를 호출하는 자체 grub.cfg를 메인 부트로더로 사용합니다. 이렇게 하면 텍스트 편집기로 수동으로 편집하는 메인 부트로더를 건드리지 않고도 시스템이 자체 부트로더를 관리할 수 있습니다.

죄송합니다. 저는 편집증 환자입니다.

당신은 어떻게 생각해야 합니까? 암호화되지 않은 데이터를 쓰거나 읽을 수 있는 '장소'가 있다면 모든 종류의 '개인' 데이터는 완전히 손실되며 언젠가는 암호화되지 않은 부분에 쓸 수 있습니다. 안전을 위해 암호화되지 않은 부분은 절대 사용하지 마세요.

PD: EFI 파티션을 사용하는 경우 보호 기능이 전혀 없고 암호화할 수 없는 FAT32 파티션이기 때문에 어떤 코드라도 쓸 수 있다는 점을 염두에 두세요.

PPD: FAT32의 데이터는 어디에 저장됩니까? 어디서나, 여유 공간에서도. 그리고 Ext4에서는? 똑같습니다... 항상 모든 저장소를 암호화합니다.

관련 정보