[연습문제]

1. 다음중 사용자 계정을 목록화하는 유틸리티가 아닌 것은? ①
①tftp                          ②rusers
③rwho                       ④finger

2. finger 서비스에서 알아낼 수 없는 내용은 무엇인가? ④
①사용자연결               ②공유 디렉토리
③사용자 계정과 셸       ④메일 확인 시간

3. 클라이언트가 요구하는 서비스에 대해 RPC가 할당하는 포트의 범위는? ③
①1024번 포트 미만               ②1000번 포트 미만
③10000번 포트 이상              ④65535번 포트 이상

※ RPC(Remote Procedure Call)는 111번 포트를 이용하여 클라이언트가 요구하는  연결에 대한 포트를 클라이언트에게 알려주는 서비스.
 클라이언트가 SQL에 연결하고 싶을 때 자체의 포트 번호를 알지 못하면, RPC 서비스를 제공하고 있는 시스템은 10000번 이상의 번호중 SQL 서비스를 제공하는 포트를 할당하여 클라이언트에게 이를 알려준다.

4. 목록화 작업을 하지 않아도 되는 것은 무엇인가?
① 응용 프로그램 목록화
② 공유 자원 목록화
③ 해킹 공격 목록화
④ 사용자 계정 목록화
------------------------------------------------------------------------------------------------------
※공유 자원 목록화 : 공유 자원에 대한 목록화는 시스템을 침투하는 데 간접적인 도움을 준다. 다시 말하면, 상대 시스템의 설정이나 상태를 바꿀 수는 없지만 대상 시스템의 정보를 가져오기 위한 전 단계므로 매우 중요하며 치명적일 수 있다.
※사용자와 그룹 목록화 : 사용자 계정을 알아내는 것은 패스워드를 알아내기 위한 바로 전 단계다.
※응용프로그램 목록화 : 침입 대상에 대한 조사를 하다 보면 정상적인 응용프로그램이 아닌 엉뚱한 백도어 프로그램 등이 구동되고 있는 등 황당한 경우가 많다. 응용 프로그램의 목록화와 사용자에 대한 목록화는 침입에 직접적인 영향을 줄만큼 중요하다.
------------------------------------------------------------------------------------------------------

[심화 연습 문제]
1. 목록화란 무엇인가?
 - 목록화(enumeration)는 지금까지 얻어낸 정보들을 잘 정리하는 것이다. 마치 목차를 써서 한눈에 알아볼 수 있게 하는 것과 같으며, 이것은 실제 공격 바로 전 단계라고 할 수 있다.

2. NFS에 대해 간단히 설명하라
 - Network File System (NFS)은 썬 마이크로 시스템(SUN)에서 네트워크를 통해 파일을 공유할 수 있도록 만든 프로토콜 이다. NFS는 하드웨어, 운영체제 또는 네트워크 구조가 달라도 파일을 공유 할 수 있도록 고안되었다. 파일 공유등을 비롯해 다른 부가 기능을 제공한다. 하지만 공유된 파일들에 대한 보안 문제가 생길 수도 있다. 사용하는 프로토콜은 Network Lock Manager (NLM)과 Network Status Monitor (NSM)이다.

기능상 삼바와 비슷하지만 가장 큰 차이는 커널에서 NFS를 지원한다는 점이다.

NFS는 리눅스머신에서 윈도우 파티션을 마운트하여 사용하듯 NFS서버의 특정 디렉토리를 클라이언트에서 마운트하여 자신의 영역인것처럼 사용한다.

그러나 위와 같은 편리한 점에도 불구하고 보안상 많은 취약점을 드러내고 있다. 가장 단적인 예로 클라이언트인양 속여서 서버에 접속하게 되면 특정 디렉토리를 마음대로 조작할 수 있는 단점이 있다.

NFS는 스토리지가 고가였던 시절 디스크가 없는 시스템을 지원하기 위하여 개발되었으나 스토리지 및 컴퓨터의 성능이 좋아지면서 파일 공유 및 파일 서버를 위한 방법으로 사용되고 있다.


3. TFTP 서비스가 위험한 이유를 설명하라.
TFTP(Trivial File Transfer Protocol)는 기본적으로 FTP와 비슷하나 인증이 존재하지 않아 누구나 TFTP 서버에 파일을 쓰고 지울 수 있다. 대부분의 시스템에서는 보안상의 문제로 TFTP 서버를 운영하지 않는다. 하지만 라우터와 스위치 등은 TFTP를 기본적으로 구동하고 있다. 라우터와 스위치등의 운영체제가 손상되었을 경우 네트워크에서 해당 운영체제를 복사해오기 위해서다.

4. RPC가 무엇인지 간단히 설명하라.
위에 설명했음

5. NFS 공유 목록을 보는 방법에 대해 설명하라.
형식-> showmount -e ip주소
예)      showmount -e 192.243.243.1   




ARP (Address Resolution Protocol)
ARP는 주소 변환이 필요할때마다 각각의 주소를 매핑하도록 호출된다. ARP는 선택된 매체에 브로드캐스트를 통해 특정 IP주소를 사용하는 호스트가 응답을 하도록 요구 하는방식을 사용한다. 목적지 호스트가 응답하는 경우 송신 호스트는 목적지 호스트와 연결을 맺고 데이터를 전송하기 시작한다. ARP의 요구와 응답은 물리적인 계층에서 이루어지며, 목적지 호스트가 응답하는 경우 송신지 호스트는 ARP테이블을 설정하고, ARP테이블의 정보를 이용하여 하위 계층 프로ㅗ콜의 프레임에 저장한다.

RARP(Reverse Address Resolution Protocol)
데이터 링크 계층의 주소로부터 네트워크 계층의 주소를 얻어오는 프로토콜,
RARP패킷은 ARP패킷과 동일한 형식을 갖는다.

ICMP(Internet Control Message Protocol)
IP 프로토콜은 비연결형으로 패킷이 확실히 전송된다는 보장이 없기 때문에 라우터나 노드(호스트)등에서 오류가 생겨 목적지까지 도달하지 못하게 되는 경우가 생긴다. 이럴경우 송신측의 사애를 알려줘야 하는데, 이때 필요한것이 ICMP 포로토콜.

 ICMP Destination Unreachable
- 라우터가 특정 노드의 패킷을 목적지에 보내지 못한경우 송신노드에 대해  ICMP Destination Unreachable 메시지를 보낸다.

 ICMP Redirect 메시지
- 라우터가 송신측 노드에 적합하지 않은 경로로 설정되어 있을 경우 그 노드에 대한 최적화된 경로를 다시 지정해주는 ICMP Redirect 메시지를 보낸다.

ICMP Time Exeeded
 - 패킷이 네트워크 사이에서 무한정 돌아가지 않도록 하기 위해 각 라우터들이 패킷을 처리할때마다 TTL(Time To Live)을 감소시키다 그 값이 '0'이 되면 패킷을 패키하기위해 송신측 라우터에 ICMP Time Exeeded 메시지를 되돌려보냄으로써 패킷이 폐기된 사실을 알림

ICMP Source Quench
 - 송신측 큐값이 '0'으로 남아 송신 불능 상태가 되면 'ICMP Source Quench 메시지'를 송신측 노드에 보내고 송신측은 이를 보고 송신 패킷의 양을 제어

ICMP Echo Request
 - 송신측의 전송 패킷이 목적지 노드나 라우터에 도착했는지 확인하는데 사용한다.

문제: 리눅스 시스템 커널버전2.4에서 제공하는 방화벽 (iptables)을 이용하여
호스트기반 방화벽을 구축하려한다. 이때에 보안정책은 모든 들어오는 패킷에
대해서 drop시키는 것을 원칙으로하고, 일부 허용된 패킷에 대해서만
통과시키는 것이다. 이에 필요한 /etc/sysconfig/iptables의 설정을 완성시키시오.
현재 허용되는 패킷은 IP주소에 관계없이 destination port 가 22/tcp (ssh) 인
것으로 한정되어 있으며, 여기에 80/tcp (www)를 추가하시오.

http://unix.co.kr/HOWTO/Packet_Filtering-KLDP/Packet_Filtering-KLDP-6.html 참조 함.
                     _____
                     /           \
   -->[ 라우팅 ]--->|포워딩 |------->
       [ 판  정 ]         \_____/        ^
           |                        |
           v                       ____
          ___                     /    \
         /   \                   | 출력 |
        |입력 |                   \____/
         \___/                      ^
           |                        |
            ----> Local Process ----

  1. 패킷이 커널에 도탁하면 그 패킷의 목적지를 확인한다. 이것은 '라우팅' 이라고 한다.
  2. 이것의 목적지가 이곳이면, 패킷은 위 그림에서 아래쪽 방향으로 전달 되어 입력 체인에 도달한다. 이것이 이 체인을 통과하면 패킷을 기다리 고있던 어떤 프로세서도 그것을 받게 된다.
  3. 그렇지 않으면, 커널이 포워딩 불능으로 되어있던가, 패킷을 어떻게 포 워딩해야 하는가를 알지 못하면, 그 패킷은 DROP 된다. 포워딩이 가능하 게 되어있고 다른 곳이 목적지이면 패킷은 그림의 오른쪽 방향으로 전달 되어 포워딩 체인으로 간다. 이 체인이 ACCEPT 하게 되면 이것은 포워딩 할 네트워크로 보내진다.
  4. 마지막으로, 이곳에서 돌아가던 프로그램은 네트워크 패킷을 전송할 수 있 게 된다. 이 패킷은 즉시 출력 체인에 보내진다. 이 체인이 ACCEPT 하게 되면 이 패킷은 그 목적지가 어디든지 보내진다.

 풀이 :
#vi /etc/sysconfig/iptables
여기에 22번 포트 만 허용해 놓았는데
-A INPUT -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p tcp -m tcp --dport 80 -j ACCEPT
라고 적어주자

iptables의 사용법에 대해서는 좀더 공부가 필요한듯..


문제
네임서버 간에는 Secondary NS 측에 의하여 Primary NS측 도메인의 Zone에 대한
복사본을 얻기위해, Zone 데이터베이스를 끌어오는 Zone Transfer작업이
주기적으로 이루어지게 된다. 하지만 이 Zone Transfer를 무제한으로 허용할
경우에는 내부 네트웍의 정보가 필요이상으로 외부에 유출되는 결과가 된다.
Primary NS측 입장에서 Zone Transfer를 오직 203.239.110.1 으로부터만
접근가능하도록 DNS 구성을 변경설정 하시오.
단, named 버전은 9.x 이며, 구성파일은 /etc/named.conf이다

zone transfer란? (http://www.superuser.co.kr/home/lecture/files/sbHong/securing_zone_transfer.pdf 참조)
zone-transfer, 우리말로 zone전송이라고도 하는 이것은 master와 slave간
에 또는 1차와 2차간에, primary와 secondary DNS간에 zone 파일을 동기
화하기 위한 용도로 사용되는 기술이다. 많은 관리자들이 1차와 2차 DNS를
마치 active/standby처럼, 2차를 백업의 용도로 생각하여 1차가 서비스를 하
다가 만약 1차가 다운되면 대신 2차 DNS가 서비스하는 것으로 생각하지만
이는 잘못된 것이다. 1차와 2차는 백업이 아닌 로드발랜싱의 개념이며 따라
서 1차와 2차가 똑같이 DNS lookup을 서비스하는 것이다. 따라서 양 서버
간에 zone 파일을 동기화하기 위해서는 zone 파일을 NFS등으로 연결하여
사용하는 방법도 있겠지만 DNS 자체에 zone-transfer라는 기능을 제공하고
있어 주로는 이 기능을 이용하고 있다. 참고로 해당 서버간 Zone-transfer
시에는 해당 zone 파일의 SOA필드에 있는 Serial 필드를 보아 갱신할 것인
지 여부를 결정하게 된다.


풀이
/etc/named.conf 에서 option을 준다.

options {
allow-transfer {192.168.1.3; };
};

* allow-transfer 안의 ip주소는 허용할 ip주소 - secondary DNS