메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

보안 애플리케이션을 위한 리눅스

한빛미디어

|

2001-12-11

|

by HANBIT

10,575

By 데이비드 HM 스펙터(David HM Spector) 이 시리즈의 바로 이전 기사에서 나는 네트워크 패킷 모니터링과 같은 약간은 보안적인 목적과 관련이 있는 리눅스 기반의 시스템 사용법에 대한 글을 썼다. 나는 이와 비슷한 맥락으로 이 기사도 써나갈 것이며 네트워크나 방화벽에서 일어나는 일들을 절대적으로 통제하는 영역에서 리눅스가 어떻게 사용될 것인지에 대해서도 진지하게 토론해 볼 것이다. 방화벽은 IT 커뮤니티에서는 전설적인 일화처럼 들린다. 대부분의 사람들이 시스템 크래커나 바이러스, 기타 악성 코드를 두려워한 나머지 방화벽은 가지고 있으나 그 중 소수의 사람들만이 도대체 방화벽이란 무엇인지 그리고 방화벽을 어떻게 구축하는지에 대해 알고 있다. 이 기사는 컴퓨터 내부에서 일어나는 일에 대한 포괄적인 개요 뿐만 아니라 구체적으로 침범 테스트 및 침입 감지와 같은 기타 보안 애플리케이션에서 리눅스를 사용하는 방법에 대해서도 다룰 것이다. 도대체 "방화벽"이란 무엇인가? 가장 직접적인 정의를 하자면 방화벽이란 한 지역과 다른 지역 사이에 교환되는 정보의 흐름을 제어하는 일련의 정책을 구현하는 프로세스이다. 여러분은 내가 왜 "방화벽"을 정의함에 있어서 기술적인 방법이나 용어에 대해 언급하지 않았는지 궁금할 것이다. 그 이유는 정보 관리 영역에서 방화벽에 대한 개념이 컴퓨터가 발명되기 훨씬 이전의 시대부터 발달되었기 때문이다. 컴퓨팅이라는 단어를 고려하지 않고 방화벽이 실제적으로 무슨 일을 하는지 살펴봄으로써 방화벽의 역할에 대한 애매한 편견을 제거할 수 있다. 물론 다른 영역도 마찬가지겠지만 금융업계를 예로 들어보자. 금융업계에서 법률적으로 정의 된 "방화벽"이란 투자 은행과 같은 한 그룹과 무역에 종사하는 사람들이 이용하는 상업 은행과 같은 또다른 그룹이 서로 정보를 공유하는 방법을 말한다. 이 경우 투자 은행가와 상품 거래자 사이에서 이미 어떤 그룹에서 팔고 있는 것을 다른 그룹이 강매하는 상황이 일어나지 않도록 확실히 하기위해 위에서 언급한 것과 같은 절차적인 방화벽이 존재한다. 따라서 "방화벽"은 잠재적으로 엄청난 피해가 발생할 수도 있는 위험한 투자로부터 투자자들을 안전하게 보호하는 역할을 한다. 물론 인터넷 또는 인트라넷이라는 측면에서 보았을 때에도 방화벽은 두개나 그 이상의 컴퓨터 네트워크가 서로 정보를 교환하고 교류하는 방법에 대한 정책을 구현하는 것을 의미한다. 방화벽 자체는 실제로는 아주 유연한 라우터에 비유할 수 있다. 방화벽의 목표는 엄격한 규정에 따라 네트워크 인터페이스를 드나드는 모든 패킷의 자취를 추적하는데 있다. 만약 이러한 규정대로 테스트가 이루어진다면(즉 누군가가 접속 정책에 규정되어 있지 않는 방법으로 무언가를 하려고 한다면) 방화벽은 이 경과를 기록하고 대개 이상이 발생하면 담당자에게 실제적으로 보고하는 체제로 작동된다. 만약 방화벽의 규정이 누군가에 의해 침해되었다면 방화벽에 "결점이 생겼다(breached)"고 보고되어야 하며 방화벽에 의해 보호되는 시스템은 잠재적으로 "위험 수준(at risk)"에 있다고 간주된다. 라우터는 방화벽 만큼이나 프로그램화 되어있지는 않다. 라우터의 역할은 가능한 한 빨리 네트워크간 패킷을 빠르게 이동시키는 것이다. 그러나 여기에 보안도구를 많이 첨가하면 첨가할수록 각각의 패킷이 다양한 수준에서 검증되어야 하기 때문에 라우팅의 기능은 느려진다. 방화벽의 역할은 잘 정의된 보안 정책에 따라 네트워크간 인증받은 패킷을 이동시키는 것이다. 여기서 언급한 라우터와 방화벽의 역할비교는 정말로 굉장히 광범위한 구별법이다. 리눅스 방화벽은 다음과 같은 몇 가지 제품들이 있다. 우선은 Phoenix Adaptive FirewallNetMax Firewall ProSuite과 같은 상업용 방화벽 패키지가 있다. 이것들은 벤더로부터 지원을 받을 수 있는 방화벽을 설치하기 원하는 사람들을 위한 전환키 솔루션으로 시스템을 한데 엮어준다. 이외에도 "homegrown" 리눅스 방화벽과 같은 다른 종류의 방화벽이 있다. 대개 사람들은 그들의 상세한 요구사항을 충족시켜 줄 패키지를 찾지 못하거나 상업용 패키지 보다 소스 코드와 설치에 대한 더 강력한 통제를 원할 경우 그들의 의지를 접는다. 어떻게 방화벽을 만드는가? 리눅스 방화벽은 정규 리눅스 머신으로부터 불필요한 모든 서비스를 제거하는 것에서부터 이용 가능한 모든 패치와 업데이트 사항들을 적용하는 일까지 한다. 불필요한 서비스는 다음과 같이 나열하였다.
  • C/C++, 자바 및 기타 개발 도구들
  • NFS 및 기타 엔드 유저 서버와 서비스
  • 엔드 유저 계정
  • /etc/inetd.conf에 나열된 아이템 중에 99%에 해당하는 서버 프로세스
방화벽이 잘 알려진 모든 보안상 위협과 위험이 제거된 곳에서 작동되는 것으로 알려진 시스템들의 소프트웨어라는 점은 충분히 강조되지 않았다. 항상 미 컴퓨터 침해 사고 비상 대응팀인 CERT 및 기타 보안 모티터링 정보 그룹으로부터 항상 최신의 보안 권고사항을 알아두는 것은 아마도 보안 관리자의 임부 중 가장 어러운 부분일 것이다. 대부분의 사람들은 그들이 모니터하는 데 실패하거나 알려진 보안 취약점에 대처하는 것에 실패할 때 매우 곤혹스러워 한다. 비스킷의 수수께끼: 패킷 필터링 패킷 필터링은 방화벽에 첨부되는 네트워크로부터 온 패키지가 어떻게 다루어져야 할지를 결정하기 위해 검사 받는 프로세스이다. 리눅스에서 이용 할 수 있는 몇 가지 패킷 필터링 시스템이 있지만 가장 많이 사용되는 것은 IP Chains라고 불리는 패키지이다. 이것은 비밀이 아니라면 패킷이 방화벽을 통과할 수 있는 방법을 지정하기 위한 새로운 시스템에 기본을 둔다. 패킷 필터링의 목적은 관리자들에 의해 설정된 규정을 충족하는 방화벽을 통과할 수 있는 모든 패킷들을 하나하나 조사하는데 있다. IP Chains 시스템은 패킷으로 무엇을 할 수 있는지 결정하기 위해 패킷을 조사하는 일련의 필터들을 설치한다. 만약 하나의 필터라도 패킷이 다루는 타입이 아니라고 결정한다면 패킷이 내부(보호되는) 네트워크로 넘겨질 때까지 필터는 패킷을 체인 속에 있는 다음 필터로 넘긴다. 그렇지 않으면 패킷은 필터 체인의 끝부분으로 떨어지던가 거부된다. 가장 간단한 시나리오에서 방화벽은 패킷이 인증받은 네트워크에 있는 인증받은 호스트로부터 와서 인증받은 네트워크에 있는 인증 받은 호스트로 가도록 확실히 해주어야 한다. 다른 점검 사항으로는 오로지 선택된 프로토콜(X윈도우, FTP 또는 텔넷과 같은 것)만이 방화벽 또는 더 깊은 수준을 통과하도록 확실히 해두는 것을 포함한다. 여기서 더 깊은 수준이란 패킷이 그렇다고 인정한 데이터를 포함하고 있으며 누군가가 텔넷 세션위에서 터널링이나 X윈도우 세션과 함께 게임을 하고있는 것이 아니라고 확정하기 위해 검사될 수도 있는 패킷의 내용을 뜻한다. 리눅스를 기본 운영체제로 사용할 것인지 아니면 부속 운영체제로 사용할 것인지 방화벽 시스템을 구축하는 것에 대한 기본 취지는 다음과 같은 정책 사항을 확실히 해두는 것이다. 우선 박스를 통과할 수 있는 것은 확실하게 생각된 것이어야 하며 끊임없이 적용되어야 할 것으로 정의된 정책이어야 하며 시스템은 단지 설치된 것이 아니라 계속해서 점검되어야 하는 것이라는 정책이다. 네트워크 스캐닝 만약 여러분이 방화벽을 구축할 예정이거나 이미 방화벽을 구축했다면 어떤 트래픽이 통과되었나를 알아보는 정기적인 검사를 하는 것이 좋다. 정보 보안은 한번에 끝내버리는 것이 아니라 계속해서 관리하고 유지해 가는 것이기 때문이다. 단순하게 방화벽을 구입했다거나 구축했다고 해야 할 일이 모두 끝난 것은 아니다. 방화벽은 인간관계와 같아서 잘 작동시키고 싶다면 끊임없는 관심을 기울여야 한다.
Protecting Networks with Satan
방화벽을 테스트 하는 가장 좋은 방법 중 하나는 방화벽으로 엄청난 양의 패킷을 보내서 방화벽이 수용하는 것과 거부하는 것이 어떤 것인지 살펴보는 것이다. 이러한 기능을 검사하는데 사용할 수 있는 몇몇 유용한 툴킷이 있다. 이러한 것들 중에 가장 잘 알려진 것은 SATAN으로서 System Administrator"s Tool for Analyzing Networks의 줄임말이다. 이 툴킷은 현재 EarthLink Networks에서 근무하고 있는 보안 컨설턴트인 댄 파머(Dan Farmer)가 작성한 것이다. SATAN은 취약점을 찾는 방화벽에 대항해서 관리자가 일련의 포트 스캐닝 운영을 하도록 해준다. 또한 SATAN은 그것이 도용하려고 하는 잘 알려진 취약성에 대한 내장 데이터베이스를 가지고 있다. SATAN에서 대부분의 기본 코드를 가져와서 만들어낸 것이 SAINT(Security Administrator"s Integrated Network Tool)이다. SAINT는 SANTAN의 네트워크 스캐닝 능력을 업데이트시키고 박스 밖에 있는 리눅스에서 작동하도록 설계되었다. 또다른 유용한 도구는 NMAP이라고 불리는 것으로서 주어진 호스트에 대한 서비스를 지도화 시키거나 주거나 주어진 서비스를 지원하는 주어진 네트워크에 대한 모든 호스트를 찾는데 도움을 준다. 이것은 네트워크상에 있는 머신에서 실행되어서는 안되는 서비스를 추적할 때 아주 도움이 된다. 내가 이전에 언급하였듯이 네트워크 스캐너와 같은 도구들은 허가 없이 네트워크에서 사용된다면 대부분의 네트워크 관리자들에 의해 아주 적절하지 않다고 간주되는 강력한 도구가 될 것이다. 이러한 도구를 어떻게 언제 어디서 실험해 보야아 할지 항상 주의하기 바란다. 데이비드 HM 스펙터(David HM Spector) 뉴욕에 본거지가 있는 인프라스트럭처 컨설팅 및 제품개발 회사, LLC, Really Fast Systems의 사장이자 최고 경영자이다.
TAG :
댓글 입력
자료실

최근 본 상품0