시작하기 전에
이 튜토리얼을 읽는 컴퓨터 외에도 망가뜨려도 상관 없는 오래 된 리눅스 컴퓨터가 필요하다. 잘못 될 경우에 쓸 응급 디스크가 있으면 더 좋다. 다시 필요할지도 모르는 데이터가 그 컴퓨터에 있다면(멀티 부트 설정을 사용해 다른 파티션이나 별도의 드라이브에서 이 튜토리얼을 따라 하더라도) 여기서 설명하는 기법을 따라 해보기 전에 그 데이터의 전체 백업을 만들고 이상이 없는지 검사해야 할 것이다.
설치 또는 지원 관리자 관점에서 보면 수정 기능은 리눅스의 가장 큰 문제일 것이다. 중대규모 시스템의 설치를 책임지고 있다면 최소한 그러한 위험이 있는지 한 번 살펴봐야 한다. 모든 머신이 애플리케이션 추가, 설정 변경, 알 수 없는 소프트웨어 설치로 심하게 꼬여 있을지도 모른다. 이 연재는 기업에서 대규모 리눅스 시스템을 자유롭게 설치, 관리할 수 있는 능력을 갖고자 하는 사람을 위해 작성했다.
본 튜토리얼은 리눅스의 자유로운 맞춤 설정 기능을 통제해야 하는 이유를 알려주고 가짜 사용자가 기본 설치 상태를 바꾸는 것을 막기 위해 표준 리눅스 배포판을 잠그는 법을 다룬 Part 1의 내용을 확장한다. Part 2에서는 여러분이 지원하는 각 머신에 서명된 바이너리만 사용할 수 있도록 하는 커널을 만들어 철통 보안 과정을 마무리한다.
본 튜토리얼에서 다루는 내용은 대규모 리눅스 머신 설치 유지 보수에서 인증된 실행 파일만 실행하도록 특별히 만들어진 커널을 운영하는 데 필요한 관리 문제와 과정이다. 각각의 실행 파일은 Part 1에서 다룬 기본적인 철통 보안 프로세스에서 설정됐다. 우선 시스템을 유지하는 데 필요한 암호화 된 데이터를 관리하는 방법을 다룰 것이고, 마지막으로 관리되지 않은 실행 파일이 안전한 환경에서 실행되지 않도록 막는 방법을 다룰 것이다. 본 연재에서 기술한 방법을 구현하면 개인적으로 감사(audit) 및 승인하지 않은 애플리케이션을 끼워 넣을 수 없는, 산업 등급의 보안을 갖춘 리눅스 시스템을 설정할 수 있을 것이다.
본 튜토리얼은 중급 또는 고급 수준의 실력과 경험이 있는 리눅스 관리자를 위해 작성했다. PKI(Public Key Infrastructure), 그 중에서도 GPG(GNU Privacy Guard)에 익숙해야 하고, 명령 행 셸에 익숙해야 하며, C 프로그래밍 언어 업무 경험이 있어야 한다. 물론, 본 연재의 Part 1을 읽고 이해한 상태여야 한다.
이 튜토리얼에 나온 단계를 따라가려면 리눅스 머신에 root로 접근해 재시동을 하고 그 안에 저장된 데이터를 지울 수 있어야 한다. 컴파일 환경이 설치되어 있어야 하고 배포판 리눅스 커널 소스와 헤더뿐만 아니라 Part 1에 있는 튜토리얼 소스 코드가 있어야 한다.
이 튜토리얼을 쓰면서 필자는 라이브 설치 CD에서 설치한 우분투 리눅스 6.10을 사용했다. 조금씩 다른 부분이 있는 것을 빼면 여러분이 좋아하는 어느 리눅스 배포판도 좋다. VMware가 있어 이 튜토리얼의 하드웨어와 펌웨어 절의 내용을 따라 해볼 필요가 없다면 VMware의 스냅샷 유틸리티를 사용해 좀더 자유롭게 실험을 할 수 있다. 리눅스 시스템이 부팅 도중 멈추면 문제를 분석, 복구하기 위해 응급 디스크를 쓰지 않고 이전의 좋았던 상태로 돌아갈 수 있기 때문이다.
