Top

리눅스 방화벽 [오픈소스를 활용한 철통 같은 보안]

  • 원서명Linux Firewalls: Attack Detection and Response with iptables, psad, and fwsnort (ISBN 9781593271411)
  • 지은이마이클 래쉬
  • 옮긴이민병호
  • ISBN : 9788960770577
  • 30,000원
  • 2008년 09월 12일 펴냄 (절판)
  • 페이퍼백 | 384쪽 | 188*250mm
  • 시리즈 : 해킹과 보안

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

해커 침입을 적시에 탐지하고 완벽히 차단하기 위해, iptables, psad, fwsnort를 이용한 철통 같은 방화벽 구축과 보안에 필요한 모든 내용을 상세하고 흥미롭게 다룬 리눅스 시스템 관리자의 필독서!

시스템 관리자는 자신이 관리하는 네트워크에 매일 노출되는 새로운 보안 취약점을 미리 대비해야 한다. 방화벽과 침입 탐지 시스템(IDS)은 접근을 사전에 막고 공격으로 보이는 네트워크 트래픽을 감시할 수 있게 해주는 중요한 도구다.

『리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안』에서는 리눅스 커널에 내장되는 iptables 방화벽과 넷필터 프레임워크의 기술적인 면을 상세히 다루며, 상용 도구에 필적하는 강력한 필터링, 네트워크 주소 변환(NAT), 상태 추적, 애플리케이션 계층 검사 기능을 어떻게 제공하는지 알려준다. psad와 fwsnort를 함께 사용해서 iptables를 IDS로 배치하는 방법과 fwknop를 통해 iptables 위에 강력한 수동적 인증 계층을 생성하는 방법도 알려준다.


[ 소개 ]

날이 갈수록 공격이 우위를 점하는 것처럼 보인다. 거의 매일 소프트웨어 취약점에 대한 새로운 공격 방법, 좀 더 효과적인 스팸 전송 방법(필자의 받은 편지함이 이를 증명해준다), 또는 세간의 이목을 끄는 회사나 정부 조직의 민감한 개인 데이터 도난에 대한 뉴스가 등장한다. 안전한 컴퓨팅을 달성하는 것은 영원한 난제다. 악질적인 해커들을 무력화하게 설계된 기술에는 부족함이 없지만 해커들은 계속해서 시스템과 네트워크에 침투하고 있다.

모든 종류의 보안 문제점에 대해서 거의 대부분의 경우 이에 대응하게 설계된 공개 소스 솔루션이나 상용 솔루션이 존재한다. 이는 특히 방화벽, 필터링 라우터 등과 같은 네트워크 침입 탐지 시스템과 네트워크 접근 제어 장치 분야에서 그렇다. 방화벽 기술의 경향은 침입 탐지 분야의 애플리케이션 계층 검사 기술을 방화벽이 오랜 기간 해왔던 네트워크 트래픽 필터링과 결합하는 것이다. 이 책의 목표는 리눅스 시스템의 iptables 방화벽이 방화벽 분야의 이런 경향을 반영하기에 적합하다는 것, 특히 iptables가 침입 탐지의 관점에서 iptables를 강화하게 설계된 추가적인 소프트웨어와 결합할 때 더욱 적합하다는 것을 보이는 것이다.

필자는 현존하는 출간물 중 이 책이 몇 가지 면에서 유일하다고 생각한다. 리눅스 방화벽의 다양한 면을 논한 훌륭한 책은 많지만 필자가 아는 한 그 어떤 책도 iptables와 이것이 제공하는 데이터를 통해 탐지할 수 있는(그리고 어떤 경우에는 저지할 수 있는) 공격을 중점적으로 다루지는 않는다. 침입 탐지를 다룬 책도 많지만 침입 탐지 과정을 진정으로 보충하기 위해 방화벽 기술을 사용하는 데 초점을 둔 책은 없다. 이 책은 앞서 언급한 두 기술의 융합을 다룬다.

이 책에서는 공격 탐지와 방지에 대한 iptables의 유효성을 극대화하게 설계된 다음의 세 가지 공개 소스 소프트웨어 프로젝트를 자세히 살펴본다.

psad - iptables 로그 분석기와 능동적 응답 도구(active response tool)
fwsnort - 스노트(Snort) 규칙을 등가의 iptables 규칙으로 변환하는 스크립트
fwknop - iptables에 대한 단일 패킷 권한 부여(SPA, Single Packet Authorization)의 구현

이들은 모두 GNU 공개 라이선스(GPL) 하에서 공개 소스 소프트웨어로서 배포되며, http://www.cipherdyne.org에서 받을 수 있다.


[ 이 책에서 다루는 내용 ]

구체적인 예를 통해 방화벽 로그 분석과 정책, 수동적 네트워크 인증과 권한 부여, 공격 패킷 추적, 스노트 규칙 집합 에뮬레이션 등과 같은 개념을 확실히 알 수 있다. 이 책의 예제에서는 다음과 같은 내용을 다룬다.

• iptables 문자열 매칭 확장과 fwsnort를 사용한 애플리케이션 계층 공격 탐지
• 스노트 규칙 집합을 에뮬레이션하는 iptables 규칙 집합 생성
• 포트 노킹과 단일 패킷 권한 부여(SPA)
• iptables 로그를 시각화하기 위한 도구
• iptables를 이용한 수동적 OS 핑거프린팅

펄과 C 코드를 통해 리눅스 방화벽의 배치를 최적화할 수 있는 실질적인 예를 볼 수 있다.
네트워크를 안전하게 보호할 책임을 지고 있는 사람이라면 공격을 이해하는 데나 침투를 탐지하고 막기 위해 (psad나 fwsnort와 함께) iptables를 사용하는 데 『리눅스 방화벽』이 큰 도움될 것이다.


[ 추천의 글 ]

사람들은 대부분 방화벽(firewall)이라는 용어를 들으면 OSI 참조 모델의 네트워크 계층과 전송 계층에서 네트워크 트래픽을 검사하면서 통과나 필터링을 결정하는 제품을 떠올린다. 제품 측면에서 보면 방화벽에는 십여 개의 유형이 있다. 방화벽의 유형은 검사하는 데이터(예를 들어 네트워크 트래픽, 호스트 프로세스, 시스템 호출)와 이러한 데이터를 검사하는 깊이에 따라 구별된다. 통신을 검사하고 통과시킬지 필터링할지 결정하는 거의 모든 장치가 방화벽 제품이다.

프록시 방화벽의 발명가이자 최초의 상용 방화벽 제품의 구현자인 마커스 래넘(Marcus Ranum)은 1990년대 중반에 방화벽이라는 용어를 다음과 같이 정의했다. “방화벽은 인터넷 보안 정책의 구현이다. 이 정의는 제품 중립적이고 특정 시간에 한정되지 않으며 현실적이기 때문에 매우 훌륭하다. 이 정의는 지금 읽고 있는 이 책뿐만 아니라 윌리엄 체스윅과 스티븐 벨로빈이 쓴 최초의 방화벽 관련 서적인 『방화벽과 인터넷 보안(Addison-Wesley Professional, 1994)』에도 똑같이 적용된다.

래넘의 정의에 따르면 방화벽은 정책 강제 시스템(policy enforcement system)으로 생각할 수도 있다. 네트워크 트래픽을 검사한 후 이를 통과시키거나 필터링하는 장치를 네트워크 정책 강제 시스템이라고 하며 호스트-중심 활동을 검사한 후 이를 통과시키거나 필터링하는 장치를 호스트 정책 강제 시스템이라고 한다. 어떤 경우든 정책 강제를 중점적으로 생각해보면 방화벽의 역할이 단순히 “나쁜 것을 막는” 장치가 아니라 정책을 구현하는 장치라는 것을 알 수 있다.

“나쁜 것”과 관련해서 방화벽이 오늘날의 기업에도 여전히 중요한지 의문을 가질 수 있다. 적절히 설정한 전통적인 네트워크 방화벽 제품은 기본적으로 허용된 인터넷 프로토콜, IP 주소, TCP/UDP 포트, ICMP 유형과 코드를 제외한 모든 것을 차단한다. 요즘의 공격 환경에서 이런 종류의 방어로는 불충분하다. 이러한 공격 채널을 제한하는 것은 목표로의 입구와 출구 경로를 제한하기 위해 필요하지만 네트워크와 전송 계층 필터링은 최소한 지난 10년간 전혀 충분치 못한 대책이었다.

2007년 현재 클라이언트에 침투하는 가장 효과적인 방법은 사용자가 악의적인 실행 파일을 활성화하게 유도하거나 사용자에게 악의적인 콘텐트를 호스팅하는 링크를 전송하는 것, 또는 사용자 컴퓨팅 경험의 다른 클라이언트 측 컴포넌트를 공격하는 것이다. 많은 경우 공격은 패치(patch)할 수 있는 취약점이나 강화할 수 있는 설정에 의존하지 않는다. 대신 공격자는 오늘날 웹을 탐색하는 데 점점 더 필요해지고 있는 자바스크립트나 플래시 같은 리치미디어(rich-media) 플랫폼의 약점을 공격한다.

2007년 현재 서버에 침투하는 가장 효과적인 방법은 운영체제를 피해 애플리케이션을 공격하는 것이다. 웹 애플리케이션이 서버 분야를 지배하고 있으며, 웹 애플리케이션의 문제점은 패치할 수 있는 취약점보다 구조적 결함이나 설계 결함에 있다. 1990년대 후반에는 안전하지 않은 웹 애플리케이션임을 보이기 위해 장바구니 항목의 가격을 변경하는 것이 유행이었다. Ajax의 덕분에 거의 10년 후인 지금 장바구니는 클라이언트에서 동작하고 있으며 사용자들은 또 다시 가격을 변경하고 있다(이는 더욱 안 좋은 것이다).

앞서 설명한 모든 것으로 인해 방화벽 제품의 미래가 어두워진 듯 보인다. 많은 방화벽이 상세한 패킷 검사를 포함하거나 OSI 참조 모델의 애플리케이션 계층이나 그보다 상위 계층에서 동작함으로써 변화에 적응해왔다. 다른 방화벽들은 필수품화된 것처럼 보이는 시장에서 자신을 차별화하기 위해 영리한 마케팅 용어를 사용하면서 침입방지시스템(intrusionpreventionsystem)으로서 동작한다. 클라이언트 측 공격과 웹 애플리케이션 공격의 시대에 방화벽, 특히 공개 소스 제품이 설 자리가 있는가?

답은 “있다”다. 그리고 여러분은 지금 이에 대한 한 접근 방법을 읽고 있다. 마이클 래쉬는 방어 목적의 네트워크 기술을 창의적으로 이용하는 데 있어 개척자다. 특정 라스베가스 해커 컨벤션의 발제자 목록을 보면 알 수 있듯이 보안 연구와 개발 분야에서는 점점 더 공격 도구와 기술이 지배적이다. 마이클은 이러한 경향을 거슬러 공격으로부터 정보 자산을 보호하는 방법을 지속적으로 개발하고 발전시키고 있다. 공격을 위한 컨퍼런스에서 새로운 공격법이나 취약점을 본 후 대부분의 사람은 자신의 기업을 보호하기 위한 일상적인 업무에 복귀한다. 이 책을 통해 이러한 업무를 좀 더 쉽게 할 수 있는 추가적인 프로그램과 방법들을 알 수 있다.

이 책의 초안을 읽는 동안 나는 몇 가지 주제를 찾아낼 수 있었다. 첫째, 장치들이 자립적이 되고 인터넷에 노출됨에 따라 호스트-중심 방어가 점점 더 중요해지고 있다. 이러한 변화의 극단적인 예로 IPv6가 있다. IPv6가 원래 의도된 모습 그대로 보급되면 본래 인터넷의 “단대단(end-to-end)” 특성이 부활하게 된다. 물론 단대단은 공격자-대-희생자로도 생각할 수 있기 때문에 호스트가 자신을 스스로 보호할 수 있는 추가적인 방법이 중요해진다. 리눅스 방화벽을 통해 호스트가 호스트 기반 방화벽과 도구를 사용해서 어떻게 스스로를 보호하는지 알게 될 것이다.

둘째, 점차적으로 호스트가 스스로를 방어해야 한다는 사실에도 불구하고 호스트-중심 방법만으로는 충분하지 않다. 호스트는 일단 침투되면 더 이상 자기 자신을 보호할 수 없다. 침입자는 보통 시스템에 침투하자마자 호스트 방화벽, 안티바이러스 소프트웨어, 기타 보호 에이전트를 비활성화한다. 그러므로 여전히 네트워크-중심 필터링 장치가 필요하다. 희생자가 제어하는 종단(endpoint)은 네트워크 방화벽이 허용하는 통신 채널만을 사용할 수 있으며, 이는 최소한 침입자가 이용할 수 있는 작전을 제한한다. 리눅스 방화벽을 통해 네트워크 장치가 어떻게 호스트를 보호하는지도 알 수 있다.

셋째, 정보 자산을 방어하는 창의적인 방법을 보고 공격 분야를 이해해야 한다. 주의를 요하는 서비스에 대한 접근을 제한하고자 한다면 단일 패킷 권한 부여(Single Packet Authorization)가 포트 노킹(port knocking)보다 훨씬 발전된 방법이다. 시각화(visualization)는 로그와 트래픽을 보기 좋게 렌더링하며, 분석가는 이를 통해 관심 있는 미묘한 이벤트를 탐지할 수 있다. 이 책을 읽고 나면 방어 인프라스트럭처를 강화할 수 있는 추가적인 방법(저자를 포함해 다른 이들이 생각하지 못한 방법)을 발견할 수도 있다.

책의 검토자겸 저자의 입장에서 이 서문을 마치고자 한다. 2000년에서 2007년 중반 사이에 필자는 거의 250권에 달하는 기술 서적을 읽고 검토했다. 또 몇 권의 책도 집필했기 때문에 필자는 어떤 책이 훌륭한 책인지 식별하는 눈을 가졌다고 자부한다. 리눅스 방화벽은 훌륭한 책이다. 필자는 FreeBSD 사용자지만 라눅스 방화벽을 보면서 일부 경우에 대해 리눅스 사용을 고려하기도 했다! 마이클의 책은 매우 명확하며 구성이 우수하고 간결하며 바로 활용할 수 있다. 이 책의 예를 따라 해봄으로써 이 책에 나온 모든 것을 구현할 수 있다. 또 여러 도구에 익숙해지고 여러 기술을 활용하는 법을 배우는 것뿐만 아니라 방어에 대한 저자의 예리한 통찰력도 감상할 수 있다.

대다수의 전 세계 디지털 보안 전문가들은 공격은 공격자, 경찰, 군대에 남겨둔 채 방어에 집중하고 있다. 필자는 실질적인 방어 도구와 기술을 최소한의 비용과 노력으로 터득하고 도입할 수 있게 해주는 리눅스 방화벽과 같은 책을 환영한다. 행운을 빈다.

Richard Bejtlich
제네럴 일렉트릭 사의 사고 대응팀장


[ 이 책의 구성 ]

1장. iptables가 제공하는 보호
1장에서는 커널 빌드의 특이사항, iptables 관리 등을 포함해 iptables를 이용한 패킷 필터링을 소개한다. 기본 정책과 네트워크 다이어그램을 보이고 책의 나머지 부분에서 이를 참조한다. 기본 정책을 실행하는 리눅스 시스템은 근거리 네트워크(LAN, local area network)를 위한 방화벽으로 동작하며, 이 시스템에 대한 공격은 이어지는 여러 장에서 설명한다.

2장. 네트워크 계층 공격과 방어
2장에서는 네트워크 계층에 존재하는 공격 유형과 이에 대한 대응책을 다룬다. iptables 로깅 형식을 소개하고 iptables 로그에서 얻을 수 있는 네트워크 계층 정보를 중점적으로 설명한다.

3장. 전송 계층 공격과 방어
전송 계층은 포트 스캔(port scan)과 포트 스윕(port sweep)을 이용한 서버 정탐(reconnaissance) 영역이며, 3장에서는 이러한 방법의 내부 동작을 살펴본다. iptables 로깅 형식은 전송 계층 헤더 정보를 나타내는 데 적합하며, 이는 모든 종류의 위해를 탐지하는 데 유용하다.

4장. 애플리케이션 계층 공격과 방어
오늘날 행해지는 공격의 대다수는 TCP/IP 수트의 최상단에 올라가는 애플리케이션의 복잡도(이는 점점 더 증가하고 있다)를 이용한다. 4장에서는 iptables가 탐지할 수 있는 애플리케이션 계층 공격을 살펴보고 iptables의 문자열 매칭 확장을 소개한다.

5장. psad 소개
5장에서는 psad의 설치와 설정을 설명하고 iptables 로그를 살펴보는 것이 중요한 이유를 설명한다.

6장. psad의 동작: 수상한 트래픽 탐지
psad가 제공하는 기능은 다양하며 이러한 기능은 iptables 로그 메시지의 사용을 최대화하기 위해 설계된 것이다. 포트 스캔에서 백도어 탐사(backdoor probe)에 이르기까지 psad는 수상한 활동을 탐지하고 자세한 메일과 syslog 경고를 이용해 보고한다.

7장. psad 고급 주제: 서명 매칭에서 OS 핑거프린팅까지
7장에서는 통합된 수동적 OS 핑거프린팅(fingerprinting), 패킷 헤더를 통한 스노트 서명 탐지, 상세한 상태 정보, DShield 보고와 같은 psad의 고급 기능을 소개한다. 7장에서는 iptables 로그 정보가 보안 데이터를 어느 정도까지 제공할 수 있는지에 대한 모든 것을 다룬다.

8장. psad를 이용한 능동적 응답
공격에 자동적으로 응답하는 것에 대한 내용을 빼면 침입 탐지에 대한 논의를 마칠 수 없다. psad가 제공하는 응답 기능은 제3자 소프트웨어와 통합하기 쉽게 해주는 깔끔한 인터페이스 위에 만들어져 있으며, 8장에는 스와치(Swatch) 프로젝트와 통합하는 예도 담았다.

9장. 스노트 규칙을 iptables 규칙으로 변환
스노트 IDS는 네트워크 기반 공격을 탐지하는 방법을 보여줬으므로 iptables에서 스노트 서명 언어를 강화할 수 있다. iptables가 풍부한 로깅 형식과 애플리케이션 계층 데이터 조사 기능을 제공하기 때문에 스노트 서명의 상당 부분을 iptables 규칙으로 변환할 수 있다.

10장. fwsnort 배치
스노트 서명을 iptables 규칙으로 변환하는 지루한 작업은 fwsnort 프로젝트에 의해 자동화됐으며 10장에서는 이러한 자동화가 어떻게 동작하는지 설명한다. fwsnort를 배치함으로써 iptables 정책은 진정한 침입 탐지 능력을 가지게 된다.

11장. psad와 fwsnort의 결합
fwsnort가 생성하는 로그 메시지는 메일을 통한 좀 더 나은 보고를 위해 psad가 수집하고 분석한다(수동적 OS 핑거프린팅뿐만 아니라 통합된 whois와 역방향 DNS 검색[reverse DNS lookup]도 다룬다). 11장에서는 iptables로 수행할 수 있는 공격 탐지와 완화 전략의 최고봉을 보여준다.

12장. 포트 노킹과 단일 패킷 권한 부여
수동적 권한 부여는 네트워크에 연결된 서비스를 안전하게 유지하는 데 있어 점점 더 중요해지고 있다. 이러한 기술을 사용함으로써 제로 데이 취약점의 피해 범위는 크게 제한할 수 있지만 모든 수동적 권한 부여 패러다임이 중대한 배치에 충분하도록 견고한 것은 아니다. 12장에서는 포트 노킹(port knocking)과 단일 패킷 권한 부여(SPA)라는 두 가지 수동적 권한 부여 메커니즘을 비교하고 대조한다.

13장. fwknop 소개
오늘날 이용할 수 있는 SPA 구현은 몇 개뿐이며, fwknop는 가장 활발하게 개발되고 지원되는 구현 중 하나다. 13장에서는 fwknop의 설치법과 SSH 데몬(daemon)에 연결하고자 하는 모든 비인증과 비권한 부여 시도에 대해 기본 버리기(default-drop) 상태를 유지하기 위해 fwknop를 iptables와 함께 이용하는 방법을 다룬다.

14장. iptables 로그 시각화
이 책의 마지막 장은 iptables 로그 데이터의 그래픽 표현으로 마무리한다. 그림 하나가 시스템 침투를 의미할 수 있는 네트워크 통신 경향을 빠르게 보여줄 수 있으며, psad와 애프터글로우(AfterGlow) 프로젝트를 결합함으로써 iptables가 보여줘야 하는 것을 볼 수 있다.

부록 A. 공격 스푸핑
스노트 서명 규칙 집합을 파싱(parsing, 구문 분석)하고 이와 일치하는 패킷 데이터를 만든 후 이를 스푸핑된(spoofed) 출발지 주소(source address)로부터 퍼뜨리는 일은 매우 쉽다. 부록 A에서는 정확하게 이 공격을 수행하는 예제 펄 스크립트(fwsnort와 함께 제공됨)를 다룬다.

부록 B. 완전한 fwsnort 스크립트의 예
fwsnort 프로젝트는 애플리케이션 계층 공격을 탐지할 수 있는 iptables 정책 생성에 필요한 iptables 명령어 실행을 자동화하는 쉘 스크립트를 생성한다. 부록 B에는 fwsnort가 생성한 fwsnort.sh 스크립트의 완전한 예제를 담았다.

저자/역자 소개

[ 저자 소개 ]

마이클 래쉬
드래곤(Dragon) 침입 탐지와 방지 시스템을 개발한 엔테라시스 네트웍스(Enterasys Networks) 사의 보안 전문가다. 공개 소스 프로젝트에 자주 기여하고 있으며, psad, fwknop, fwsnort를 개발했다. 래쉬는 방화벽, 침입 탐지 시스템, 수동적 OS 핑거프린팅, 스노트 규칙 언어의 전문가다. 그는 『스노트 2.1 침입 탐지(Snort2.1 Intrusion Detection, Syngress, 2004)』의 공동 저자며, 『침입 방지와 능동적 응답(Intrusion Prevention and Active Response, Syngress, 2005)』의 저자다. 또 마이클 래쉬는 리눅스 저널, SysAdmin 매거진, ;login:에 보안 논문을 게재했다.


[ 옮긴이의 말 ]

수많은 악성 프로그램이 판을 치는 요즘 사람들은 자신의 컴퓨터를 안전하게 보호하기 위해 다양한 보호 프로그램을 이용한다. 안티바이러스와 방화벽이 대표적인 보호 프로그램인데 특히 방화벽은 내 컴퓨터가 악성 프로그램에 감염되더라도 컴퓨터에 저장된 데이터가 네트워크로 유출되지 않게 해준다는 점에서 중요하다. 물론 악성 프로그램 감염을 막는 것 자체도 중요하지만 안티바이러스 프로그램의 서명이 실시간으로 갱신되기는 힘들며 행동 기반 탐지도 긍정오류를 일으키기 쉽기 때문에 새로운 악성 프로그램이 등장하면 얼마 동안은 확산되게 마련이다. 그러므로 악성 프로그램에 감염되더라도 2차적인 확산과 컴퓨터 데이터 유출을 막을 수 있는 방화벽이 정말 중요하다.

세상 모든 것이 그렇듯 방화벽 프로그램도 쓰기 나름이다. 적절히 설정된 방화벽은 정말로 강력한 방어막을 구축할 수 있는 반면 그렇지 못한 방화벽은 무용지물이 된다. 특히 웹 서비스나 터미널 서비스 등을 제공하는 서버의 방화벽은 신중하게 설정해야 한다. 서버 이용자가 불편함을 느끼지 않도록 서비스는 원활히 제공하면서도 허용되지 않는 패킷 송수신은 최대한 차단해야 하기 때문이다.

『리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안』은 리눅스 일반 사용자와 리눅스 서버 관리자 모두를 위한 책으로 iptables, psad, fwsnort를 이용한 강력한 방화벽 구축의 모든 것을 담고 있다. 이 책에서는 크게 패킷 필터링, 포트 스캔 탐지, 스노트 규칙 변환, 포트 노킹, 로그 시각화를 다룬다. iptables는 리눅스에서 가장 널리 쓰이는 오픈소스 방화벽으로 psad, fwsnort와 함께 쓰일 때 더욱 큰 힘을 발휘하게 된다. iptables의 설치부터 설정까지를 모두 다루면서도 초보자와 전문가 모두가 흥미롭게 읽을 수 있도록 균형이 잘 잡혀있다는 점은 이 책의 큰 장점이다. 더욱이 iptables뿐만 아니라 psad, fwsnort, fwknop 등도 다루며 이들을 한 데 모으면 얼마나 강력한 방화벽을 구축할 수 있는지 상세하게 설명해준다. 책의 마지막 부분에서는 로그 분석에 큰 도움이 되는 로그 데이터의 시각화도 다룬다. 한 마디로 요약하면 오픈 소스 프로그램들을 사용해서 강력한 리눅스 방화벽을 구축하고자 하는 사람에게 필요한 모든 것을 담고 있는 책이다. 특히 서버를 관리하는 실무자라면 아무리 경력이 많고 오랫동안 iptables를 이용해왔더라도 『리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안』 만큼은 한번 읽어보는 것이 좋다. 책에서 다루는 예가 특정 공격을 막기 위한 필터링 규칙을 만들 때 실질적인 도움을 줄 수도 있고, 미쳐 다 파악하지 못했던 iptables, psad, fwsnort의 기능과 설정값을 알게 될 수도 있기 때문이다.

이제부터 오픈 소스 프로그램을 사용한 최고의 방화벽 구축법을 알아보고 세상에서 가장 안전한 리눅스 시스템을 만들어보자.


[ 옮긴이 소개 ]

민병호
서울대학교 컴퓨터공학부를 졸업하고 동 대학원에서 석사 학위를 취득했다. 다양한 분야의 소프트웨어를 개발하고 있으며 컴퓨터 분야 전체에 관심이 많다. 특히 보안, 네트워크, 프로그래밍 언어, 인공지능 분야를 연구 중이다. 누구나 이해할 수 있는 컴퓨팅 환경을 만드는 것이 꿈으로, 비전문가도 쉽게 자신의 생각을 현실로 구현할 수 있는 컴퓨터가 등장할 날을 그리며 열심히 연구/개발 중이다. 역서로 에이콘출판사에서 펴낸 『TCP/IP 완벽 가이드』, 『새로 보는 프로그래밍 언어』가 있다.

목차

목차
  • 01장 iptables가 제공하는 보호 ● 29
    • iptables ● 30
    • iptables를 이용한 패킷 필터링 ● 31
      • 테이블 ● 31
      • 체인 ● 31
      • 매치 ● 32
      • 타겟 ● 33
    • iptables의 설치 ● 33
    • 커널 설정 ● 35
      • 필수적인 넷필터 컴파일 옵션 ● 36
      • 커널 설정의 완료 ● 37
      • 로딩 가능 커널 모듈 대 고유 컴파일과 보안 ● 38
    • 보안과 최소 컴파일 ● 39
    • 커널 컴파일과 설치 ● 40
    • iptables 사용자 바이너리의 설치 ● 41
    • 기본 iptables 정책 ● 42
      • 정책 요구사항 ● 42
      • iptables.sh 스크립트 프리앰플(Preamble) ● 44
      • INPUT 체인 ● 45
      • OUTPUT 체인 ● 47
      • FORWARD 체인 ● 48
      • 네트워크 주소 변환(NAT, Network Address Translation) ● 50
      • 정책 활성화 ● 51
      • iptables-save와 iptables-restore ● 51
      • 정책 시험: TCP ● 54
      • 정책 시험: UDP ● 56
      • 정책 시험: ICMP ● 57
    • 정리 ● 58
  • 02장 네트워크 계층 공격과 방어 ● 59
    • iptables를 이용한 네트워크 계층 헤더의 기록 ● 60
      • IP 헤더의 기록 ● 60
    • 네트워크 계층 공격 정의 ● 63
    • 네트워크 계층 악용 ● 64
      • Nmap ICMP Ping ● 64
      • IP 스푸핑 ● 65
      • IP 단편화 ● 67
      • 작은 TTL 값 ● 68
      • 스머프 공격 ● 69
      • DDoS 공격 ● 70
      • 리눅스 커널 IGMP 공격 ● 71
    • 네트워크 계층 응답 ● 71
      • 네트워크 계층 필터링 응답 ● 72
      • 네트워크 계층 임계치 응답 ● 72
      • 계층 간 응답의 결합 ● 73
  • 03장 전송 계층 공격과 방어 ● 75
    • iptables를 이용한 전송 계층 헤더의 기록 ● 76
      • TCP 헤더의 기록 ● 76
      • UDP 헤더의 기록 ● 78
    • 전송 계층 공격 정의 ● 79
    • 전송 계층 악용 ● 80
      • 포트 스캔 ● 80
      • 포트 스윕 ● 89
      • TCP 순서 번호 예측 공격 ● 90
      • SYN 플러딩 ● 91
    • 전송 계층 응답 ● 91
      • TCP 응답 ● 92
      • UDP 응답 ● 96
      • 방화벽 규칙과 라우터 ACL ● 97
  • 04장 애플리케이션 계층 공격과 방어 ● 99
    • iptables를 이용한 애플리케이션 계층 문자열 매칭 ● 100
      • 문자열 매칭 확장의 동작 ● 101
      • 비출력 애플리케이션 계층 데이터의 매칭 ● 102
    • 애플리케이션 계층 공격 정의 ● 103
    • 애플리케이션 계층 악용 ● 104
      • 스노트 서명 ● 105
      • 버퍼 오버플로우 공격 ● 106
      • SQL 인젝션 공격 ● 108
      • 그레이 매터 해킹(Gray Matter Hacking) ● 109
    • 암호화와 애플리케이션 인코딩 ● 112
    • 애플리케이션 계층 응답 ● 113
  • 05장 psad 소개 ● 115
    • 역사 ● 116
    • 방화벽 로그를 분석하는 이유 ● 116
    • psad의 기능 ● 117
    • psad 설치 ● 118
    • psad 관리 ● 120
      • psad의 시작과 종료 ● 120
      • 데몬 프로세스의 유일성 ● 121
      • iptables 정책 설정 ● 121
      • syslog 설정 ● 123
      • whois 클라이언트 ● 124
    • psad 설정 ● 126
      • /etc/psad/psad.conf ● 126
      • /etc/psad/auto_dl ● 133
      • /etc/psad/signatures ● 133
      • /etc/psad/snortruledl ● 134
      • /etc/psad/ip_options ● 135
      • /etc/psad/pf.os ● 135
    • 정리 ● 136
  • 06장 psad 동작: 수상한 트래픽 탐지 ● 137
    • psad를 이용한 포트 스캔 탐지 ● 138
      • TCP connect() 스캔 ● 139
      • TCP SYN이나 반개방 스캔 ● 142
      • TCP FIN 스캔, XMAS 스캔, NULL 스캔 ● 144
      • UDP 스캔 ● 146
    • psad를 이용한 경고와 보고 ● 148
      • psad 메일 경고 ● 148
      • psad syslog 보고 ● 151
    • 정리 ● 152
  • 07장 psad 고급 주제: 서명 매칭에서 OS 핑거프린팅까지 ● 153
    • 스노트 규칙을 사용한 공격 탐지 ● 154
      • ipEye 포트 스캐너 탐지 ● 155
      • LAND 공격 탐지 ● 156
      • TCP 포트 0 공격 탐지 ● 157
      • TTL 0 트래픽 탐지 ● 158
      • 나프타 서비스 거부 공격 탐지 ● 158
      • 소스 라우팅 시도 탐지 ● 159
      • 윈도우 메신저 팝업 스팸 탐지 ● 160
    • psad 서명 갱신 ● 161
    • OS 핑거프린팅 ● 162
      • Nmap을 이용한 능동적 OS 핑거프린팅 ● 162
      • p0f를 이용한 수동적 OS 핑거프린팅 ● 163
    • DShield 보고 ● 165
      • DShield 보고 형식 ● 166
      • DShield 보고서 예제 ● 167
    • psad 상태 출력 보기 ● 167
    • 포렌식 모드 ● 171
    • 상세/디버그 모드 ● 172
    • 정리 ● 174
  • 08장 psad를 이용한 능동적 응답 ● 175
    • 침입 방지와 능동적 응답 ● 176
    • 능동적 응답의 트레이드오프 ● 177
      • 공격의 종류 ● 177
      • 긍정 오류 ● 178
    • psad를 이용해 공격에 응답하기 ● 179
      • 기능 ● 179
      • 설정 변수 ● 180
    • 능동적 응답의 예 ● 182
      • 능동적 응답 설정 ● 183
      • SYN 스캔 응답 ● 184
      • UDP 스캔 응답 ● 186
      • Nmap 버전 스캔 ● 187
      • FIN 스캔 응답 ● 187
      • 스캔의 악의적인 스푸핑 ● 188
    • 써드파티 도구와 psad 능동적 응답의 통합 ● 189
      • 명령 행 인터페이스 ● 189
      • 스와치와의 통합 ● 192
      • 기타 스크립트와의 통합 ● 193
    • 정리 ● 195
  • 09장 스노트 규칙을 iptables 규칙으로 변환 ● 197
    • fwsnort를 사용해야 하는 이유 ● 199
      • 철저한 방어 ● 199
      • 목표 기반 침입 탐지와 네트워크 계층 비단편화 ● 199
      • 적은 자원 사용 ● 200
      • 인라인 응답 ● 201
    • 서명 변환 예제 ● 201
      • Nmap 명령 시도 서명 ● 201
      • 블리딩 스노트 “방코스 트로이목마” 서명 ● 203
      • PGPNet 연결 시도 서명 ● 204
    • fwsnort의 스노트 규칙 해석 ● 205
      • 스노트 규칙 헤더 변환 ● 205
      • 스노트 규칙 옵션 변환: iptables 패킷 로깅 ● 208
      • 스노트 옵션과 iptables 패킷 필터링 ● 210
      • 미지원 스노트 규칙 옵션 ● 224
    • 정리 ● 226
  • 10장 fwsnort 배치 ● 227
    • fwsnort 설치 ● 228
    • fwsnort 실행 ● 230
      • fwsnort 설정 파일 ● 232
      • fwsnort.sh의 구조 ● 234
      • fwsnort의 명령 행 옵션 ● 239
    • fwsnort의 실제 동작 ● 240
      • Trin00 DDoS 도구의 탐지 ● 240
      • 리눅스 쉘코드 트래픽의 탐지 ● 242
      • 두마도르(Dumador) 트로이목마의 탐지와 대응 ● 243
      • DNS 캐시 오염 공격의 탐지와 대응 ● 246
    • 허용 목록과 차단 목록 설정 ● 249
    • 정리 ● 251
  • 11장 psad와 fwsnort의 결합 ● 253
    • fwsnort 탐지와 psad 동작의 결합 ● 254
      • WEB-PHP Setup.php access 공격 ● 254
    • 다시 보는 능동적 응답 ● 259
      • psad와 fwsnort ● 259
      • fwsnort가 탐지한 공격으로 psad 응답을 제한 ● 260
      • fwsnort와 psad 응답의 결합 ● 260
      • DROP과 REJECT 타겟 ● 263
    • 메타스플로잇 갱신 무력화 ● 266
      • 메타스플로잇 갱신 기능 ● 267
      • 서명 개발 ● 269
      • fwsnort와 psad를 사용한 메타스플로잇 갱신 저지 ● 271
    • 정리 ● 276
  • 12장 포트 노킹과 단일 패킷 권한 부여 ● 277
    • 공격 수단 축소 ● 278
    • 제로 데이 공격 문제 ● 278
      • 제로 데이 공격 발견 ● 280
      • 서명 기반 탐지의 영향 ● 280
      • 철저한 방어 ● 281
    • 포트 노킹 ● 281
      • Nmap과 목표 식별 단계 무력화하기 ● 283
      • 공유 포트 노킹 나열 ● 283
      • 암호화된 포트 노킹 나열 ● 286
      • 포트 노킹의 구조적 한계 ● 289
    • 단일 패킷 권한 부여 ● 292
      • 포트 노킹 한계점 해결 ● 293
      • SPA의 구조적 한계 ● 294
    • 불분명함을 이용한 보안 ● 296
    • 정리 ● 297
  • 13장 fwknop 소개 ● 299
    • fwknop 설치 ● 300
    • fwknop 설정 ● 303
      • /etc/fwknop/fwknop.conf ● 303
      • /etc/fwknop/access.conf ● 307
      • 예제 /etc/fwknop/access.conf 파일 ● 311
    • fwknop SPA 패킷 형식 ● 312
    • fwknop 배치 ● 314
      • 대칭 암호화를 이용한 SPA ● 315
      • 비대칭 암호화를 이용한 SPA ● 318
      • 재전송 공격 탐지와 차단 ● 322
      • SPA 패킷 출발지 주소 스푸핑 ● 325
      • fwknop OpenSSH 통합 패치 ● 326
    • Tor를 이용한 SPA ● 328
    • 정리 ● 329
  • 14장 iptables 로그 시각화 ● 331
    • 비일상적인 활동 탐지 ● 332
    • Gnuplot ● 334
      • Gnuplot 그래프 지시어 ● 335
      • psad와 Gnuplot의 결합 ● 336
    • AfterGlow ● 337
    • iptables 공격 시각화 ● 338
      • 포트 스캔 ● 338
      • 포트 스윕 ● 342
      • 슬래머 웜 ● 346
      • 나치 웜 ● 348
      • 침투된 시스템으로부터의 아웃바운드 연결 ● 350
    • 정리 ● 354
  • 부록 A 공격 스푸핑 ● 355
    • 연결추적 ● 356
      • exploit.rules 트래픽의 스푸핑 ● 359
      • 스푸핑된 UDP 공격 ● 360

관련 블로그 글

중원무림을 평정할 『리눅스 방화벽』 절대비급서
사용자 삽입 이미지
리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안
마이클 래쉬 지음 | 민병호 옮김 | 해킹 보안 시리즈 17
384쪽 | 30,000원 | 2008년 9월 12일 출간예정 | ISBN 9788960770577

썬의 솔라리스(Solaris)나 IBM의 AIX, HP/UX 같은 유닉스 서버나, 원격관리가 쉽지 않고 라이센스 구매에 따른 부가비용이 발생하는 윈도우 서버는 대기업이나 특정기업을 제외하면 선택의 폭이 적습니다. 그래서 이메일 서버, 웹서버, DNS 서버 등 웹 호스팅 업체들을 비롯한 중소규모의 기업에서 가장 선호하는 서버는 아마도 리눅스 서버일 것입니다. 유지비용이 들지 않고 원격관리가 수월하기 때문이지만 가장 중요한 선택 조건은 아마 , 돈 때문이겠죠.

다만 어떻게 활용하느냐의 문제는 늘 과제로 남습니다. 요즘처럼 보안문제가 뜨거운 감자로 부각되는 시기에, 리눅스 서버에서 보안을 어떻게 강화하느냐는 모든 서버관리자가 해결해야 할 숙제입니다. 리눅스 방화벽에 대해서는 전반적인 개념과 내용을 설명해주는 책은 있어왔지만, 리눅스에서 가장 널리 쓰이는 오픈소스 방화벽 iptables에 대한 책은 드물어서 대부분 인터넷에서 자료를 찾아볼 수밖에 없었습니다.

에이콘 해킹 보안 시리즈의 17번째 책으로 출간되는 『리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안』은 선택과 집중을 통해, iptables와 psad, fwsnort 등 공개 소프트웨어를 활용해 공격을 감지하고 보안을 강화할 수 있는 실제적인 내용을 설명하는 리눅스 보안에 대한 절대비급서입니다.

보안에서 공격을 방어하는 방법은 크게 세가지로 나뉩니다.

감지(detect) - 분석(analyze) - 차단(prevent)

대부분 분석 단계에 이르기도 전인 공격감지 단계에서도 이미 선수를 놓치기 일쑤며, 대응책조차 세우지 못한 모래성은 허무하게도 무너져내리고 맙니다. 이 책에서는 공격 탐지와 방어에 쓰이는 iptables의 유효성을 극대화하도록 설계된 psad(iptables 로그 분석기와 능동적 응답도구), fwsnort(스노트 규칙을 등가의 iptables 규칙으로 변환하는 스크립트) 등 오픈소스 등을 활용해 특히 공격을 감지하는 내용에 집중해 설명하고 있습니다.

여러 컴퓨터에서 한 컴퓨터로 동시에 접근해 컴퓨터를 다운시켜버리는 DDOS 공격(분산 서비스 거부 공격), 특정 포트를 여러 번 접근하거나 여러 포트를 랜덤하게 동시 접근하는 포트 공격 등 다양한 시나리오를 대상으로 각 공격을 감지하고 분석하며, 커맨드라인 명령어와 로그파일 분석을 예로 들며 리눅스 명령어의 각 옵션을 자세히 설명하고 있습니다.

특히 이 책에서는 각종 오픈소스 소프트웨어를 사용해 적들의 공격 패턴을 눈으로 직접 확인할 수 있는 시각화 내용도 소개하고 있습니다.
사용자 삽입 이미지
이처럼 ICMP 패킷을 추적해 나치 웜이 전파되는 모습을 눈으로 확인할 수 있습니다.
사용자 삽입 이미지
이 그림은 Gnuplot 프로그램을 써서 슬래머 웜의 활동을 시간 단위로 측정한 그림입니다. 특정시점에서 그래프가 올라간 것으로 보아 슬래머 웜이 극성을 부리고 있음을 확인할 수 있죠.

요즘 점점 더 이슈로 떠오르고 있는 Security Visualization, 보안관련 시각화에 관해서는, 이 책에서도 1개 장을 할애하고는 있지만 깊이있는 내용을 다루고 있지는 않습니다. 이에 관해서는 좀더 전문적인 내용을 담은 책이 독자분들께 곧 선보일 수 있을 것입니다.

오픈소스를 활용한 다양한 해킹방법과 대응법을 두루 살펴본 『실전해킹 절대내공』, 리눅스 해킹과 보안에 관한 전반적인 내용을 다룬 『리눅스 해킹 퇴치비법』, IDS(Intrusion Detection System)를 포괄적으로 다룬 『스노트 2.0 마술상자』, 패킷 움직임과 내용을 파악하는 툴인 『와이어샤크를 활용한 실전 패킷 분석』등의 맥을 잇는 책으로서, 방화벽 구축 프로그램을 이용해 강력한 리눅스 방화벽 구축의 모든 내용을 담은 절대비급서로서 보안에 관심이 많은 리눅스 사용자와 서버관리자에게 매우 유용한 책이 될 것입니다.

자세한 내용은 이 책의 도서정보페이지에서 읽어보세요. 얼마 전 출간된 『새로 보는 프로그래밍 언어』에 이어 바로 출간되는 신간을 번역하신 민병호님께 감사의 말씀을 전합니다. 옮긴이들께서 책을 출간하시면 옮긴이의 말에 사족을 넣곤 하시는데, 바로 출판사 직원들에게 보내는 인사말씀 말이죠. 그보다는 새로운 창작과 다름없는 어려운 번역 일을 해내시느라 밤잠 설쳐가면서 작업을 마쳐주시는 역자분께 오히려 저희가 깊은 감사를 전해야 하겠죠. 요즘도 어김없이 새벽에 일어나 매일 꾸준히 할당량(!)을 채우신다는 민병호님의 신간은 가을의 끝자락에 다시 선보여드릴 수 있을 것 같습니다.

리눅스 방화벽: 오픈소스를 활용한 철통 같은 보안』은 지금 YES24, 교보문고, 강컴, 인터파크, 알라딘에서 예약 판매중입니다.

마지막으로 이 책 표지 디자인과 관련해 공개적으로 감사말씀을 드릴 분이 한분 계십니다. GREAT CODE 시리즈, 와이어샤크를 활용한 실전 패킷 분석, 리눅스 기반의 임베디드 제품 디자인 등의 원서를 펴낸 No Starch 출판사 특유의 표지에서 벗어나 뭔가 새로운 느낌을 줄 것이 없을까 고민하던 중 저희 에이콘과 윈도우CE 6.0 책을 번역하고 계신 dawnsea 신진철님께서 몇십 분만에 뚝딱뚝딱 표지 시안 만들어 보내주셨습니다(직접 블로그에 올려두셨으니 한번 구경해보세요~). 시안을 보고나서 맘에 쏙 드는 바람에 바로 저희 표지로 판올림을 해버렸습니다. 기계공학도이자 개발자인데 표지 디자인까지 하는 미적쎈쓰까지 갖추신 dawnsea님의 능력에 감탄을 보내며 도움주셔서 정말 감사하다는 인사 전합니다. 디자인료로 책 무상 증정과 거한 만찬 적립해드리겠습니다.
CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.55 : 2행]
TCP 포트로의 접근은 시험한다.
->
TCP 포트로의 접근을 시험한다.

[p.57 : 아래에서 7행]
이는 응답 에코 요청 패킷을 전송하지 않고 ICMP 에코 요청 패킷을 생성함으로써 시험한다.
->
이는 에코 요청 패킷을 전송하지 않고 ICMP 에코 응답 패킷을 생성하는 방법으로 시험한다.

[p.57 : 아래에서 3행]
요청 패킷을 생성한 후
->
응답 패킷을 생성한 후

[p.69 : 노트]
버그가 있는 라우터로서
->
버그가 있는 라우터에서

[p.66 : 노트 1행]
스프핑된 출발지 주소를 가지는 모든 킷은
->
스프핑된 출발지 주소를 가지는 모든 패킷은

[p.66 : 펄을 이용한 IP 스푸핑 3행]
UPD 데이터그램을 만드는
->
UDP 데이터그램을 만드는

[p.70 : 아래에서 5행]
목적지 IP 주소가 3.3.3.3
->
출발지 IP 주소가 3.3.3.3

[ p191 '모든 차단 규칙 제거' 절 6행 ]
psad --Flash 명령이 → psad --Flush 명령이

[ p268 박스 안 2행 ]
[intscammer]
$ http://framework- → [int
scanner]
$ wget http://framework-

[ p311 아래에서 6행 ]
OPENPPORTS: tcp/22는 → OPENPORTS: tcp/22는