사람들이 더 많은 시간을 컴퓨터 접속에 보내게 되면서, 네트워크 보안은 더욱 더 중요해 지고 있다. 네트워크 보안은 물리적이나 지역의 보안을 깨는 것보다 훨씬 쉽다.
네트워크 보안을 도와줄 도구들은 많으며, 갈수록 많은 것들이 리눅스 배포본에 실려 배포되고 있다.
1. 패켓 스니퍼
침입자가 네트워크의 더 많은 시스템으로 침투하기 위해서 가장 흔하게 쓰는 방법 중의 하나가 이미 깨어진 호스트에서 패켓 스니퍼를 실행하는 것이다. 이 "스니퍼"는 이떠넷 포트를 감청하면서 지나가는 패켓 흐름에서 Password, Login, su 같은 것이 들리면 그 이후의 내용을 녹음해 둔다. 이 방법을 쓰면, 공격자는 침투하려고 시도조차 않았던 시스템으로까지 들어가는 패스워드를 얻게 된다. (암호화가 안된 채로) 평문으로 전송되는 패스워드는 이 공격에 매우 약한 것이다.
예: 호스트 A의 보안이 깨졌다. 공격자는 (여기에) 스니퍼를 설치한다. (잠시 후,) 어떤 관리자의 호스트 C에서 호스트 B로 들어가려는 접속 로그인을 스니퍼가 감지한다. (이제 패켓이 녹음이 되고 있다) 관리자가 B로 로그인을 하는 순간, 이 관리자의 개인 패스워드는 녹음이 된다. 잠시 후 관리자가 -- 어떤 문제를 해결하기 위해 -- su를 사용한다. 이제 호스트 B의 루트 패스워드까지 얻게 되었다. 잠시 후에, 관리자가 누군가가 자기 계정에서 다른 사이트에 있는 호스트 Z로 텔넷을 하도록 해 두면 공격자는 이제 호스트 Z로 로그인할 패스워드까지 갖게 된다.
요즘에는 공격자가 패켓 스니퍼를 쓰기 위해 시스템의 보안을 깨고 침입할 필요조차 없어져 버렸다. 공격자는 랩탑이나 PC를 건물 안으로 들고 들어와서 네트워크를 감청하면 그만인 것이다.
ssh나 다른 암호화된 패스워드 방식을 사용하면 이 공격을 방해할 수 있다. POP 계정용의 ATOP 등이 이 공격을 방지한다. (네트워크를 통해 평문 패스워드를 전송하는 방법들이 다 그렇듯이, 보통의 POP 로그인은 스니퍼에 대단히 취약하다.)
2. 시스템 서비스와 tcp_wrapper
어떤 서비스를 제공할 필요가 있는가를 선별하는 것은 네트워크에 리눅스 시스템을 올려놓기 전부터 해야 할 일이다. 제공할 필요가 없는 서비스를 아예 해체해 버리면 걱정거리가 하나 줄고, 공격자가 개구멍을 찾을 대상을 하나 줄여 버리는 것이 되는 것이므로.
리눅스 시스템에서 서비스를 꺼 버리는 방법은 많이 있다. /etc/inetd.conf 파일을 보면 inetd가 현재 어떤 서비스를 제공하고 있는지 알아볼 수 있다. 필요 없는 서비스는 모두 주석문 (remark) 처리를 해서 막아 버리고 ((#을 줄의 가장 앞에 쓴다), inetd 프로세스에 SIGHUP 신호를 보내도록 조정하라.
아울러 /etc/services 파일에서도 서비스를 주석문 처리를 하거나 삭제할 수 있다. 이것은 지역 사용자들도 또한 서비스를 못쓰게 된다는 뜻이다 (예로서, 만약 여러분이 ftp를 삭제해 난 후, 이 기계에서부터 원격 사이트로 ftp를 사용하려 하면 "unknown service" 메시지가 나오면서 안 받아 줄 것이다) 보안성이 늘어나는 것은 아니므로 꼭 서비스를 /etc/services에서 없애 버릴 가치는 없다. 만약 지역 사용자가 -- 여러분이 주석문 처리를 해서 꺼 버린 -- ftp를 쓰고 싶어한다면, 그는 간단히 자신의 클라이언트를 사용하면서 공용 ftp 포트를 써서 여전히 일을 할 수 있을 것이다.
켜 놓는 것이 좋을 서비스들은:
ftp
telnet (혹은 ssh)
pop-3 이나 imap 등의 메일
identd
등이 있다.
어떤 패키지를 쓸 일이 없으리라는 것을 알고 있다면, 그 패키지를 완전히 삭제할 수도 있다. 레드 햇 배포본에서는 rpm -e 명령으로 한 패키지 전체를 지울 수 있다. 데비안에서는 dpkg로 같은 작업을 할 수 있을 것이다.
덧붙여서, (rlogin이 쓰는) login과 (rcp가 쓰는) shell 그리고 (rsh가 쓰는) exec를 /etc/inetd.conf에서 시작되는 것을 막는 것을 포함해서, /rsh/r;pgin/rcp 도구를 꺼 버리는 것이 정말로 필요하다. 이들 프로토콜은 극단적으로 보안이 허술하며 (insecure), 예전부터 침탈 (exploit)의 근원이 되어 왔다.
레드 햇은 /etc/rc.d/rc[0-9].d를 보고, 데비안 경우에는 /etc/rc[0-9].d를 보는 등으로 디렉토리에서 실행되는 서버들 가운데 불필요한 것들이 있는가 확인하라. 이들 파일들은 실제는 /etc/rc.d/init.d (레드에의 경우; 데비안은 /etc/init.d) 디렉토리로 심볼릭 링크 되어 있다. init.d에 있는 파일들의 이름을 바꿔 버리면 심볼릭 링크를 꺼 버리는 효과를 가져온다. 만 약 특정 런 레벨에 맞추어서 적당한 서비스를 꺼 주고 싶으면, 이에 상응하는 심볼릭 링크를 대문자 (Upper-case)에서 소문자 (Lower-case)로 이름을 바꿔 주면 된다. 다음의 경우는 대문자 S를 소문자 s로 바꾼 것이다.
root# cd /etc/rc6.d
root# mv S45dhcpd s45dhcpd
BSD 형식의 rc 파일들을 갖고 있다면 /etc/rc*을 검사해서 필요 없는 풀그림들을 볼 수 있다.
대부분의 리눅스 배포본에는 모든 TCP 서비스들을 "보호해 주는(wrapping)" 티시피 랩퍼 (tcp wrapper)가 들어 있다. tcp_wrapper (tcpd)는 실제 서버를 실행 할 수 있는 것이 아니 고, 대신 inetd가 불러오는 방법으로 실행된다. 그러면 tcpd는 서비스를 요청하는 호스트를 검사해서, 서버를 실행시키거나 그 호스트로부터의 접근을 거부한다. tcpd를 이용해서 tcp 서비스로의 접근을 제한할 수 있는 것이다. /etc/hosts.allow 파일을 만들고, 여러분 컴퓨터의 서비스에 접근할 필요가 있는 호스트들만을 추가하도록 한다.
여러분이 집에서 모뎀을 쓰는 다이얼-업 사용자라면, 필자는 "모든" 서비스에 대한 접근을 거부하도록 조정하기를 권장한다. tcpd는 서비스에 접근하려다가 실패한 시도들을 기록하므로, 공격을 받고 있다는 것을 경고해 줄 수도 있다. TCP를 기반으로 하는 새로운 서비스를 추가로 설치하게 되면, 반드시 tcp wrapper가 이 서비스를 추가 감시하도록 다시 구성하는 것이 좋다. 예를 들면, 가정의 모뎀 사용자 (dial-up)는 외부인이 자신의 기계에 연결하는 것을 막으면서도, 메일을 받도록 인터넷에 네트워크 연결을 할 수가 있다. 이렇게 만들려면 /etc/hosts.allow에 다음을 추가한다.
ALL: 127.
물론 /etc/hosts.deny에도
ALL: ALL
이렇게 해 놓으면 외부에서 들어오는 연결은 막으면서도, 내부에서 인터넷으로 나가는 연결은 할 수 있게 된다.
염두에 둘 것은 tcp_wrapper는 inetd와, 선정된 소수의 다른 것들에서부터 실행되는 서비스들만 보호한다는 것이다. 여러분이 쓰는 기계에는 다른 서비스들도 돌아가고 있는 것일 수 있다는 것을 생각해 두자. 여러분 기계에서 돌아가는 모든 서비스를 보려면 netstat -ta를 쓰면 된다.
3. DNS 정보의 확인
여러분 네트워크의 모든 호스트에 대한 DNS 정보를 최신판으로 유지하는 것으로도 보안이 강화할 수 있다. 만약 불법 호스트가 여러분 네트워크에 연결되는 상황이 벌어지면, DNS 엔트리가 없을 것이므로, 침입을 알아챌 수가 있게 된다. 많은 서비스들은 -- 유효한 DNS 엔트리가 없는 호스트는 접속을 거부하는 식으로 -- 조정할 수 있게 되어 있다.
4. identd
identd는 주로 inetd 서버에서 수행되는 작은 풀그림이다. 어느 사용자가 어떤 TCP 서비스를 수행시키는지 추적하고, 요구하는 누구에게든 추적 결과를 보고한다.
많은 사람들이 identd의 유용성을 오해하고, 이것을 꺼 버리거나 외부 사이트로부터 오는 요청을 거부하도록 막아 둔다. identd는 단지 원격 사이트에 도움을 주기 위해서 있는 것이 아니다. 여러분이 원격 identd로 얻은 자료가 옳은지 알 방법은 없으므로. identd 요청에는 아무런 인증 절차가 없기 때문이다.
그렇다면 왜 identd를 수행시켜야 할까? identd가 여러분을 도와주기 때문이고, 추적 시에는 여러분의 검문소 역할을 하기 때문이다. 여러분의 identd가 변조되지 않았다면 TCP 서비스를 쓰고 있는 사람들의 사용자 이름이나 uid를 identd가 원격 사이트에 말해 줄 수 있는 것을 알 것이다. 만에 하나, 원격 사이트의 관리자가 여러분에게 와서 여러분 컴퓨터의 어느 사용자가 자기의 사이트로 침입하려고 했다고 말한다면, 여러분은 손쉽게 그 사용자에 대해서 행동을 취할 수 있다. identd를 실행시키고 있지 않았다면, 누가 그 때 있었는지 알아내기 위해서 수많은 기록들을 살펴보아야 하고, 이런 경우 일반적으로 그 사용자를 추적하기 위해서 훨씬 긴 시간이 걸리게 된다.
대부분의 배포판에 들어 있는 identd는 대부분의 사람들이 생각하는 것보다 더 다양한 설정이 가능하다. 특정한 사용자용으로 identd가 작동하지 않도록 할 수 있고 (이 사용자들은 .noident 파일을 만들면 된다), 모든 identd 요청을 기록하도록 할 수 있으며 (필자는 이렇게 하기를 권한다) 사용자 이름 대신 uid나 NO-USER를 표기하도록 할 수도 있다.
5. SATAN, ISS, 그리고 다른 네트워크 스캐너 풀그림들
포트와 서비스를 대상으로 컴퓨터들과 네트워크에 대한 검사 (scan)를 수행하는 많은 소프트웨어 패키지들이 있다. SATAN과 ISS는 그 가운데 비교적 잘 알려진 풀그림이다. 이 소프트웨어들은 표적 컴퓨터의 (혹은 한 네트워크 상의 모든 표적 컴퓨터들의) 가능한 모든 포트에 연결하려고 시도하며, 어떤 서비스가 그 곳에서 수행되고 있는지 찾아내고자 한다. 이 정보를 바탕으로 표적 컴퓨터가 어떤 침탈법에 취약한지 찾을 수 있다.
* SATAN(Security Administrator's Tool for Analyzing Networks)는 웹 인터페이스를 쓰는 포트 스캐너 풀그림이다. 컴퓨터 한 대나 하나의 네트워크에 대한 검사 강도는 강, 중, 약 등으로 임의 설정할 수 있다. SATAN을 구해서 여러분의 컴퓨터나 네트워크를 조사해서 발견되는 문제를 고치는 것이 좋다. SATAN을 메타랩 등의 믿을 만한 FTP, 또는 웹 사이트에서 구하도록 주의해야 한다. SATAN을 가장한 트로이 목마가 인터넷에 떠돌고 있기 때문이다. http://www.fish.com/satan/ 하나 알아두면 좋을 것은, SATAN이 근래에 업데이트되지 않았고, 아래에 적어 놓은 다른 도구들이 검사 작업을 더 잘할 수가 있다는 것이다.
* ISS (Internet Security Scanner)는 또 다른 포트형 검사 풀그림이다. SATAN 보다 빠르며, 따라서 대규모의 네트워크를 검사하기에 더 적합할 수 있다. 하지만 SATAN이 더 많은 정보를 제공하는 경향이 있다.
* 세인트 (SAINT)는 사탄 (SATAN)을 업데이트한 형식으로 만들어진 것이다. 웹 상에서 돌아가며 SATAN 보다 많은 신형의 테스트를 실행할 수 있다. 이것에 대한 정보는 http://wwdsilx.wwdsi.com/saint/에서 구할 수 있다.
* 네서스 (Nessus)는 무료 보안 풀그림이다. 쉽게 쓸 수 있도록 GTK 그래픽 인터페이스를 사용한다. [26. GTK] 새로운 포트 스캔 테스트 방법이 나오면 그 부분만을 업데이트를 할 수 있도록 테스트들을 플러그인 형식으로 내려 받아 쓸 수 있게 만들어져 있다. 정보를 원한다면 http://www.nessus.org에서 구할 수 있다.
포트 스캔 경우의 탐지
SATAN 이나 ISS, 또는 다른 스캐너 풀그림들이 여러분의 컴퓨터를 탐색 (Probe)해 들어오는 것을 경보를 해 주는 여러 도구들이 있기는 하다. 하지만, tcp_wrapper를 여기 저기 많이 쓰면서 여러분의 일지 문서들을 정기적으로 자주 들춰보는 것도 탐색을 알아채는 좋은 방법이다. 가장 강도를 낮추어 조정해도 SATAN은 보통의 레드 햇 시스템의 일지에 자취를 남기게 되므로.
"스텔드 (Stealth)" 포트 스캐너도 염두에 두자. (세션이 연결된 상태에 만들어지는) TCP의 ACK 비트가 적혀 있는 패켓은 패켓 필터링 방화벽도 관통할 경우가 있다. 세션이 연결되지 않은 상태의 포트에서 답으로 보내 주는 RST 패켓은 -- 감지자에게는 -- 그 포트가 존재한다는 증거로 쓰일 수 있을 것이다. 내 생각에는 tcp_wrapper가 이런 식의 우회 수색을 감지해 내지는 못한다고 생각한다.
6. 센드메일, 큐메일과 MTA
여러분이 제공할 수 있는 가장 중요한 서비스들 가운데 하나가 메일 서버이다. 불행히도 메일 서버는 공격에 가장 취약한 서비스 중의 하나인데, 그 까닭은 이것이 수행해야 하는 작업의 숫자와 필요로 하는 권한이 많기 때문이다.
sendmail을 쓰고 있다면, 최신 버전을 사용하는 것이 매우 중요하다. sendmail은 길고도 긴 침탈의 역사가 있다. 가장 최근의 버전을 항상 사용하도록 유의하라. http://www.sendmail.org
염두에 둘 것은 메일을 보내기 위해서 센드메일을 켜 놓일 필요가 없다는 것이다. 만약 여러분이 집에서 혼자 쓰는 홈 유저라면, 센드메일을 아예 끄고서 단순한 메일 클라이언트 풀그림을 써서 메일을 보낼 수 있다. 또한, 센드메일 초기 실행 문서 (Startup File)에서 "-bd" 플랙을 지움으로서 메일의 수신 요청 (Incoming Request)을 아예 끄는 것도 좋을 것이다. 다른 말로 하면, 여러분의 초기 실행 스크립트에서 다음의 명령어를 사용해서 센드메일을 실행할 수 있을 것이다:
# /usr/lib/sendmail -q15m
이 명령어는 첫 시도로 전달이 안되어서 메일 큐 (Queue)로 보내진 메시지를 15분 간격으로 다시 보내려는 재 시도를 한다.
많은 관리자는 아예 센드메일을 사용하지 않고 다른 메일 전달 에이전트를 사용하기도 한다. 원한다면 qmail로 교체 사용하는 것을 고려하는 것도 좋을 것이다. qmail은 처음부터 보안을 염두에 두고 설계되었다. 이 풀그림은 보다 빠르고 안정적이며 보안상 안전하다. http://www.qmail.org에서 구할 수 있다.
qmail과 정면으로 경쟁하고 있는 "postfix"도 있다. 이것은 tcp_wrapper 등의 여러 보안 도구를 만든 윗세 뵈이니마 (Wietse Venena)가 만든 것이다. 이 전에는 vmailer라고 불렸던 것이고, 현재는 IBM이 후원을 하고 있으며, 설계 초반에서부터 보안을 염두에 두고 만들어져 있다. 이에 대한 정보는 http://postfix.org에서 구할 수 있다.
7. 서비스 거부 유도 방식의 공격
(Denial of Service attacks: 이하 DoS)
시스템의 서비스 거부를 유도하게 만드는 방식의 공격 (Denial of Service: DoS)은 공격자가 시스템 자원의 일부를 매우 바쁘게 만들어서 불통시키는 방법을 써서 시스템이 정식 요청에 응답하지 못하게 만들거나 정식 사용자의 시스템 접근을 거부하게 만드는 것이다.
이런 종류의 공격은 근년에 들어 크게 증가해 왔다. 최근의 공격 방법 중 잘 알려진 것들을 아래에 적었다. 새로운 공격 방법들이 항상 나타나고 있으므로 여기 소개된 것들은 그저 몇 가지 사례에 불과하다는 것을 명심해야 한다. 더 새로운 정보를 얻으려면 리눅스 보안 리스트와 벅트랙 (bugtraq) 리스트와 아카이브를 읽도록 하라. [
* SYN 홍수(SYN Flooding): SYN 홍수는 네트워크를 통한 서비스 거부 공격이다. 이 방법은 TCP 연결 방식 중에 있는 "허점"을 이용한다. (2.0.30 이후의) 새로운 리눅스 커널들은 SYN 범람 공격 방지하기 위한 조정 옵션들을 가지고 있다. 커널 보호 옵션을 보려면 [커널 보안]을 보도록 하라.
* 펜티움 "FOOF" 버그: 인텔의 정품 펜티움 프로세서에 일련의 어셈블리 코드를 보낼 경우 컴퓨터가 무조건 리부트하게 된다는 것이 최근에 발견되었다. 이것은 어떤 운영체제인가에 관계없이 (펜티움 클론과 펜티움 프로, 펜티움2를 제외한) 펜티움 프로세서를 사용하는 모든 컴퓨터에 영향을 미친다. 2.0.32 이상의 리눅스 커널에는 이 버그로 인해 컴퓨터가 오류 작동하는 것을 막는 우회법이 포함되어 있다. 2.0.33 커널은 좀 더 개선된 커널 수정안을 가지고 있고, 2.0.32보다 좋은 것으로 인식되고 있다. 펜티움을 사용하고 있다면, 지금 업그레이드를 해야 한다.
* Ping 홍수 (Ping Flooding): Ping 홍수는 쉬운 부루트 포스 DoS 공격의 일종이다. 공격자는 ICMP 패켓을 "홍수처럼" 여러분의 컴퓨터에 보낸다. 공격자가 이 공격을 여러분의 컴퓨터 보다 연결 속도가 빠른 (better bandwidth) 컴퓨터에서 시도한다면, 여러분의 컴퓨터는 네트워크로 아무 것도 전송할 수 없게 될 것이다. 이 공격법의 변종 중 하나인 "스머핑 (Smurfing)"은 -- 범인을 찾아내는 것이 더 어렵도록 -- ICMP 패켓들의 발신지를 여러분 컴퓨터의 주소인 것처럼 위장해서 다른 호스트에 (패켓 신청을) 보낸다. "스퍼프" 공격에 대해서는 http://users.quadrunner.com/chuegen/smurf.txt에서 더 정보를 얻을 수 있다.
Ping 범람 공격을 받고 있다면, 어디에서 패켓이 오는지 (혹은 오는 것처럼 보이는지) 알아내기 위해서 tcpdump 같은 도구를 쓰도록 하고, 여러분의 ISP에게 이 사실을 연락하도록 하라. Ping 범람은 라우터 수준에서 차단하거나 방화벽을 쓰는 것이 가장 쉽다.
* 죽음의 핑 (Ping o' death 핑 오브 데스): 죽음의 핑 공격은 커널 데이타 구조가 수용할 수 있는 것보다 크기가 큰 IMCP 에코를 요청하는 (IMCP ECHO REQUEST) 패켓이 원인이다. (65510 바이트의) 커다란 "핑"을 시스템에 보내면 시스템이 서 버리거나 죽어 버리기 때문에, "죽음의 핑"이라고 불리게 되었다. 이 문제는 오래 전에 이미 해결책이 나와 있으니 크게 걱정할 필요는 없다.
* 티어드랍 (Teardrop 눈물 방울) / 뉴 티어 (New tear): 최근 침탈법의 하나인 데 리눅스와 윈도우스의 IP 프래그멘테이션 코드에 존재하는 버그를 쓴다. 2.0.33 버전의 커널에서부터 고쳐지기 시작했고, 고칠 때 커널 컴파일-타임 옵션을 선택할 필요는 없다. 리눅스는 "뉴 티어" 침탈법에는 영향을 받지 않는다.
대부분의 침탈법 코드와 이 것들이 어떻게 움직이는 지에 대한 깊은 설명이 필요하면 http://rootshell.com에서 그들의 서치 엔진을 써서 구할 수 있다.
8. NFS (네트워크 파일 시스템) 보안
NFS는 매우 널리 쓰이는 파일 공유 프로토콜이다. NFS를 이용하면 -- 커널에서 nfs 파일시스템을 지원해 주는 (만약 리눅스가 아닌 경우에는 다른 클리이언트가 지원해 주는) 다른 컴퓨터들로 -- nfsd와 mountd를 실행하는 서버가 파일시스템을 "수출" 할 수 있게 해 준다. Mountd는 /etc/mtab에 마운트된 파일시스템을 관리하며, showmount를 쓰면 NFS 내용을 볼 수 있다.
사용자들에게 홈 디렉토리를 제공하기 위해서 NFS를 많은 사이트가 사용하고 있으며, 이렇게 함으로써 사용자들이 어느 컴퓨터에서 로그인하였던 간에 사용자들은 홈 파일들을 가질 수 있게 된다.
파일시스템을 공유할 때 사용할 수 있는 몇 안되는 "보안" 설정이 있다. 여러분은 원격 컴퓨터의 루트 사용자(uid=0)를 nobody 사용자로 대응시켜서, 공유된 파일시스템 전체 접근 권한을 갖는 것을 거부하도록 nsfd를 설정해야 한다. 그러나 개인 사용자는 각자의 (혹은 최소한 같은 uid의) 파일에 대한 접근권이 있기 때문에, 원격지의 루트 유저는 자기 계정으로의 로그인이나 su 사용이 가능하며, 자기 파일들에 대해서 완전한 접근권을 가질 수 있다. 이렇게 하는 것은 원격 파일시스템을 마운트할 권한을 가진 공격자에게는 사소한 장애물밖에 되지 못한다.
NFS를 꼭 써야 한다면, 파일시스템이 공유 사용되어야 만 하는 컴퓨터에게로만 전송 되도록 조정하라. 루트 디렉토리 전부를 수출하도록 설정해서는 절대로 안되며, 공유가 필요한 디렉토리만 수출 (Export)하도록 설정해야 한다.
네트워크 정보 서비스(Network Information service, 예전의 YP)는 그룹의 컴퓨터들에 정보를 배포하는 한 가지 방식이다. NIS 주 서버는 정보표를 소유하며 그것들을 NIS 대응 (map) 파일들로 변환한다. 이 대응 파일들이 네트워크를 통해 제공됨으로써 NIS 클라이언트 컴퓨터들은 로그인과 패스워드, 홈 디렉토리와 쉘에 대한 정보 (즉 보통의 /etc/passwd 파일에 들어 있는 모든 정보)를 얻을 수 있게 된다. NIS를 이용하면 사용자들은 패스워드를 한 번만 바꾸면 그 NIS 영역에 들어 있는 모든 컴퓨터에 (정보가 갱신되도록) 할 수 있다.
NIS는 안전한 것이 아니다. 원래부터 안전을 염두에 두고 만든 것이 아니었다. 단지 간편하고 쓸모 있는 작업 역할을 위해서 만든 것뿐이다. (네트워크 상 어디에 있건) 여러분의 NIS 도메인의 이름을 알아맞힐 수 있는 사람은 여러분의 passwd 파일 복사본을 얻을 수 있고, 여러분의 사용자 패스워드를 깨기 위해 "크랙 (Crack)"과 "존 더 립퍼 (John the ripper)"를 쓸 수 있게 된다. NIS를 속여서 (spoof) 온갖 지저분한 일을 하게 할 수도 있다. 꼭 NIS를 써야 갰다면, 이런 위험들을 감수해야 한다.
방화벽(firewall)은 여러분의 지역 네트워크 안팎으로 어떤 정보가 출입할 것인가를 조정하는 한 가지 방법이다. 전형적으로 방화벽 호스트는 인터넷과 지역 랜을 간섭해서, 랜에서 인터넷으로의 엑세스는 방화벽을 통해서만 가능하도록 하는 것이다. 이렇게 하면 방화벽을 써서 인터넷과 여러분의 (로칼 호스트) 사이를 오가는 정보를 제어할 수 있다.
방화벽에는 수많은 유형과 구성 방법들이 있다. 리눅스 컴퓨터는 훌륭한 방화벽이 될 수 있다. 2.0 이상의 커널에 컴파일을 써서 방화벽 코드를 바로 삽입될 수 있다. 사용자 공간 도구인 2.0 커널용 ipfwadm, 2.2 커널용 ipchains를 쓰면, 어떤 종류의 네트워크 트래픽을 허락할 것인가를 손쉽게 바꿀 수 있다. 또한 일정한 유형의 네트워크 트래픽을 일지에 적도록 (log) 조정할 수 있다.
방화벽은 네트워크의 보안 작업에 있어서 매우 중요하고도 유용한 기술이다. 하지만 방화벽이 있으니까 방화벽이 보호하고 있는 네트워크의 컴퓨터들 자체의 보안은 필요 없다고 생각해서는 절대로 안 된다. 이런 안이한 생각은 절대적으로 치명적인 실수인 것이다. 방화벽과 리눅스에 대한 정보를 더 얻고 싶으면 선사이트에 가서 최근에 만들어진 방화벽과 하우투를 읽어보도록 하라. http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html
만약 여러분이 방화벽에 대한 경험이 전혀 없으면서도, 단순 보안용을 넘는 상황에서 방화벽을 쓰기 위해서 방화벽을 세우려는 상황이라면, 오라일리 앤드 어소시에이츠에서 출판한 방화벽 관련 서적이나 온라인 상에서 구할 수 있는 방화벽 문서들을 찾아서 읽어 봐야 하는 것은 필요 조건일 것이다. http://www.ora.com에서 정보를 구할 수 있다. [책1] 미국 국립 표준 기술 연구소 (National Institure of Standards and Technology: NIST)가 구성한 방화벽에 대한 우수한 문서도 있다. 비록 1995년에 만들어진 문서이기는 해도 아직도 읽을 만한 문서다. 이 것은 http://csrc.nist.gov/nistpubs/800-10/main.html에서 구할 수 있다. 또 다른 읽을 만한 문서들은:
리눅스 IP 방화벽 사슬 (IP Firewalling Chains)은 2.0 리눅스 방화벽 작업용 코드를 2.2 커널용으로 업데이트한 것이다 이 업데이트된 코드는 예전의 설치 코드에 비하면 매우 많은 기능을 제공한다. 새 기능의 예로서
보다 융통성 있는 패켓의 조작.
보다 자세한 계정/책임의 관리.
국소적이며 쉬운 보안 정책 (policy) 수정이 가능.
(패켓) 조각들의 철저한 봉쇄, 거부 등이 가능.
수상한 패켓을 일지에 기록.
ICMP/TCP/UDP 이외의 프로토콜도 취급 가능.
만약 여러분이 현재 2.0 커널에서 ipfwadm을 사용하고 있다면, ipfwadm 명령 형식을 ipchains가 사용하는 것으로 바꿔 주는 스크립트가 있다.
12. VPN - 가상사설망
VPN (Virtual Private Network: 가상사설망 혹은 가상 사설 네트워크)은 이미 존재하는 네트워크를 이용해서 "가상 존재"의 네트워크를 설립하는 방법 중의 하나이다. 이 가상 네트워크는 일반적으로 암호화가 되어 있도록 만들어져 있고, 네트워크에 가입되어 있으며 서로가 알고 있는 개체들 (Entities) 간에서만 정보를 송수신 하도록 되어 있다. VPN은 재택근무하는 사람이 암호화된 가상사설망을 사용함으로 --- 공공 인터넷을 통해서 --- 회사 내부 네트워크에 연결하는 등으로 자주 사용되고 있다.
만약 여러분이 리눅스 마스커레이드를 쓰는 방화벽을 쓰고 있는데 MS PPTP (마이크로소프트의 VPN 포인트 투 포인트 연결용 제품) 패켓을 통과해야 하는 경우에 처한다면, 이 경우에 쓸 수 있는 리눅스 커널 패치가 있다. IP-masq-VPN을 보기 바란다. [32. VPN 한글 정보]