교과목

[네트워크 보안] 2018년도 2학기 중간고사 iptables 정리

Jubil 2018. 10. 24. 21:23
반응형

1. iptables 테이블 종류와 각 역할.

- 테이블은 패킷 필터링이나 네트워크 주소 변환과 같은 iptables에서 제공하는 기능의 큰 범주를 기술하는 말로서 “iptables의 구성 요소 정도의 의미로 이해하면 된다.”

- filter 테이블 : 필터링 규칙 적용

방화벽의 가장 핵심적인 테이블.

특정 룰에 따라 패킷을 필터링 하거나 허용하는 역할.

기본적으로 3개의 chain이 있음.

 

- nat 테이블 : NAT(주소변환) 규칙 적용

패킷을 필터링 하는 기능은 없음.

방화벽으로 향하는 패킷을 방화벽이 보호하는 내부 네트워크의 다른 주소로 포워딩.

방화벽 내부 네트워크에서 방화벽을 통해 외부 네트워크로 나갈 때 다른 ip주소로 변환하는 역할을 함.

 

- mangle 테이블 : 패킷 데이터를 변경하는 특수 규칙 적용

그리 자주 사용되지는 않음.

패킷의 TTL이나 TOS(type of service : 패킷 전송의 우선순위) 값을 변경하거나 매칭할 때 사용.

 

- raw 테이블 : 넷필터의 연결 추적(connection tracking) 시스템과는 독립적으로 동작해야 하는 정책을 적용하고자 할 때 사용하며 NOTTRACK 타깃과 함께 사용. (접속이 많아지면 정상 패킷도 드랍될 수 있음)

 

 

2. 체인의 종류와 각 역할.

 

체인은 패킷이 이동하는 경로를 나타냄. 각각의 table은 각각의 다른 chain을 가지고 있음.

사용자는 공통 태그와 관련된 규칙집합을 만들기 위한 사용자 정의 체인을 만들 수 있음.

rule은 각각의 chain에 설정하는 일련의 방화벽 정책을 말함.

Iptables의 두 개의 추가 체인으로 nat 테이블의 PREROUTINGPOSTROUTING 체인이 있음.

(이 체인은 커널 내부에서 IP 라우팅 계산을 수행하기 전과 후에 패킷 헤더를 수정하기 위해 사용.)

패킷 필터링에서 가장 중요한 고유 체인은 filter 테이블의 INPUT, OUTPUT, FORWARD 체인.

 

- INPUT 체인 : 커널 내부에서 라우팅 계산을 마친 후 로컬 리눅스 시스템이 목적지인 패킷(, 방화벽 자체가 목적지인)에 적용.

 

- OUTPUT 체인 : 리눅스 시스템 자체가 생성하는 패킷을 위해 예약. (, 방화벽 자체에서 외부로 나가는 패킷)

 

- FORWARD 체인 : 리눅스 시스템을 통과하는 패킷을 관리. (두 네트워크 간의 패킷이 방화벽을 통과해야 하는 경우)

 

 

3. iptables 정책을 조회(확인)하는 명령

           현재 iptables에 적용된 정책 확인 – iptables -L

           특정 체인에 적용된 정책 확인 – iptables -L [체인명]           ex) iptables -L INPUT

           Filter 외의 테이블에 있는 테이블 정책 – iptables -t [테이블명] -L [체인명]

 

   기본 정책을 설정하는 명령

           iptables -P [체인명] [ACCEPT/DROP]           ex) iptables -P INPUT DROP

 

   모든 정책을 지우고 초기화 하는 명령

           모든 체인의 정책 삭제 - iptables -F

           특정 체인의 정책 삭제 – iptables -F [체인명]          ex) iptables -F INPUT

 

 

4. 사용자 정의 체인을 만드는 방법

           iptables -N [체인명]         ex) iptables -N test         : test 체인 생성

           iptables -A test -j ACCEPT

           iptables -A INPUT -j test

           iptables -A OUTPUT -j test

 

5. 사용자 체인에 정책을 추가 후 사용자 체인을 삭제하는 방법

   (비어있지 않은 사용자 정의 체인을 지울 때 오류 메세지 구분)

           iptables -X [사용자 정의 체인명] 으로 삭제 가능

           Too many links -> 다른 체인에서 사용중.   해결법 : iptables -F INPUT, OUTPUT

           Directory not empty -> 비어있지 않은 경우.  해결법 : iptables -F test

 

6. iptables 설정을 저장하는 방법

   - /etc/sysconfig/iptables 에 저장하는 방법

           service iptables save        : 시스템이 재부팅 되어도 똑같이 읽히도록 규칙 저장

   - 사용자가 직접 파일을 만들어 저장하는 방법

           iptables-save > /etc/iptables.rules

 

7. 사용자가 직접 만든 설정 파일에서 정책을 불러와 다시 사용하는 방법

           iptables-restore < /etc/iptables.rules

 

 

 

8. iptables 의 타깃(target) 종류와 역할

 

           ACCEPT – 패킷을 본래 라우팅대로 진행시킨다. (패킷 허용)

           DROP – 패킷을 버린다. (패킷 차단)

           LOG – 패킷에 대한 내용을 syslog에 기록한다.

           REJECT – 패킷을 버리고, 이와 동시에 iptables에서 적절한 응답패킷을 보낸다.

                       (TCP – TCP Reset, UDP – ICMP Port Unreachable)

           RETURN – 특정 체인을 호출하여 해당 체인 내에서 패킷 처리를 계속 한다.

 

 

9. iptables 의 정책을 하나씩 추가, 삽입, 원하는 위치에 삽입, 원하는 위치 삭제 하는 방법

           하나씩 추가 : iptables -A [체인] [매치] [타깃]          ex) iptables -A INPUT -p icmp -j DROP

           삽입 : iptables -I [체인] [매치] [타깃]          ex) iptables -I INPUT -p tcp ACCEPT

           원하는 위치 삽입 : iptables -I [체인] [rule num] [매치] [타깃]

           ex) iptables -I INPUT 2 -p udp -j ACCEPT

           특정 정책 지정 삭제 : iptables -D [체인] [rule num]

           ex) iptables -D INPUT 2

 

 

10. conntrack 모듈에서 사용하는 상태(state) 종류별 의미.

           NEW – 새로운 연결을 요청하는 패킷. ex) HTTP 요청.

           ESTABLISHED – 기존 연결의 일부인 패킷

           RELATED – 기존 연결에 속하지만 새로운 연결을 요청하는 패킷.

           INVALID – 연결 추적표에서 어디 연결에도 속하지 않은 패킷.

 

 

11. iptables 에서 로그를 기록하게 하는 명령.

   - 로그에 접두어 붙이는 방법

           -j LOG --log-prefix “dns_accept ”  -> -j ACCEPT 보다 위에 있어야 적용됨.

 

   - 로그에 옵션까지 나타나게 하는 방법

           -j LOG --log-ip-options --log-tcp-options


반응형