본문 바로가기
정보보안기사&CISSP관련/보안장비 운영

[Day 107] iptables (1)

by minimalist_2022 2020. 11. 25.

개요

  • 패킷 필터링 기능을 가지고 있는 리눅스 커널에 내장된 툴
  • Rule 기반의 패킷 필터링 기능 제공
  • 상태 추적(Connection Tracking 또는 Stateful Inspection) 기능 제공
    • 방화벽을 통과하는 모든 패킷에 대한 연결 상태를 트래킹하여 이 정보를 메모리에 기억하고 있다가 기존연결을 가장하여 접근할 경우, 메모리에 저장된 정보와 비교해 적합하면 통과하고, 아니면 거부하는 기능
    • Stateful Inspection 방화벽은 이스라엘 체크포인트사에서 최초 개발한 방화벽 구조
    • 위조된 패킷을 차단할 수 있어 보안상의 장점을 가지고, 연결된 상태의 패킷은 더 이상 패턴 매칭 검사를 수행하지 않으므로 성능상의 장점을 가짐 

 

용어

  • Table : iptables가 제공하는 기능을 의미  
  • Chain : 패킷이 이동하는 경로를 의미
    • INPUT Chain : 방화벽을 최종 목적지로 하는 체인
    • OUTPUT Chain : 방화벽을 최초 출발지로 하는 체인
    • FORWARD Chain : 방화벽을 경유하는 채널 의미.
  • rule : 패킷을 필터링하기 위한 룰  

 

사용법

기본 구문

  • 형식) iptables [테이블] [체인] [룰] [타켓]

 

Chain 설정

  • 형식) iptables -[A | I | D]
    A : Append 모드. 해당 체인 제일 마지막에 룰 추가
    I : Insert 모드
    D : delete 모드

 

Rule 설정

IP/ICMP/TCP/UDP 모두 호스트를 식별하기 위해서 IP를 이용함 1) -s IP 또는 IP대역 : 출발지 IP. 명시하지 않으면 any
2) -d IP 또는 IP대역 : 목적지 IP. 명시하지 않으면 any
TCP/UDP의 경우 포트 번호를 통해 서비스를 식별함 1) --sport [포트 번호]
--sport 1024:   --> 1024 이상
--sport :65535
--sport 1:1023
2) --dport[포트 번호]
ICMP의 경우 타입과 코드를 통해서 메시지를 식별함 1) --icmp-type [메시지타입] : 메시지 타입 명시
--icmp-type echo-request : ICMP Echo Request 메시지를 의미
TCP 패킷 행동 유형에 따른 필터링 룰 설정으로 다음의 모든 옵션은 TCP 프로토콜(-p tcp) 옵션이 먼저 선행되어야 함 1) --tcp-flags [검사할 플래그 리스트] [설정되어야할 플래그 리스트]
--tcp-flags SYN,FIN SYN,FIN : SYN,FIN 플래그만 검사해서 SYN,FIN플래그가 설정된 패킷을 탐지함.(SYN,FIN만 검사하니까 SYN,FIN외에 다른 플래그 설정값 있어도 탐지됨)

--tcp-flags ALL SYN,FIN : 모든 플래그(ALL) 검사해서 SYN,FIN만 설정된 패킷을 탐지.(ALL이 검사대상이니 SYN, FIN만 설정된 패킷만 탐지됨)
2) -m state --state [탐지할 상태]
-m state : 확장 기능 중 TCP 상태(state) 기능을 사용한다는 의미
--state [탐지할 상태] : 탐지할 상태에는 NEW, ESTABLISHED, RELATED, INVALID가 있음

 

Target 설정

  • 형식) -j [정책] : 룰에 매치될 떄 적용할 정책을 지정
    -j ACCEPT : 해당 패킷을 허용
    -j DROP : 해당 패킷을 차단한 후 아무런 응답 메시지도 전송안함(보안상 DROP이 적절)
    -j REJECT : 해당 패킷을 차단한 후 ICMP 에러메시지로 응답
    -j LOG : 탐지로그를 남김(/var/log/messages)