글
보안 가이드
저작권 © 2005 지은이 Red Hat, Inc.
- 차례
- 머리글
- 1. 아키텍쳐 관련 정보
- 2. 문서 약정
- 3. 레드햇 네트워크에 구입하신 제품을 등록하십시오
- 3.1. Red Hat 로그인 아이디 입력하기
- 3.2. 등록 번호를 입력하십시오
- 3.3. 귀사의 시스템을 연결하십시오
- 4. 앞으로 추가될 사항
- 4.1. 여러분의 의견을 기다리고 있습니다
- I. 보안에 대한 기본적인 소개
- 1장. 보안 개요
- 1.1. 컴퓨터 보안이란 무엇인가?
- 1.2. 보안 제어
- 1.3. 결론
- 2장. 공격자와 취약점
- 2.1. 간략한 해커 역사
- 2.2. 네트워크 보안 위협
- 2.3. 서버 보안 위협
- 2.4. 워크스테이션과 가정용 PC 보안 위협
- II. Red Hat Enterprise Linux를 보안 설정하기
- 3장. 보안 업데이트
- 3.1. 패키지 업데이트하기
- 4장. 워크스테이션 보안
- 4.1. 워크스테이션 보안 평가하기
- 4.2. BIOS와 부트로더 보안
- 4.3. 암호 보안
- 4.4. 관리 제어
- 4.5. 사용 가능한 네트워크 서비스
- 4.6. 개인 방화벽
- 4.7. 보안 강화된 통신 도구
- 5장. 서버 보안
- 5.1. TCP 래퍼와 xinetd를 사용하여 서비스 보안 강화하기
- 5.2. Portmap 보안 강화
- 5.3. NIS 보안 강화
- 5.4. NFS 보안 강화
- 5.5. Apache HTTP 서버 보안 강화
- 5.6. FTP 보안 강화
- 5.7. Sendmail 보안 강화
- 5.8. 청취 중인 포트 확인하기
- 6장. 가상 사설 통신망 (Virtual Private Networks)
- 6.1. VPN과 Red Hat Enterprise Linux
- 6.2. IPsec
- 6.3. IPsec 설치
- 6.4. IPsec 호스트 간 설정
- 6.5. IPsec 네트워크 간 설정
- 7장. 방화벽
- 7.1. Netfilter와 iptables
- 7.2. iptables 사용법
- 7.3. 일반 iptables 필터링
- 7.4. FORWARD와 NAT 규칙
- 7.5. 바이러스와 가짜 IP 주소
- 7.6. iptables와 연결 추적(Connection Tracking)
- 7.7. ip6tables
- 7.8. 추가 자료
- III. 보안 평가
- 8장. 취약성 평가
- 8.1. 적의 마음으로 생각하기
- 8.2. 평가와 테스팅 정의하기
- 8.3. 도구를 평가하기
- IV. 칩입과 보안 사고 대응
- 9장. 침입 탐지
- 9.1. 침입 탐지 시스템이란
- 9.2. 호스트 기반 IDS
- 9.3. 네트워크 기반 IDS
- 10장. 사고 대응
- 10.1. 사고 대응이란 무엇인가
- 10.2. 사고 대응 계획 세우기
- 10.3. 사고 대응 계획을 실행하기
- 10.4. 사고 조사
- 10.5. 자원 복구하기
- 10.6. 사고 보고하기
- V. 부록
- A. 하드웨어와 네트워크 보안
- A.1. 보안 네트워크 구성 방식
- A.2. 하드웨어 보안
- B. 일반 보안 취약점과 공격
- C. 공용 포트
- 색인
- 판권
출처 : http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ko/security-guide/index.html
2장. 공격자와 취약점
좋은 보안 정책을 계획하고 구현하기 위해서는 먼저 공격자가 시스템에 침입하고자 결정하게된 계기와 동기를 알아보아야 합니다. 이를 알아보기에 앞서, 우선 공격자를 지칭하는 여러 용어들에 대하여 설명해 보겠습니다.
2.1. 간략한 해커 역사
오늘날 우리가 알고 있는 해커 (hacker)의 기원은 1960 년대 MIT테크 모델 철도 클럽(TMRC, Tech Model Railroad Club)에서 시작되었습니다. 복잡한 구조의 대형 기차모형을 제작하는 이 동호회에서는 독창적인 요령이나 문제 해결책을 발견한 동호회 회원을 지칭하는데 해커라는 이름을 사용하기시작했습니다.
그 이후 해커라는 용어는 컴퓨터 애호가로부터 능력이 뛰어난 프로그래머까지 모든 것을 포함하는 의미를 갖게 되었습니다.대부분 해커들의 일반적인 특징은 다른 사람의 영향을 받지 않고 스스로 컴퓨터 시스템과 네트워크 기능의 작업 방식에 대하여 자세히알아보고자 하는 정신입니다. 오픈 소스 소프트웨어 개발자들은 종종 자기 자신과 또한 함께 일하는 동료들을 해커로 지칭하며, 해커정신을 존경할 것을 요구합니다.
일반적으로 해커들은 정보와 전문적 기술을 탐구하고 이 정보를 공유하는 것이 사회에 대한 해커의 근본 윤리임을 제시하는 해커 윤리 (hacker ethic)를따릅니다. 이러한 지식을 탐구하는 일환으로 일부 해커들은 컴퓨터 시스템의 보안 침투를 시도하기도 합니다. 이러한 이유로매체에서는 종종 해커라는 용어를 비도덕적이고 악의를 가지고 범죄를 저지를 생각으로 불법으로 시스템과 네트워크에 침입한 사람을지칭하는데 사용합니다. 이러한 유형의 컴퓨터 해커에 대한 보다 적절한 용어는 크래커 (cracker) 입니다 — 1980 년대 중반에 해커들이 해커와 크래커에 차이를 두기 위해 만들어낸 용어입니다.
2.1.1. 다양한 종류의 해커
시스템과 네트워크의 취약점을 분석 파악하고 연구하는 해커들은 여러 다른 그룹으로 나뉘어 집니다. 이 그룹들은 이들이 보안 체계를 연구할 때 "착용하는" 모자의 색으로 구분되며, 이 색은 해킹의 의도를 나타냅니다.
white hat 해커란 네트워크와 시스템을 검사하여 얼마나 외부 침입에취약한지를 연구하는 사람입니다. 일반적으로 white hat 해커는 자신의 시스템이나 보안 검사를 위해 자신을 고용한 고객의시스템에 침투하여 연구합니다. white hat 해커의 대표적인 예로서는 대학 연구원이나 전문 보안 상담자를 들 수 있습니다.
black hat 해커는 크래커와 동일한 의미입니다. 일반적으로 크래커는 연구나 프로그래밍이 보다는 크래킹 프로그램을 사용하거나 잘 알려진 취약점을 이용하여 시스템에 침입한 후 기밀 정보를 빼내거나 목표 시스템이나 네트워크를 손상시킵니다.
반면 grey hat 해커는 대부분의 경우 white hat 해커의 지식과의도를 갖추고 있지만, 가끔씩 자신의 지식을 보다 정당하지 못한 의도로 사용하는 사람을 지칭합니다. grey hat 해커는white hat 해커이지만 가끔씩 자신의 욕심을 채우기 위해 black hat으로 변하는 해커라고 말할 수 있습니다.
Grey hat 해커는 일반적으로 다른 유형의 해커 윤리를 따릅니다. 이 해커 윤리에 따르면 해커가 도둑질이나 기밀을유포하지 않는 한 시스템에 침입하는 것을 허용합니다. 그러나 일부에서는 시스템에 침입하는 것 자체가 윤리적이지 못하다고비난합니다.
침입자의 의도에 상관없이 크래커가 시스템 침입에 사용할 취약점을 알아내는 것이 중요합니다. 이 장의 나머지 부분에서는 이러한 취약점을 중점으로 설명해 보겠습니다.
2.2. 네트워크 보안 위협
다음과 같은 네트워크 설정시 잘못된 설정으로 인해 침입의 위험이 증가될 수 있습니다.
2.2.1. 불안정한 구조
잘못 설정된 네트워크는 허가 없는 사용자들이 시스템에 침입할 수 있게 해주는 주요 시작 지점입니다. 로컬 네트워크를인터넷에 공개해놓는 것은 마치 우범 지역에서 집의 문을 활짝 열어놓는 것과 같습니다 — 얼마 동안은 아무런 일도 일어나지 않을지몰라도, 결국에는 누군가가 그 기회를 이용하여 침입할 것입니다.
2.2.1.1. 브로드캐스트 네트워크
시스템 관리자는 종종 보안 계획을 구상시 네트워크 하드웨어의 중요성을 간과하는 경우가 있습니다. 허브(hub)와 라우터와같이 브로드캐스트나 비교환 원칙에 의존하는 단순 하드웨어; 즉, 네트워크를 통하여 수신자 노드로 데이터를 전송시, 허브나라우터는 수신자 노드가 데이터 패킷을 받아서 프로세스할 때까지 데이터 패킷을 브로드캐스트합니다. 이러한 방법은 지역 네트워크상에서 허가 없는 사용자나 외부 침입자가 주소 결정 프로토콜 (arp)이나 MAC (media access control) 주소 스푸핑을 사용하여 쉽게 침입할 수 있게 해줍니다.
2.2.1.2. 중앙 집중형 서버
또 다른 네트워크 보안 위협으로서 중앙 집중식 컴퓨팅을 들 수 있습니다. 많은 사업체에서 경비를 절감하는 방법으로서 한개의 강력한 컴퓨터에 모든 서비스를 통합하는 경우가 있습니다. 여러 개의 서버를 설정하는 것 보다 상당히 경비도 절감되고관리하기에 편한 이점이 있지만, 이러한 중앙 집중형 서버를 사용하는 경우 만일 중앙 서버가 손상되면 네트워크 전체가 정지되거나또는 데이터 조작이나 도난당하기 쉽습니다. 이러한 경우 침입자는 중앙 서버를 이용하여 전체 네트워크에 접속 가능합니다.
2.3. 서버 보안 위협
서버 보안은 네트워크 보안 만큼 중요합니다. 그 이유는 기업체의 많은 중요한 정보가 서버에 저장되어 있기 때문입니다. 만일서버가 손상되면 크래커가 서버에 저장된 내용물을 모두 빼내거나 마음대로 조작할 가능성이 있습니다. 다음 부분에서는 이와 관련된중요한 문제점에 대하여 설명해 보겠습니다.
2.3.1. 사용되지 않은 서비스와 공개 포트
Red Hat Enterprise Linux를 전체 설치하시면 1000여개에 이르는 응용 프로그램과 라이브러리 패키지가설치됩니다. 그러나 대부분의 서버 관리자 분들은 배포판에 포함된 모든 개별 패키지를 설치하기 보다는, 대신 여러 서버 응용프로그램을 포함한 기본 패키지 설치를 선호합니다.
대부분의 시스템 관리자들은 실제로 어떠한 프로그램이 설치되는지 주시하지 않은 채 운영 체제를 설치하시는 경우가 많습니다.이러한 경우, 기본 설정에 포함된 필요치 않는 서비스가 설치되어 켜질 수 있으므로 문제가 됩니다. Telnet, DHCP,DNS와 같은 원치 않는 서비스가 관리자가 깨닫지 못한채 서버나 워크스테이션에서 실행되어, 서버에 필요없는 트래픽을 야기시키며심지어는 크래커가 시스템에 침입 가능하게 해줍니다. 포트를 닫거나 사용되지 않는 서비스를 비활성화 시키는 방법을 보시려면 5 장을 참조하시기 바랍니다.
2.3.2. 패치가 설치되지 않은 서비스
기본 설치에 포함된 대부분의 서버 응용 프로그램들은 철저하게 테스트와 검증을 거친 소프트웨어입니다. 여러 해를 거쳐 생산 환경에서 사용되면서, 이 소프트웨어의 코드가 보다 개선되고 발견된 다수의 문제점이 수정되었습니다.
그러나 완벽한 소프트웨어란 있을 수 없으며 언제든지 개선할 요소가 있기 마련입니다. 더우기 새로운 소프트웨어는 기대하는만큼 엄격하게 테스트되지 않는 경우가 종종 있습니다. 그 이유는 이 소프트웨어가 제품 환경에 출시된지 얼마되지 않아서 이거나또는 다른 서버 소프트웨어 만큼 많이 사용되지 않기 때문입니다.
개발자와 시스템 관리자는 서버 응용 프로그램에서 문제점을 발견한 경우 그 정보를 Bugtraq 메일링 리스트 (http://www.securityfocus.com)나 컴퓨터 비상 대응팀 (Computer Emergency Response Team: CERT) 웹사이트 (http://www.cert.org)와 같은 버그 추적과 보안 관련 웹사이트에 공개합니다. 이러한 방법은 커뮤니티에 보안 취약점을 빠르게 알려줄 수 있는 효율 적인방법이기는 하지만, 시스템 관리자들은 즉시 시스템을 패치를 설치하셔야 합니다. 크래커는 동일한 취약점 추적 서비스를 볼 수 있기때문에 재빠르게 패치가 설치되지 않은 시스템에 침입하여 정보를 빼내올 가능성이 있기 때문입니다. 훌륭한 시스템 관리자라면 보다안전한 컴퓨팅 환경을 만들기 위하여 항상 경계하며 지속적으로 버그 (문제점)을 추적하고 적절한 시스템 관리 작업을 수행해야합니다.
항상 업데이트된 시스템을 유지하는 방법에 대한 자세한 정보는 3 장을 참조하시기 바랍니다.
2.3.3. 부주의한 관리
관리자가 시스템에 패치를 설치하지 않는 것은 서버 보안에 있어서 가장 큰 위험 요소입니다. SANS (System Administration Network and Security Institute)에 따르면 컴퓨터 보안에 취약점을 가져오는 가장 주된 원인은 "재대로 교육 받지 않는 미숙한 사람을 보안 관리하도록 맡겨놓고 작업을 수행할 수 있는 시간이나 교육도 제공하지 않기 때문이다."[1]라고 합니다. 이러한 상황은 미숙한 관리자 뿐만 아니라 너무 자만하거나 의욕을 상실한 관리자에게도 적용됩니다.
일부 관리자들은 서버와 워크스테이션에 패치를 설치하는 것을 잊어버리는 경우가 있는 반면, 다른 어떤 관리자들은 시스템커널의 로그 메시지나 네트워크 트래픽을 잊고 살펴보지 않는 경우도 있습니다. 또 다른 흔한 실수로 서비스의 기본 암호나 키를변경하지 않고 그대로 사용하는 것을 들 수 있습니다. 예를 들어 일부 데이터베이스에는 시스템 관리자가 설치 후 암호를 즉시변경할 것이라는 가정 하에 기본 관리 암호가 할당됩니다. 만일 데이터베이스 관리자가 이 암호를 변경하지 않으면, 경험이 없는크래커도 잘 알려진 기본 암호를 사용하여 데이터베이스에 관리자 허가를 얻을 수 있습니다. 앞에서 설명된 것은 부주의한 관리가서버 침입에 미치는 영향을 보여주는 몇가지 예시일 뿐입니다.
2.3.4. 본질적으로 안전하지 못한 서비스
가장 경계가 투철한 기업체에서도 선택한 네트워크 서비스가 원래 안전하지 못하다면 공격당하기 쉽습니다. 예를 들어 신뢰하는네트워크 하에서 사용될 것이라는 가정 하에서 개발된 서비스가 많습니다; 그러나 이러한 가정은 서비스가 본질적으로 신뢰할 수 없는— 인터넷 상에서 사용 가능해지면 더 이상 적용되지 않습니다.
이러한 안전하지 못한 네트워크 서비스의 한 예로서 인증을 위해 암호화되지 않는 사용자명과 암호를 요구하는 서비스를 들 수있습니다. Telnet과 FTP가 이러한 서비스의 두 예입니다. 만일 패킷 스니핑 소프트웨어가 원격 사용자와 이러한 서비스사이의 트래픽을 감시 중이라면 서비스 사용자명과 암호를 쉽게 가로챌 수 있습니다.
이러한 서비스는 본질적으로 보안 산업에서 소위 말하는 man-in-the-middle공격의 대상이 되기 쉽습니다. 이러한 유형의 공격은 크래커가 네트워크 상의 이름 서버에 침입하여 자신의 컴퓨터를 원래 수신서버로 오인하게 하여 네트워크 트래픽을 방향 변경시키는 것을 말합니다. 누군가 서버로 원격 세션을 시작하면, 공격자의 컴퓨터는보이지 않는 관로 역할을 하며 원격 서비스와 아무것도 알아채지 못한 사용자 사이에서 조용히 정보를 빼내갑니다. 이러한 방법을사용하여 크래커는 서버나 사용자가 모르게 관리자 암호와 원자료를 가로챌 수 있습니다.
안전하지 못한 서비스에는 네트워크 파일 시스템인 NFS와 NIS 정보 서비스가 포함됩니다. 이러한 서비스는 LAN 사용을위해 만들어졌지만, 불행히도 원격 사용자를 위하여 WAN도 포함하도록 확장되었습니다. NFS는 기본적으로 크래커가 NFS 공유를마운트한 후 그 공유에 속한 자료에 접근하는 것을 방지할 수 있는 어떠한 인증이나 보안 메커니즘도 갖추고 있지 않습니다. NIS또한 평문 ACSII 또는 (ASCII에서 파생된) DBM 데이터베이스에 네트워크 상 모든 컴퓨터에 알려진 중요한 정보 (암호와파일 권한)를 보관합니다. 만일 크래커가 이 데이터베이스에 접속할 수 있게 된다면 네트워크 상 모든 사용자 계정을, 심지어는관리자의 계정까지도 사용 가능하게 됩니다.
Red Hat Enterprise Linux은 이러한 서비스를 사용하지 않도록 기본 설정되어 있습니다. 그러나 관리자들은종종 이러한 서비스를 불가피하게 사용해야할 경우가 있으므로, 신중하게 설정하는 것이 중요합니다. 안전한 방법으로 서비스를설정하는 방법에 대한 자세한 정보를 원하신다면, 5 장을 참조하시기 바랍니다.
주석
[1] |
2.4. 워크스테이션과 가정용 PC 보안 위협
워크스테이션과 가정용 PC는 네트워크나 서버 만큼 자주 공격의 대상이 되지는 않습니다. 그러나 신용 카드 정보와 같이 기밀정보가 저장되어 있을 경우가 있으므로, 시스템 크래커들의 공격 대상이 되기도 합니다. 워크스테이션은 사용자가 모르게 공격자에의해서 준비된 공동 공격에 "종속" 컴퓨터로 사용될 수 있습니다. 이러한 이유로 사용자는 워크스테이션의 취약점을 미리 알아두시는 것이 이후 운영 체제를 재설치해야하는 번거러움을 줄일 수 있으며 더 나아가 자료를 도난당하는 사태를 방지할 수 있습니다.
2.4.1. 너무 단순한 암호
너무 단순한 암호는 공격자가 시스템에 접근할 수 있는 가장 쉬운 기회를 제공합니다. 암호 생성시 흔히 발생하는 실수를 피할 수 있는 방법은 4.3 절에 설명되어 있습니다.
2.4.2. 공격 당하기 쉬운 클라이언트 응용 프로그램들
관리자가 아무리 서버를 안전하게 패치를 설치한다고 해도, 그 서버에 접속하는 원격 사용자가 안전하다는 것을 의미하지는않습니다. 예를 들어 서버가 공개 네트워크 상에서 Telnet이나 FTP 서비스를 제공하는 경우, 공격자는 평문으로된 사용자명과암호를 네트워크 상에서 가로챌 수 있으며, 그 가로챈 계정 정보를 사용하여 원격 사용자의 워크스테이션에 접속할 수 있습니다.
SSH와 같이 보안 프로토콜을 사용하는 경우에도, 원격 사용자가 클라이언트 응용 프로그램을 항상 업데이트하지 않는다면이러한 공격을 당할 가능성이 있습니다. 예를 들어 v.1 SSH 클라이언트는 악의를 가진 SSH 서버로부터X-forwarding 공격을 받을 수 있습니다. 클라이언트가 서버에 연결되면, 공격자는 조용히 클라이언트가 네트워크 상에서누르는 키조합이나 마우스 클릭을 캡쳐할 수 있습니다. 이러한 문제점은 v.2 SSH 프로토콜에서는 고쳐졌지만, 이러한 응용프로그램의 취약점을 알고 필요한 경우 업데이트하는 것은 사용자의 몫입니다.
4 장에서는 관리자와 사용자가 컴퓨터 워크스테이션의 취약점을 보완하기 위하여 따르셔야할 단계들을 보다 자세하게 설명하고 있습니다.
....
5장. 서버 보안
시스템이 공중 네트워크에서 서버로 사용될 경우 공격의 대상이 되기 쉽습니다. 이러한 이유로 시스템 보안을 보강하고 서비스를 잠그는 것은 시스템 관리자에게 무엇보다 중요합니다.
특정 사항에 대하여 깊이 파고들기 이전에 서버 보안을 강화시킬 수 있는 일반적인 힌트를 다음에서 간략히 살펴보도록 하겠습니다:
최신 침입 유형에 대비하여 모든 서비스를 항상 업데이트 시키십시오.
가능한 보안 프로토콜을 사용하십시오.
가능한 한 기계당 한가지 유형의 네트워크 서비스를 사용하십시오.
모든 서버에서 수상한 행동이 발견되는지 주의깊게 감시하십시오.
5.1. TCP 래퍼와 xinetd를 사용하여 서비스 보안 강화하기
TCP 래퍼(wrappers)는 다양한 서비스에 접근 제어를 제공합니다. SSH, Telnet, FTP와 같은 대부분의 최신 네트워크 서비스는 들어오는 요청과 요청된 서비스 사이에서 감시 역할을 하는 TCP 래퍼를 사용합니다.
추가 액세스, 기록, 바인딩, 방향 전환 및 자원 활용 제어와 같은 기능을 제공하는 수퍼 서비스인 xinetd를 함께 사용하면 TCP 래퍼가 제공하는 보안 기능이 보다 강화됩니다.
힌트 | |
---|---|
TCP 래퍼와 xinetd와 함께 IPTables 방화벽 규칙을 사용하여 서비스 접근 제어에 중복성을 갖는 것이 좋습니다. IPTables 명령을 사용하여 방화벽을 구현하는 방법에 대한 자세한 정보는 7 장을 참조하시기 바랍니다. |
TCP 래퍼와 xinetd를 설정하는 방법에 대한 추가 정보는 Red Hat Enterprise Linux 참조 가이드의 TCP 래퍼와 xinetd 장에서 찾으실 수 있습니다.
다음 부분에서는 여러분이 각 주제에 대한 기본적인 지식을 갖추고 계신다고 간주하고 특정 보안 옵션에 중점을 두고 설명해 보겠습니다.
5.1.1. TCP 래퍼를 사용하여 보안 강화하기
TCP 래퍼는 서비스로의 액세스를 거부하는 것 이외에도 다른 많은 기능을 제공합니다. 이 부분에서는 TCP 래퍼를 사용하여연결 배너를 보내고, 특정 호스트에서 침입자에게 경고 메시지를 보내며, 기록 기능을 강화하는 방법에 대하여 설명하고 있습니다.TCP 래퍼의 기능과 제어 언어에 대한 전체적인 목록을 보시려면 hosts_options 메뉴얼 페이지를 참조하시기 바랍니다.
5.1.1.1. TCP 래퍼와 연결 배너
서비스에 접속하는 클라이언트에 경고성 배너를 보내는 것이 서버가 어떠한 시스템을 운영 중인지 보여주지 않으면서 동시에침입자에게 시스템 관리자가 감시 중이라고 알려줄 수 있는 좋은 방법입니다. 서비스에 TCP 래퍼 배너를 구현하시려면 banner 옵션을 사용하십시오.
이 예시는 vsftpd에 배너를 사용합니다. 먼저 배너 파일을 생성하셔야 합니다. 시스템 상 어디에서든 생성하실 수 있지만 이 파일을 사용될 데몬과 동일한 이름을 가져야 합니다. 이 예시에서 파일 이름은 /etc/banners/vsftpd 입니다.
파일의 내용은 다음과 같습니다:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Act up and you will be banned. |
%c 토큰은 사용자명, 호스트명 또는 연결 메시지에 보다 효과가 있도록 사용자명과 IP 주소와 같은 다양한 클라이언트 정보를 제공합니다. Red Hat Enterprise Linux 참조 가이드에서는 TCP 래퍼에 사용 가능한 다른 토큰 목록을 찾으실 수 있습니다.
이 배너가 들어오는 접속에 보여지도록 하시려면 /etc/hosts.allow 파일에서 다음 줄을 추가하시면 됩니다:
vsftpd : ALL : banners /etc/banners/ |
5.1.1.2. TCP 래퍼와 침입 경고
만일 특정 호스트나 네트워크가 서버를 침입하는 것이 발견되었다면 TCP 래퍼에 spawn 지시자를 사용하여 침입이 시도된 호스트나 네트워크의 관리자에게 경고 메시지를 보낼 수 있습니다.
예를 들어 206.182.68.0/24 네트워크에서 크래커가 서버에 침입 시도하려는 것이 발견되었다고 가정해봅니다. /etc/hosts.deny 파일에 다음과 같은 줄을 추가하시면, 연결 시도가 거부되며 특별 파일에 기록될 것입니다:
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert |
%d 토큰은 침입자가 접근하려고 시도한 서비스의 이름을 보여줍니다.
연결을 허용 후 기록하기 위해서는 /etc/hosts.allow 파일에 spawn 지시자를 추가하시기 바랍니다.
알림 | |
---|---|
spawn 지시자는 모든 쉘 명령을 실행하므로, 특정 클라이언트가 서버에 접속을 시도할 경우 관리자에게 알리거나 여러 명령을 수행할 특수 스크립트를 작성하십시오. |
5.1.1.3. TCP 래퍼와 향상된 기록 기능
만일 특정 유형의 접속이 다른 유형 보다 중요하다면 severity 옵션을 사용하여 해당 서비스에 대한 여러 다른 기록 수준을 설정하실 수 있습니다.
이 예시에서는 FTP 서버 포트 23 (Telnet 포트)로 접속을 시도하는 사용자를 크래커라고 가정합니다. 크래커가 침입하는 것을 방지하기 위하여 로그 파일에서 기본 플래그(flag)인 info 대신 emerg 플래그를 지정하시고 이 포트로 들어오는 연결을 거부합니다.
연결을 거부하기 위해서는 /etc/hosts.deny 파일에 다음 줄을 추가하시면 됩니다:
in.telnetd : ALL : severity emerg |
이러한 설정은 기본 authpriv 기록 기능을 사용하지만 기록 심각성 수준을 기본 값인 info에서 emerg 수준으로 높여서 로그 메시지를 콘솔에 바로 보여줍니다.
5.1.2. xinetd를 사용하여 보안 강화하기
xinetd 수퍼 서버는 종속 서비스로의 접근을 제어하는데 유용하게 사용되는 또 다른 도구입니다. 이 부분에서는 xinetd를 사용하여 트랩(trap) 서비스를 설정하는 방법과 서비스 거부 공격을 좌절시키기 위하여 xinetd 서비스가 사용할 수 있는 자원의 양을 제어하는 방법에 대하여 중점적으로 설명해 보겠습니다. 모든 사용 가능한 옵션의 목록을 보시려면 xinetd 및 xinetd.conf의 메뉴얼 페이지를 참조하시기 바랍니다.
5.1.2.1. 트랩(Trap) 설정하기
xinetd의 중요한 기능 중 하나는 전역 no_access 목록에 호스트를 추가할 수 있는 기능입니다. 이 목록에 포함된 호스트는 xinetd가 관리하는 서비스에 정해진 기간 동안 또는 xinetd가 재시작될 때까지 연결을 거부당합니다. 이 기능은 SENSOR 속성을 통해 실행 가능하며, 서버에서 포트를 스캔하려고 시도하는 호스트를 손쉽게 막을 수 있는 방법입니다.
SENSOR를 설정하기 위한 첫번째 단계는 사용할 계획이 없는 서비스를 선택하는 것입니다. 이 예에서는 Telnet이 사용됩니다.
/etc/xinetd.d/telnet 파일에서 flags 줄을 다음과 같이 수정하시기 바랍니다:
flags = SENSOR |
괄호 내에 다음 줄을 추가하십시오:
deny_time = 30 |
이 설정은 포트로 연결을 시도하는 호스트를 30 분 동안 거부할 것입니다. deny_time 속성에 사용 가능한 다른 값에는 FOREVER와 NEVER가 있습니다. FORVER는 xinetd가 재시작될 때까지 연결을 거부하며, NEVER는 연결을 허용한 후 기록합니다.
마지막 줄을 다음과 같이 수정하십시오:
disable = no |
SENSOR를 사용하여 보안을 위협하는 호스트로부터 연결을 검색하여 정지시키는 것이 좋은 방법이기는 하지만, 다음과 같은 두가지 결점이 있습니다:
스텔스 스캔 (쉽게 발견되지 않도록 한 스캔)을 찾아내지 못합니다.
만일 침입자가 SENSOR가 실행 중인 사실을 이미 알고 있다면 자신의 IP 주소를 위장하여 특정 호스트에 서비스 거부 공격을 마운트한 후 금지된 포트에 연결할 수 있습니다.
5.1.2.2. 서버 자원을 제어하기
xinetd의 또 다른 중요한 기능은 서비스가 활용 가능한 자원의 양을 제어할 수 있는 기능입니다.
다음 지시자를 통하여 이 기능을 사용 가능합니다:
cps = <number_of_connections> <wait_period> — 1초당 서비스에 허용되는 연결 수를 지정합니다. 이 지시자는 반드시 정수값으로 설정하셔야 합니다.
instances = <number_of_connections> — 한 서비스에 허용되는 총 연결 수를 지정합니다.이 지시자는 정수값이나 UNLIMITED 값을 수용합니다.
per_source = <number_of_connections> — 각 호스트마다 서비스에 연결할 수 있는 수를 지정합니다. 이 지시자는 정수값이나 UNLIMITED으로 지정하셔야 합니다.
rlimit_as = <number[K|M]> — 서비스가 차지할 수 있는 메모리 주소 공간의 용량을 킬로바이트 또는 메가바이트 단위로 지정합니다. 이 지시자는 정수값이나 UNLIMITED로 설정하셔야 합니다.
rlimit_cpu = <number_of_seconds> — 서비스가 CPU를 사용할 수 있는 시간을 초 단위로 지정합니다. 이 지시자는 정수값이나 UNLIMITED으로 설정하셔야 합니다.
이러한 지시자를 사용하시면, 서비스 거부 공격을 통해 xinetd 서비스가 시스템을 마비시키는 상황을 방지하는데 도움이 됩니다.
5.2. Portmap 보안 강화
portmap 서비스는 NIS와NFS와 같은 RPC 서비스에 사용되는 동적 포트 할당 데몬입니다. 이 데몬은 허술한 인증 메커니즘을 갖추고 있으며 데몬이제어하는 서비스에 광범위한 포트를 할당 가능합니다. 따라서 보안 관리가 쉽지 않습니다.
알림 | |
---|---|
portmap을 보안 강화하게 되면 NFSv2와 NFSv3만 영향을 받습니다. NFSv4는 더 이상 portmap을 사용하지 않으므로 영향을 받지 않습니다. NFSv2 이나 NFSv3 서버를 구현할 계획이라면, portmap이 사용되므로 다음 부분에서 설명된 내용을 따르십시오. |
RPC 서비스를 실행하신다면 다음과 같은 기본 규칙을 따르십시오.
5.2.1. TCP 래퍼를 사용하여 portmap 보호하기
portmap 서비스에는 내장된 인증 방식이 없으므로 TCP 래퍼를 사용하여 이 서비스를 사용할 수 있는 네트워크나 호스트를 제한하는 것이 중요합니다.
또한 서비스로 접근을 제한하실 때는 IP 주소만 사용하셔야 합니다. 호스트명은 DNS poisoning이나 다른 방법으로 위조가 가능하므로 사용하지 마십시오.
5.2.2. IPTables를 사용하여 portmap 보호하기
portmap 서비스로 접근을 더 제한하시려면 서버에 IPTables 규칙을 추가하여 특정 네트워크로 접근하는 것을 제한하시는 것이 좋습니다.
다음은 (포트 111을 청취하는) portmap 서비스로 192.168.0/24 네트워크와 로컬호스트에서 TCP 연결을 허용하는 두가지 IPTables 명령 예시입니다. (Nautilus가 sgi_fam 서비스를 사용하는데 필요한 설정입니다). 모든 다른 패킷은 버립니다(drop).
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT |
이와 유사한 방식으로 UDP 트래픽을 제한하기 위해서는 다음 명령을 사용하십시오.
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP |
힌트 | |
---|---|
IPTables 명령과 함께 방화벽 규칙을 구현하는 방법에 대한 보다 자세한 정보를 원하신다면 7 장을 참조하시기 바랍니다. |
5.3. NIS 보안 강화
NIS는 Network Information Service의 줄임말입니다. NIS는 ypserv라고 불리우는 RPC 서비스로서 portmap 및 다른 관련 서비스들과 함께 사용되어 동일한 도메인에 위치한 컴퓨터에 사용자명, 암호와 다른 기밀 정보를 배포하는 기능을 합니다.
NIS 서버는 다음과 같은 여러가지 응용 프로그램으로 구성되어 있습니다:
/usr/sbin/rpc.yppasswdd — yppasswdd 서비스로도 불리우는 이 데몬은 사용자가 NIS 암호를 변경할 수 있게 해줍니다.
/usr/sbin/rpc.ypxfrd — ypxfrd라고도 불리움. 이 데몬은 네트워크 상에서 NIS 맵(map)을 전송합니다.
/usr/sbin/yppush — 이 프로그램은 수정된 NIS 데이터베이스를 다수의 NIS 서버에 전달하는 역할을 합니다.
/usr/sbin/ypserv — NIS 서버 데몬입니다.
NIS는 오늘날 보안 기준으로 판단시 안전하지 않습니다. 호스트 인증 메커니즘이 없으며 암호 해시를 포함한 모든 정보를네트워크 상에서 암호화되지 않은 채로 전달합니다. 결과적으로 NIS를 사용하는 네트워크를 설정시 각별한 주의가 요구됩니다. 또한NIS의 기본 설정은 본래부터 안전하지 못하기 때문에 문제가 더욱 복잡해질 수 있습니다.
NIS 서버를 구현하려고 계획하시는 분들은 우선 5.2 절에서 설명된 것처럼 portmap 서비스를 보안 강화하신 후 다음 문제를 차례로 해결하시기 바랍니다.
5.3.1. 네트워크를 신중하게 설정하기
NIS는 네트워크 상에서 기밀 정보를 암호화되지 않은 상태에서 전달하기 때문에 서비스를 분할되고 안전한 네트워크 상에서방화벽을 사용한 상태에서 서비스를 실행해야 합니다. 비보안 네트워크 상에서 NIS 정보가 전달될 때마다 누군가 정보를 가로챌위험이 있습니다. 이러한 의미에서 네트워크를 신중히 설정함으로서 심각한 보안 침입 위협을 방지할 수 있습니다.
5.3.2. 암호와 같이 추측하기 힘든 NIS 도메인 이름과 호스트명 사용하기
NIS 도메인 내에 위치한 컴퓨터에서 사용자가 NIS 서버의 DNS 호스트명과 NIS 도메인 이름만 알고 있다면 인증을 거치지 않고 서버에서 정보를 유출하는 것이 가능합니다.
예를 들어 만일 누군가 네트워크에 랩탑 컴퓨터를 연결하거나 외부에서 네트워크에 침입하여 내부 IP 주소를 위장할 수 있다면 다음 명령을 사용하여 /etc/passwd 파일의 내용을 보는 것이 가능합니다:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd |
만일 이 침입자가 루트 사용자 권한을 가지고 있다면 다음과 같은 명령을 입력하여 /etc/shadow 파일의 내용을 볼 수 있습니다:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow |
알림 | |
---|---|
커베로스가 사용된 경우 /etc/shadow 파일은 NIS map에 저장되지 않습니다. |
침입자가 NIS map에 액세스하는 것을 보다 힘들게 하기 위하여 DNS 호스트명을 o7hfawtgmhwg.domain.com와 같은 임의 문자열로 생성하시는 것이 좋습니다. 유사한 방법으로 NIS 도메인 이름도 임의 문자열로 생성하시되 호스트명과 다른 이름을 생성하십시오. 이렇게 하시면 침입자가 NIS 서버에 액세스하는 것이 더욱 힘들어 집니다.
5.3.3. /var/yp/securenets 파일을 수정하기
/var/yp/securenets 파일이 공백으로 비어있거나 (기본 설치를 수행한 후) 파일이 존재하지 않는 경우 NIS는 모든 네트워크를 청취합니다. 이러한 경우 가장 먼저 하실 것은 ypserv가 적절한 네트워크에서 들어오는 요청만 응답하도록 이 파일에 넷마스크/네트워크 쌍을 입력하셔야 합니다.
다음은 /var/yp/securenets 파일 예제입니다:
255.255.255.0 192.168.0.0 |
경고 | |
---|---|
/var/yp/securenets 파일을 생성하지 않은 상태에서 NIS 서버를 처음으로 시작하시면 안됩니다. |
이 기술은 IP 스푸핑 공격에 대한 보호를 제공하지는 못하지만 최소한 NIS 서비스가 청취할 네트워크를 제한해줍니다.
5.3.4. 정적 포트를 할당하고 IPTables 규칙 사용하기
NIS와 관련된 모든 서버에 특정 포트를 할당하는 것이 가능하지만 사용자가 로그인 암호를 변경할 수 있게 해주는 데몬인 rpc.yppasswdd는 예외입니다. 다른 두 개의 NIS 서버 데몬인 rpc.ypxfrd와 ypserv에 포트를 할당함으로서 방화벽 규칙을 생성하여 침입자가 NIS 서버 데몬에 침입하지 못하도록 보안을 강화할 수 있습니다.
이러한 설정을 위해 /etc/sysconfig/network 파일에 다음과 같은 줄을 삽입하시기 바랍니다:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835" |
다음 IPTables 규칙을 입력하여 이 포트에서 서버가 청취할 네트워크를 제한 설정하실 수 있습니다:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 835 -j DROP |
힌트 | |
---|---|
IPTables 명령과 함께 방화벽 규칙을 구현하는 방법에 대한 보다 자세한 정보를 원하신다면 7 장을 참조하시기 바랍니다. |
5.3.5. 커베로스 인증 사용하기
NIS 인증이 사용될 경우 가장 심각한 결점은 사용자가 시스템에 로그인할 때마다 /etc/shadow파일의 암호 해시가 네트워크 상에서 전달되는 것입니다. 만일 침입자가 NIS 도메인에 침입하여 네트워크 트래픽을 훔쳐보고 있다면사용자명과 암호 해시를 모르게 수집할 수 있습니다. 충분한 시간이 주어진다면 암호 크래킹 프로그램을 사용하여 추측하기 쉬운암호를 알아낸 후 침입자는 유효한 계정을 사용하여 네트워크에 액세스 가능합니다.
커베로스는 비밀키 암호 기법을 사용하기 때문에 네트워크 상에서 암호 해시를 전달하지 않습니다. 따라서 시스템 보안이 한층 강화됩니다. 커베로스와 관련된 보다 자세한 정보를 보시려면 Red Hat Enterprise Linux 참조 가이드에서 커베로스 (Kerberos) 장을 참조하시기 바랍니다.
5.4. NFS 보안 강화
Network File System의 줄임말인 NFS는 클라이언트가 액세스 가능한 네트워크 파일 시스템을 제공하는 RPC 서비스입니다. NFS 작동 방법에 대한 자세한 정보는 Red Hat Enterprise Linux 참조 가이드의 네트워크 파일 시스템 (NFS) 장을 참조하시기 바랍니다. NFS 설정 방법에 대한 자세한 정보는 Red Hat Enterprise Linux 시스템 관리 가이드를 참조하시기 바랍니다. 다음 부분에서는 여러분이 NFS에 대하여 기본적인 이해를 하신다고 가정하고 설명할 것입니다:
중요 | |
---|---|
5.2 절에서 설명되었듯이 Red Hat Enterprise Linux에 포함된 NFS 버전인 NFSv4는 portmap을 필요로하지 않습니다. NFS 트래픽은 이제 모든 버전에서 UDP 대신 TCP를 사용하며 NFSv4를 사용할때 TCP를 사용합니다. NFSv4는 이제 RPCSEC_GSS 커널 모듈의 일부로 커베로스 사용자 및 그룹 인증 방식을 사용합니다. Red Hat Enterprise Linux는 여전히 portmap을 사용하는 NFSv2와 NFSv3을 지원하므로, portmap과 관련된 정보를 이곳에 포함하였습니다. |
5.4.1. 네트워크를 신중하게 설정하기
NFSv4는 네트워크 상에서 모든 정보를 커베로스를 사용하여 암호화하여 전달할 수 있으므로, 방화벽이나 분활된 네트워크상에서 올바르게 서비스를 설정하셔야 합니다. NFSv2와 NFSv3는 여전히 정보를 암호화되지 않은 상태로 전달하기 때문에정보가 전달될 때마다 누군가 정보를 가로챌 위험이 있습니다. 이러한 의미에서 네트워크를 신중히 설정함으로서 심각한 보안 침입위협을 방지할 수 있습니다
5.4.2. 구문 오류에 주의하십시오.
NFS 서버는 /etc/exports 파일을 통해 어느 파일 시스템은 익스포트할 것이고 이 디렉토리를 익스포트할 호스트는 무엇인지 결정합니다. 따라서 이 파일을 수정하실때 불필요한 공간을 추가하지 않도록 주의하셔야 합니다.
예를 들어 /etc/exports 파일에서 다음과 같은 줄은 bob.example.com 호스트에서 /tmp/nfs/ 디렉토리를 읽고 쓸 수 있도록 공유합니다.
/tmp/nfs/ bob.example.com(rw) |
반면 /etc/exports 파일에 이 줄을 삽입하시면 호스트명 다음에 삽입된 빈 공간 때문에 동일한 디렉토리를 bob.example.com에 읽기 전용 허가를 가지고 공유하고 그 외 다른 전체 호스트에 읽기 쓰기 허가를 가지고 이 디렉토리를 공유합니다.
/tmp/nfs/ bob.example.com (rw) |
따라서 showmount 명령을 사용하여 어떠한 디렉토리가 어떻게 공유되고 있는지 NFS 공유 설정을 확인해보시기 바랍니다.
showmount -e <hostname> |
5.4.3. no_root_squash 옵션을 사용하지 마십시오
NFS 공유는 루트 사용자를 특별한 권한이 없는 사용자 계정인 nfsnobody로 변경하도록 기본 설정되어 있습니다. 따라서 루트 사용자가 생성한 파일은 모두 nfsnobody가 소유하게 되어 사용자 아이디 비트를 재설정하여 프로그램을 업로드하지 못하게 됩니다.
만일 no_root_squash 옵션을 사용하시면 원격 루트 사용자가 공유 파일 시스템에서 모든 파일을 변경할 수 있으며 트로이 목마 프로그램을 설치하여 다른 사용자가 의도하지 않게 실행하게 됩니다.
5.5. Apache HTTP 서버 보안 강화
Apache HTTP 서버는 Red Hat Enterprise Linux에 포함된 서비스 중 가장 안정적이고 안전한 서비스중 하나입니다. Apache HTTP 서버 보안을 강화하기 위해 사용 가능한 매우 다양한 옵션과 기술이 존재하지만 이 메뉴얼에서깊게 다루기에는 너무 광범위합니다.
Apache HTTP 서버를 설정시 응용 프로그램의 문서 자료를 먼저 읽어보시기 바랍니다. Red Hat Enterprise Linux 참조 가이드의 Apache HTTP 서버 장과 Red Hat Enterprise Linux 시스템 관리 가이드의 Apache HTTP 서버 설정 장, 그리고 http://www.redhat.com/docs/manuals/stronghold/에서 Stronghold 메뉴얼을 읽어보십시오.
다음은 관리자가 사용시 신중을 기해야할 설정 옵션 목록입니다.
5.5.1. FollowSymLinks
이 지시자는 기본값으로 활성화되어 있습니다. 따라서 웹 서버의 문서 루트로 심볼릭 링크를 생성하실 때는 주의하시기 바랍니다. 예를 들어 /로 심볼릭 링크를 제공하는 것은 좋은 생각이 아닙니다.
5.5.2. Indexes 지시자
이 지시자는 기본 값으로 활성화되어 있지만, 그리 바람직하지 않습니다. 침입자가 서버에서 파일을 검색하는 것을 방지하기 위해 이 지시자를 삭제하시기 바랍니다.
5.5.3. UserDir 지시자
UserDir 지시자는 침입자가 시스템 상에 사용자 계정이 존재하는지 확인할 수 있기 때문에 비활성화되도록 기본 설정되어 있습니다. 서버에서 사용자 디렉토리 검색 기능을 활성화하시려면 다음 지시자를 사용하시기 바랍니다:
UserDir enabled UserDir disabled root |
이 지시자는 사용자 디렉토리 검색 기능을 /root/를 제외한 모든 사용자 디렉토리에서 활성화할 것입니다. 비활성 계정 목록에 사용자를 추가하시려면 UserDir disabled 줄에 사용자 이름을 빈칸으로 구분하여 추가하십시오.
5.5.4. IncludesNoExec 지시자를 삭제하지 마십시오
서버에서는 명령을 실행하지 못하도록 기본 설정되어 있습니다. 만일 절대적으로 필요한 경우가 아니라면 이 설정을 변경하지 마십시오. 이 설정을 변경하시면 침입자가 시스템에서 명령을 실행할 위험이 높아집니다.
5.5.5. 실행 가능 디렉토리의 허가 제한하기
스크립트나 CGI를 포함한 디렉토리에는 루트 사용자에게만 쓰기 허가를 부여하셔야 합니다. 다음 명령을 입력하시기 바랍니다:
chown root <directory_name> chmod 755 <directory_name> |
또한 시스템 상에서 실행될 스크립트는 의도하는 대로 작동하는지 미리 확인하신 후 생산 환경에서 사용하셔야 합니다.
5.6. FTP 보안 강화
FTP (File Transport Protocol는 네트워크 상에서 파일을 전송하기 위해 설계된 이전 TCP 프로토콜입니다. 사용자 인증을 포함한 서버와 주고받는 통신이 모두 암호화되지 않았기 때문에 이 프로토콜은 비보안 프로토콜로 간주되며 주의하여 설정하셔야 합니다.
Red Hat Enterprise Linux는 3가지 FTP 서버를 제공합니다.
gssftpd — 커베로스를 사용하는 xinetd-기반 FTP 데몬으로서 인증 정보를 네트워크 상에서 전달하지 않습니다.
Red Hat 콘텐츠 가속기(Content Accelerator) (tux) — FTP 기능을 갖춘 커널 영역 웹 서버
vsftpd — 독립형, 보안 FTP 서비스
다음은 vsftpd FTP 서비스를 설정하는데 사용되는 보안 정책입니다.
5.6.1. FTP 환영 배너
사용자명과 암호를 입력하기 전에 환경 배너가 나타납니다. 이 배너에는 버전 정보가 포함되어 있으며, 이 정보는 크래커가 시스템 약점을 찾아내는데 유용하게 사용됩니다.
따라서 vsftpd의 환영 배너를 변경하시려면 /etc/vsftpd/vsftpd.conf 파일에 다음 지시자를 추가하시기 바랍니다:
ftpd_banner=<insert_greeting_here> |
위의 지시자에서 <insert_greeting_here> 부분에 새로운 환영 메시지를 입력하십시오.
여러 개의 줄로 이루어진 배너 메시지를 입력하시려면 배너 파일을 사용하시는 것이 좋습니다 여러 배너를 손쉽게 관리하기 위하여 /etc/banners/라는 새 디렉토리를 만드신 후 모든 패너 파일을 이 디렉토리에 저장하십시오. 이 예시에서 FTP 접속에 사용되는 배너 파일은 /etc/banners/ftp.msg 입니다. 다음은 이 파일의 내용 예제입니다:
##################################################### Hello, all activity on ftp.example.com is logged.##################################################### |
알림 | |
---|---|
5.1.1.1 절에서 나타난 것처럼 파일의 모든 줄이 220으로 시작될 필요는 없습니다. |
vsftpd에 이 환경 배너 파일을 사용하기 위해서는 /etc/vsftpd/vsftpd.conf 파일에 다음과 같은 지시자를 추가하십시오:
banner_file=/etc/banners/ftp.msg |
또한 5.1.1.1 절에서 설명된 것처럼 TCP 래퍼를 사용하여 들어오는 연결에 추가 배너 메시지를 보내는 것도 가능합니다.
5.6.2. 익명 계정(anonymous) 접속
/var/ftp/ 디렉토리를 생성하시면 익명 계정이 활성화됩니다.
이 디렉토리를 생성할 수 있는 가장 쉬운 방법은 vsftpd 패키지를 설치하는 것입니다. 이 패키지는 익명 사용자를 위한 디렉토리 구조를 설정하고, 익명 사용자에게 이 디렉토리를 읽기만 할 수 있는 허가를 설정합니다.
익명 사용자는 어느 디렉토리에도 쓰기 작업을 할 수 없도록 기본 설정되어 있습니다.
주의 | |
---|---|
FTP 서버에 익명 계정으로 접속을 활성화하실 경우 기밀 데이터가 저장된 디렉토리를 염두하시기 바랍니다. |
5.6.2.1. 익명 사용자 계정으로 업로드
익명 사용자가 업로드하는 것을 허용하시려면 /var/ftp/pub/에 쓰기 전용 디렉토리를 생성하시기를 권장합니다.
다음 명령을 입력하십시오:
mkdir /var/ftp/pub/upload |
다음으로 익명 계정 사용자가 디렉토리 내의 내용을 보지 못하도록 허가를 변경하기 위해 다음 명령을 입력하십시오:
chmod 730 /var/ftp/pub/upload |
디렉토리 목록은 다음과 같이 나타나야 합니다:
drwx-wx--- 2 root ftp 4096 Feb 13 20:05 upload |
경고 | |
---|---|
관리자가 익명 사용자가 디렉토리에 읽고 쓸 수 있는 권한을 부여한 경우 종종 도단당한 소프트웨어가 서버에 저장되어 있는 것을 발견하게 됩니다. |
vsftpd에서 추가적으로 다음 줄을 /etc/vsftpd/vsftpd.conf 파일에 첨가하십시오:
anon_upload_enable=YES |
5.6.3. 사용자 계정
FTP는 비보안 네트워크 상에서 인증을 위해 암호화되지 않은 사용자명과 암호를 전달하기 때문에 시스템 사용자가 사용자 계정을 통해 서버에 접속하는 것을 거부하도록 설정하는 것이 좋습니다.
vsftpd에서 사용자 계정을 비활성화하시려면 /etc/vsftpd/vsftpd.conf 파일에 다음 지시자를 추가하십시오:
local_enable=NO |
5.6.3.1. 사용자 계정 제한하기
루트 사용자와 sudo 허가를 가진 사용자와 같은 특정 그룹의 계정이 FTP 서버에 접속하는 것을 막을 수 있는 가장 쉬운 방법은 4.4.2.4 절에서 설명된 것처럼 PAM 목록 파일을 사용하는 것입니다. vsftpd에 사용되는 PAM 설정 파일은 /etc/pam.d/vsftpd 입니다.
각 서비스에서 직접 사용자 계정을 비활성화시키는 것도 가능합니다.
vsftpd에서 특정 사용자 계정을 비활성화시키려면 /etc/vsftpd.ftpusers에 해당 사용자명을 추가하시면 됩니다.
5.6.4. 접근 제어를 위해 TCP 래퍼 사용하기
5.1.1 절에서 설명된 것처럼 FTP 데몬으로 접근을 제어하기 위해서 TCP 래퍼를 사용하십시오.
5.7. Sendmail 보안 강화
Sendmail은 메일 전송 에이전트 (MTA)로서 SMTP (Simple Mail Transport Protocol)을사용하여 다른 MTA와 이메일 클라이언트나 배달 에이전트 사이에서 전자 메시지를 배달하는 역할을 합니다. 많은 MTA가 서로주고 받는 트래픽을 암호화 가능하지만, 대부분의 MTA는 그렇지 않습니다. 따라서 공중 네트워크 상에서 이메일을 주고받는 것은안전하지 못한 통신 방식으로 간주됩니다.
이메일 작동 방식에 대한 자세한 정보와 일반 설정에 대한 기본적인 정보를 보시려면 Red Hat Enterprise Linux 참조 가이드에서 Email 장을 참조하시기 바랍니다. 다음 부분에서는 여러분이 이미 Red Hat Enterprise Linux 참조 가이드에서 설명된 것처럼 /etc/mail/sendmail.mc 파일을 수정 후 m4 명령을 실행하여 유효한 /etc/mail/sendmail.cf 파일을 생성하는 방법을 이해하신다고 가정하고 설명할 것입니다.
Sendmail 서버를 사용하려고 계획하신다면 다음에 언급된 사항들을 해결하셔야 합니다.
5.7.1. 서비스 거부 공격 제한하기
이메일의 특성상, 침입자는 비교적 간단히 서버에 다량의 이메일을 집중적으로 보내어 서비스 거부 현상을 야기시킬 수 있습니다. /etc/mail/sendmail.mc에 다음과 같은 지시자를 제한 설정하여 이와 같은 서비스 거부 공격이 발생할 가능성을 줄일 수 있습니다.
confCONNECTION_RATE_THROTTLE — 일초당 서버가 받을 수 있는 연결 수를 지정합니다. Sendmail은 기본적으로 연결 수를 제한하지 않습니다. 만일 제한이 설정된 경우 한계수에 이르게 되면 그 후에 들어오는 연결은 지연됩니다.
confMAX_DAEMON_CHILDREN — 서버에서 배출할 수 있는 최대 자식 프로세스 수. Sendmail은 기본적으로 자식 프로세스의 수를 제한하지 않습니다. 만일 제한이 설정된 경우 한계수에 이르게 되면 그 후에 들어오는 연결은 지연됩니다.
confMIN_FREE_BLOCKS — 서버가 메일을 수용하는데 필요한 최소 여유 블록의 수. 기본값은 100 블록입니다.
confMAX_HEADERS_LENGTH — 메시지 헤더의 최대 용량 (바이트 단위)
confMAX_MESSAGE_SIZE — 한 메시지의 최대 용량 (바이트 단위)
5.7.2. NFS와 Sendmail
절대로 메일 스풀 디렉토리인 /var/spool/mail/를 NFS 공유 볼륨에 놓지 마십시오.
NFSv2와 NFSv3는 사용자 그룹 ID를 관리 제어하지 않으므로 두 명이나 그 이상의 사용자가 동일한 UID를 가질 수 있습니다. 따라서 서로의 메일을 받고 읽는 것이 가능해집니다. 그러나 커베로스를 사용하는 NFSv4의 SECRPC_GSS 커널 모듈이 UID 기반 인증을 사용하지 않으므로 다릅니다.
5.7.3. 메일 전용 사용자
이렇게 로컬 사용자가 Sendmail 서버를 악용하는 것을 방지하기 위하여 메일 사용자는 이메일 프로그램을 사용하여 Sendmail 서버만 사용하도록 설정하시는 것이 좋습니다. 메일 사용자는 메일 서버에서 쉘 계정을 갖지 못하고 /etc/passwd 파일에서 모든 메일 사용자 쉘은 /sbin/nologin으로 설정하셔야 합니다 (루트 사용자 예외)
5.8. 청취 중인 포트 확인하기
네트워크 서비스를 설정하신 후 어떤 포트가 시스템의 네트워크 인터페이스를 청취 중인지 확인하는 것이 중요합니다. 열려진 포트가 있다면 침입자가 있다는 증거일 수도 있습니다.
네트워크 상에서 청취 중인 포트를 찾아낼 수 있는 두가지 방법이 있습니다. 보다 덜 안정적인 방법으로 netstat -an 또는 lsof -i와같은 명령을 입력하여 네트워크 스택을 질의하실 수 있습니다. 이 프로그램은 네트워크의 시스템에 연결하지 않고 시스템 상에 무엇이실행 중인지 확인하기 때문에 신뢰성이 떨어집니다. 따라서 침입자는 종종 이 프로그램을 상대로 침입을 시도합니다. 침입자가 권한이없는 네트워크 포트를 열게된 경우 침입한 자취를 감추는데 이러한 방법을 사용합니다.
보다 안전하게 네트워크 상에서 청취 중인 포트를 확인할 수 있는 방법은 nmap과 같은 포트 스캐너를 사용하는 것입니다.
콘솔에서 다음 명령을 입력하시면 네트워크에서 어느 포트가 TCP 연결을 청취하고 있는지 확인할 수 있습니다:
nmap -sT -O localhost |
이 명령의 결과는 다음과 같이 출력될 것입니다:
Starting nmap 3.55( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT Interestingports on localhost.localdomain (127.0.0.1): (The 1653 ports scanned butnot shown below are in state: closed) PORT STATE SERVICE 22/tcp openssh 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 631/tcpopen ipp 834/tcp open unknown 2601/tcp open zebra 32774/tcp opensometimes-rpc11 Device type: general purpose Running: Linux2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux2.4.19 rc1-rc7) Uptime 12.857 days (since Sat Sep 11 17:16:20 2004)Nmap run completed -- 1 IP address (1 host up) scanned in 5.190 seconds |
이 출력 결과는 시스템이 sunrpc 서비스가 존재하기 때문에 portmap을 실행 중인것을 보여줍니다. 그러나 포트 834에서 수상한 서비스를 발견할 수 있습니다. 이 포트가 공식적으로 알려진 서비스와 관계있는지 확인해보시려면 다음 명령을 입력하시기 바랍니다:
cat /etc/services | grep 834 |
이 명령이 아무런 결과도 출력하지 않습니다. 즉, 포트는 0에서 1023 사이의 범위에 속하지만 루트 권한이 있어야 열 수 있습니다. 따라서 이 포트는 알려진 서비스와 관련되지 않습니다.
다음으로 netstat이나 lsof를 사용하여 포트에 대한 정보를 확인해보시기 바랍니다. netstat을 사용하여 포트 834를 확인하시려면 다음 명령을 사용하십시오:
netstat -anp | grep 834 |
명령은 다음과 같은 결과를 출력할 것입니다:
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind |
netstat을 사용하여 열려진포트를 발견하시면 이 포트가 안전하다고 안심하실 수 있습니다. 그 이유는 크래커가 침입한 시스템에서 은밀하게 포트를 연 경우에는이 명령을 사용하여 발견되지 않도록 설정할 것이기 때문에 포트가 열려져 있다는 것은 이 포트가 안전하다는 것을 의미합니다. 또한[p] 옵션은 포트를 연 서비스의 프로세스 ID (PID)를 보여줍니다. 이 예시에서 열려진 포트는 portmap 서비스와 함께 사용되는 RPC 서비스인 ypbind (NIS)에 사용됩니다.
lsof 명령도 열려진 포트와 관련된 서비스를 보여주는 기능을 갖추고 있으므로 유사한 정보를 보여줍니다:
lsof -i | grep 834 |
다음은 출력 결과에서 이 명령과 관련있는 부분입니다:
ypbind 653 0 7uIPv4 1319 TCP *:834 (LISTEN) ypbind 655 0 7u IPv4 1319 TCP *:834(LISTEN) ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 657 0 7uIPv4 1319 TCP *:834 (LISTEN) |
이러한 도구를 사용하여 시스템 상에서 실행 중인 서비스의 상태에 대한 많은 정보를 얻을 수 있습니다. 이 도구들은 사용이 유연하며 네트워크 서비스와 설정에 대한 광범위한 정보를 제공합니다. 따라서 lsof, netstat, nmap, services의 메뉴얼 페이지를 참조하시기 바랍니다.
7장. 방화벽
많은 사람들이 정보 보안이란 제품이라기 보다는 하나의 과정이라고 생각하고 있습니다. 그러나 표준 보안 구현을 위해서는일반적으로 여러 형태의 전용 도구를 사용하여 접근 권한을 제어하고 권한을 가진 사용자에게만 네트워크 자원에 접근을 허용하며사용자를 식별하고 추적합니다. Red Hat Enterprise Linux는 관리자와 보안 엔지니어들이 네트워크 수준의 접근제어 작업하는데 도움이 될 강력한 도구들을 제공합니다.
방화벽은 6 장에서 다루어진 IPsec과 같은 VPN 솔루션과 함께 네트워크 보안 실행에 사용되는 핵심 요소입니다. 여러 업체에서는 가정용컴퓨터 보호에서부터 중요한 기업 정보를 보호하는 데이터 센터 솔루션에 이르기까지 다양한 시장 요건에 맞는 방화벽 솔루션을판매하고 있습니다. 방화벽은 Cisco, Nokia 및 Sonicwall 사에서 내놓은 방화벽 장치와 같은 독립형 하드웨어솔루션도 있습니다. 또한 Checkpoint, McAfee, Symantec과 같은 업체에서 가정과 기업용으로 개발한 사유소프트웨어 방화벽 솔루션도 존재합니다.
하드웨어와 소프트웨어 방화벽 간의 차이점 말고도 각 솔루션마다 다른 기능을 제공합니다. 표 7-1에서는 자주 사용되는 3가지 유형의 방화벽과 기능을 보여줍니다:
방법 | 설명 | 장점 | 단점 | ||||||
---|---|---|---|---|---|---|---|---|---|
NAT | 네트워크 주소 변환 (NAT)은 외부에 알려진 IP 주소와는 다른 IP 주소를 내부 네트워크에서 사용하여 모든 요청이 여러 주소가 아닌 한 주소로 향하는 것처럼 주소 변환 과정을 거쳐 보안을 강화합니다. |
|
| ||||||
패킷 필터 | 패킷 필터링 방화벽은 LAN 내에서 그리고 외부에서전달되는 모든 데이터 패킷을 읽습니다. 패킷 헤더 정보를 읽고 처리한 후 방화벽 관리자가 프로그램한 규칙에 따라 패킷을걸러냅니다. 리눅스 커널은 넷필터(Netfilter) 커널 하부 시스템을 통한 내장된 패킷 필터링 기능을 갖추고 있습니다. |
|
| ||||||
프록시 | 프록시 방화벽은 LAN 클라이언트로부터 프록시 기계로들어오는 모든 요청에서 특정 프로토콜이나 유형을 걸러낸 후 이러한 유형을 로컬 클라이언트를 대신하여 인터넷에 보냅니다. 프록시기계는 악의를 가진 원격 사용자와 내부 네트워크 클라이언트 기계 사이에서 버퍼로 작동합니다. |
|
|
표 7-1. 방화벽 유형
7.1. Netfilter와 iptables
리눅스 커널은 Netfilter라는 강력한 네트워킹 하부시스템을 제공합니다.netfilter 하부시스템은 NAT 및 IP 마스커레이딩 서비스를 비롯하여 상태를 계속 추적하는 (stateful) 패킷필터링 또는 상태를 정의하지 않고 독립적인 (stateless) 패킷 필터링을 제공합니다. Netfilter는 또한 고급라우팅과 연결 상태 관리를 위해 IP 헤더 정보를 검색하여 볼 수 있는 기능도 갖추고 있습니다. Netfilter는 iptables 유틸리티를 통해 제어됩니다.
7.1.1. iptables 개요
ipchainss 인터페이스를 통하여 netfilter가 실행됩니다. 이 명령행 도구는 이전에 사용되는 ipchains와 유사한 구문을 사용하지만, ipchains는 netfilter 하부시스템을 사용하여 네트워크 연결, 감시와 처리 기능을 강화하였습니다. 반면 ipchains는 소스와 목적 경로에 필터링하는데 연결 포트 뿐만 아니라 복잡한 규칙을 사용하였습니다. ipchains는 한 줄의 명령행 인터페이스에 고급 로깅 기능, 라우팅 이전(pre-routing)과 라우팅 이후(post-routing) 작업 기능, 네트워크 주소 변환 및 포트 포워딩과 같은 모든 기능을 제공합니다.
이 부분에서는 iptables에 대한 기본적인 정보를 제공합니다. iptables에 대한 자세한 정보를 원하신다면 Red Hat Enterprise Linux 참조 가이드를 참조하시기 바랍니다.
7.2. iptables 사용법
iptables를 사용하기 위한 첫번째 단계는 iptables 서비스를 시작하는 것입니다. 다음 명령을 사용하시면 됩니다:
service iptables start |
경고 | ||
---|---|---|
iptables 서비스를 사용하기 위해서는 다음 명령을 사용하여 ip6tables 서비스를 꺼야합니다:
|
시스템이 부팅될 때마다 iptables가 기본으로 시작되도록 설정하시려면 chkconfig 명령을 사용하여 서비스의 런레벨 상태를 변경하셔야 합니다.
chkconfig --level 345 iptables on |
iptables의 구문은 여러 부분으로 나뉘어지며, 중요한 부분은 chain 입니다. chain은 패킷이 조작될 상태를 지정하며 사용법은 다음과 같습니다:
iptables -A chain -j target |
-A 옵션은 기존 규칙에 또 다른 규칙을 추가합니다. chain은 규칙에 사용될 chain의 이름입니다. iptables에 내장된 (즉, 네트워크를 지나가는 모든 패킷에 영향을 미치는) 3가지 chain은 INPUT, OUTPUT, FORWARD 입니다. 이 세가지 chain은 영구적이며 삭제 불가능합니다. -j target 옵션은 iptables에서 이 특정 규칙을 jump하도록 지시합니다. 명령에 내장된 타겟으로 ACCEPT, DROP, REJECT가 있습니다.
사용자 정의 chain이라고도 알려진 새로운 chain은 -N 옵션을 사용하여 생성 가능합니다. 새로운 chain을 생성하여 보다 정교하고 세밀한 규칙을 사용자 정의하실 수 있습니다.
7.2.1. 기본 방화벽 정책
기본 방화벽 정책을 세워놓으면 향후 보다 상세하고 사용자 정의된 규칙을 생성하는데 도움이 됩니다. iptables는 정책 (-P)을 사용하여 기본 규칙을 생성합니다. 관리자는 보안을 염두하여 일반적으로 모든 패킷을 드롭(drop)하며 상황 별로 특정 패킷을허용하는 정책을 사용합니다. 다음은 네트워크 게이트웨이에서 들어오고 나가는 모든 패킷을 막는 규칙입니다:
iptables -P INPUT DROP iptables -P OUTPUT DROP |
추가로 전송 패킷(forwarded packets) — 방화벽에서 목적 시스템으로 라우팅될 네트워크 트래픽 — 을 거부하여 내부 클라이언트가 의도하지 않게 인터넷에 노출되는 것을 방지하시기를 권장합니다. 다음과 같은 규칙을 사용하시면 됩니다:
iptables -P FORWARD DROP |
정책 chain을 설정하신 후 특정 네트워크와 보안 요건에 맞는 새로운 규칙을 만들 수 있습니다. 다음 부분에서는 iptables 방화벽을 구축하는데 실행하실 일부 규칙들에 대하여 간단하게 설명해 보겠습니다.
7.2.2. iptables 규칙 저장 및 복구하기
방화벽 규칙은 컴퓨터가 켜져있는 동안에만 유효합니다. 만일 시스템이 재부팅되면 규칙이 자동으로 지워지고 재설정됩니다. 따라서 이후에도 똑같이 읽혀지도록 규칙을 저장하시려면 다음 명령을 사용하십시오:
/sbin/service iptables save |
규칙이 /etc/sysconfig/iptables 파일에 저장되어 서비스가 시작되거나 재시작되며 컴퓨터가 재부팅될 때마다 동일하게 적용됩니다.
7.3. 일반 iptables 필터링
침입자들이 LAN에 침입하지 못하도록 하는 것이 네트워크 보안에서 가장중요하지는 않아도 매우 중요한 부분입니다. 엄격한 방화벽 규칙을 사용하여 악의를 가진 원격 사용자가 LAN에 침입하는 것을방지해야 합니다. 그러나 기본 정책이 들어오고 나가고, 전송되는 패킷을 모두 막도록 설정되어 있다면 방화벽/게이트웨이 및 내부LAN 사용자는 서로 통신을 주고 받거나 외부와 통신을 주고 받을 수 없게 됩니다. 다라서 사용자들이 네트워크 관련 작업을수행하고 네트워킹 프로그램을 사용할 수 있도록, 시스템 관리자는 통신에 사용되는 특정 포트를 열어두셔야 합니다.
예를 들어 방화벽에서 포트 80로의 액세스를 허용하시려면 다음 규칙을 추가하십시오:
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT |
이렇게 하시면 포트 80을 통하여 통신하는 웹사이트에서 일반 웹 브라우징이 가능해 집니다. 보안 웹사이트 (예, https://www.example.com/)로의 액세스를 허용하시려면 포트 443도 열어야 합니다.
iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT |
중요 | ||
---|---|---|
iptables 규칙을 만드실 때는순서가 매우 중요합니다. 예를 들어 만일 chain에서 로컬 192.168.100.0/24 서브넷에서 들어오는 모든 패킷을drop하도록 지정하신 후 (drop 하도록 지정된 서브넷에 포함되는) 192.168.100.13에서 들어오는 패킷을 모드허용하는 chain (-A)을 그 후에 추가하시면 뒤에 추가된 추가 규칙이 무시됩니다. 먼저 192.168.100.13를 허용하는 규칙을 설정하신 후 서브넷을 drop하는 규칙을 설정하셔야 합니다. 기존 chain 규칙에 새로운 규칙을 넣으시려면 -I 옵션 다음에 규칙을 삽입할 chain 이름과 규칙이 위치할 번호 (1,2,3,...,n)를 입력하십시오. 예를 들면:
이 규칙은 INPUT chain의 첫번째 규칙으로 삽입되어 로컬 룹백 장치 트래픽을 허용할 것입니다. |
가끔씩 외부에서 LAN에 원격 접속을 해야할 경우도 있습니다. LAN 서비스로 암호화된 원격 접속을 위해 SSH와 같은보안 서비스를 사용하실 수 있습니다. PPP 기반 자원 (예, 모뎀 뱅크 또는 대량 ISP 계정)을 사용하시는 관리자는 다이얼업액세스를 사용하여 방화벽을 안전하게 통과하실 수 있습니다. 그 이유는 모뎀 연결은 일반적으로 직접적인 연결이므로방화벽/게이트웨이를 통과할 수 있습니다. 그러나 초고속 접속을 사용하시는 원격 사용자의 경우 특별한 설정이 가능합니다. iptables가 원격 SSH 클라이언트에서 들어오는 접속을 허용하도록 설정하실 수 있습니다. 예를 들어 원격 SSH 액세스를 허용하시려면 다음과 같은 규칙을 사용하실 수 있습니다:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p udp --sport 22 -j ACCEPT |
다른 서비스에도 규칙을 지정하셔야할 경우가 있습니다. Red Hat Enterprise Linux 참조 가이드에서 iptables 및 함께 사용 가능한 다양한 옵션에 대한 광범위한 정보를 찾으실 수 있습니다.
이러한 규칙은 방화벽 상에서 일반 보안 서비스에 액세스할 수 있게 허용하지만, 방화벽으로 보호된 시스템은 이러한 서비스에 액세스할 수 없습니다. LAN에서 이러한 서비스에 액세스할 수 있도록 허용하시려면 iptables 필터링 규칙에 NAT을 사용하시면 됩니다.
7.4. FORWARD와 NAT 규칙
대부분의 기업체는 ISP에서 제한된 숫자의 공공 IP 주소를 할당받았습니다. 따라서 관리자는 부족한 IP 주소를 LAN상의 모든 시스템에 주지 않고서도 인터넷 서비스에 액세스를 공유할 수 있는 방법을 강구해내야 합니다. LAN 상의 모든 시스템이내부 및 외부 네트워크 서비스에 적절히 액세스할 수 있도록 하는데 사설 IP 주소를 사용하는 방법이 가장 많이 사용되고있습니다. 방화벽과 같은 Edge 라우터는 인터넷으로부터 들어오는 전송을 받고 그 패킷을 목적 LAN 시스템으로 라우팅해줍니다;동시에 방화벽/게이트웨이는 또한 LAN 시스템으로부터 외부로 향하는 요청을 받아 원격 인터넷 서비스로 라우팅할 수도 있습니다.이렇게 네트워크 트래픽을 전송하는 것이 워험할 경우가 있습니다. 특히 최신 크래킹 도구를 사용하여 내부 IP 주소인 것처럼하여 원격 침입자의 컴퓨터가 마치 기업체 LAN에 위치한 것처럼 작업할 가능성이 있기 때문에 더욱 그러합니다. 이러한 상황이 발생하는 것을 방지하기 위하여, iptables는 네트워크 자원이 악용되는 것을 방지할 수 있는 라우팅 및 전송 정책을 제공합니다.
관리자는 FORWARD정책을 사용하여 LAN에서 패킷이 전송될 위치를 제어할 수 있습니다. 예를 들면 전체 LAN으로 전송을 허용하려면 다음과 같은규칙을 설정하시면 됩니다 (방화벽/게이트웨이의 내부 IP 주소가 eth1 상에 위치한다고 가정합니다):
iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT |
이 규칙은 방화벽/게이트웨이 뒤에 위치한 시스템이 내부 네트워크에 접근할 수 있도록 설정합니다. 게이트웨이는 한 LAN 네트워크로부터 들어오는 모든 패킷을 eth1 장치를 통해 대상 네트워크로 라우팅할 것입니다.
알림 | ||||
---|---|---|---|---|
기본으로 Red Hat Enterprise Linux 커널의 IPv4 정책은 Red Hat Enterprise Linux를운용하는 시스템이 전용 edge 라우터로 작동하는 것을 방지하기 위하여 IP 전송 지원을 비활성화 합니다. IP 전송을활성화하시려면 다음 명령을 실행하십시오:
만일 이 명령을 쉘 프롬프트에서 실행하시면 시스템을 재부팅하시는 경우 설정이 남아있지 않습니다. 영구적으로 설정을 보존하시려면 /etc/sysctl.conf 파일에서 전송을 설정하시면 됩니다. 다음 줄을 찾아서 0을 1로 변경하시기 바랍니다:
다음 명령을 실행하여 sysctl.conf 파일의 변경 사항이 활성화되도록 하십시오:
|
이렇게 함으로서 LAN 상의 시스템들이 서로 통신할 수 있게 됩니다; 그러나 인터넷과 같은 외부 시스템과의 통신은 허용되지않습니다. LAN 상의 시스템이 가상 IP 주소를 가지고 외부 공중 네트워크와 통신할 수 있도록 허용하시려면, LAN 시스템에서외부로 향하는 요청이 방화벽 외부 장치(이 예시에서는 eth0)의 IP 주소로 나가도록 방화벽에 IP masquerading 기능을 설정하십시오:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
이 규칙은 NAT 패킷 매칭표(matching table) (-t nat)을 사용하며 방화벽 외부 네트워킹 장치 (-o eth0)에서 NAT에 내장된 POSTROUTING chain을 (-A POSTROUTING) 지정합니다. POSTROUTING을 사용할 경우 패킷이 방화벽의 외부 장치를 떠날때 변경됩니다. -j MASQUERADE 옵션은 컴퓨터의 사설 IP 주소를 방화벽/게이트웨이의 외부 IP 주소로 바꾸기 위해 사용되었습니다.
내부 네트워크에 위치한 서버를 외부에서 사용 가능하도록 설정하시려면 NAT의 PREROUTING chain에 -j DNAT옵션을 사용하여 내부 서비스로 접속을 요청하는 들어오는 패킷을 전송할 수신 IP 주소와 포트 번호를 지정할 수 있습니다. 예를들어 HTTP 요청이 들어올 경우 전용 Apache HTTP 서버 서버 시스템의 주소 172.31.0.23으로 전송하려면,다음과 같은 명령을 입력하시면 됩니다:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \ --to 172.31.0.23:80 |
이 규칙은 NAT 테이블이 내장된 PREROUTING chain을 사용하여 들어오는 HTTP 요청을 모두 수신 IP 주소 172.31.0.23으로 전송합니다.
알림 | ||
---|---|---|
FORWARD chain에 기본 DROP 정책을 지정하셨다면, 수신 NAT 라우팅이 가능하도록 들어오는 HTTP 요청 전송을 허가하는 규칙을 첨가하셔야 합니다.
이렇게 설정하시면 방화벽 외부에서 들어오는 HTTP 요청을 방화벽 내부에 위치한 목적 Apache HTTP 서버 서버로 전송 가능합니다. |
7.4.1. DMZ과 iptables
iptables 규칙을 설정시 특정 시스템, 예를 들면 전용 HTTP 또는 FTP 서버로, 특히 가능하다면 내부 네트워크에서 격리된 DMZ (demilitarized zone:비무장 지대)에 위치한 서버로 트래픽을 라우팅하도록 설정 가능합니다. 들어오는 모든 HTTP 요청을 (LAN의192.168.1.0/24 범위에서 벗어난) IP 주소가 10.0.4.2이고 포트 80에 위치한 전용 HTTP 서버로 라우팅할규칙을 설정하시면, 네트워크 주소 변환 (NAT)은 패킷을 적절한 목적지로 전송하기 위해 PREROUTING 표를 호출합니다:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \ --to-destination 10.0.4.2:80 |
이 명령을 사용하시면 LAN 외부에서 포트 80으로 들어오는 모든 HTTP 연결이 내부 네트워크에서 격리된 별개의 네트워크상에 위치한 HTTP 서버로 라우팅됩니다. 이렇게 네트워크를 분리하는 것이 동일한 네트워크 상에 위치한 기계에 HTTP 연결을허용하는 것보다 훨씬 안전합니다. 만일 HTTP 서버가 보안 연결을 허용하도록 설정되었다면, 포트 443도전송(forward)하셔야 합니다.
7.5. 바이러스와 가짜 IP 주소
보다 정교한 규칙을 세워 LAN 상에서 특정 서브넷이나 심지어는 특정 시스템으로 액세스를 제어하는 것도 가능합니다. 트로이목마(trojans), 컴퓨터 웜(worms)이나 다른 클라이언트/서버 바이러스와 같은 수상한 서비스가 서버에 접속하는 것을방지하는 규칙을 설정하실 수도 있습니다. 예를 들어 31337에서 31340까지 포트 (크래킹 용어로 elite포트라고 부릅니다)에서 네트워크를 스캔하여 서비스를 찾아내는 트로이 목마 침투 유형이 있습니다. 이러한 비표준 포트를 통해통신하는 적당한 서비스가 없으므로 이 포트를 닫으시면 네트워크 상에서 바이러스 침입 당한 컴퓨터가 원격 마스터 서버와 독립적으로통신을 주고 받을 가능성을 줄일 수 있습니다.
iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP |
또한 외부에서 사설 IP 주소 범위에 속하는 가짜 주소를 사용하여 LAN에 침투하려는 시도를 막는 규칙을 설정하는 것도가능합니다. 예를 들어 LAN의 IP 주소 범위가 192.168.1.0/24인 경우 인터넷에 접속된 네트워크 장치 (예,eth0)가 이 LAN IP 범위 내의 주소를 가진 장치로 들어오는 모든 패킷을 드롭하도록 설정 가능합니다. 전송된 패킷을거부하는 규칙을 기본으로 설정하시도록 권장되었으므로 외부 네트워크와 접촉하는 장치 (eth0) 장치로 들어오는 가짜 IP 주소는자동으로 거부될 것입니다.
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP |
알림 | |
---|---|
규칙을 추가시 REJECT 하는 것과 DROP 하는 것의 차이를 아셔야 합니다. REJECT는 서비스에 접속하려는 사용자의 액세스를 거부하고 connection refused라는 오류 메시지를 보여주는 반면 DROP은 말 그대로 telnet 사용자에게 어떠한 경고 메시지도 보여주지 않은 채 패킷을 드롭합니다. 관리자의 재량껏 이러한 규칙을 사용할 수 있지만 사용자가 혼란스러워하며 계속해서 접속을 시도하는 것을 방지하시려면 REJECT를 사용하시는 것이 좋습니다. |
7.6. iptables와 연결 추적(Connection Tracking)
iptables는 연결 추적(connection tracking)이라는 방법을 사용하여 내부 네트워크 상 서비스 연결 상태에 따라서 그 연결을 감시하고 제한할 수 있게 해줍니다. 연결 추적방식은 연결 상태를 표에 저장하기 때문에, 다음과 같은 연결 상태에 따라서 시스템 관리자가 연결을 허용하거나 거부할 수있습니다:
NEW — 새로운 연결을 요청하는 패킷, 예, HTTP 요청
ESTABLISHED — 기존 연결의 일부인 패킷
RELATED — 기존 연결에 속하지만 새로운 연결을 요청하는 패킷, 예를 들면 접속 포트가 20인 수동 FTP의 경우 전송 포트는 사용되지 않은 1024 이상의 어느 포트라도 사용 가능합니다.
INVALID — 연결 추적표에서 어디 연결에도 속하지 않은 패킷.
상태에 기반(stateful)한 iptables연결 추적 기능은 어느 네트워크 프로토콜에서나 사용 가능합니다. UDP와 같이 상태를 저장하지 않는 (stateless)프로토콜에서도 사용할 수 있습니다. 다음 예시에서는 기존 연결(established)과 관련된 패킷만 전송하는 연결 추적 방식을사용하는 규칙을 보여줍니다:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ALLOW |
7.7. ip6tables
IPv6라고 부르는 차세대 인터넷 프로토콜이 도입됨으로서 IPv4 (IP)의 32 비트 주소 제한이 확장되었습니다.IPv6는 128 비트 주소를 지원하며, IPv6를 인식하는 공중 네트워크는 IPv4 보다 많은 대량의 라우팅 가능한 주소를주소 지정 가능합니다.
Red Hat Enterprise Linux는 넷필터 6 서브시스템 및 ip6tables 명령을 사용하는 IPv6 방화벽을 지원합니다. ip6tables를 사용하시려면 먼저 다음 명령을 입력하여 ip6tables 서비스를 시작해야 합니다:
service ip6tables start |
경고 | ||
---|---|---|
ip6tables 서비스만 사용되도록 iptables 서비스를 꺼야 합니다:
|
ip6tables가 시스템이 부팅시 기본으로 사용되도록 설정하시려면 chkconfig을 사용하여 서비스의 런레벨 상태를 변경하시기 바랍니다.
chkconfig --level 345 ip6tables on |
사용되는 구문은 모든 면에서 iptables와 동일하지만 ip6tables는 128 비트 주소를 사용한다는 차이점이 있습니다. 예를 들면 다음 규칙을 사용하여 IPv6 인식 네트워크 서버에서 SSH 연결을 활성화할 수 있습니다:
ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT |
IPv6 네트워킹에 대한 자세한 정보를 원하신다면 http://www.ipv6.org/에서 IPv6 정보 페이지를 참조하시기 바랍니다.
7.8. 추가 자료
이 메뉴얼에서는 방화벽과 리눅스 넷필터 서브시스템에 대하여 깊게 다양한 측면을 다루지 못했습니다. 보다 자세한 정보를 보시려면 다음에 나온 자료를 참조하시기 바랍니다.
7.8.1. 설치된 문서 자료
Red Hat Enterprise Linux 참조 가이드는 iptables 및 모든 명령 옵션에 대한 정의에 대한 광범위한 정보를 제공합니다.
iptables 메뉴얼 페이지에서도 다양한 옵션에 대한 설명을 찾으실 수 있습니다.
일반 서비스와 포트 번호 목록은 부록 C과 /etc/services에서 찾으실 수 있습니다.
7.8.2. 유용한 웹사이트
http://www.netfilter.org/ — Netfilter와 iptables 프로젝트 공식 홈페이지.
http://www.tldp.org/ — 리눅스 문서화 프로젝트 사이트에서 방화벽 생성과 관리와 관련된 유용한 가이드를 찾으실 수 있습니다.
http://www.iana.org/assignments/port-numbers — IANA (인터넷 할당 번호 관리 기관)에 의해 할당된 등록된 일반 서비스 포트 번호의 공식 목록.
7.8.3. 관련 서적
Red Hat Linux Firewalls, 저자 Bill McCarty; 출판사 Red Hat Press — Netfilter와 iptables와 같은 오픈 소스 패킷 필터링 기술을 사용하여 네트워크와 서버 방화벽을 구축하는 방법에 대한 광범위한 정보를 제공합니다. 방화벽 로그 분석하기, 방화벽 규칙 개발하기, lokkit과 같은 그래픽 도구를 사용하여 방화벽 사용자 정의하기와 같은 내용이 포함됩니다.
Linux Firewalls, 저자 Robert Ziegler; 출판사 New Riders Press. — 넷필터와 iptables 뿐만 아니라 2.2 커널 ipchains를 사용하여 방화벽을 생성하는 방법에 대한 방대한 정보를 담고 있습니다. 원격 접속 문제와 침입 탐지 시스템과 같은 보안에 대한 추가 주제들도 설명되어 있습니다.
8장. 취약성 평가
충분한 시간, 자원과 동기만 있다면 크래커는 거의 어느 시스템이든 침입 가능합니다. 결국 현재 사용되는 어느 보안 절차와기술로도 시스템이 침입당하지 않으리라고 보장하지 못합니다. 라우터는 인터넷으로부터 게이트웨이를 보호해주며 방화벽은 네트워크의보안을 도와줍니다. 가상 사설 네트워크는 데이터를 암호화된 스트림으로 안전하게 전달해주며 수상한 활동이 탐지되었을 경우 여러분께경고해주도록 침입 탐지 시스템을 사용할 수 있습니다. 그러나 다음과 같은 여러 변수에 따라 이러한 기술의 성공적인 사용 여부가좌우됩니다:
기술을 설정하고 모니터하며 관리할 수 있는 전문 기술자
서비스와 커널을 신속하고 효율적으로 패치하고 업데이트할 수 있는 능력
네트워크 활동을 계속적으로 경계할 수 있는 담당자
데이터 시스템과 기술이 매우 동적으로 변화되기 때문에 회사 자원을 안전하게 지키는 작업은 결코 쉽지가 않습니다. 이러한복잡한 문제로 인하여 회사 시스템 전부를 잘 이해하는 전문가를 찾기가 힘들 경우가 있습니다. 고급 수준의 다양한 영역의 정보보안에 대하여 알고 있는 직원을 채용하는 것은 가능하지만, 여러 보안 영역의 전문가를 채용하는 것은 쉽지 않습니다. 그 이유는각 정보 보안 분야가 멈추치 않고 변화하기 때문에 계속적인 관심과 집중이 필요하기 때문입니다.
8.1. 적의 마음으로 생각하기
여러분이 회사 전체의 네트워크를 책임지고 있다고 가정합시다. 기업체 네트워크는 일반적으로 운영 체제, 응용 프로그램,서버, 네트워크 모니터, 방화벽, 침임 탐지 시스템 등으로 구성됩니다. 이제 이러한 모든 요소들을 계속해서 감시한다고 상상해보십시오. 오늘날 소프트웨어와 네트워킹 환경의 복잡성을 감안할때 보안 침입이나 버그가 발생할 가능성을 부인할 수 없습니다.따라서 여러 시스템으로 이루어진 큰 기업체에서 전체 네트워크를 계속적으로 패치하고 업데이트하는 것이 얼마나 힘든 작업인가를상상하실 수 있으실 것입니다.
이처럼 시스템을 계속적으로 감시하는 작업과 여러 분야의 보안 전문가를 찾는 어려움을 결합하여 보았을때 시스템 보안 침해가 발생하여 데이터가 손상되고 서비스가 중단되는 문제를 피할 수 없습니다.
보안 기술을 증대시키고 시스템, 네트워크 및 데이터 보안을 돕기 위하여 자신이 크래커라면 어떠한 시스템 헛점을 악용하여보안을 침해할 것인지 한번 생각해 보십시오. 여러분의 시스템과 네트워크 자원에 예방적인 취약성 평가를 해봄으로서 잠재적으로문제가 될 만한 사항들을 크래커가 헛점으로 사용하기 전에 미리 발견할 수 있습니다.
취약성 평가란 회사 내부적으로 네트워크와 시스템 보안을 감사하는 것을 말합니다; 이 취약성 평가를 통해 1.1.4 절에서 설명되었듯이 네트워크의 기밀성, 무결성 및 가용성을 알 수 있습니다. 일반적으로 취약성 평가는 목표 시스템과 자원에 대한중요한 데이터를 수집하는 수사 단계에서 시작합니다. 다음 단계는 시스템 준비 단계로서 목표 시스템에서 본질적으로 모든 알려진취약성을 점검합니다. 이 준비 단계를 거치면 마지막으로 보고 단계에 이르며 발견된 사항을 최상, 중간 그리고 낮은 위험 수준으로구분하여 보고하며 목표 시스템의 보안을 개선할 수 있는 방법 (취약성 위험을 줄일 수 있는 방법)을 논의하는 단계입니다.
만일 집안의 취약성 평가를 수행하신다면 문들이 제대로 닫혀있는지 잠겨있는지를 확인하실 것입니다. 또한 창문들도 모두 완전히잠겼는지 제대로 빗장이 걸려있는지 확인하실 것입니다. 이러한 동일한 개념이 시스템, 네트워크 및 컴퓨터 데이터에도 적용됩니다.악의를 지닌 시스템 침입자는 여러분의 데이터를 훔쳐가는 도둑입니다. 침입자가 사용하는 도구가 무엇인지, 어떠한 생각을 하고있는지 침입한 동기는 무엇인지를 먼저 생각해보신 후 즉각적으로 조치를 취하시기 바랍니다.
8.2. 평가와 테스팅 정의하기
취약성 평가는 다음과 같은 두가지 유형으로 구분될 수 있습니다: 외부에서 내부를 평가하기 및 내부에서 외부를 평가하기.
외부에서 취약성 평가를 수행시에는 외부에서 여러분의 시스템으로 침입을 시도한다고 가정해보십시오. 회사 외부에서 침입을시도함으로서 크래커의 관점을 이해할 수 있게 됩니다. 크래커가 보고 있는 사항들 — 공개적으로 라우팅가능한 IP 주소, DMZ상에 위치한 시스템, 방화벽의 외부 인터페이스 등을 알아볼 수 있습니다. DMZ는 "비무장 지대(demilitarizedzone)"를 줄임말로서 신뢰할 수 있는 내부 네트워크 (예, 회사 사설 LAN)와 신뢰할 수 없는 외부 네트워크 (공공인터넷) 사이에 위치하는 컴퓨터나 소규모 하부 네트워크를 말합니다. 일반적으로 DMZ에는 웹(HTTP) 서버, FTP 서버,SMTP (이메일) 서버 및 DNS 서버와 같이 인터넷 트래픽을 처리하는 장치가 위치합니다.
내부에서 취약성 평가를 수행하시는 경우 여러분이 내부에 위치하며 신뢰받는 위치에 있으므로 어느정도 유리한 입장에 있습니다.이것이 여러분이나 함께 근무하는 직원이 시스템에 로그인시 위치하게 되는 지점입니다. 프린트 서버, 파일 서버, 데이터베이스 및디른 자원을 살펴보기 가능합니다.
이러한 두 가지 유형의 취약성 평가 사이에는 두드러진 차이점이 있습니다. 회사 내부에 위치하면 외부 사용자보다 많은 권한을갖게 됩니다. 오늘날 대부분의 기업체에서는 외부인의 침입을 막을 수 있도록 보안을 설정합니다. 그러나 기업 내부에서의 침입을막을 수 있는 조치를 거의 취해지지 않습니다 (예, 부서마다 방화벽 설치, 사용자 수준 접근 제어, 내부 자원을 위한 인증 절차등). 일반적으로 대부분의 시스템은 회사 내부에 위치하므로 내부에서 보다 많은 자원을 찾을 수 있습니다. 만일 회사 외부에서접근을 시도하시면 즉시 신뢰할 수 없는 상태로 간주됩니다. 회사 외부에서 접근 가능한 시스템과 자원은 일반적으로 매우 제한되어있습니다.
취약성 평가와 침입 데스트 간의 차이점을 생각해 보십시오. 취약성 평가를 침입데스트를 위한 첫번째 단계로 간주할 수 있습니다. 취약성 평가를 통해 수집한 정보는 테스팅에 사용됩니다. 취약성 평가에서는 보안헛점과 잠재적 취약점을 찾는 반면, 침입 데스팅에서는 실제로 발견된 취약점을 사용하여 칩입 시도합니다.
네트워크 기반 구조를 평가하는 작업은 동적인 과정입니다. 정보 보안 및 물리적 보안 모두 동적이라 할 수 있습니다.네트워크 평가를 수행함으로서 존재하지 않는 위험성이 보고되거나 존재하는 위험성이 보고되지 않는 경우를 발견할 수 있습니다.
보안 관리자는 자신의 지식과 보안 관리를 위해 사용되는 도구에 의존하고 있습니다. 현재 사용 가능한 평가 도구 중 하나를한번 시스템 상에 실행시켜 보십시오. 거의 매번 보고된 문제점 중 최소한 몇 개는 존재하지 않는 문제점입니다. 프로그램이잘못되었거나 사용자의 잘못인지 여부를 떠나서 결과는 언제나 같습니다. 도구는 실제로는 존재하지 않는 취약점을 찾아내거나(false positive); 또는 실제로는 존재하는 취약점을 찾아내지 못하는 경우 (false negative)가 있습니다.
이제 취약성 평가와 침입 테스트 간의 차이점을 알아보았으니 평가 후 찾아낸 사항들을 주의깊게 검토한 후 침투 테스트를 실행해보시기 바랍니다.
경고 | |
---|---|
생산 자원의 취약점을 이용하여 침입 테스트를 시도하시면 회사 시스템과 네트워크의 생산성과 효율성에 반대 영향을 미칠 수 있으니 주의하십시오. |
다음 목록에서는 취약성 평가를 수행함으로서 받을 수 있는 여러 가지 혜택을 설명하고 있습니다:
정보 보안 사전 대처할 수 있음
크래커가 찾아내기 전에 잠재적 취약점을 찾아낼 수 있음
시스템이 항상 업데이트되고 패치될 수 있음
직원의 전문적 기술을 증대시키는데 도움이 됨
재정적 손실과 부정적인 회사 이미지를 줄일 수 있음
8.2.1. 방법론 수립
취약성 평가에 사용될 도구 선택을 돕기 위하여 취약성 평가 방법론을 먼저 수립하시기 바랍니다. 불행히 아직 미리 정의되거나 산업체에서 인증받은 방법이 존재하지 않지만 그러나 일반 상식과 실행 결과만으로도 충분할 것입니다.
어느 시스템을 상대로 하는가? 한 개의 서버를 상대하는가 또는 전체 네트워크 및 그 네트워크 내의 모든 시스템을 상대로 하는가? 현재 우리는 회사 외부에 위치하는가 내부에 위치하는가? 이러한 질문에 대한 해답을 찾음으로서 사용할 적절한 도구를 찾는데 도움이 될 뿐만 아니라 그 도구를 어떠한 방법으로 사용할지 결정 가능합니다.
방법론 수립에 대한 보다 많은 정보를 원하신다면 다음 웹사이트를 참조하시기 바랍니다:
http://www.isecom.org/projects/osstmm.htm — The Open Source Security Testing Methodology Manual (OSSTMM)
http://www.owasp.org/ — The Open Web Application Security Project
8.3. 도구를 평가하기
평가 과정은 정보 수집 도구를 사용함으로서 시작됩니다. 전체 네트워크를 평가하실 때에는 우선 실행 중인 호스트를 찾아내기위해 네트워크 배치를 자세히 살펴보십시오. 일단 호스트를 찾으면 각 호스트를 개별적으로 검사해보십시오. 호스트 검사를 위해서는또 다른 도구를 사용하셔야 합니다. 어떠한 도구를 사용하느냐에 따라서 호스트의 취약성을 찾아내는데 중요한 역할을 합니다.
일상 생활에서와 마찬가지로 동일한 작업을 수행하는데 여러 다른 도구를 사용할 수 있습니다. 취약성 평가를 수행시에도마찬가지 입니다. 운영 체제에 특별히 사용되는 도구가 있으며 또한 응용 프로그램 및 심지어는 사용된 프로토콜에 따라서 네트워크에특별히 사용되는 도구도 따로 존재합니다. 일부 도구는 사용이 무료이며 유료인 도구도 있습니다. 어떠한 도구는 직관적으로 이해가가능하며 사용하기 쉽지만, 일부 다른 도구는 애매하며 제대로 문서화되어 있지 않아 사용하기 힘들지만 다른 도구가 가지지 않는특별한 기능을 갖추고 있기도 합니다.
올바른 도구를 찾는 것은 어려운 작업일 수 있지만, 결국 얼마나 경험이 있느냐에 달려있습니다. 가능하면 실험실을 설립하여최대한 많은 도구를 시험하여 각 도구의 장점과 단점을 기록해 놓으십시오. 각 도구의 README 파일이나 메뉴얼 페이지를검토하는 것도 잊지 마십시오. 마지막으로 인터넷에서 기사, 단계별 설명서 또는 메일링 리스트에 이르기까지 특정 도구에 대한 추가정보를 얻으시기 바랍니다.
다음에 설명된 도구는 사용 가능한 도구 중 일부 예시일 뿐입니다:
8.3.1. Nmap을 사용하여 호스트 스캐닝하기
Nmap은 Red Hat Enterprise Linux에 포함된, 네트워크 배치를 찾아내기 위해 자주 사용되는 도구입니다.Nmap은 수년간 사용되어져 왔으며 아마도 가장 인기있는 정보 수집용 도구입니다. 메뉴얼 페이지를 보시면 옵션과 사용법에 대한자세한 정보를 찾으실 수 있습니다. 관리자는 네트워크 상에서 Nmap을 사용하여 호스트 시스템과 호스트 시스템 상에서 열려진포트를 찾아낼 수 있습니다.
Nmap은 취약성 평가의 첫단계로 사용하기에 모자람이 없는 훌륭한 도구입니다. 네트워크 내의 모든 호스트를 찾고 심지어는특정 호스트에서 실행 중인 운영 체제를 찾기 위한 옵션도 전달 가능합니다. Nmap은 보안 서비스를 사용하고 사용되지 않는서비스는 멈추는 정책을 수립하는데 좋은 기반이 됩니다.
8.3.1.1. Nmap 사용법
Nmap은 쉘 프롬프트에서 실행 가능합니다. 쉘 프롬프트에서 nmap 명령과 스캔할 시스템의 호스트명이나 IP 주소를 입력하십시오.
nmap foo.example.com |
스캔 결과는 다음과 같이 나타날 것입니다 (호스트의 위치에 따라서 몇 분이 소요될 수도 있습니다):
Starting nmap V.3.50 ( www.insecure.org/nmap/ ) Interesting ports onlocalhost.localdomain (127.0.0.1): (The 1591 ports scanned but notshown below are in state: closed) Port State Service 22/tcp open ssh25/tcp open smtp 111/tcp open sunrpc 443/tcp open https 515/tcp openprinter 950/tcp open oftep-rpc 6000/tcp open X11 Nmap run completed --1 IP address (1 host up) scanned in 71.825 seconds |
Nmap은 대부분의 일반 네트워크 통신 포트를 테스트하여 서비스를 청취하거나 대기 중인 포트가 있는지 찾아냅니다. 관리자가 불필요하거나 사용되지 않는 서비스를 닫는데 매우 유용합니다.
Nmap과 관련된 보다 많은 정보를 원하신다면 다음 URL에서 공식 홈페이지를 찾아보시기 바랍니다:
8.3.2. Nessus
Nessus는 전체 서비스 보안 스캐너입니다. Nessus는 플러그인 구조로 되어있기 때문에 사용자가 자신의 시스템과네트워크에 맞게 사용자 정의 가능합니다. 다른 스캐너와 마찬가지로 Nessus는 침입탐지 패턴 데이터베이스에 의존하지만,다행히도 Nessus는 자주 업데이트됩니다. 완전한 보고 기능, 호스트 스캐닝, 실시간 취약성 검색과 같은 기능을 제공합니다.Nessus처럼 자주 업데이트되고 강력한 도구라 해도 잘못된 결과 (존재하지 않는 취약점을 보고하거나 존재하는 취약점을 발견하지못하는 결과)를 보고할 가능성이 있습니다.
알림 | |
---|---|
Nessus는 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
Nessus와 관련된 보다 많은 정보를 원하신다면 다음 URL에서 공식 홈페이지를 찾아보시기 바랍니다:
8.3.3. Nikto
Nikto은 훌륭한 CGI(common gateway interface) 스크립트 스캐너입니다. Nikto는 CGI취약점을 확인하는 기능을 갖추고 있을 뿐만 아니라 침입 탐지 시스템의 눈에 띄지 않게 찾아내기 어려운 방법을 사용합니다. 이프로그램은 훌륭한 문서 자료가 함께 나와 있으므로 프로그램을 실행하시기 전에 주의깊게 읽어보시기 바랍니다. CGI 스크립트를사용하는 웹 서버를 찾으신다면 Nikto를 사용하여 이 서버의 보안을 확인해보실 수 있습니다.
알림 | |
---|---|
Nikto는 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
Nikto에 대한 보다 자세한 정보는 다음 URL에서 찾으실 수 있습니다:
8.3.4. VLAD 스캐너
VLAD는 Bindview, Inc 사의 RAZOR 팀에서 개발한스캐너로서 취약성을 검사하는데 사용됩니다. 이 프로그램은 가장 흔한 보안 문제점 중 SANS 최상위 열가지 문제점 (SNMP문제, 파일 공유 문제점 등)을 찾아냅니다. VLAD는 Nessus 만큼 완전한 기능을 갖추고 있지는 않지만 조사해 볼만한가치가 있습니다.
알림 | |
---|---|
VLAD는 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
VLAD에 대한 보다 자세한 정보는 RAZOR 팀 웹사이트인 다음 URL에서 찾으실 수 있습니다:
8.3.5. 향후 필요한 사항을 미리 준비하십시오.
여러분의 목표와 자원에 따라서 여러 다른 도구를 사용 가능합니다. 무선 네트워크, Novell 네트워크, Windows시스템, 리눅스 시스템 등에 따른 여러 다른 도구가 있습니다. 평가를 수행에 또 다른 중요한 부분은 물리적 보안을 검토하고직원을 살펴보고 음성/PBX 네트워크를 평가하는 것입니다. war walking— 무선 네트워크 취약점을 살펴보기 위해 기업체의 물리적 구조의 경계를 스캐닝하는 작업 — 과 같은 새로운 개념을 조사해보시고필요하다면 여러분의 평가 계획에 통합하십시오. 취약성 평가를 계획하고 수행하는데는 여러분의 상상력과 경험 외에는 한계가 없습니다.
9장. 침입 탐지
소중한 재산은 도난당하거나 파기되지 않도록 잘 보호해야 합니다. 일부 가정에서는 강도가 들지 못하게 하고, 만일 도둑이침입한 경우에는 경비 업체에 알리고 심지어 집에 불이 나면 주인에게 경고해주는 알람 시스템이 설치되어 있습니다. 이러한 대응체계를 갖추어야 가족과 집의 안전을 보장할 수 있습니다.
이와 같은 동일한 대응 체계가 컴퓨터 시스템과 데이터에도 적용되어야 합니다. 인터넷은 개인 정보에서 재정 정보에 이르기까지다양한 정보 교환을 용이하게 해주었습니다. 하지만 그와 동시에 다양한 위험 요소를 발생시켰습니다. 악의를 가진 사용자와 크래커는패치되지 않은 시스템이나 트로이 목마 프로그램이 깔린 시스템 또는 비보안 서비스를 실행 중인 네트워크와 같은 취약 시스템을목표로 삼고 공격합니다. 보안 침입 사고가 발생시 바로 시스템 관리자와 보안팀 구성원에게 통지하여 그들이 보안 위협에 실시간으로대처할 수 있도록 해주는 알람이 필요합니다. 침입 탐지 시스템은 이러한 경고 시스템으로 설계되었습니다.
9.1. 침입 탐지 시스템이란
침입 탐지 시스템 (IDS)이란 시스템과 네트워크 작업을 분석하여 권한이 없는 사용자가 로그인하거나 악의성 작업이 있는지찾아내는 활성 프로세스 또는 장치를 말합니다. IDS가 예외적인 작업을 찾아내는 방법은 다양합니다; 그러나 모든 IDS의궁극적인 목적은 침입자가 시스템 자원에 심각한 손상을 끼치기 전에 범인을 찾아내는 것입니다.
IDS는 시스템 공격, 오용이나 침입을 방지합니다. 또한 네트워크 활동을 감시하고 네트워크와 시스템 설정에 취약점이 있는지확인하며 데이터 무결성을 분석하는 등의 다양한 작업을 수행할 수 있습니다. 여러분이 사용하시는 탐지 방법에 따라서 IDS를사용함으로서 여러가지 직접적인 혜택과 간접적인 혜택을 받으실 수 있습니다.
9.1.1. IDS 유형
우선 IDS란 무엇인지, 그리고 어떠한 기능을 제공하는지를 이해하셔야 컴퓨터 보안 정책에 어떠한 유형의 IDS를 사용하는것이 적합한지 결정하실 수 있습니다. 이 부분에서는 IDS와 관련된 개념과 각 IDS 유형의 기능 및 여러가지 탐지 기술과도구를 한개의 패키지로 사용하는 혼성 IDS의 출현에 대하여 설명해 보겠습니다.
일부 IDS는 지식 기반 (knowledge-based)으로서 흔히 발생하는 보안 공격 데이터베이스를 사용하여 침입이 발생하기 전에 보안 관리자에게 먼저 알려줍니다. 다른 행동상의 특징을 기반으로한 (behavioral-based)IDS는 모든 자원 사용 유형에서 예외적인 증상을 추적합니다. 일반적으로 이러한 예외적인 증상은 악의성 행동이 일어나고 있다는신호입니다. 일부 IDS는 독립형 서비스로서 백그라운드에서 작업들을 수동적으로 청취하고 있으며 외부에서 의심이 가는 패킷이들어온다면 기록하기 시작합니다. 어떠한 IDS는 강력한 침입 탐지 도구 세트를 만들기 위하여 관리자의 직감과 경험에 표준 시스템도구와 수정된 설정 및 자세한 로그 기록 기능을 결합하였습니다. 여러 다양한 침입 탐지 기술을 평가해봄으로서 여러분의 기업체에맞는 적절한 기술을 찾는데 도움이 됩니다.
보안 분야에서 가장 많이 사용되는 유형의 IDS는 호스트 기반(host-based)과 네트워크 기반(network-based)IDS입니다. 호스트 기반 IDS가 각 개별 소트트마다 침입 탐지 시스템을 실행하기 때문에 네트워크 기반 보다 폭넓은 보안을제공하며 어떠한 네트워크 환경이든지 상관없이 시스템을 보호합니다. 네트워크 기반 IDS는 단독 장치로 패킷을 거른 후 각호스트로 패킷을 전달합니다. 여러 휴대용 컴퓨터가 사용될 경우 네트워크 기반 IDS는 안전한 네트워크 패킷 진단과 보호 기능을제공할 수 없기 때문에 호스트 기반만큼 폭넓은 보안을 제공하지는 못합니다.
9.2. 호스트 기반 IDS
호스트 기반 IDS는 시스템 오용 (네트워크 내부에서 악의성이나 시스템을 악용하는 행위) 또는 외부로부터의 침입 행위를찾아내기 위해 여러 영역을 분석합니다. 호스트 기반 IDS는 다양한 유형의 로그 파일 (커널, 시스템, 서버, 네트워크, 방화벽등)을 자주 발생하는 알려진 공격 유형이 담긴 내부 데이터베이스와 비교합니다. UNIX와 리눅스 호스트 기반 IDS에서는 syslog이 발생한 사건을 심각성 수준에 따라 구분하여 기록하는 (예, 중요치 않은 프린터 메시지 대 중요한 커널 경고) 기능이 매우 중요하게 사용합니다. Red Hat Enterprise Linux에 포함된 sysklogd 패키지를 설치하시면 syslog명령을 사용 가능합니다. 이 패키지는 시스템 기록 및 커널 메시지를 기록하는데 사용됩니다. 호스트 기반 IDS는 로그를 거르고(경우에 따라 네트워크 로그와 커널 이벤트 로그는 매우 상세하게 기록됩니다), 걸러진 로그 파일을 분석 후 자체적인 심각성등급에 따라 예외적인 메시지를 다시 표시한 후 관리자가 분석할 수 있도록 자체적인 특수 로그 파일에 이 메시지들을 따로 모읍니다.
호스트 기반 IDS는 또한 중요한 파일과 실행 파일의 데이터 무결성을 확인 가능합니다. IDS는 기밀 파일 (및 관리자가 추가한 모든 파일)의 데이터베이스를 확인하고 md5sum (128-비트 알고리즘) 또는 sha1sum (160-비트 알고리즘)과 같은 메시지 파일 요약 유틸리티를 사용하여 각 파일의 체크섬(checksum)을생성합니다. 그 후 호스트 기반 IDS는 체크섬 내용을 평문 파일에 저장하여 정기적으로 파일 체크섬과 텍스트 파일의 값을비교합니다. 만일 어떠한 파일의 체크섬이라도 일치하지 않는다면 IDS는 관리자의 이메일이나 휴대폰으로 통지합니다. 9.2.1 절에서 설명된 Tripwire는 이러한 과정을 사용합니다.
9.2.1. Tripwire
Tripwire는 리눅스에서 가장 많이 사용되는 호스트 기반 IDS 입니다. Tripwire를 개발한 Tripwire,Inc.에서는 리눅스 버전 용 소프트웨어 소스 코드를 공개했으며 GNU 일반 공중 사용 허가서의 조항에 따라 라이센스를획득했습니다. Tripwire는 http://www.tripwire.org/ 사이트에서 찾으실 수 있습니다.
알림 | |
---|---|
Tripwire는 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
9.2.2. IDS로 사용되는 RPM
RPM 패키지 관리자 (RPM)는 호스트 기반 IDS로 사용될 수 있는 또 다른 프로그램입니다. RPM은 패키지 및패키지의 내용을 조회할 수 있는 다양한 옵션을 포함하고 있습니다. 이러한 검증 옵션은 관리자가 수정되었는지 의심이 가는 중요한시스템 파일과 실행 파일을 검증할 수 있게 해줍니다.
다음 목록에서는 Red Hat Enterprise Linux 시스템에서 파일 무결성을 확인하는데 사용 가능한 RPM 옵션들을 보여줍니다. Red Hat Enterprise Linux 시스템 관리 가이드에서 RPM 사용 방법에 대한 자세한 정보를 찾으실 수 있습니다.
중요 | ||
---|---|---|
다음 목록에 나온 일부 명령을 실행하기 위해서는 시스템의 RPM 키링에 Red Hat GPG 공개키를 가져와야 합니다. 이키는 시스템 상에 설치된 패키지가 Red Hat 패키지 서명을 가지고 있는지 확인하는 역할을 합니다. 서명을 확인함으로서 이패키지가 Red Hat에서 제공한 것임을 보장할 수 있습니다. 루트로 로그인하신 후 다음 명령을 입력하여 키를가져오기(import) 하실 수 있습니다. (<version> 부분을 시스템에 설치된 RPM 버전으로 바꾸십시오):
|
- rpm -V package_name
-V 옵션은 package_name라는 설치된 패키지에 포함된 파일들을 검증합니다. 만일 아무런 결과가 출력되지 않고 종료한다면, RPM 데이터베이스가 마지막으로 업데이트된 이후로 모든 파일이 수정되지 않았다는 것을 의미합니다. 만일 다음과 같은 오류가 발생한다면
S.5....T c /bin/ps 파일이 수정되었다는 것을 의미하므로 (/etc/ 디렉토리에 수정된 설정 파일과 함께) 파일을 계속 보존할 것인지 또는 파일을 삭제하고 그 파일을 포함한 패키지를 재설치할 것인지 결정하셔야 합니다. 다음 목록에서는 검증 실패를 통지하는 8 문자열 (앞서 예시에서 S.5....T)의 항목들을 설명합니다.
. — 검사가 이 확인 단계를 거쳤습니다.
? — 검사 결과 파일을 읽을 수 없습니다, 아마도 파일 허가와 관련있는 문제일 가능성이 많습니다.
S — 검사 과정에서 원래 시스템에 설치된 크기 보다 크거나 작아진 파일을 발견하였습니다.
5 — 검사 과정에서 md5 체크섬이 처음 설치된 파일의 원래 체크섬과 일치하지 않는 파일이 발견되었습니다.
M — 검사 과정에서 파일 허가 오류나 파일 형식 오류가 있는 파일이 검색되었습니다.
D — major/minor 번호가 일치하지 않는 장치 파일이 발견되었습니다.
L — 다른 파일 경로로 변경된 심볼릭 링크를 발견했습니다.
U — 사용자 소유권이 변경된 파일을 발견했습니다.
G — 그룹 소유권이 변경된 파일을 발견했습니다.
T — mtime 확인 오류가 있는 파일을 발견했습니다.
- rpm -Va
-Va 옵션은 설치된 모든 패키지를 검증하여 확인 검사에 실패한 파일이 있는지 확인합니다. (-V 옵션과 유사하지만 설치된 모든 패키지를 확인하기 때문에 출력 결과가 보다 상세합니다).
- rpm -Vf /bin/ls
-Vf 옵션은 설치된 패키지에서 개별 파일을 검증합니다. 의심이 가능 파일을 빠르게 검증하고자 할때 유용합니다.
- rpm -K application-1.0.i386.rpm
-K 옵션은 RPM 패키지 파일의md5 체크섬과 GPG 서명을 확인하는데 사용됩니다. 설치될 패키지가 Red Hat이나 여러분이 GPG 키링으로 가져오기한GPG 공개키가 있는 다른 회사에 의해 서명되었는지 확인해보는데 유용합니다. 적절하게 서명되지 않은 패키지는 다음과 같은 오류메시지를 보여줍니다:
application-1.0.i386.rpm (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#897da07a) 서명되지 않은 패키지를 설치하실 때에는 매우 신중하셔야 합니다. 이 패키지들은 Red Hat, Inc.에 의해 승인되지 않았기 때문에 악의성 코드가 포함되어 있을 수 있습니다.
RPM은 설치된 패키지와 RPM 패키지 파일을 다양한 방법으로 검증할 수 있는 강력한 도구입니다. Red Hat Enterprise Linux를 설치하신 후 RPM 데이터베이 디렉토리 (/var/lib/rpm/)의 내용을 CD-ROM과 같은 읽기 전용 매체에 백업하시기 바랍니다. 백업본을 가지고 계시면 만일 악의를 가진 사용자가 시스템상 데이터베이스를 손상시키고 결과를 왜곡할 경우에 파일과 패키지를 시스템 데이터베이스에 비교하지 않고 읽기 전용 데이터베이스에비교하여 올바른 결과를 얻을 수 있습니다.
9.2.3. 다른 호스트 기반 IDS
다음 목록에서는 자주 사용되는 기타 다른 호스트 기반 침입 탐지 시스템에 대하여 설명하고 있습니다. 이 IDS를 설치하고 설정하는 방법에 대하여 보다 자세한 정보를 원하신다면 각 시스템의 웹사이트를 참조하시기 바랍니다.
알림 | |
---|---|
이 프로그램들은 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
SWATCH http://sourceforge.net/projects/swatch/ — Simple WATCHer (SWATCH) 프로그램은 syslog이생성한 로그 파일을 사용하여 사용자 설정 파일에 예외적인 증상이 발견될 경우 관리자에게 통보합니다. SWATCH는 사용자가 설정파일에서 모니터하고 싶은 사건을 기록하도록 설계되었지만, 현재 호스트 기반 IDS로 널리 사용되고 있습니다.
LIDS http://www.lids.org/ — 리눅스 침입 탐지 시스템 (LIDS)은 커널 패키와 관리 도구로서 ACL (접근 제어 목록)을 사용하여 파일 수정을 제어할 수 있으며 루트 사용자도 프로세스와 파일을 수정하지 못하도록 보고 가능합니다.
9.3. 네트워크 기반 IDS
네트워크 기반 침입 탐지 시스템은 호스트 기반 IDS와는 다르게 작동합니다. 네트워크 기반 IDS은 네트워크 패킷을라우터나 호스트 수준에서 살펴보고 패킷 정보를 검사한 후 만일 의심되는 패킷이 있다면 특수 로그 파일에 보다 자세한 정보와 함께기록하도록 설계되었습니다. 이렇게 발견된 수상한 패킷에 기반하여 네트워크 기반 IDS는 알려진 네트워크 공격 유형을 담은 자체데이터베이스를 살펴본 후 각 패킷에 심각성 수준을 할당합니다. 만일 심각성 수준이 높다면 보안팀 구성원에게 경고 이메일이나휴대용 호출기에 연락하여 예외적인 상황을 보다 깊게 조사하도록 합니다.
네트워크 기반 IDS는 인터넷 범위가 커지고 트래픽이 증가하면서 보다 많이 사용되고 있습니다. 대형 네트워크 작업을스캔하여 수상한 전송을 성공적으로 찾아내는 IDS는 보안 산업에서 높이 평가되고 있습니다. TCP/IP 프로토콜 본래의 비보안성때문에 다음과 같은 악의성 네트워크 활동과 같은 보안 침해 사고를 방지하기 위하여 스캐너, 스니퍼 및 기타 네트워크 감사 및탐지 도구가 개발되어야만 했습니다:
IP 스푸핑(Spoofing)
서비스 거부 공격 (denial-of-service attacks)
arp cache poisoning
DNS 이름 변조(name corruption)
man-in-the-middle 공격
대부분의 네트워크 기반 IDS를 사용하기 위해서는 호스트 시스템 네트워크 장치가 네트워크를 통과하는 모든 패킷을 포착하도록 무차별 (promiscuous) 모드로 설정되어야 합니다. 무차별 모드는 다음과 같이 ifconfig 명령을 사용하여 설정 가능합니다:
ifconfig eth0 promisc |
아무런 옵션 없이 ifconfig 명령을 실행하시면 eth0이 이제 무차별 (PROMISC) 모드라는 것을 보여줍니다.
eth0 Linkencap:Ethernet HWaddr 00:00:D0:0D:00:01 inet addr:192.168.1.50Bcast:192.168.1.255 Mask:255.255.252.0 UP BROADCAST RUNNING PROMISCMULTICAST MTU:1500 Metric:1 RX packets:6222015 errors:0 dropped:0overruns:138 frame:0 TX packets:5370458 errors:0 dropped:0 overruns:0carrier:0 collisions:0 txqueuelen:100 RX bytes:2505498554 (2389.4 Mb)TX bytes:1521375170 (1450.8 Mb) Interrupt:9 Base address:0xec80 lo Linkencap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACKRUNNING MTU:16436 Metric:1 RX packets:21621 errors:0 dropped:0overruns:0 frame:0 TX packets:21621 errors:0 dropped:0 overruns:0carrier:0 collisions:0 txqueuelen:0 RX bytes:1070918 (1.0 Mb) TXbytes:1070918 (1.0 Mb) |
Red Hat Enterprise Linux에 포함된 tcpdump와 같은 도구를 사용하여 네트워크를 통과하는 대량의 트래픽을 볼 수 있습니다:
tcpdump: listeningon eth0 02:05:53.702142 pinky.example.com.ha-cluster > \heavenly.example.com.860: udp 92 (DF) 02:05:53.702294heavenly.example.com.860 > \ pinky.example.com.ha-cluster: udp 32(DF) 02:05:53.702360 pinky.example.com.55828 >dns1.example.com.domain: \ PTR? 192.35.168.192.in-addr.arpa. (45) (DF)02:05:53.702706 ns1.example.com.domain > pinky.example.com.55828: \6077 NXDomain* 0/1/0 (103) (DF) 02:05:53.886395shadowman.example.com.netbios-ns > \ 172.16.59.255.netbios-ns: NBTUDP PACKET(137): QUERY; BROADCAST 02:05:54.103355 802.1d configc000.00:05:74:8c:a1:2b.8043 root \ 0001.00:d0:01:23:a5:2b pathcost 3004age 1 max 20 hello 2 fdelay 15 02:05:54.636436konsole.example.com.netbios-ns > 172.16.59.255.netbios-ns:\ NBT UDPPACKET(137): QUERY; REQUEST; BROADCAST 02:05:56.323715pinky.example.com.1013 > heavenly.example.com.860:\ udp 56 (DF)02:05:56.323882 heavenly.example.com.860 > pinky.example.com.1013:\udp 28 (DF) |
우리의 컴퓨터인 pinky.example.com으로 향하지 않는 패킷들은 tcpdump에 의해 스캔되어 기록되는 것을 보실 수 있습니다.
9.3.1. Snort
tcpdump은 유용한 감시 도구이지만 진정한 IDS로 간주되지는 않습니다. 그 이유는 패킷을 분석하여 예외적인 증상이 있는 패킷을 찾아내지 못하기 때문입니다. tcpdump은 대신 모든 패킷 정보를 분석하지 않고 화면이나 로그 파일에 인쇄합니다. 적절한 IDS는 패킷을 분석하고 수상한 패킷 전송을 찾아내어 형식화된 로그 파일에 저장해야 합니다.
Snort는 성공적으로 수상한 네트워크 활동을 기록하고 잠재적 보안 문제가 발생하였을때 관리에게 알려주도록 개발된 광범위하고 정확한 IDS 입니다. Snort는 표준 libcap 라이브러리와 tcpdump를 패킷 기록 백엔드로 사용합니다.
Snort의 이러한 기능 외에도 가장 특별한 기능은 유연한 침임탐지 패턴 하부시스템입니다. Snort는 침입 공격 패턴데이터베이스에 새로운 공격 패턴을 추가하거나 인터넷을 통하여 계속적으로 업데이트합니다. 사용자는 새로운 네트워크 공격에 대한공격 패턴을 생성하여 Snort 침입탐지 패턴 메일링 리스트 (http://www.snort.org/lists.html)로 제출하여 모든 Snort 사용자들이 혜택을 함께 누릴 수 있습니다. 이러한 커뮤니티 공유 정신에 힘입어 Snort는 가장 업데이트되고 강력한 네트워크 기반 IDS 중 하나로 자리잡게 되었습니다.
알림 | |
---|---|
Snort는 Red Hat Enterprise Linux에 포함되어 있지 않으며 지원되지 않습니다. 이 문서에서는 이 응용 프로그램을 사용하고자 하시는 사용자를 위한 참고 자료로서 언급되었습니다. |
Snort에 대한 보다 자세한 정보는 공식 웹사이트 http://www.snort.org/를 참조하시기 바랍니다.
10장. 사고 대응
시스템 보안을 위협하는 침입 행위가 발견되었을 때 사고 대응(incident response)이 필요합니다. 침해사고 발생시 재빨리 효율적으로 문제에 대처하는 것이 보안팀의 역할입니다.
10.1. 사고 대응이란 무엇인가
사고 대응이란 보안사고 발생시 신속히 침해 사고에 대응하는 것을 의미합니다. 정보 보안과 관련된 예를 들자면 해커가방화벽을 통과하여 내부 네트워크 트래픽을 훔쳐보고 있는 경우 보안팀이 이에 대하여 대응하는 것을 들 수 있습니다. 이 사고는보안 침해입니다. 이 보안 침해 사고에 대한 대응책은 보안팀이 데이터의 무결성을 보장하면서 어떻게 이 문제에 대응하고, 손해를최소화하기 위해 어떠한 대응책을 취하며 또한 언제 자원을 복구할 것인지에 따라 달라집니다.
여러분이 근무하시는 회사를 한번 생각해보십시오.얼마나 많은 부분이 컴퓨터 기술과 시스템에 의존하고 있습니까? 만일 회사컴퓨터 시스템이 침입당한다면 얼마나 많은 타격을 입을 것인지 상상이 가십니까? 시스템이 다운되고 자료를 잃는 것을 제외하고서도,자료가 손상되고, 공개적으로 웃음거리가 되며, 온라인 직원 기록부에서 도둑을 찾아내거나, 심지어는 고객과 사업 협력 업체에서이러한 뉴스를 듣고 자사와 거래를 끊게된다면 재정적으로도 엄청난 손해를 입게됩니다.
과거 내부와 외부 보안 침해에 대한 연구 조사에 따르면 일부 회사는 심각한 보안 침해의 결과로 회사의 문을 닫았다야 했다고밝혀졌습니다. 이러한 보안 침해는 회사 자원을 사용할 수 없고 자료가 도난당하거나 손상되는 결과를 초래합니다. 그러나 나쁜 회사이미지와 같은 재정적으로는 환산할 수 없는 문제점도 간과할 수 없습니다. 신속하고 효율적인 사고 대응의 중요성에 대해 보다자세히 알아보기 위해서는 실제 보안 침해로 인한 손해 액수와 더불어 부정적인 회사 이미지가 회사 재정에 미치는 영향을 단기간과장기간에 걸쳐 환산해보셔야 합니다.
10.2. 사고 대응 계획 세우기
기업체에서 사고 대응 계획을 수립하고 회사 전체적으로 지원하며 정기적으로 이 계획을 검사하는 것이 매우 중요합니다. 체계적인 사고 대응 계획은 보안 침해로 인한 손해를 최소화시킬 뿐만 아니라 회사에 대한 부정적인 이미지를 줄이는 데도 도움이 됩니다.
보안팀 측면에서 중요한 것은 이러한 보안 침해가 발생하느냐가 아니라 언제 보안침해가 일어나는가 입니다 (인터넷과 같은 신뢰할 수 없는 공중 네트워크를 사용하는 기업체에서는 경우에 따라 보안 침해가 일어날수도 있기 때문에). 절대 시스템이 약해서나 약점이 있어서 침입을 당한다고 생각하지 마십시오; 충분한 시간과 자원만 있다면 가장보안이 철저한 시스템이나 네트워크도 침입당할 수 있다는 사실을 염두해 주십시오. Security Focus 웹사이트 http://www.securityfocus.com/를 보시면 해커들에 의해 기업체 웹페이지가 종종 조작되는 사건에서 부터 2002년 루트 DNS 네임서버 공격 사건[1]에 이르기까지의 최신 보안 침해 사건과 취약점에 대한 업데이트된 자세한 정보를 살펴보실 수 있습니다.
시스템이 보안 침해를 당할 수 있다는 불가피성을 인정함으로서 보안팀은 잠재적 손해 정도를 최소화할 수 있는 보안 대책을수립할 수 있게 됩니다. 보안팀은 보안 대책에 전문적 기술을 결합하여 보다 체계적이고 신속한 방식으로 대응해야 합니다.
사고 대응 계획을 다음과 같은 4가지 단계로 구분할 수 있습니다:
사고를 멈추거나 최소화하기 위한 즉각적인 대응
사고에 대한 조사
손상된 자원 복구
사고 발생을 적절한 담당자에게 보고
사고 대응은 명확하고 신속하게 실행될 수 있어야 합니다. 비상 사태를 미리 예행 연습히하여 대응 시간을 측정하여 오류를최소화할 수 있습니다. 이러한 방법을 통하여 실제 시스템 침입이 발생할 경우 자원 손상을 최소화하면서 보다 빠르고 정확하게대처할 수 있는 대응 체계를 갖출 수 있습니다.
사고 대응 계획을 세우기 위해서는 다음과 같은 요소가 갖추어져야 합니다:
기업내 전문가로 이루어진 팀 (컴퓨터 비상 대응팀)
합법적으로 검토되고 공인된 대응 계획
회사의 재정적인 지원
간부/상부 관리팀으로부터의 지원
실행 가능하며 시험을 거친 실천 계획
중복 저장 장치, 대기 시스템 및 백업 서비스와 같은 물리적 자원
10.2.1. 컴퓨터 비상 대응팀 (CERT)
컴퓨터 비상 대응팀 (CERT)은 심각한 컴퓨터 침입 사고 발생시신속하게 대응할 준비가 된 회사 내 전문가들로 이루어진 그룹을 말합니다. 이 팀의 구성원은 전문적인 기술 뿐만 아니라 비상 사태발생시 자신의 개인 생활을 제쳐두고 회사를 먼저 생각하는 태도가 필요합니다. 비상 사태는 계획된 사건이 아니며 언제든지 발생할가능성이 있기 때문에 모든 CERT 팀 구성원은 언제든 비상시에 대처할 책임을 맡습니다.
CERT 팀은 일반적으로 시스템 관리자와 네트워크 관리자를 비롯하여 정보 보안 전문가들로 이루어집니다. 시스템 관리자는데이터 백업, 사용 가능한 백업 하드웨어와 같은 시스템 자원에 대한 전문 지식을 제공합니다. 네트워크 관리자는 네트워크프로토콜에 대한 정보와 네트워크 트래픽을 동적으로 다시 라우팅할 수 있는 기술을 제공합니다. 정보 보안 전문가는 보안 문제점을철저하게 추적하고 기록할 뿐만 아니라 침입당한 시스템의 사후 분석(post-mortem: 일이 발생 후 분석) 작업을 돕습니다.
항상 가능한 것은 아니지만 경우에 따라서 CERT 내에서 한 사람이 여러 역할을 맡을 수도 있습니다. 기업체에 따라서가능하다면 한 사람이 자신의 전문 분야 뿐만 아니라 다른 분야에 대한 교육도 받도록 해야합니다. 만일 오직 한 사람만이 기업전체 데이터와 보안을 책임지고 있다면, 그 사람이 없는 경우 전체 기업이 속수 무책이 됩니다.
10.2.2. 법적 고려 사항
사고 대응책을 수립시 법적인 측면을 고려하는 것이 중요합니다. 반드시 법률 고문이나 대표 변호사와 함께 보안 대책을수립하셔야 합니다. 모든 회사마다 자체적인 회사 보안 정책을 갖고 있듯이, 회사마다 법적인 측면에서도 자체적으로 사건을 처리하는방식이 있습니다. 지방 정부, 주 정부 및 연방 정부의 규제 방침을 다루기에는 이 문서의 범위를 벗어나 모두 설명할 수는 없지만사고 발생 후 분석에 사용되는 방법이 부분적으로 법률 자문에 의해 지시되기 때문에 이러한 규제 방침이 언급되어 있습니다. 법률자문은 기술 담당자에게 보안 침해의 법적으로 고려할 사항 및 시스템 침해 사고로 인하여 고객의 개인 신상 정보, 의료 기록이나재정 정보를 누출하게 될 경우 위험성, 그리고 병원이나 은행과 같이 시스템의 보안이 매우 중요한 환경에서 서비스 복구의 중요성을충고합니다.
주석
[1] |
10.3. 사고 대응 계획을 실행하기
일단 실행 계획이 완성되었다면 모든 팀 구성원이 동의하고 시험 실행해 보아야 합니다. 시험 실행 과정에서 문제가 제기되는측면이 있다면 시스템 침해 사고가 발생하였을 때 대응 시간을 늦추고 시스템 다운 시간이 길어지는 결과를 초래할 수 있습니다.따라서 연습 실행의 중요성을 간과할 수 없습니다. 실행 계획이 생산 환경에서 사용되기 전에 바로 보안 관련 작업과 연계된구성원들의 동의를 얻은 후 확신을 가지고 실행되어야 합니다.
만일 보안 사고가 발생하였고 ERT 팀이 즉각적으로 대응 가능하다면 여러가지 대응책을 구현 가능합니다. 보안팀은 네트워크연결을 해제하고, 노출된 시스템을 연결 해제하며 발생한 문제를 패치한 후 향후 다른 문제가 발생하지 않을지 확인 후 재빨리 다시연결하는 방법을 취할 수 있습니다. 또는 침입자를 감시한 후 그들의 작업을 추적할 수도 있습니다. 보안팀은 또한 의도적으로침입자를 honeypot — 고의로 잘못된 데이터를 저장한 네트워크 상의 시스템 — 으로 유도하여 생산 자원에 손상을 주지 않고 안전하게 침입자를 추적할 수도 있습니다.
사고 대응시에는 정보 수집도 중요한 과정입니다. 실행 중인 프로세스, 네트워크 연결, 파일, 디렉토리 등과 같은 정보를실시간으로 활발하게 감시해야 합니다. 생산 자원 정보를 한눈에 비교할 수 있어 침입에 노출된 서비스나 프로세스를 쉽게 추적하는데유용합니다. CERT 구성원과 회사 내 전문가들은 시스템에서 예례적인 상태를 찾아내는데 중요한 역할을 합니다. 시스템 관리자는 top 이나 ps 명령을 실행시 정상적인 프로세스와 예외적인 프로세스를 쉽게 찾아낼 수 있습니다. 네트워크 관리자는 snort와 심지어는 tcpdump 명령을 실행시 정상적인 네트워크 트래픽 유형을 잘 알고 있습니다. 따라서 이러한 팀 구성원들은 회사의 시스템 구조에 익숙하지 않은 외부 전문가 보다 빠르게 예외 상황을 찾아낼 수 있습니다.
10.4. 사고 조사
컴퓨터 보안 사고를 조사하는 것은 마치 범죄 현장을 조사하는 것과 같습니다. 형사는 증거를 수집하고 눈에 띄는 단서를기록하며 도난 당하거나 손상된 물품의 목록을 기록합니다. 공격이 행해지는 동시에 사고를 분석하거나 또는 침해 공격이 발생한 후 (post-mortem) 보안 사고를 분석할 수도 있습니다.
보안 사고가 발생한 시스템의 시스템 로그 파일을 믿는 것은 현명하지 않습니다. 따라서 보안 사고를 분석하고 수사하는데도움이 될 만한 다른 도구를 사용하실 수 있습니다. 이 도구들은 각자 다른 기능과 목적을 지니고 있지만, 기본적으로 매체의 비트이미지를 생성한 후 사고와 프로세스 간에 상호 관계를 밝히고 저수준 파일 시스템 정보를 보여주며 삭제된 파일을 최대한복구합니다.
다음 예시와 같이 script 명령을 사용하여 보안 사고가 발생한 시스템 상에서 실행된 모든 조사 과정을 기록해두시는 것이 좋습니다:
script -q <file-name> |
<file-name> 부분을 script 로그의 파일 이름으로 대체하시기 바랍니다. 보안 침해 당한 시스템의 하드 드라이브가 아닌 다른 매체에 로그 파일을 저장하셔야 합니다 — 플로피 디스크나 CD-ROM이 이러한 용도로 특히 잘 사용됩니다.
조사 과정을 기록함으로서 만일 침입자가 발견될 경우 이러한 추적 정보가 유용하게 사용될 수 있습니다.
10.4.1. 증거가 되는 이미지 수집하기
먼저 첫 단계로서 매체의 비트 이미지를 복사하셔야 합니다. 데이터 수사 작업을 수행하신다면 반드시 필요한 작업입니다. 두개의 복사본을 만드시길 권장합니다: 한 개는 사고 분석과 조사를 위해, 다른 하나는 원본과 함께 법정에서 증거로 제출하기 위해보관하셔야 합니다.
Red Hat Enterprise Linux의 coreutils 패키지에 포함된 dd명령을 사용하여 보안 침해 당한 시스템의 단일 이미지를 생성하여 조사 과정에서 증거로 사용하거나 신뢰할 수 있는 이미지와비교하는데 사용하실 수 있습니다. 만일 이미지를 복사하려는 시스템에 한개의 하드 드라이브가 있다고 가정합니다. 이 드라이브를시스템에 슬레이브로 접착하신 후 다음과 같이 이미지 파일을 생성하기 위해 dd 명령을 사용하시기 바랍니다:
dd if=/dev/hdd bs=1k conv=noerror,sync of=/home/evidence/image1 |
이 명령은 1k 블록 사이즈 속도를 사용하여 image1라는 단독 파일을 생성합니다. conv=noerror,sync 옵션은 드라이브에서 잘못된 섹터가 발견되어도 dd 명령이 계속해서 데이터를 읽고 덤프하도록 강제합니다. 이제 결과 이미지 파일을 조사하거나 삭제된 파일을 복구 시도하는 것도 가능합니다.
10.4.2. 보안 사고 발생 후 정보 수집하기
디지털 수사와 분석이란 주제는 매우 광범위한 의미이지만 수사와 분석 도구들은 대부분이 특정 구조에 한정되어 사용되기 때문에일반적으로 적용될 수는 없습니다. 그러나 사고 대응, 분서 및 복구는 매우 중요한 주제입니다. 사용자에게 적절한 지식과 경력만있다면 Red Hat Enterprise Linux는 보안 사고 발생 후 대응과 복구를 수행하는데 사용될 수 있는 여러 도구를포함하고 있으므로 이러한 유형의 분석을 수행하는데 훌륭한 플랫폼이 될 수 있습니다.
표 10-1에서는 파일 감사와 관리에 사용되는 몇몇 명령어를 보여줍니다. 또한 파일과 파일 속성 (예, 허가와 마지막 접근 날짜)을 적절하게식별하여 사고 분석을 위해 증거 항목을 수집하는데 사용 가능한 일부 예시 도구도 나와있습니다. 이러한 도구를 침입 검색 시스템,방화벽, 보안 강화된 서비스 및 다른 보안 조치와 함께 사용한다면 보안 침입시 최대한 손상을 줄일 수 있습니다.
알림 | |
---|---|
각 도구에 대한 자세한 정보를 보시려면 상응하는 메뉴얼 페이지를 참조하시기 바랍니다. |
명령 | 기능 | 예제 |
---|---|---|
dd | 파일과 파티션의 비트 이미지 복사본 (디스크 덤프)를 생성합니다. 관리자는 각 이미지의 md3sum 검사와 더불어 보안 침입이 발생하기 전 파티션이나 파일의 이미지와 이후 이미지를 비교하여 체크섬이 일치하는지 확인하실 수 있습니다. | dd if=/bin/ls of=ls.dd |md5sum ls.dd >ls-sum.txt |
grep | 파일과 디렉토리 내에서 유용한 문자열 (텍스트) 정보를 찾아낼 뿐만 아니라 허가, 스크립트 변경 사항, 파일 속성 등과 같은 정보도 보여줍니다. 대부분의 경우 ls, ps, 또는 ifconfig와 같은 명령어와 함께 파이프된 명령어로 사용됩니다. | ps auxw |grep /bin |
strings | 파일 내에서 인쇄 가능 문자열을 인쇄합니다. 실행 가능 파일에서 예외적인 증상을 찾아내는데 매우 유용합니다. 예를 들어 mail 명령어가 알 수 없는 주소로 메일을 보내거나 표준이 아닌 로그 파일로 기록하는 것과 같은 증상을 찾아낼 수 있습니다. | strings /bin/ps |grep 'mail' |
file | 파일의 특성을 형식, 인코딩, (만일 있다면) 링크된 라이브러리와 파일 유형 (이진 파일, 텍스트 파일 등)을 알아냅니다. 이 명령은 /bin/ls와 같은 실행 파일이 정적 라이브러리를 사용하여 수정되었는지를 알아내는데 유용합니다. 만일 수정되었다면 침입자가 이 실행 파일을 새로 설치한 파일로 대체했다는 증거입니다. | file /bin/ls |
find | 디렉토리에서 특정 파일을 찾아냅니다. 키워드, 날짜,접근 날짜, 파일 허가 등을 사용하여 디렉토리 구조를 검색하는데 유용한 도구입니다. 또한 관리자가 특정 디렉토리나 파일에서 일반시스템 감사 작업을 수행하는데도 유용하게 사용됩니다. | find -atime +12 -name *log* -perm u+rw |
stat | 마지막으로 파일을 액세스한 시간, 허가, UID 및 GID 비트 설정 등과 같은 파일 상태 정보를 보여줍니다. 보안 침해된 시스템 실행 파일이 언제 마지막으로 사용되거나 수정되었는지 확인하는데 유용합니다. | stat /bin/netstat |
md5sum | md5 해시 알고리즘을 사용하여 128 비트 체크섬을계산합니다. 이 명령을 사용하여 보안 문제 발생시 가장 빈번히 수정되거나 대체되는 모든 중요한 실행 파일의 목록을 담은 텍스트파일을 생성하십시오. 체크섬을 파일로 리다이렉트하여 단순 체크섬 데이터베이스를 생성 후 파일을 CD-ROM과 같은 읽기 전용매체로 복사하시기 바랍니다. | md5sum /usr/bin/gdm >>md5sum.txt |
표 10-1. 파일 감사 도구
10.5. 자원 복구하기
사고 대응 과정에서 CERT 팀은 사고 조사와 더불어 데이터와 시스템 복구 작업을 진행해야 합니다. 불행히도 보안 사고자체가 복구를 매우 힘들게 만듭니다. 따라서 백업이나 오프라인, 중복 시스템을 미리 갖추고 있다면 파일과 시스템 복구에 무엇보다값진 자산이 될 것입니다.
시스템을 복구하기 위해서는 보안 대응팀은 인증 서버, 데이터베이스 서버 및 다른 생산 자원 중 다운된 시스템이나 응용 프로그램을 온라인 상태로 되돌려야 합니다.
여분의 하드 드라이브와 (hot-spare) 서버와 같이 필요시에 즉시 사용 가능한 생산 백업 하드웨어를 미리 준비해두시길적극 권장합니다. 이렇게 준비하신 백업 시스템은 모든 생산 소프트웨어가 로딩되어 있으며 즉시 사용 가능해야 합니다. 가장 최신의관련 데이터만 가져오기(import)하면 됩니다. 이 시스템은 전체 네트워크로부터 격리되어 보관하셔야 합니다. 만일 보안 침입사고가 발생시 백업 시스템이 네트워크에 연결되어 있다면 백업 시스템을 두는 목적이 상실됩니다.
시스템 복구 작업은 길고 지루한 작업일 수 있습니다. 많은 경우 다음과 같은 두 가지 작업을 선택 가능합니다. 관리자는보안 문제가 발생한 시스템에서 모든 응용 프로그램과 데이터를 복구한 후 운영 시스템을 재설치하는 방법을 선택하거나 또는 침입당한 취약점을 패치한 후 시스템을 다시 운영 시작하는 방법을 선택할 수도 있습니다.
10.5.1. 시스템 재설치하기
보안 문제가 발생한 시스템을 재설치하시면 해커가 남겨두었을 트로이 목마 공격이나 백도어 또는 악의성 프로세서를 말끔히제거할 수 있습니다. 시스템을 재설치하시면 또한 신뢰할 수 있는 백업 소스에서 복구된 모든 데이터가 해커에 의해 수정되지 않은것을 보증할 수 있습니다. 전체 시스템 복구의 단점은 시스템을 처음부터 다시 재설치하는데 소요되는 시간입니다. 그러나 만일 가장최신의 데이터를 덤프하기만 하면 바로 사용 가능한 (hot) 백업 시스템이 존재한다면, 시스템 다운 시간을 크게 줄일 수가 있습니다.
10.5.2. 시스템 패치하기
침입당한 시스템을 패치하는 것은 보다 위험한 작업이며 매우 신중하게 수행하셔야 합니다. 시스템을 재설치하지 않고 패치한 경우 문제점은 그 시스템에서 트로이 목마 공격이나 보안 헛점 또는 손상된 자료가 모두 제거되었는지 알아내는 것입니다. 대부분의 rootkits(크래커가 시스템에서 루트 액세스를 얻기위해 사용하는 프로그램이나 패키지), 트로이 목마 시스템 명령 및 쉘 환경은 소홀한 감사작업을 통해서는 발견되지 않도록 설계되었습니다. 따라서 시스템 패치 작업을 선택하신다면 오직 신뢰할 수 있는 바이너리 (예,마운트된 읽기 전용 CD-ROM)만 사용하셔야 합니다.
10.6. 사고 보고하기
사고 대응 계획의 마지막 단계는 사고를 보고하는 것입니다. 보안팀은 대응 과정을 기록한 후 지역 관리 기관과 연방 관리 기관과 같은 조직이나 CVE (Common Vulnerabilities and Exposures) 사이트 http://cve.mitre.org/와같은 멀티벤더 소프트웨어 취약성 포탈 사이트에 모든 문제점을 보고하셔야 합니다. 기업에서 자문을 구하는 법률 상담자에 따라서사고 발생 후 분석 조사 작업이 필요할 수도 있습니다. 비록 보안 침입 사고를 분석하는 것이 시스템 운영에는 필수 요건은아니더라도, 사고 발생 후 조사 작업을 통하여 크래커의 의도와 시스템 구조 방식을 알아내어 미래에 발생할 보안 문제를 방지할 수있습니다.
부록 A. 하드웨어와 네트워크 보안
시스템을 생산 환경에 배치하거나 자사의 네트워크를 인터넷에 연결할 수 있는 가장 좋은 방법은 먼저 기업의 요구와 그 요구를 충족시킬 수 있는 보안 방법을 찾는 것입니다. Red Hat Enterprise Linux 보안 가이드는Red Hat Enterprise Linux 보호에 중점을 두고 설명하고 있으며, 하드웨어 보안 및 네트워크 보안에 대한 내용은심도있게 다루고 있지 않습니다. 그러나 이 장에서는 하드웨어와 네트워크와 관련된 보안 정책을 수립하는 방법에 대하여 간략히설명해 보겠습니다. 전반적인 보안 정책을 수립시 컴퓨팅 요건과 연결 요건을 먼저 중요하게 고려하셔야 합니다. 다음에는 이러한요건에 대하여 보다 자세히 설명해보겠습니다.
컴퓨팅 (Computing)이란 단지 데스크탑 소프트웨어를 운영하는워크스테이션 이상을 의미합니다.현대 기업체에서는 메인프레임, 계산 또는 응용 프로그램 클러스터, 강력한 워크스테이션 및 전문장치를 포함하는 대용량 계산 능력과 고가용성 서비스를 필요로 합니다. 이렇게 기업의 컴퓨터 요건이 증가되면서 하드웨어 고장,천재 지변과 기계 침입이나 절도 발생율도 증가되었습니다.
연결성 (Connectivity)이란 관리자가 다른 자원들을 네트워크 상에서 연결하는 방법을 의미합니다. 관리자는 이더넷 (헙이나 CAT-5/RJ-45 케이블로 연결), 토큰 링, 10-base-2 동축 케이블 또는 심지어 무선 (802.11x)기술도 사용 가능합니다. 관리자가 어떤 방법을 선택하냐에 따라서 일부 매체와 네트워크 구조는 헙, 라우터, 스위치, 기지국 및액세스 포인트와 같은 추가 기술을 필요로 합니다. 실용적인 네트워크 구조를 선택하는 것이 이후 어떠한 보안 문제가 발생하더라도보다 쉽게 관리 작업을 수행할 수 있는 지름길 입니다.
시스템 관리자는 이러한 전반적인 사항을 고려하여 네트워크 구현 방법에 대한 이해를 넓힐 수 있습니다. 그 후 기업의 요건과보안 관련 고려 사항들을 염두하여 이 두가지 요소들이 모두 실현될 수 있는 컴퓨팅 환경을 설계하도록 합니다.
A.1. 보안 네트워크 구성 방식
LAN의 기초는 구성 방식, 즉 네트워크 구조입니다. 네트워크 구성 방식이란네트워크를 구성하는 자원, 각 노드 간의 거리 및 전송 방식에 대한 LAN의 물리적 배치와 논리적 배치를 말합니다. 기업의네트워크 요건에 따라서 여러 다른 방식으로 네트워크를 구현 가능합니다. 서로 다른 장단점이 존재하며 네트워크 배치를 설계하면서특정 네트워크 구조와 관련된 보안 문제점들을 고려해야 합니다.
A.1.1. 물리적 구성 방식
LAN의 물리적 연결 방식은 IEEE (Institute of Electrical and Electronics Engineers)에 의해 3가지 형태로 나누어집니다.
A.1.1.1. 원형(Ring) 구성
원형 (Ring) 구성 방식에서 각 컴퓨터는 다른 두대의 컴퓨터와 연결됩니다.각 컴퓨터는 단일 선로를 사용하여 원형으로 연결되며, 개별 컴퓨터를 걸쳐 자원을 전달합니다. 토큰 링, FDDI 및 SONET네트워크가 이러한 방식으로 연결됩니다 (이중 링(dual-ring) 구조를 갖는 FDDI); 그러나 일반적으로 이러한 물리적구성 방식을 사용하는 이더넷 접속은 없습니다. 따라서 원형 방식은 레가시 시스템이나 대학교와 같이 대규모 기반 컴퓨터가 설치된공공 기관을 제외하고는 자주 사용되지 않습니다.
A.1.1.2. 선형(Linear Bus) 구성
선형 (linear bus) 구성은 공동 접속 선형 케이블(backbone이라고 부름)에 모든 컴퓨터를 연결하는 방식입니다. 선형 방식은 최소한의 케이블과 네트워킹 기구만 사용하기때문에 가장 단순하고 경비가 저렴합니다. 그러나 선형 구성은 백본(backbone)에 문제가 있으면 전체 회선이 마비되는 장점이있습니다. 선형 구성 방식은 일반적으로 양 끝단에 50-93 오옴 저항기(ohm terminator)가 있는 동축(coax)케이블을 사용하는 동등 계층(peer-to-peer) LAN에 사용됩니다.
A.1.1.3. 별형(star) 구성
별형 (Star) 구성은 모든 컴퓨터가 중앙 장치에 연결되는 방식입니다. 이 중앙 장치는 허브(hub)라고 부르며, 방송 통신망 (broadcasted) 또는 교환 회선망 (switched)으로 구성됩니다. 이 구조는 허브에 장애가 발생할 경우 네트워크 전체가 마비되는 단점이 있지만, 허브를 중심으로 구성되어 있기 때문에 LAN 전체나 일부에 문제 발생시 그 문제의 원인을 찾기 쉽습니다.
A.1.2. 전송 고려 사항
A.1.1.3 절에서는 방송 통신망과 교환 회선망의 개념에 대하여 설명하였습니다. 여러분 네트워크 환경에서 어떠한 네트워킹 하드웨어가 적합한지결정하실 때엔 몇가지 사항을 먼저 고려하셔야 합니다. 다음은 두가지 네트워크 방식의 차이점에 대하여 설명하고 있습니다.
방송 통신망(broadcast network) 형식은 컴퓨터가 패킷을 내보내면, 그 패킷은 목표 컴퓨터에 도달할 때까지다른 모든 컴퓨터를 통하여 전달됩니다. 네트워크 내의 모든 컴퓨터는 목표 컴퓨터가 패킷을 받아 처리할 때까지 이 데이터 패킷을계속 전송받습니다. 방송 통신망에서는 모든 패킷이 이러한 방식으로 보내집니다.
교환 회선망(switched network)에서는 패킷이 브로드캐스트되지 않고 교환 허브에서 패킷을 받아 단일 전송 방식을 사용하여 목표 컴퓨터에 바로 전달하는 방식입니다. 이 방식은 패킷을 각 컴퓨터에 브로드캐스트할 필요가 없기 때문에 소통량 부하를 현저히 줄일 수가 있습니다.
교환 회선망은 또한 중간에 침입자나 악의를 가진 사용자가 패킷을 가로채는 것을 방지합니다. 방송 통신망에서는 목표 컴퓨터로 패킷이 전송되는 과정에서 각 컴퓨터를 거치기 때문에, 악의를 가진 사용자가 자신의 이더넷 장치를 무차별 (promiscuous)모드로 지정하여 도착하는 모든 패킷을 필터링하지 않고 받아들일 수 있습니다. 침입자는 이 모드에서 시스템 내부에 부정한 수단으로침입해서 통신망을 흐르는 패킷을 감시하는 소프트웨어인 sniffer 프로그램을 사용하여 패킷에서 사용자의 암호, 개인 자료 등과같은 정보를 수집할 수 있습니다. 정교한 스니퍼 프로그램은 이러한 정보를 텍스트 파일로 저장하여 임의 소스 (예, 침입자의이메일 주소)로 정보를 보낼 수도 있습니다.
교환 회선망은 LAN 상의 모든 컴퓨터가 연결된 기존 허브(hub)의 역할을 대신하는 특수 하드웨어인, 네트워크 스위치를필요로 합니다. 스위치는 모든 컴퓨터의 MAC 주소를 내부 데이버테비스에 저장하고 있으며, 이 데이터베이스를 사용하여 직접라우팅(direct routing)을 수행합니다. Cisco Systems, D-Link, SMC, Netgear와 같은제조업체에서는 10/100-Base-T 호환성과 기가비트 이더넷 지원, IPv6 네트워킹과 같은 여러가지 기능을 갖춘 다양한유형의 스위치를 제공합니다.
A.1.3. 무선 네트워크
최근 기업체에서는 휴대용 컴퓨팅의 중요성이 나날이 부각되고 있습니다. 특히 재택 근무자와 출장 전문 기술자 및 회사중역급은 랩탑 컴퓨터와 PDA (Personal Digital Assistants) 및 무선 장치를 이용하여 기업 네트워크에접속할 일이 잦습니다. IEEE에서는 무선 네트워크에 대한 802.11 무선 표준화 제정 작업을 진행하는 단체를 설립하였습니다.현재 무선 네트워킹에 승인된 IEEE 표준은 802.11g이며, 802.11a와 802.11b은 이전 표준입니다. 802.11g표준은 이전 802.11b 버전과 호환 가능하지만, 802.11a와는 호환되지 않습니다.
802.11b 및 802.11g 규격은 비허가 2.4GHz 주파수 (RF) 대역에 대한 무선 통신과 엑세스 통제를 관리하는무선 표준입니다 (802.11a는 55GHz 대역을 사용합니다). 이 규격은 IEEE에 의해 표준으로 승인되었으며, 여러업체에서는 802.11x제품과 서비스를 판매하고 있습니다. 소비자들은 또한 재택 근무 (SOHO) 네트워크에 이 표준을 사용하고 있습니다. 이 표준의인기는 LAN 뿐만 아니라 MAN (도시 지역 통신망: Metropolitan Area Network)으로 확산되었습니다. 특히인구가 밀집되어 무선 액세스 포인트 (WAPs) 사용이 집중된 지역에서 많이 사용되고 있습니다. 또한 잦은 여행으로 인해원격적으로 사업을 운영해야하는 소비자에게 광대역 인터넷 서비스를 제공해주는 WISP (무선 인터넷 서비스 제공업체)도 있습니다.
802.11x 규격은 무선 NIC을 장착한 컴퓨터끼리 바로 동등 계층(peer-to-peer) 연결이 가능합니다. 이러한 ad hoc 네트워크는 두 개나 그 이상의 컴퓨터를 공유하는 짧은 접속에 이상적이지만, 동시에 여러 요청에 응답하면서 성능을 유지할 수 있는 능력 (범위성)에 문제가 있기 때문에 전용 무선 연결에는 적합하지 않습니다.
고정된 구조에서 무선 연결하는 가장 좋은 방법은 한 개 이상의 WAP을 설치하여 기존 네트워크에 연결하고 무선 컴퓨터들이WAP이 이더넷 네트워크 상에 존재하는 것처럼 연결하는 것입니다. WAP은 연결된 컴퓨터와 네트워크 사이에서 효율적인 중개역할을 담당할 것입니다.
A.1.3.1. 802.11x 보안
비록 무선 네트워크가 기존 유선 네트워크 매체에 비해 속도면에서 동등하며 확실히 편리하긴 하지만, 몇가지 고려해야할 한계점들이 있습니다. 이러한 한계점 중 가장 중요한 것은 적절한 보안 정책 구현입니다.
802.11x 네트워크를 성공적으로 배치하는데 너무 심혈을 기울인 나머지, 많은 관리자들은 가장 기본적인 보안 사전 대책을 간과하였습니다. 모든 802.11x 네트워킹은 광대역 RF 신호를 사용하여 운영되므로, 호환 NIC이나 NetStumbler 또는 Wellenreiter와 같은 무선 네트워크 스캐닝 도구 및 dsniff와 snort와같은 해킹(sniffing) 도구를 가진 사용자들은 쉽게 전송 데이터를 가로챌 수 있습니다. 이러한 불법적인 사설 무선네트워크의 사용을 방지하기 위하여, 802.11b 표준은 WEP (Wired Equivalency Privacy) 프로토콜을사용합니다. 이 포로토콜은 RC4-기반 64 비트 또는 128 비트 암호키로서 시스템이나 WAP과 시스템 간에 공유됩니다. 이키는 동적으로 투명하게 전송 데이터를 암호화하고 들어오는 패킷을 암호 해독합니다. 시스템 관리자가 가끔씩 이 공유 키 암호화기법을 사용하지 않는 경우가 있습니다; 사용하는 것을 잊어버린 경우도 있고 또는 성능이 저하되기 때문에 (특히 오랜 작업시)일부러 사용하지 않는 경우도 있습니다. 따라서 무선 네트워크 상에서 WEP 기능을 사용하시면 침입자가 데이터를 가로챌 가능성을크게 줄일 수 있습니다.
Red Hat Enterprise Linux는 여러 다른 제조업체의 다양한 802.11x 제품을 지원합니다. 네트워크 관리 도구에는 무선 NIC과 WEP 보안을 설정하는 기능이 포함되어 있습니다. 네트워크 관리 도구 사용 방법에 대한 정보는 Red Hat Enterprise Linux 시스템 관리 가이드의 네트워크 설정 장을 참조하시기 바랍니다.
WEP 만으로 침입자가 데이터를 가로채는 것을 완전히 방지할 수는 없습니다. AirSnort 및 WEP Crack와같이 특별히 무선 네트워크 보안에 사용되는 RC4 WEP 암호 알고리즘을 해독하도록 만들어진 특수 장치들이 존재하기 때문입니다.이러한 장치를 사용하여 데이터를 가로채는 것을 방지하기 위해서는, 관리자는 기밀 정보에 무선 네트워크를 통하여 액세스하는 것에대한 엄격한 보안 규칙을 사용해야 합니다. 시스템 관리자는 WEP 암호 위에 추가 암호층을 사용하는 SSH 또는 VPN 연결만허용함으로서 무선 접속 보안을 증강시킬 수 있습니다. 이러한 규칙을 사용함으로서, 네트워크 외부에서 WEP 암호를 해독한침입자는 추가적으로 VPN 또는 SSH 암호까지 해독해야 합니다. VPN과 SSH 암호는 3배나 강도가 높은 168 비트 DES알고리즘 암호화 (3DES) 기술이나 보다 강한 사유 알고리즘을 사용하기 때문에 해독이 거의 불가능합니다. Telnet이나FTP와 같은 평문 프로토콜은 암호와 데이터를 암호화하지 않고 평문으로 전송하기 때문에 앞서 설명된 특수 장치들을 사용하면 쉽게노출될 수 있으므로, 무선 접속시에는 사용하지 않는 것이 좋습니다.
무선 네트워킹 장치 제조업체에서 최근 사용하는 보안 및 인증 방식은 Wi-fi Protected Access (WPA) 입니다. 시스템 관리자는 무선 네트워크에 접속하는 클라이언트의 키를 관리하는 인증 서버를 사용하여 네트워크에 WPA를 설정할 수 있습니다. TKIP (Temporal Key Integrity Protocol)은 공유키를 사용하여 클라이언트 시스템에 설치된 무선 네트워크 카드의 MAC 주소와 공유키를 접합시키는 프로토콜으로서, 이 프로토콜을 사용하여 WPA에 WEP 인증을 추가할 수 있습니다. 공유키와 MAC 주소값은 IV (initialization vector)에 의해 처리된 후 각 데이터 패킷을 암호화하는 키를 생성합니다. IV는 패킷이 전송될때마다 키를 변경하여 가장 흔하게 발생하는 무선 네트워크 공격을 방지합니다.
그러나 TKIP를 사용한 WPA는 일시적인 솔루션에 불과합니다. AES와 같이 보다 강력한 암호화 기법을 사용한 솔루션이 현재 개발 중에 있으며 향후 엔터프라이즈 무선 네트워크 보안을 향상시킬 것입니다.
802.11 표준에 대한 보다 상세한 정보를 원하신다면, 다음 URL을 방문하시기 바랍니다:
http://standards.ieee.org/getieee802/802.11.html |
A.1.4. 네트워크 분리와 DMZ
HTTP, 이메일, FTP와 DNS처럼 외부 액세스가 가능한 서비스들을 운영하실 경우, 이러한 공공 서비스를 물리적으로그리고 논리적으로 내부 네트워크에서 분리하시기 바랍니다. 방화벽을 사용하고, 호스트 및 응용 프로그램을 강화시켜 침입자들을효율적으로 막을 수 있습니다. 그러나 끈질긴 해커들의 경우, 암호 해독에 성공한 서비스가 네트워크에 연결되어 있다면, 내부네트워크로 침입할 수 있는 방법을 찾아낼 수 있습니다. 따라서 외부에서 접속 가능한 서비스는 보안 업체에서 demilitarized zone(비무장 지대 - DMZ)로 간주하는 내부 네트워크에서 분리된 논리적 네트워크에 위치해야 합니다. 인터넷에서 들어오는 요청은외부에서 접속 가능한 서비스만 사용 가능하며 내부 네트워크로는 접근 금지됩니다. 침입자가 DMZ에 위치한 컴퓨터에 침입한다고하여도, 나머지 내부 네트워크는 방화벽으로 분리된 별개의 네트워크 상에 위치하므로 침입할 수 없습니다.
대부분의 기업체에서는 외부 서비스를 호스트할 수 있는 공개 라우팅 IP 주소 숫자가 제한되어 있습니다. 따라서 시스템관리자는 방화벽 규칙을 사용하여 패킷 전송을 수락, 전송, 거부 (accept, forward, reject, deny)할 수있습니다. iptables이나 복잡한라우팅과 포워딩 규칙을 지원하는 전용 하드웨어 방화벽을 사용하여 방화벽 규칙을 구현 가능합니다. 관리자는 이 방화벽 규칙을사용하여 들어오는 트래픽을 분리하여 특정 서비스를 특정 주소와 포트로 보낼 분만 아니라 LAN만 내부 서비스에 액세스할 수있도록 설정하여 IP spoofing 공격을 방지할 수 있습니다. iptables 구현에 대한 자세한 정보를 원하신다면, 7 장을 참조하시기 바랍니다.
A.2. 하드웨어 보안
FBI와 CSI (Computer Security Institute)에서 2000년에 발표한 조사 결과에 따르면, 기업체내의 기밀 데이터와 자원에 대한 모든 공격의 70 퍼센트가 기업 내에서 발생했다고 합니다. 따라서 기업 내부 보안 규칙을실행하는 것은 외부 보안 규칙을 시행하는 것만큼이나 중요하다고 할 수 있습니다. 다음 부분에서는 관리자와 사용자가 내부 범죄행위로부터 시스템을 보호할 수 있는 방법에 대하여 단계별로 설명해 보겠습니다.
직원들이 사용하는 워크스테이션은 대부분의 경우 원격 공격의 표적이 아닙니다. 특히 적절히 설정된 방화벽으로 보호된워크스테이션은 더욱 안전합니다. 그러나 개인 워크스테이션 자원에 대한 내부 공격이나 물리적 공격을 막을 수 있는 보호책이존재합니다.
최신 워크스테이션과 가정용 PC에는 하드웨어 수준의 시스템 자원을 제어하는 BIOS가 있습니다. 워크스테이션 사용자는BIOS에 관리자용 암호를 설정하여 다른 사용자가 시스템을 사용하거나 부팅하는 것을 방지할 수 있습니다. BIOS 암호 때문에다른 사용자가 시스템을 부팅할 수 없으므로, 하드 드라이브에 저장된 정보를 재빨리 본다거나 가로채는 것이 불가능합니다.
그러나 만일 침입자가 PC를 훔친 후 (랩탑이나 휴대용 컴퓨터를 가지고 자주 여행다니는 경우 이러한 절도가 자주발생합니다) 다른 곳에서 PC를 해체하는 경우에는 BIOS 암호가 아무런 소용이 없습니다. 침입자는 하드 드라이브를 빼내어BIOS 제한이 없는 다른 PC에 설치한 후 하드 드라이브를 마운트하여 저장된 내용을 읽을 수가 있습니다. 이러한 경우를대비하여, 워크스테이션에는 내부 하드웨어에 접근하는 것을 제한하는 잠금 장치가 있습니다. 잠금 장치가 있는 강철로된 케이블과같이 특수 보안 장치를 PC와 랩탑에 부착하여 도난을 방지하고 잠금 키(key lock)을 설정하여 내부 액세스를 방지할 수있습니다. 이러한 유형의 하드웨어는 Kensington과 Targus와 같은 제조 업체에서 쉽게 구입하실 수 있습니다.
서버 하드웨어, 특히 생산 서버는 일반적으로 서버실에서 여러 층의 선반에 올려져 있습니다. 서버가 들어있는 캐비넷은 보통잠금 장치가 있는 문으로 보호되어 있으며, 또한 실수나 고의로 시스템을 종료(shutdown)하는 것을 방지할 수 있도록 보안증강을 위해 개별 서버 섀시(chassis)에 자물쇠가 딸린 프론트 베젤(front bezel)을 사용하는 것도 가능합니다.
기업체는 또한 co-location 제공업체를 이용하여 서버를 운영할 수도 있습니다. co-location 제공업체는 보다높안 대역폭과 24x7 기술 지원 및 전문적인 시스템과 서버 보안을 제공합니다. HTTP 트랜잭션이나 스트리밍 미디어 서비스를제공하는 업체에서는 이러한 방법으로 보안과 연결 필요에 맞게 효율적으로 아웃소싱할 수 있습니다. 그러나 co-location시설들은 항상 특수 훈련 받은 경비원에 의해 감시 보호되기 때문에 중소 기업체에서는 특히 co-location 서비스의 비용이매우 많이 듭니다.
부록 B. 일반 보안 취약점과 공격
표 B-1는침입자가 다른 기관의 컴퓨터 네트워크 등을 이용해 불법으로 자료를 유출하는데 가장 흔히 사용하는 침입 방법을 보여줍니다. 이표에서 중요한 점은 침입이 행해진 방법과 시스템 관리자가 이러한 공격에 대비하여 자사의 네트워크를 적절히 보호할 수 있는 방법을찾는 것입니다.
보안 취약점 | 설명 | 알림 | |||
---|---|---|---|---|---|
암호가 없거나 디폴트 암호 사용하는 경우 | 관리자 암호를 설정하지 않거나 판매업체에서 설정한디폴트 암호를 사용하는 경우. 이러한 경우는 라우터나 방화벽에서 자주 발생하지만 일부 리눅스 서비스도 기본 관리자 암호를 그대로사용하는 경우가 종종 있습니다 (Red Hat Enterprise Linux는 제외) |
| |||
디폴트 공유 키 | 보안 서비스는 종종 개발용이나 평가 테스팅에 사용되는 기본 보안 키를 포함하고 있습니다. 만일 이 보안 키가 변경되지 않은 채 인터넷 상 생산 환경에 저장된다면, 동일한 기본 키를 가진 사용자라면 누구든지 그 공유 키와 그 키에 포함된 기밀 정보를 볼 수 있습니다. |
| |||
IP 스푸핑(Spoofing) | 원격 접속한 컴퓨터는 마치 지역 네트워크에 연결된 컴퓨터처럼 작동하며 서버의 취약점을 발견 후 네트워크 자원을 빼내기 위해 백도어(backdoor)나 트로이목마(trojan horse) 프로그램을 설치합니다. |
| |||
도청 (Eavesdropping) | 네트워크 상 두 개의 활성 노드 사이의 통신 선로 전선에 접속하여 정보를 빼내는 행위. |
| |||
서비스 취약점들 | 침입자는 인터넷 상에서 실행되는 서비스에서 허점을 찾아서 그 시스템에 칩입하여 저장된 정보를 가로챌 수 있습니다. 또한 동일한 네트워크 상에 위치한 다른 시스템에 침입하는 것도 가능합니다. |
| |||
응용 프로그램 보안 취약점 | 공격자는 이메일 클라이언트와 같은 데스크탑이나워크스테이션 프로그램의 보안 취약점을 이용하여 임의 코드를 실행하거나 트로이목마(trojan horse)를 설치하여 이후시스템에 침입하거나 시스템을 중단시킬 수도 있습니다. 만일 침입당한 워크스테이션이 네트워크 상 다른 시스템을 통제한다면 다른시스템 침입도 가능합니다. |
| |||
서비스 거부 (DoS) 공격 | 개인이나 그룹으로 공격자들은 허가 없는 패킷을 표적 호스트 (서버, 라우터나 워크스테이션)에 보내어 회사의 네트워크나 서버 리소스를 공격합니다. 이러한 공격으로 인해 권한이 있는 사용자들이 서버 리소스를 사용할 수 없게 됩니다. |
|
표 B-1. 보안 취약점
부록 C. 공용 포트
다음 표는 Red Hat Enterprise Linux에서 서비스, 데몬 및 프로그램에 의해 가장 자주 사용되는 통신 포트의 목록입니다. 이 목록은 /etc/services파일에서도 찾으실 수 있습니다. 인터넷 할당 번호 관리 기관 (Internet Assigned Numbers Authority- IANA)에서 지정한 Well Known(잘알려진 포트), Registered(등록된 포트), Dynamic port(동적인포트) 목록을 보시려면, 다음 URL을 참조하시기 바랍니다:
http://www.iana.org/assignments/port-numbers
알림 | |
---|---|
목록에서 계층 (Layer)은 서비스나 프로토콜이 전송하는데 TCP나 UDP를 사용하는지 보여줍니다. 만일 목록에 나와있지 않으면, 그 서비스/프로토콜은 TCP와 UDP를 모두 사용할 수 있습니다. |
표 C-1는 IANA가 정의한 잘 알려진 포트 목록입니다. 이 포트는 Red Hat Enterprise Linux에서 FTP, SSH, Samba와 같은 다양한 서비스에 기본 통신 포트로 사용됩니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
1 | tcpmux | TCP 포트 서비스 다중화 장치 |
5 | rje | 원격 작업 입력 (Remote Job Entry:RJE) |
7 | echo | Echo 서비스 |
9 | discard | 접속 테스팅을 위한 Null 서비스 |
11 | systat | 연결된 포트를 열거하는 시스템 상태 서비스 |
13 | daytime | 요청하는 호스트에게 날짜와 시간 정보를 보냅니다 |
17 | qotd | 오늘의 한마디를 연결된 호스트에게 보냅니다 |
18 | msp | 메시지 전송 프로토콜 (Message Send Protocol: MSP) |
19 | chargen | 자막 생성 서비스 (Character Generation service); 끊임없이 문자 스트림을 보냅니다 |
20 | ftp-data | FTP 데이터 포트 |
21 | ftp | 파일 전송 프로토콜 (FTP) 포트; 가끔씩 파일 서비스 프로토콜 (FSP)에 의해 사용됩니다 |
22 | ssh | 보안 쉘 (Secure Shell: SSH) 서비스 |
23 | telnet | Telnet 서비스 |
25 | smtp | 단순 메일 전송 프로토콜 (Simple Mail Transfer Protocol: SMTP) |
37 | time | 시간 프로토콜 |
39 | rlp | 자원 위치 프로토콜 (Resource Location Protocol) |
42 | nameserver | 인터넷 이름 서비스 (Internet Name Service) |
43 | nicname | WHOIS 디렉토리 서비스 |
49 | tacacs | TCP/IP 기반 인증과 사용을 위해 사용되는 TACACS (TerminalAccess Controller Access Control System) |
50 | re-mail-ck | 원격 메일 확인 프로토콜 (Remote Mail Checking Protocol) |
53 | domain | 도메인 이름 서비스 (예, BIND) |
63 | whois++ | WHOIS++, 확장된 WHOIS 서비스 |
67 | bootps | 부트스트랩 프로토콜 (Bootstrap Protocol: BOOTP) 서비스; 동적 호스트 설정 프로토콜 (Dynamic Host Configuration Protocol: DHCP) 서비스에 의해서도 사용됩니다 |
68 | bootpc | 부트스트랩 (BOOTP) 클라이언트; 동적 호스트 제어 프로토콜 (DHCP) 클라이언트에 의해서도 사용됩니다 |
69 | tftp | Trivial File Transfer Protocol (TFTP) |
70 | gopher | Gopher 인터넷 문서 검색 |
71 | netrjs-1 | 원격 작업 서비스 |
72 | netrjs-2 | 원격 작업 서비스 |
73 | netrjs-3 | 원격 작업 서비스 |
73 | netrjs-4 | 원격 작업 서비스 |
79 | finger | 사용자 연락 정보를 알아보는 핑거(Finger) 서비스 |
80 | http | WWW (World Wide Web) 서비스에 사용되는 HTTP (HyperText Transfer Protocol) |
88 | kerberos | Kerberos 네트워크 인증 시스템 |
95 | supdup | Telnet 프로토콜 확장 |
101 | hostname | SRI-NIC 기계의 호스트명 서비스 |
102/tcp | iso-tsap | ISO 개발 환경 (ISODE) 네트워크 응용 프로그램 |
105 | csnet-ns | Mailbox 이름 서버; CSO 이름서버에 의해서도 사용됩니다 |
107 | rtelnet | 원격 Telnet |
109 | pop2 | Post Office Protocol 버전 2 |
110 | pop3 | Post Office Protocol 버전 3 |
111 | sunrpc | NFS (네트워크 파일 시스템)에 의해 원격 명령 실행에 사용되는 RPC (Remote Procedure Call) |
113 | auth | 인증과 식별 프로토콜 |
115 | sftp | 보안 파일 전송 프로토콜 (SFTP) 서비스 |
117 | uucp-path | UUCP (Unix-to-Unix Copy Protocol) 경로 서비스 |
119 | nntp | 네트워크 넷 전송 프로토콜 (NNTP); USENET로도 불리움 |
123 | ntp | 네트워크 시간 프로토콜 (NTP) |
137 | netbios-ns | Red Hat Enterprise Linux에서 Samba가 사용하는 NETBIOS 이름 서비스 |
138 | netbios-dgm | Red Hat Enterprise Linux에서 Samba가 사용하는 NETBIOS 데이터그램 서비스 |
139 | netbios-ssn | Red Hat Enterprise Linux에서 Samba가 사용하는 NETBIOS 세션 서비스 |
143 | imap | 인터넷 메시지 액세스 프로토콜 (IMAP) |
161 | snmp | 단순 네트워크 관리 프로토콜 (SNMP) |
162 | snmptrap | SNMP 트랩 |
163 | cmip-man | 일반 관리자 정보 프로토콜 (CMIP) |
164 | cmip-agent | 일반 관리자 정보 프로토콜 (CMIP) |
174 | mailq | MAILQ 이메일 전송 대기열 |
177 | xdmcp | X 화면 표시 관리자 제어 프로토콜 (XDMCP) |
178 | nextstep | NeXTStep 윈도우 서버 |
179 | bgp | Border Gateway Protocol |
191 | prospero | Prospero 분산형 파일 시스템 서비스 |
194 | irc | 인터넷 릴레이 챗 (IRC) |
199 | smux | SNMP UNIX 다중화 장치 |
201 | at-rtmp | AppleTalk 라우팅 |
202 | at-nbp | AppleTalk 네임 바인딩 |
204 | at-echo | AppleTalk echo |
206 | at-zis | AppleTalk 영역 정보 |
209 | qmtp | 빠른 메일 전송 프로토콜 (QMTP) |
210 | z39.50 | NISO Z39.50 데이터베이스 |
213 | ipx | IPX (Internetwork Packet Exchange)는 Novell Netware 환경에서 흔히 사용되는 데이터그램 프로토콜입니다 |
220 | imap3 | 인터넷 메시지 액세스 프로토콜 버전 3 |
245 | link | LINK / 3-DNS iQuery 서비스 |
347 | fatserv | FATMEN 파일 및 테이프 관리 서버 |
363 | rsvp_tunnel | RSVP 터널 |
369 | rpc2portmap | Coda 파일 시스템 portmapper |
370 | codaauth2 | Coda 파일 시스템 인증 서비스 |
372 | ulistproc | UNIX LISTSERV |
389 | ldap | 경량 디렉토리 접속 프로토콜 (LDAP) |
427 | svrloc | 서비스 위치 프로토콜 (SLP) |
434 | mobileip-agent | 이동 인터넷 프로토콜 (IP) 에이전트 |
435 | mobilip-mn | 이동 인터넷 프로토콜 (IP) 관리자 |
443 | https | 보안 하이퍼텍스트 전송 프로토콜 (HTTP) |
444 | snpp | 간이 망 호출 프로토콜 (Simple Network Paging Protocol) |
445 | microsoft-ds | TCP/IP 상 서비스 메시지 블록 (SMB) |
464 | kpasswd | Kerberos 암호화 키 변환 서비스 |
468 | photuris | Photuris 세션키 관리 프로토콜 |
487 | saft | 단순 비동기 파일 전송 (SAFT) 프로토콜 |
488 | gss-http | HTTP 용 GSS (Generic Security Services) |
496 | pim-rp-disc | PIM (Protocol Independent Multicast) 서비스 용 RP-DISC (Rendezvous Point Discovery) |
500 | isakmp | 인터넷 환경에서 안전하게 SA 및 세션 키를 관리할 수 있는 프로토콜 (Internet Security Association and Key Management Protocol: ISAKMP) |
535 | iiop | IIOP (Internet Inter-Orb Protocol) |
538 | gdomap | GDOMAP (GNUstep Distributed Objects Mapper) |
546 | dhcpv6-client | 동적 호스트 설정 프토로콜 (DHCP) 버전 6 클라이언트 |
547 | dhcpv6-server | 동적 호스트 설정 프로토콜 (DHCP) 버전 6 서비스 |
554 | rtsp | 실시간 스트림 제어 프로토콜 (RTSP) |
563 | nntps | SSL를 통한 네트워크 뉴스 전송 프로토콜 (NNTPS) |
565 | whoami | whoami 사용자 ID 목록 보여주기 |
587 | submission | 메일 메시지 전송 에이전트 (MSA) |
610 | npmp-local | 네트워크 주변 기기 관리 프로토콜 (NPMP) 지역/ 분산 대기 시스템 (DQS) |
611 | npmp-gui | 네트워크 주변 기기 관리 프로토콜 (NPMP) GUI/ 분산 대기 시스템 (DQS) |
612 | hmmp-ind | HMMP (HyperMedia Management Protocol) 지시/ DQS |
631 | ipp | 인터넷 인쇄 프로토콜 (IPP) |
636 | ldaps | SSL을 통한 경량 디렉토리 접속 프로토콜 (LDAPS) |
674 | acap | 응용 프로그램 설정 접속 프로토콜 (ACAP) |
694 | ha-cluster | 고가용성 클러스터에 사용되는 Heartbeat 서비스 |
749 | kerberos-adm | Kerberos 버전 5 (v5) 'kadmin' 데이터베이스 관리 |
750 | kerberos-iv | Kerberos 버전 4 (v4) 서비스 |
765 | webster | 네트워크 사전 |
767 | phonebook | 네트워크 전화번호부 |
873 | rsync | rsync 파일 전송 서비스 |
992 | telnets | SSL을 이용한 Telnet (TelnetS) |
993 | imaps | SSL을 사용하여 인터넷 메시지 접속 프로토콜 (IMAPS) |
994 | ircs | SSL을 이용한 인터넷 릴레이 챗 (IRCS) |
995 | pop3s | SSL을 이용한 Post Office Protocol 버전 3 (POP3S) |
표 C-1. 잘알려진 포트(Well Known Ports)
표 C-2는 UNIX 포트 목록으로서 이메일에서 인증에 이르기까지 다양한 서비스를 포함합니다. 괄호 안에 있는 이름 (예, [service])은 서비스의 데몬 이름이거나 일반 별칭을 의미합니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
512/tcp | exec | 원격 프로세스 실행을 위한 인증 |
512/udp | biff [comsat] | 비동기 메일 클라이언트 (biff)와 서비스 (comsat) |
513/tcp | login | 원격 로그인 (rlogin) |
513/udp | who [whod] | whod 사용자 기록 데몬 |
514/tcp | shell [cmd] | 기록 기능이 없는 원격 쉘 (rshell) 및 원격 복사 (rcp) |
514/udp | syslog | UNIX 시스템 로깅 서비스 |
515 | printer [spooler] | 라인 프린터 (lpr) 스풀러 |
517/udp | talk | Talk 원격 호출 서비스와 클라이언트 |
518/udp | ntalk | 네트워크 talk (ntalk) 원격 호출 서비스와 클라이언트 |
519 | utime [unixtime] | UNIX 시간 (utime) 프로토콜 |
520/tcp | efs | 확장 파일명 서버 (EFS) |
520/udp | router [route, routed] | 라우팅 정보 프로토콜 (RIP) |
521 | ripng | 인터넷 프로토콜 버전 6 (IPv6) 용 라우팅 정보 프로토콜 |
525 | timed [timeserver] | 시간 데몬 (timed) |
526/tcp | tempo [newdate] | Tempo |
530/tcp | courier [rpc] | Courier 원격 절차 호출 (RPC) 프로토콜 |
531/tcp | conference [chat] | IRC (Internet Relay Chat) |
532 | netnews | Netnews 뉴스그룹 서비스 |
533/udp | netwall | 비상시 브로드캐스트에 사용되는 Netwall |
540/tcp | uucp [uucpd] | UNIX 간 복사 서비스 |
543/tcp | klogin | Kerberos 버전 5 (v5) 원격 로그인 |
544/tcp | kshell | Kerberos 버전 5 (v5) 원격 쉘 |
548 | afpovertcp | TCP (Transmission Control Protocol)를 사용하는 AFP (Appletalk Filing Protocol) |
556 | remotefs [rfs_server, rfs] | Brunhoff의 원격 파일 시스템 (RFS) |
표 C-2. UNIX 특정 포트들
표 C-3는 네트워크 및 소프트웨어 커뮤니티에서 포트 번호 목록에 정식으로 등록하기 위해 IANA에 제출한 포트들의 목록입니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
1080 | socks | SOCKS 네트워크 응용 프로그램 프록시 서비스 |
1236 | bvcontrol [rmtcfg] | Garcilis Packeten 네트워크 스위치 원격 설정 서버[a] |
1300 | h323hostcallsc | H.323 telecommunication Host Call Secure |
1433 | ms-sql-s | Microsoft SQL 서버 |
1434 | ms-sql-m | Microsoft SQL 모니터 |
1494 | ica | Citrix ICA 클라이언트 |
1512 | wins | Microsoft Windows 인터넷 이름 서버 |
1524 | ingreslock | Ingres 데이터베이스 관리 시스템 (DBMS) 잠금 서비스 |
1525 | prospero-np | 비특권 Prospero |
1645 | datametrics [old-radius] | Datametrics / 이전 반경 항목 |
1646 | sa-msg-port [oldradacct] | sa-msg-port / 이전 radacct 항목 |
1649 | kermit | Kermit 파일 전송과 관리 서비스 |
1701 | l2tp [l2f] | 계층 2 터널링 프로토콜 (LT2P) / 계층 2 전송 (L2F) |
1718 | h323gatedisc | H.323 telecommunication Gatekeeper Discovery |
1719 | h323gatestat | H.323 telecommunication Gatekeeper Status |
1720 | h323hostcall | H.323 telecommunication Host Call setup |
1758 | tftp-mcast | 단순 FTP 멀티캐스트 |
1759/udp | mtftp | 멀티캐스트 단순 FTP (MTFTP) |
1789 | hello | Hello 라우터 통신 프로토콜 |
1812 | radius | Radius 다이얼업 인증과 회계 서비스 |
1813 | radius-acct | Radius Accounting |
1911 | mtp | Starlight 네트워크 멀티미디어 전송 프로토콜 (MTP) |
1985 | hsrp | Cisco HSRP (Hot Standby Router Protocol) |
1986 | licensedaemon | Cisco 라이센스 관리 데몬 |
1997 | gdp-port | Cisco 게이트웨이 탐색 프로토콜 (GDP) |
2049 | nfs [nfsd] | 네트워크 파일 시스템 (NFS) |
2102 | zephyr-srv | Zephyr 분산형 메시징 서버 |
2103 | zephyr-clt | zephyr 클라이언트 |
2104 | zephyr-hm | Zephyr 호스트 관리자 |
2401 | cvspserver | CVS (Concurrent Versions System) 클라이언트/서버 작업 |
2430/tcp | venus | Coda 파일 시스템에 사용되는 Venus 캐시 관리자 (codacon 포트) |
2430/udp | venus | Coda 파일 시스템에 사용되는 Venus 캐시 관리자 (callback/wbc 인터페이스) |
2431/tcp | venus-se | Venus 전송 제어 프로토콜 (TCP) 부작용 |
2431/udp | venus-se | Venus 사용자 데이터그램 프로토콜 (UDP) 보안 FTP (SFTP) 부작용 |
2432/udp | codasrv | Coda 파일 시스템 서버 포트 |
2433/tcp | codasrv-se | Coda 파일 시스템 TCP 부작용 |
2433/udp | codasrv-se | Coda 파일 시스템 UDP SFTP 부작용 |
2600 | hpstgmgr [zebrasrv] | Zebra 라우팅[b] |
2601 | discp-client [zebra] | discp 클라이언트; Zebra 통합 쉘 |
2602 | discp-server [ripd] | discp 서버; 라우팅 정보 프로토콜 데몬 (ripd) |
2603 | servicemeter [ripngd] | 서비스 미터; IPv6에 사용되는 RIP 데몬 |
2604 | nsc-ccs [ospfd] | NSC CCS; OSPFD (Open Shortest Path First daemon) |
2605 | nsc-posa | NSC POSA; BGPD (Border Gateway Protocol daemon) |
2606 | netmon [ospf6d] | Dell Netmon; IPv6에 사용되는 OSPF (ospf6d) |
2809 | corbaloc | CORBA (Common Object Request Broker Architecture ) 이름 지정 서비스 |
3130 | icpv2 | 인터넷 캐시 프로토콜 버전 2 (v2); Squid 프록시 캐싱 서버에 의해 사용됩니다 |
3306 | mysql | MySQL 데이터베이스 서비스 |
3346 | trnsprntproxy | 투명 프록시 (Transparent Proxy) |
4011 | pxe | PXE (Pre-execution Environment) 서비스 |
4321 | rwhois | 원격 Whois (rwhois) 서비스 |
4444 | krb524 | Kerberos 버전 5 (v5)에서 버전 4 (v4)으로 티켓 번역기 |
5002 | rfe | RFE (Radio Free Ethernet) 오디오 브로드캐스팅 시스템 |
5308 | cfengine | 설정 엔진 (Cfengine) |
5999 | cvsup [CVSup] | CVSup 파일 전송과 업데이트 도구 |
6000/tcp | x11 [X] | X 윈도우 시스템 서비스 |
7000 | afs3-fileserver | Andrew 파일 시스템 (AFS) 파일 서버 |
7001 | afs3-callback | 캐시 관리자로 콜백(callback)하는데 사용되는 AFS 포트 |
7002 | afs3-prserver | AFS 사용자와 그룹 데이터베이스 |
7003 | afs3-vlserver | AFS 볼륨 위치 데이터베이스 |
7004 | afs3-kaserver | AFS Kerberos 인증 서비스 |
7005 | afs3-volser | AFS 볼륨 관리 서버 |
7006 | afs3-errors | AFS 오류 해석 서비스 |
7007 | afs3-bos | AFS BOS (basic overseer) 프로세스 |
7008 | afs3-update | AFS 서버 간 업데이트 장치 |
7009 | afs3-rmtsys | AFS 원격 캐시 관리자 서비스 |
9876 | sd | IP 멀티캐스트 회의에 사용되는 세션 관리자 |
10080 | amanda | Amanda (Advanced Maryland Automatic Network Disk Archiver) 백업 서비스 |
11371 | pgpkeyserver | PGP (Pretty Good Privacy) / GPG (GNU Privacy Guard) 공개 키서버 |
11720 | h323callsigalt | H.323 Call Signal Alternate |
13720 | bprd | BPRD (Veritas NetBackup Request Daemon) |
13721 | bpdbm | BPDBM (Veritas NetBackup Database Manager) |
13722 | bpjava-msvc | Veritas NetBackup Java / Microsoft 비주얼 C++ (MSVC) 프로토콜 |
13724 | vnetd | Veritas 네트워크 유틸리티 |
13782 | bpcd | Vertias NetBackup |
13783 | vopied | Veritas VOPIE 인증 데몬 |
22273 | wnn6 [wnn4] | 카나/칸지 변환 시스템[c] |
26000 | quake | Quake (그리고 관련) 다인용 게임 서버 |
26208 | wnn6-ds | Wnn6 Kana/Kanji 서버 |
33434 | traceroute | Traceroute 네트워크 추적 도구 |
참고: a. /etc/services파일에 나온 설명: "1236 포트는 'bvcontrol'으로 등록되었지만, Gracilis Packeten 원격 설정 서버에의해서도 사용됩니다. 공식 이름은 일차 이름으로 , 등록되지 않은 이름은 별칭으로 목록에 올라와 있습니다." b. /etc/services 파일에 나온 설명: "2600에서 2606 사이의 포트는 등록되지 않고 zebra 패키지에 의해 사용됩니다. 일차 이름은 등록된 이름이며, zebra가 사용하는 등록되지 않음 이름은 별칭으로 목록에 올라와 있습니다." c. /etc/services에 나온 설명: "이 포트는 wnn6로 등록되었지만, FreeWnn 패키지에 의해 등록되지 않은 이름인 'wnn4'로도 사용됩니다.." |
표 C-3. 등록된 포트들
표 C-4는 AppleTalk 네트워크에서 사용되는 DDP (Datagram Delivery Protocol)과 관련된 포트 목록입니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
1/ddp | rtmp | 경로표 관리 도구 (Routing Table Management Protocol) |
2/ddp | nbp | 네임 바인딩 프로토콜 (Name Binding Protocol) |
4/ddp | echo | AppleTalk 에코 프로토콜 |
6/ddp | zip | 영역 정보 프로토콜 (Zone Information Protocol) |
표 C-4. 데이터그램 전송 프토로콜 포트
표 C-5는 Kerberos 네트워크 인증 프로토콜과 관련된 포트들의 목록입니다. 이 표에서 v5는 Kerberos 버전 5 프로토콜을 의미합니다. 이 포트들은 IANA에 등록되지 않은 포트라는 사실을 염두하시기 바랍니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
751 | kerberos_master | Kerberos 인증 |
752 | passwd_server | Kerberos 암호 (kpasswd) 서버 |
754 | krb5_prop | Kerberos v5 종속 전파 (slave propagation) |
760 | krbupdate [kreg] | Kerberos 등록 |
1109 | kpop | Kerberos 우체국 프로토콜 (Kerberos Post Office Protocol: KPOP) |
2053 | knetd | Kerberos 역다중화기 |
2105 | eklogin | Kerberos v5 암호화된 원격 로그인 (rlogin) |
표 C-5. Kerberos (Project Athena/MIT) 포트
표 C-6는 Red Hat Enterprise Linux 시스템에 설치된 서비스나 프로토콜에 의해 사용되거나 Red Hat Enterprise Linux와 다른 운영 체제 사이에 통신하는데 필요하지만 아직 등록되지 않은 포트 목록입니다.
포트 번호 / 계층 | 이름 | 설명 |
---|---|---|
15/tcp | netstat | 네트워크 상태 (netstat) |
98/tcp | linuxconf | Linuxconf 리눅스 관리 도구 |
106 | poppassd | 우체국 프로토콜 암호 변경 데몬 (POPPASSD) |
465/tcp | smtps | SSL을 사용하는 단순형 메일 전송 프로토콜 (SMTPS) |
616/tcp | gii | 게이트 (라우팅 데몬) 대화식 인터페이스 |
808 | omirr [omirrd] | 온라인 미러 (Omirr) 파일 미러링 서비스 |
871/tcp | supfileserv | 소프트웨어 업그레이드 프로토콜 (SUP) 서버 |
901/tcp | swat | Samba 웹 관리 도구 (SWAT) |
953 | rndc | Berkeley 인터넷 네임 도메인 버전 9 (BIND 9) 원격 설정 도구 |
1127/tcp | supfiledbg | 소프트웨어 업그레이드 프로토콜 (SUP) 디버깅 |
1178/tcp | skkserv | 단순 카나에서 칸지로 (Simple Kana to Kanji: SKK) 일본어 입력 서버 |
1313/tcp | xtel | French Minitel 텍스트 정보 시스템 |
1529/tcp | support [prmsd, gnatsd] | GNATS 버그 추적 시스템 |
2003/tcp | cfinger | GNU finger |
2150 | ninstall | 네트워크 설치 정보 |
2988 | afbackup | afbackup 클라이언트-서버 백업 시스템 |
3128/tcp | squid | Squid 웹 프록시 캐시 |
3455 | prsvp | RSVP 포트 |
5432 | postgres | PostgreSQL 데이터베이스 |
4557/tcp | fax | FAX 전송 서비스 (구식 서비스) |
4559/tcp | hylafax | HylaFAX 클라이언트-서버 프로토콜 (최신 서비스) |
5232 | sgi-dgl | SGI 분산 그래픽 라이브러리 |
5354 | noclog | NOCOL 네트워크 작업 센터 로깅 데몬 (noclogd) |
5355 | hostmon | NOCOL 네트워크 작업 센터 호스트 모니터링 |
5680/tcp | canna | Canna 일본어 문자 입력 인터페이스 |
6010/tcp | x11-ssh-offset | 보안 쉘 (SSH) X11 전송 오프셋 |
6667 | ircd | IRC 데몬 (ircd) |
7100/tcp | xfs | X 글꼴 서버 (XFS) |
7666/tcp | tircproxy | Tircproxy IRC 프록시 서비스 |
8008 | http-alt | HTTP (Hypertext Tranfer Protocol) 대안 |
8080 | webcache | WWW (World Wide Web) 캐싱 서비스 |
8081 | tproxy | 투명 프록시 (Transparent Proxy) |
9100/tcp | jetdirect [laserjet, hplj] | Hewlett-Packard (HP) JetDirect 네트워크 인쇄 서비스 |
9359 | mandelspawn [mandelbrot] | X 윈도우 시스템 용 병렬 mandelbrot spawning 프로그램 |
10081 | kamanda | Kerberos를 이용한 Amanda 백업 서비스 |
10082/tcp | amandaidx | Amanda 인덱스 서버 |
10083/tcp | amidxtape | Amanda 테이프 서버 |
20011 | isdnlog | ISDN (Integrated Services Digital Network) 기록 시스템 |
20012 | vboxd | ISDN 음성 사서함 데몬 (vboxd) |
22305/tcp | wnn4_Kr | kWnn 한국어 입력 시스템 |
22289/tcp | wnn4_Cn | cWnn 중국어 입력 시스템 |
22321/tcp | wnn4_Tw | tWnn 중국어 입력 시스템 (대만) |
24554 | binkp | Binkley TCP/IP Fidonet 메일러 데몬 |
27374 | asp | 주소 검색 프로토콜 |
60177 | tfido | Ifmail FidoNet 호환 가능 메일러 서비스 |
60179 | fido | FidoNet 전자 메일과 뉴스 네트워크 |
표 C-6. 등록되지 않은 포트
색인
기호
- 802.11x, 무선 네트워크
- 보안, 무선 네트워크
- 가상 사설 통신망 (Virtual Private Networks), 가상 사설 통신망 (Virtual Private Networks)
- IPsec, IPsec
- 설정, IPsec 네트워크 간 설정
- 설치, IPsec 설치
- 호스트 간, IPsec 호스트 간 설정
- 개요, 보안 개요
- 공격자와 위험, 공격자와 취약점
- 공용 포트
- 표, 공용 포트
- 기본 입력 출력 시스템
- 살펴볼내용 BIOS
- 네트워크, 하드웨어와 네트워크 보안
- 무선, 무선 네트워크
- 보안, 보안 네트워크 구성 방식
- 분리, 네트워크 분리와 DMZ
- 비무장 지대 (DMZs), 네트워크 분리와 DMZ
- 스위치(switches), 전송 고려 사항
- 허브(hubs), 전송 고려 사항
- 네트워크 구성 방식, 보안 네트워크 구성 방식
- 네트워크 서비스, 사용 가능한 네트워크 서비스
- 버퍼 초과
- ExecShield, 서비스로 인한 보안 위험
- 식별과 설정, 서비스 식별과 설정
- 위험, 서비스로 인한 보안 위험
- 버퍼 초과, 서비스로 인한 보안 위험
- 서비스 거부, 서비스로 인한 보안 위험
- 스크립트 취약점, 서비스로 인한 보안 위험
- 네트워크 주소 변환 (NAT), FORWARD와 NAT 규칙
- iptables 사용, FORWARD와 NAT 규칙
- 넷필터 6, ip6tables
- 루트, 루트 액세스 허용하기
- 루트 로그인을 허가하지 않는 방법, 루트 액세스를 허가하지 않기
- PAM 사용, PAM을 사용한 루트 계정 로그인 금지하기
- SSH 로그인 금지하기, 루트 SSH 로그인 금지하기
- 루트 쉘 변경, 루트 로그인 금지하기
- 액세스 제한, 루트 액세스 제한하기
- 액세스 허가, 루트 액세스 허용하기
- 액세스 허가하지 않기, 루트 액세스를 허가하지 않기
- 루트 사용자
- 살펴볼내용 루트
- 머리글, 머리글
- 무선 보안, 무선 네트워크
- 802.11x, 무선 네트워크
- 바이러스
- 트로이 목마 (trojans), 현대 보안사
- 방화벽, 방화벽
- iptables, Netfilter와 iptables
- 개인, 개인 방화벽
- 바이러스, 바이러스와 가짜 IP 주소
- 상태 기반, iptables와 연결 추적(Connection Tracking)
- 연결 추적, iptables와 연결 추적(Connection Tracking)
- 유형, 방화벽
- 정책, 기본 방화벽 정책
- 추가 자료, 추가 자료
- 방화벽 유형, 방화벽
- 법적 고려 사항, 법적 고려 사항
- 보안 개요, 보안 개요
- 결론, 결론
- 바이러스, 현대 보안사
- 서비스 거부 (DoS), 현대 보안사
- 제어
- 살펴볼내용 제어
- 컴퓨터 보안 역사, 컴퓨터 보안의 역사
- 컴퓨터 보안 정의, 컴퓨터 보안이란 무엇인가?
- 보안 고려 사항
- 네트워크 전송, 전송 고려 사항
- 무선, 무선 네트워크
- 물리적 네트워크, 하드웨어와 네트워크 보안
- 하드웨어, 하드웨어와 네트워크 보안
- 보안 에라타, 보안 업데이트
- Red Hat Network 사용, Red Hat Network 사용하기
- Red Hat 에라타 웹사이트 사용, Red Hat 에라타 웹사이트 이용 방법
- 변경 사항 적용하기, 변경 사항 적용하기
- 재부팅, 변경 사항 적용하기
- 부트로더
- GRUB
- 암호 보호, GRUB 암호 보호
- 보안, 부트로더 암호
- 비보안 서비스, 비보안 서비스
- 사고 대응
- 계획 세우기, 사고 대응 계획 세우기
- 법적 고려 사항, 법적 고려 사항
- 보안 사고 발생 후 정보 수집하기, 보안 사고 발생 후 정보 수집하기
- 사고 발생 후 분석, 사고 조사
- 사고 보고하기, 사고 보고하기
- 소개, 사고 대응
- 실행, 사고 대응 계획을 실행하기
- 자원 복구하기, 자원 복구하기
- 정의, 사고 대응이란 무엇인가
- 조사, 사고 조사
- 증거 수집
- dd 사용, 증거가 되는 이미지 수집하기
- 컴퓨터 비상 대응팀 (CERT), 컴퓨터 비상 대응팀 (CERT)
- 사고 대응 계획, 사고 대응 계획 세우기
- 사고 발생 후 분석, 사고 조사
- 사고 보고하기, 사고 보고하기
- 서버 보안
- Apache HTTP 서버, Apache HTTP 서버 보안 강화
- cgi 보안, 실행 가능 디렉토리의 허가 제한하기
- 지시자, Apache HTTP 서버 보안 강화
- FTP, FTP 보안 강화
- TCP 래퍼, 접근 제어를 위해 TCP 래퍼 사용하기
- vsftpd, FTP 보안 강화
- 사용자 계정, 사용자 계정
- 익명 계정(anonymous) 접속, 익명 계정(anonymous) 접속
- 익명 사용자 계정으로 업로드, 익명 사용자 계정으로 업로드
- 환영 배너, FTP 환영 배너
- NFS, NFS 보안 강화
- 구문 오류, 구문 오류에 주의하십시오.
- 네트워크 설계, 네트워크를 신중하게 설정하기
- NIS, NIS 보안 강화
- IPTables, 정적 포트를 할당하고 IPTables 규칙 사용하기
- NIS 도메인 이름, 암호와 같이 추측하기 힘든 NIS 도메인 이름과 호스트명 사용하기
- securenets, /var/yp/securenets 파일을 수정하기
- 네트워크 설정, 네트워크를 신중하게 설정하기
- 정적 포트, 정적 포트를 할당하고 IPTables 규칙 사용하기
- 커베로스, 커베로스 인증 사용하기
- portmap, Portmap 보안 강화
- Sendmail, Sendmail 보안 강화
- DoS 제한하기, 서비스 거부 공격 제한하기
- NFS, NFS와 Sendmail
- TCP 래퍼, TCP 래퍼를 사용하여 보안 강화하기
- 기록, TCP 래퍼와 향상된 기록 기능
- 배너, TCP 래퍼와 연결 배너
- 침입 경고, TCP 래퍼와 침입 경고
- xinetd, xinetd를 사용하여 보안 강화하기
- DoS(서비스 거부 공격) 방지, 서버 자원을 제어하기
- SENSOR 트랩, 트랩(Trap) 설정하기
- 자원 관리, 서버 자원을 제어하기
- 개요, 서버 보안
- 포트
- 감시하기, 청취 중인 포트 확인하기
- 서비스, 청취 중인 포트 확인하기
- 서비스 거부 (DoS)
- 분산, 현대 보안사
- 서비스 설정 도구, 서비스 식별과 설정
- 암호
- 기업체, 기업체에서 사용자 암호 생성하기
- 암호 보안, 암호 보안
- PAM, 좋은 암호 사용을 엄격히 시행하기
- 감사 도구, 좋은 암호 사용을 엄격히 시행하기
- Crack, 좋은 암호 사용을 엄격히 시행하기
- John the Ripper, 좋은 암호 사용을 엄격히 시행하기
- Slurpie, 좋은 암호 사용을 엄격히 시행하기
- 기업체, 기업체에서 사용자 암호 생성하기
- 방법, 보안 암호 생성 방법
- 엄격한 시행, 좋은 암호 사용을 엄격히 시행하기
- 유효 기간 설정, 암호 유효 기간 설정
- 추측하기 힘든 암호, 추측하기 힘든 암호 생성하기
- 암호 유효 기간 설정, 암호 유효 기간 설정
- 약정
- 문서, 문서 약정
- 업데이트
- 살펴볼내용 보안 에라타
- 워크스테이션 보안, 워크스테이션 보안
- BIOS, BIOS와 부트로더 보안
- 부트로더
- 암호, 부트로더 암호
- 평가
- BIOS, 워크스테이션 보안 평가하기
- 개인 방화벽, 워크스테이션 보안 평가하기
- 관리 제어, 워크스테이션 보안 평가하기
- 부트로더, 워크스테이션 보안 평가하기
- 암호, 워크스테이션 보안 평가하기
- 통신, 워크스테이션 보안 평가하기
- 위험
- 공개 포트, 사용되지 않은 서비스와 공개 포트
- 네트워크, 네트워크 보안 위협
- 구조, 불안정한 구조
- 서버, 서버 보안 위협
- 부주의한 관리, 부주의한 관리
- 안전하지 못한 서비스, 본질적으로 안전하지 못한 서비스
- 워크스테이션과 PC, 워크스테이션과 가정용 PC 보안 위협, 너무 단순한 암호
- 응용 프로그램, 공격 당하기 쉬운 클라이언트 응용 프로그램들
- 패치와 에라타, 패치가 설치되지 않은 서비스
- 일반 보안 취약점과 공격, 일반 보안 취약점과 공격
- 자원 복구하기, 자원 복구하기
- 제어, 보안 제어
- 제품 등록, 레드햇 네트워크에 구입하신 제품을 등록하십시오
- 제품 등록하기, 레드햇 네트워크에 구입하신 제품을 등록하십시오
- 증거 수집
- 살펴볼내용 사고 대응
- 파일 감사 도구, 보안 사고 발생 후 정보 수집하기
- dd, 보안 사고 발생 후 정보 수집하기
- file, 보안 사고 발생 후 정보 수집하기
- find, 보안 사고 발생 후 정보 수집하기
- grep, 보안 사고 발생 후 정보 수집하기
- md5sum, 보안 사고 발생 후 정보 수집하기
- script, 사고 조사
- stat, 보안 사고 발생 후 정보 수집하기
- strings, 보안 사고 발생 후 정보 수집하기
- 취약성
- Nessus을 사용하여 액세스하기, Nessus
- Nikto를 사용하여 액세스하기, Nikto
- Nmap을 사용하여 액세스하기, Nmap을 사용하여 호스트 스캐닝하기
- VLAD 스캐너를 사용하여 액세스하기, VLAD 스캐너
- 평가, 취약성 평가
- 방법론 수립, 방법론 수립
- 정의, 평가와 테스팅 정의하기
- 테스팅, 평가와 테스팅 정의하기
- 침입 탐지 시스템, 침입 탐지
- RPM 패키지 관리자 (RPM), IDS로 사용되는 RPM
- Tripwire, Tripwire
- 네트워크 기반, 네트워크 기반 IDS
- Snort, Snort
- 로그 파일, 호스트 기반 IDS
- 유형, IDS 유형
- 정의, 침입 탐지 시스템이란
- 호스트 기반, 호스트 기반 IDS
- 커베로스
- NIS, 커베로스 인증 사용하기
- 컴퓨터 비상 대응팀, 컴퓨터 비상 대응팀 (CERT)
- 크래커
- black hat 해커, 다양한 종류의 해커
- 크래커 (crackers)
- 의미, 간략한 해커 역사
- 통신 도구
- 보안, 보안 강화된 통신 도구
- GPG, 보안 강화된 통신 도구
- OpenSSH, 보안 강화된 통신 도구
- 통신 포트, 공용 포트
- 파일 감사
- 포트
- 감시하기, 청취 중인 포트 확인하기
- 공용, 공용 포트
- 하드웨어, 하드웨어와 네트워크 보안
- 해커 (hackers)
- black hat
- 살펴볼내용 크래커
- grey hat, 다양한 종류의 해커
- white hat, 다양한 종류의 해커
- 의미, 간략한 해커 역사
- 해커 윤리, 간략한 해커 역사
A
- Apache HTTP 서버
- cgi 보안, 실행 가능 디렉토리의 허가 제한하기
- 소개, Apache HTTP 서버 보안 강화
- 지시자, Apache HTTP 서버 보안 강화
B
- BIOS
- x86가 아닌 플랫폼
- 보안, BIOS와 부트로더 보안
- 암호, BIOS 암호
- black hat 해커
- 살펴볼내용 크래커 (crackers)
C
- co-location 서비스, 하드웨어 보안
- cupsd, 서비스 식별과 설정
D
- dd
- 증거 수집, 증거가 되는 이미지 수집하기
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- Demilitarized Zone, DMZ과 iptables
- DMZ
- 살펴볼내용 Demilitarized Zone
- 살펴볼내용 networks
E
- EFI 쉘
- 보안
F
- file
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- find
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- FTP
- TCP 래퍼, 접근 제어를 위해 TCP 래퍼 사용하기
- vsftpd, FTP 보안 강화
- 사용자 계정, 사용자 계정
- 소개, FTP 보안 강화
- 익명 계정(anonymous) 접속, 익명 계정(anonymous) 접속
- 익명 사용자 계정으로 업로드, 익명 사용자 계정으로 업로드
- 환영 배너, FTP 환영 배너
G
- grep
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- grey hat 해커
- 살펴볼내용 해커 (hackers)
I
- IDS
- 살펴볼내용 침입 탐지 시스템
- ip6tables, ip6tables
- IPsec, IPsec
- 네트워크 간, IPsec 네트워크 간 설정
- 단계, IPsec
- 설정, IPsec 네트워크 간 설정
- 호스트 간, IPsec 호스트 간 설정
- 설치, IPsec 설치
- 호스트 간, IPsec 호스트 간 설정
- iptables, Netfilter와 iptables
- chains, iptables 사용법
- FORWARD, FORWARD와 NAT 규칙
- INPUT, 일반 iptables 필터링
- OUTPUT, 일반 iptables 필터링
- POSTROUTING, FORWARD와 NAT 규칙
- PREROUTING, FORWARD와 NAT 규칙, DMZ과 iptables
- DMZ, DMZ과 iptables
- 규칙, iptables 규칙 저장 및 복구하기
- NAT, FORWARD와 NAT 규칙, DMZ과 iptables
- 복구, iptables 규칙 저장 및 복구하기
- 일반, 일반 iptables 필터링
- 저장, iptables 규칙 저장 및 복구하기
- 포워딩, FORWARD와 NAT 규칙
- 바이러스, 바이러스와 가짜 IP 주소
- 사용, iptables 사용법
- 상태기반 감시(stateful inspection), iptables와 연결 추적(Connection Tracking)
- 연결 추적, iptables와 연결 추적(Connection Tracking)
- 정책, 기본 방화벽 정책
- 추가 자료, 추가 자료
L
- lpd, 서비스 식별과 설정
- lsof, 청취 중인 포트 확인하기
M
- md5sum
- 파일 감사, 보안 사고 발생 후 정보 수집하기
N
- NAT
- 살펴볼내용 네트워크 주소 변환 (NAT)
- Nessus, Nessus
- Netfilter, Netfilter와 iptables
- 추가 자료, 추가 자료
- netstat, 청취 중인 포트 확인하기
- NFS, NFS 보안 강화
- Sendmail, NFS와 Sendmail
- 구문 오류, 구문 오류에 주의하십시오.
- 네트워크 설계, 네트워크를 신중하게 설정하기
- Nikto, Nikto
- NIS
- IPTables, 정적 포트를 할당하고 IPTables 규칙 사용하기
- NIS 도메인 이름, 암호와 같이 추측하기 힘든 NIS 도메인 이름과 호스트명 사용하기
- securenets, /var/yp/securenets 파일을 수정하기
- 네트워크 설정, 네트워크를 신중하게 설정하기
- 소개, NIS 보안 강화
- 정적 포트, 정적 포트를 할당하고 IPTables 규칙 사용하기
- 커베로스, 커베로스 인증 사용하기
- nmap, 청취 중인 포트 확인하기, Nmap을 사용하여 호스트 스캐닝하기
- 명령행 버전, Nmap 사용법
O
- OpenSSH, 보안 강화된 통신 도구
- scp, 보안 강화된 통신 도구
- sftp, 보안 강화된 통신 도구
- ssh, 보안 강화된 통신 도구
P
- PAM (pluggable authentication modules)
- 좋은 암호 사용을 엄격히 시행하기, 좋은 암호 사용을 엄격히 시행하기
- portmap, 서비스 식별과 설정
- IPTables, IPTables를 사용하여 portmap 보호하기
- TCP 래퍼, TCP 래퍼를 사용하여 portmap 보호하기
R
- RPM
- GPG 키 가져오기, Red Hat 에라타 웹사이트 이용 방법
- 침입 탐지, IDS로 사용되는 RPM
- 패키지 서명 검증하기, 패키지 서명 검증하기, 서명된 패키지 설치하기
S
- sendmail, 서비스 식별과 설정
- DoS 제한하기, 서비스 거부 공격 제한하기
- NFS, NFS와 Sendmail
- 소개, Sendmail 보안 강화
- Snort, Snort
- sshd, 서비스 식별과 설정
- stat
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- strings
- 파일 감사, 보안 사고 발생 후 정보 수집하기
- su
- 루트, su 명령
- sudo
- 루트, sudo 명령
T
- TCP 래퍼
- FTP, 접근 제어를 위해 TCP 래퍼 사용하기
- portmap, TCP 래퍼를 사용하여 portmap 보호하기
- 기록, TCP 래퍼와 향상된 기록 기능
- 배너, TCP 래퍼와 연결 배너
- 침입 경고, TCP 래퍼와 침입 경고
- Tripwire, Tripwire
V
- VLAD 스캐너, VLAD 스캐너
- VPN, 가상 사설 통신망 (Virtual Private Networks)
W
- white hat 해커
- 살펴볼내용 해커 (hackers)
- Wi-Fi 네트워크
- 살펴볼내용 802.11x
X
- xinetd, 서비스 식별과 설정
- DoS(서비스 거부 공격) 방지, 서버 자원을 제어하기
- SENSOR 트랩, 트랩(Trap) 설정하기
- 자원 관리, 서버 자원을 제어하기
'Security' 카테고리의 다른 글
rm 으로 삭제한 파일 복구하기 (0) | 2012.09.13 |
---|---|
LINUX FIREWALL (0) | 2009.09.01 |
네트워크 scanning tool의 대명사 nmap (0) | 2009.04.05 |
DOS Attack을 막기 위한 간단한 방법 (0) | 2009.04.05 |
리눅스보안 - 필수 보안 조치법 (0) | 2009.04.05 |
RECENT COMMENT