By Chris Stoddard |
||
Introduction 리눅스 가제트 51호에(리눅스 월드 2000년 4월호) 실린 “케이블 모뎀과 IP 매스커레이딩을 이용한 사설 네트워크”라는 제목의 기사에서 보안이 잘 된 리눅스 기반 게이트웨이를 설치하는 방법을 설명했다. 저자는 보안은 안전한 설치에서 시작한다는 뛰어난 생각에서, 깨끗한 리눅스 설치부터 시작하라고 제안하는데, 이것은 이 글의 주제이기도 하다. 설치를 마쳤을 때, 비록 파일 관리를 위해 MC(Midnight Commander)는 넣겠지만, X Windows 없이, 약 130MB에 스왑공간을 더한 아주 날씬한 시스템이 될 것이다. 나는 두 가지 가정을 할 것이다. 첫째, 여러분은 리눅스를 설치할 줄 알고, 사용하는 방법을 잘 안다. 둘째, 나는 여러분이 게이트웨이 컴퓨터를 케이블 모뎀이나 DSL, 또는 다른 매체를 통해 인터넷에 고정적으로 연결하고, ftp, telnet, 웹서버 등 어떤 것도 사용되지 않도록 설정한다고 가정한다.
What you will need 내 머신은 오래된 Dell Optiplex 466/MXe 컴퓨터이다. 이 놈은 16MB RAM, 512MB 하드 드라이브, 사운드 카드와 4배속 IDE CDROM이 장착된 486 DX2 66 머신이다. 나는 50달러를 들여 486DX4 100, 40MB 시스템으로 업그레이드 했다. 사운드 카드는 없애고 대신 네트워크 카드 두 개를 더 장착했고, 스커지(SCSI) 카드를 꽂고 320MB 스커지 하드 드라이브를 설치했다. 게이트웨이 머신으로 사용하기 위한 최소 사양은, 486, 16MB 램, 200MB 하드 드라이브, 네트워크 카드 두 개, 그리고 설치를 위해 CDROM, 또는 네트워크 인스톨을 이용할 수도 있다. RedHat Linux 6.x 배포본도 필요하다. 다른 배포판을 사용해도 되지만 이 글에서 나는 RedHat만 다룰 것이다. 모니터는 설치할 때에만 필요할 뿐, 일단 설치가 끝나고 부트되고 나면 Openssh 원격접속을 통해 관리할 수 있다. 시작하기 전에, ftp://ftp.redhat.com/에(또는 ftp://ftp.bora.net/pub/Linux/)가서 아래 패키지를 다운받아 플로피 디스크에 복사해 넣는다; e2fsprogs-1.17-1.i386.rpm
여러분이 RedHat 6.2를 사용한다면, 앞서 파일들은 필요없다. ftp://thermo.stat.ncsu.edu/pub/openssh-usa 사이트에 가서 다시 파일들을 받고, 디스크에 복사해 넣는다; ·openssh-1.2.3-1us.i386.rpm
설치, 그리고 환경설정 나는 기본 설정을 벗어나는 주제에 대해서만 다룰 것이다. 1. ‘custom install’을
선택한다. Disk Druid 화면을 만나면 아래처럼 파티션을 구성한다.
① 간단하게, 나는 SCSI 드라이브를 통째로 사용했다. ② 사실 여러분은 실제
램과 같거나 작은 크기로 스왑 파티션을 만들면 된다. 이 표는 여러분의 하드
드라이브를 어떻게 나누어야 하는지, 최소한의 경우에 사용할 2. 설치할 ‘components’를
선택할 때, ‘Networked Workstation’, ‘Network Management 제외할 패키지 목록이다:
git, finger, ftp, fwhois, ncftp, rsh, rsync, talk, 3. 시스템이 리부트된
다음, root로 로그인하고 다음 명령들을 써 넣어서 설치과정에서
뺄 수 rpm -e --nodeps pump
mt-st eject bc mailcap apmd 또, inuxconf, kudzu,
kbdconfig, authconfig, timeconfig, mouseconfig, ntsysv, 4. 여러분이 RedHat에서
내려받은 모든 RPM 패키지들을 플로피 두 장에 복사해 넣는다. 5. Openssh 파일들을
모두 플로피 디스크에 복사하고 새로 설치된 시스템에 다시 넣는다.
마지막으로 주의할 것들 나는 방화벽 설정에 대해서는 자세히 다루지 않을 것이다. 또, “케이블 모뎀과 IP 매스커레이딩을 이용한 사설 네트워크”은 훌륭한 글이지만, 다음 두 가지를 제안하려 한다. 나는 보안적인 관점에서 DNS 서비스는 방화벽에 두지 말고, 클라이언트 각각이 ISP의 DNS를 사용하도록 설정하거나 네트워크 안의 다른 머신이 DNS 서버 역할을 하도록 설정하는 것이 좋다고 생각한다. 더해서, 방화벽 머신에서 inetd를 통해 실행할 서비스들을 설정할 필요가 없다고 생각하는데, 어차피 ssh 포트인 22번 포트만 열리기 때문이다. 나는 대개 inetd.conf 파일은 지우고 “touch /etc/inetd.conf” 명령을 사용해서 아무 것도 없이 빈 파일로 만들어 둔다. 만약 여러분이 시스템에 둘이나 셋, 혹은 그 이상의 사용자를 둔다면, Web proxy/caching 프로그램으로 Squid를 사용하고 싶을지도 모르겠다. 이 프로그램은 자주 방문하는 웹사이트 문서들의 사본을 로컬 머신에 남겨 속도를 빠르게 한다. 또, 집에 나이 어린 사용자들이 있을 때, 웹사이트들을 블로킹하는데 사용되기도 한다. 여러분이 Squid를 사용하기로 마음 먹었다면, 적어도 1GB 이상의 하드 드라이브와 32MB 램, 그리고 486DX2/66 이상 프로세서는 가질 것을 권한다. Squid는 RedHat CD에서 설치할 수 있다. Squid 대신, 역시 프록시 프로그램인 Junkbuster를 설치할 수도 있다. Junkbuster는 웹사이트들의 캐시를 만들지 않으므로 더 큰 하드 드라이브나 램, 더 빠른 프로세서는 필요 없다. 대신 여러분이 사이트에 빠르게 연결할 수 있도록 배너광고와 여러분에 대한 정보를 긁어 가는 짓들을 막는다. Junkbuster는 http://www.waldherr.org/junkbuster에서 가져올 수 있다. 쉽게 방화벽을 구성하려면, Seawall이나 pmfirewall 같은 프로그램을 다운받는다. 이 프로그램들은 간편하게 디자인된 ipchains 기반 방화벽 프로그램으로, 둘 다 사용해 보았는데 모두 믿을만 했다. Seawall이나 pmfirewall을 사용하면 ipchains를 공부하는 귀찮은 일에서 벗어날 수 있다. Seawall은 설정하기가 까다롭지만, 더 많은 설정 옵션들이 있고, pmfirewall은 설정하기 더 쉽지만, 옵션이 적다.
마치며 이제 “케이블 모뎀과 IP 매스커레이딩을 이용한 사설 네트워크”로 돌아가서 게이트웨이 설정을 마치자. 이 글은 믿을만한 출발점을 간단하게 제시할 뿐, 모든 설정을 끝낸 것은 아니며 리눅스 보안의 모든 것도 아니라는 것을 기억하기 바란다. 관리자를 위한 리눅스 보안 튜토리얼을 (http://packetstorm.sercuify.com/papers/unix/Securing-Optimizing-RH-Linux-1_2.pdf) 다운받아 살펴본다. 이 문서는 475 페이지나 되지만, 처음 두 챕터만 읽을 만한 가치가 있다. |