By 데이비드 HM 스펙터(David HM Spector)
리눅스를 위한 전산 기술의 포트폴리오를 효율적으로 세웠다면 논리적으로 따져볼 때 그 다음 단계는 리눅스의 훌륭한 효과 발휘를 위한 자급식의 훌륭한 애플리케이션을 찾아내는 일이 될 것이다. 그리고 훌륭한 애플리케이션만이 많은 지원 문제를 야기시키지 않고 리눅스의 진가를 보여줄 수 있는 장소에 배치될 것이다. 사실 가장 좋은 장소는 몇 가지 지원 문제를 해결하기 위해 리눅스를 사용할 수 있는 곳이 될 것이다. 이 기사에서 우리는 리눅스를 네트워크 진단 도구로 사용할 것이다.
네트워크 문제사항
네트워크는 마이크로초(100만분의 1초)안에 모든 종류의 일들이 일어나는 재미난 곳이다. 네트워크에서는 도메인 네임 시스템(DNS) 검색에 대한 응답이 이루어지며 패킷들이 인터넷에서 웹 브라우저로 이동하는 동안 데이터 블록은 SMB와 NFS와 같은 파일 공유 프로토콜의 일부로서 네트워크를 횡단한다. 언제든지 네트워크 프린터는 활성상태가 될 수 있으며 계속해서 스트림되어 나오는 주소 분해 요청 중계를 시작할 수도 있다. 그렇지 않으면 NFS 클라이언트는 작업에 혼란을 주는 엉망인 데이터를 서버로 보낼 수도 있다.
만약 여러분이 시스템 관리 작업을 한적이 있다면 여러분은 아마 이와 같은 그리고 이와 유사한 문제들을 수 없이 많이 보았을 것이다. 이러한 문제를 디버깅하는 데에는 경험도 있어야 하지만 잘못된 점을 진단하고 이에 대한 조치를 취하는데 도움을 줄 도구도 필요하다.
네트워크 분석
모든 네트워크 기어에 따라오는 매뉴얼 외에도 네트워크의 문제를 진단하는 가장 훌륭한 도구 중 하나는 네트워크 프로토콜 분석기이다. 네트워크 프로토콜 분석기는 네트워크의 소리를 들어본 후 여러분이 아래와 같은 것을 볼 수 있게 데이터를 보여준다.
- 클라이언트와 서버의 상호 대화
- 브로드캐스트
- 패킷 스톰
- 라우팅 업데이트
상업용 네트워크 분석 소프트웨어 페키지는 소프트웨어에만 1,000달러 이상이 소요될 수 있다. 여기에 최신식 전용 랩탑과 초고속 네트워크 제어기를 더하면 5,000달러 정도는 쉽게 초과할 수 있다.
다행스럽게도 리눅스 기반의 솔루션은 오픈 소스이기 때문에 여러분은 위와 같은 상업용 제품(소프트웨어를 확장할 수 있는 능력과 함께)과 동등한 기술을 가진 제품을 아주 저렴한 가격에 구할 수 있다.
네트워크 진단과 트러블슈팅을 쉽게 만들어줄 두 가지 패키지는 이더리얼(Ethereal)과 Netwatch이다.
- 이더리얼(Ethereal)은 네트워크 상의 모든 트레픽을 감시할 수 있는 "네트워크 스니퍼" 패키지이다.
- Netwatch는 클라이언트와 서버간의 트래픽 흐름을 모니터하며 이러한 커뮤니케이션에 어떤 포트가 사용되고 있는지 결정한다.
이더리얼(Ethereal)
이더리얼은 [그림1]에서 보듯이 GUI 기반의 프로그램으로 네트워크 상에서 패킷 트래픽을 보여준다. 이 그림에서 이더리얼은 DNS 검색 패킷, NFS 트랜잭션, POP3 프로토콜을 경유해 배달된 전자 메일을 포함하여 내 홈 네트워크상에 있는 기타 다른 패킷들을 보여준다. 이 그림에서 하이라이트를 받은 패킷은 WHO라는 패킷으로서 머신 가동시간을 보고하고 머신을 보기위해 누가 로그인 했는지 기록한다.
[그림 1] 이더리얼은 네트워크 상의 패킷 트래픽을 보여준다.
(큰 화면을 보려면 그림을 클릭!)
|
이 예에서 볼 수 있듯 이더리얼의 가운데 패널은 WHO 패킷의 구성 요소를 보여준다. WHO 패킷은 부하 평균과 가동 시간 및 기타 머신 관련 정보와 함께 패킷을 중계하는 머신으로 누가 로그했는지 기술하는 하위 파일들을 포함하고 있다.
이더리얼의 바닥 패널은 바이트의 16진법 덤프와 같은 실제적인 패킷 데이터를 보여준다.
전체적으로 보았을 때 이더리얼은 완벽한 네트워크 트래픽 분석 도구이다. 아래에 제시된 항목은 이더리얼의 특징을 간략하게 나열한 것이다.
- 단지 네트워크 패킷으로서 보다는 트랜잭션의 집합으로서 네트워크 세션을 보여주는 세션 추적기이다.
- 이더리얼 패킷 엔진을 사용하는 텍스트 모드 도구로 X윈도우 터미널이나 윈도우를 지원하지 않는 셸 윈도우에서 실행될 수 있다.
- 패킷을 보여주기 위한 컬러화 모드이다.
- 다른 (상업용)네트워크 분석기 패키지로부터 덤프 파일을 읽을 수 있다.
이 이후로는 네트워크 모니터링 도구인 Netwatch를 살펴보고 여러분 회사의 시스템을 모니터하고 테스트하는 것과 관련된 까다로운 법적 문제에 대해서 토론해 볼 것이다.
Netwatch
고든 맥케이(Gordon MacKay)의
Netwatch 유틸리티는 이더리얼보다 더 높은 수준에서 네트워크 부하를 감시한다. 또한 네트워크상에서 누가 누구와 대화를 나누고 있는지 보는데 아주 유용하게 사용된다. [그림 2]에서 보듯이 Netwatch는 어떤 호스트가 패킷을 생산하고 소비하는지에 대한 네트워크 대역폭을 모니터한다.
[그림 2] Netwatch는 네트워크 대역폭을 모니터한다.
(큰 화면을 보려면 그림 클릭!)
|
Netwatch에서는 위와 같은 모드 외에도 다른 유용한 모드를 제공한다. 그것은 어떤 포트가 호스트 사이의 통신에 개입되어 있는지를 보여준다([그림 3] 참고). 이것은 만약 네트워크 상의 클라이언트 서버 애플리케이션이 여러분이 사용하기 원하는 포트를 실제로 사용하는지 그 여부를 알아 내려고 할 때 매우 유용하게 사용된다.
Netwatch는 만약 호스트가 네트워크에서 절대 보여서는 안되는 프로토콜 슬롯을 사용하고 있다면 그와 같은 행동이 잠재적인 문제들을 야기할 수 있다는 경각심의 메시지를 보여준다. 예를 들어 만약 여러분이 TCP나 UDP 포트와 같이 절대 실행되어서는 안되는 서비스를 보았다면 그것은 누군가가 머신에서 인증받지 않은 서비스를 실행시키고 있거나(예를 들어 퀘이크 게임 서버) 누군가가 침입했다는 것을 뜻한다.
[그림 3] Netwatch는 네트워크 대역폭을 모니터한다.
(큰 화면을 보려면 그림 클릭!)
|
Netwatch는 거대한 네트워크 통계를 수집하기위한 간단한 모니터로서도 사용될 수 있다. 얼마나 넓은 대역폭을 가상 웹 호스팅 클라이언트가 사용하는지 알아보기 위해 DSL 접속에 대한 통계자료를 수집할 때 나는 Netwatch를 사용한다. 이외에도 무엇이 있는가?
나는 개인적으로 이더리얼과 Netwatch를 시스템 관리에 사용해 본 후 그것들이 상당히 유용하다는 것을 발견했기 때문에 이 두 가지에 대해 언급하였다. 그러나 그것들은 단지 시작에 지나지 않는다. 이외에도 리눅스에는 엄청나게 많은 도구와 유틸리티가 있다. 만약 이러한 도구들이 특정 네트워크 문제를 해결하는데 적합하지 않다면 이곳(http://freshmeat.net/)을 추천한다. 이 사이트는 오픈 소스 세계에서 새로 발표된 것들과 업데이트된 것들을 잘 정리해서 발표한다.
또 다른 훌륭한 소스로는 VA Linux"s SourceForge를 들 수 있는데 여기에서는 오픈 소스 개발자들이 수많은 네트워크 진단 및 관리 도구를 포함한 그들의 프로젝트를 주최한다. 방금 언급한 사이트들의 검색란에 몇몇 선택적 키워드를 입력하면 어떤 도구를 사용해야 할 지에 대한 좋은 자료를 얻을 수 있을 것이다.
이더리얼과 Netwatch외에도
GNOME 프로젝트는 마크 스펜서(Mark Spencer)의
Cheops와 같은 도구를 포함해 수많은 네트워크 도구를 발표해왔다. Cheops는 네트워크 검색 및 맵핑 도구로 네트워크가 시작할 때 무슨 일이 일어나고 있는지 알아볼 수 있는 유용한 도구이다. Cheops는 [그림 4]에서 보듯이 하위 네트워크까지도 차례로 보여주는 그래킥 네트워크 맵을 구축한다.
[그림 4] Cheops은 하위 네트워크까지도 차례로 보여준다.
(큰 화면을 보려면 그림 클릭!)
|
위 그림에서 내 홈 네트워크는 Cheops(내 메인 워크스테이션은 THX1138이라고 불림)을 실행하는 머신의 위에 있는 것처럼 보인다. Cheops은 그것이 검색하는 호스트들의 SNMP 대몬들을 일일이 조사한다. 그뿐만 아니라 주어진 네트워크 객체를 지원하는 서비스를 결정하는 데 유용한 일련의 제한된 포트 스캔들을 실행한다.
만약 여러분이 혼자 스스로 무언가를 하는 타입이라면 완전히 다른 견지에서 CPAN(Comprehensive Perl Archive Network)은 펄 프로그래밍 언어에 대한 네트워크 유틸리티 모듈을 위한 엄청난 리소스이다. 모든 것을 위한 펄 모듈이 있는데 이것은 IP계정에서 TCP 및 IP 패킷 어셈블리 또는 디스어셈블리 루틴을 관통하여 여러분이 상상해 낼 수 있는 거의 모든 네트워크 도구를 구조화 하는데 사용된다. 여러 가지의 패키지를 사용하면 프로그램은 무거워진다. 따라서 여러분은 시스템에 펄 최신 카피를 설치하고 싶어할 것이다.
주의 사항
우리가 이제까지 살펴본 것처럼 리눅스는 정말 훌륭한 네트워크 기술을 구사하지만 항상 이 기술이 잘 먹혀 들어가는 것은 아니다. "옛날"에는(6개월 전만해도…) 네트워크에 랜덤 머신을 설치할 경우 이와 같은 일이 큰 일거리는 아니었다. 시스템 관리자라면 불필요한 일을 벌이지 않고서도 네트워크 문제를 진단하기 위해 LAN위에 네트워크 스니퍼를 올려놓을 수 있었다. 오늘날 시스템 네트워크를 공격하는 크래커를 감지하는 능력 및 컴퓨터 보안 문제에 대한 관심이 증대하면서 기업 경영은 방어적인 태세를 취하게 되었다. 그리고 기업은 진짜이든 가짜이든 간에 아주 사소한 문제에도 과잉 반응을 나타내기 위해 변호사들을 고용해왔다.
네트워크 보안에 대한 두려움은 다음과 같이 잘 정비되어 있다. 네트워크는 암호화 되어있고 네트워크 스니퍼와 함께 조금씩 수집되는 정말로 귀중한 정보가 정말 많이 있다. 어쨌든 여러분 회사의 네트워크에도 이와 같은 정보가 실행하기에 현명한 아이디어라고 생각된다면 아래 내용을 계속해서 읽어보기 바란다.
우선 네크워크에 스니퍼 또는 다른 종류의 네트워크 분석 하드웨어나 소프트웨어를 설치하기 전에 이런 작업에 대한 승인부터 회사로부터 받아두어라. 만약 취약한 패스워드를 탐색하거나 기타 보안 홀을 찾기 위한 다른 도구(패스워드 크래킹 도구인 "crack"이나 nmap같은 포트 스캐너)를 사용할 계획이라면 여러분 회사의 법률 및 감사 단체에 매입의사가 있다는 것을 확실히 해두어야 한다.
그러한 승인 사항은 편지지의 머리말 부분에 적혀져 있어야 하며 결정의 최고단계에 있는 사람이 서명한 것이어야 한다. 과거에는 평범한 시스템 관리 기술에 속해 있던 것들이 이제 관리자의 눈에 매우 심각한 보안 결점으로 떠오르게 되었다. 잘 알려진 펄에 대한 책을 쓴 저자(래리 월이 아니라 다른 사람)는 상사가 법적 소송을 해야 할 경우 무슨 일이 일어나는지 알아내는 것이 어려운 일이라는 것을 알았다. 그는 법률 및 감사 승인을 제대로 확인하지 못한 대가로 지난 몇 년간 저질러온 불법 컴퓨터 접속이라는 중죄를 와해하기 위해 계속해서 투쟁하고 있다.
리눅스에서 사용할 수 있는 네트워크 도구의 범위와 폭을 모두 충족하는 내용을 이 짧은 칼럼을 통해 다 말하기란 정말 불가능한 일이다. 그렇지만 어떻게 리눅스가 네트워크 관리 작업의 수고를 조금이라도 덜어줄까에 대해 여러분 스스로 탐구해 본다면 이 기사가 훌륭한 출발점이 될 수 있다는 희망은 있다. 나는 여러분에게 도움을 주기위해 여기에서 언급된 패키지들을 링크시켜 놓았다. 뿐만 아니라 인터넷에서 이용할 수 있는 더 흥미진진한 네트워크 도구와 프로젝트로 여러분을 안내할 기사를 계속해서 써나갈 생각이다.