Wisdom’s Cloud

[Linux] netfilter와 iptables 본문

LINUX/Advanced

[Linux] netfilter와 iptables

지혜로운지혜쓰 2022. 10. 3. 19:16

 

 

 

netfilter란?

 

netfilter는 시스템에 들어오는 모든 패킷을 분석해서 사용자의 뜻대로 처리 및 기록할 수 있도록 하는 프레임워크다.

아래와 같이 5개의 hook 지점을 제공하여 원하는 지점에서 패킷을 처리할 수 있도록 지원한다.

  • NF_IP_PRE_ROUTING: 인터페이스를 통해 들어온 패킷을 처리
  • NF_IP_LOCAL_IN: 로컬 프로세스로 들어오는 패킷을 처리
  • NF_IP_FORWARD: 다른 호스트로 통과시켜 보낼 패킷을 처리
  • NF_IP_LOCAL_OUT: 로컬 프로세스에서 나갈 패킷을 처리
  • NF_IP_POST_ROUTING: 인터페이스를 통해 나갈 패킷을 처리

 

 

iptables란?

 

iptables는 netfilter에 룰을 넣어 사용자가 원하는대로 접근 통제를 할 수 있도록 하는 도구다.

아래와 같이 iptables는 서로 다른 종류의 패킷 처리를 기능적으로 분리하기 위해 Table이라는 개념을 사용하는데, 이 Table들은 Chain을 가지고 있고, 이 Chain들은 Rule을 가지고 있다.

  • Table은 5가지로 구분되며, 각각 사전에 정의된 Chain들을 가지고 있다.
  • Filter Table: 패킷을 필터링할 때 사용
  • NAT Table: 네트워크 주소를 변환할 때 사용
  • Mangle Table: 패킷을 변조할 때 사용
  • Raw Table: 연결 추적을 할 때 사용
  • Security Table: SELinux을 설정할 때 사용
  • Chain은 5가지로 구분되며, hook별로 존재한다.
  • PREROUTING: NF_IP_PRE_ROUTING hook에 의해 트리거
  • INPUT: NF_IP_LOCAL_IN hook에 의해 트리거
  • FORWARD: NF_IP_FORWARD hook에 의해 트리거
  • OUTPUT: NF_IP_LOCAL_OUT hook에 의해 트리거
  • POSTROUTING: NF_IP_POST_ROUTING hook에 의해 트리거

 

Rule은 iptables 명령어를 활용하여 설정할 수 있으며, iptables의 기본 문법은 다음과 같다.

iptables     [-t table]     [action]     [chain]     [match]     [-j target]

 

  • table은 filter, nat, mangle, raw, security가 있으며, 생략하게 되면 자동으로 filter로 적용된다.
  • action는 rule을 어떻게 할 지 지정한다.
  • -A(--append): 해당 chain에 rule 추가
  • -C(--check): 해당 chain에 일치하는 rule이 있는지 확인
  • -D(--delete): 해당 chain에서 rule 삭제
  • -I(--insert): 해당 chain에 rule 번호를 지정하여 rule 추가
  • -R(--replace): 해당 chain에 rule 변경
  • -L(--list): 해당 chain의 모든 rule 나열
  • -F(--flush): 해당 chain의 모든 rule 삭제
  • -N(--new-chain): 사용자 정의 chain 생성
  • -X(--delete-chain): 사용자 정의 chain 삭제
  • -E(--rename-chain): 사용자 정의 chain의 이름 변경
  • chain는 PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING이 있다.
  • match는 패킷과 매칭되는 조건을 지정한다.
  • -p(--protocol): 매칭되는 프로토콜
  • -s(--source): 매칭되는 출발지 
  • -d(--destination): 매칭되는 목적지
  • -i(--in-interface): 매칭되는 입력 인터페이스 (INPUT, FORWARD, PREROUTING chain만 가능)
  • -o(--out-interface): 매칭되는 출력 인터페이스 (FORWARD, OUTPUT, POSTROUTING chain만 가능)
  • target는 패킷을 어떻게 할 지 지정한다.
  • ACCEPT: 패킷을 허용한다.
  • DROP: 패킷을 버린다.
  • RETURN: 해당 chain의 통과를 중지하고, 이전 chain의 다음 rule에서 다시 시작한다.

 

 

 

즉, 시스템으로 들어오는 모든 패킷은 netfilter의 여러 hook들을 통과하게 된다.
이 때 hook별로 iptables에서 정의한 각 chain들의 rule을 점검하여
해당 rule에 매칭되면 특정 action을 트리거한다.

 

 

 

[참고 문서]

https://slidesplayer.org/slide/14483365/

 

iptables & netfilter 개념도 - ppt download

Netfilter란 무엇인가? 커널의 일부분은 각 프로토콜에 대하여 다른 hook을 감시하도록 등록 패킷 프로토콜 스택의 표준 Berkeley Socket Interface의 외부에 존재하는 패킷 mangling에 대한 프레임워크 프레

slidesplayer.org

https://saysecurity.tistory.com/15

 

네트워크 패킷 필터, netfilter - iptables

리눅스나 유닉스계열 서버의 접근통제 정책을 얘기할 때 iptables와 tcp wrapper를 많이 언급하고 그 둘의 장단점을 비교하지요. 보안기사에서도 시험에 종종 나오구요. tcp wrapper는 inetd 데몬에서 처

saysecurity.tistory.com

 

https://nyyang.tistory.com/133

 

[Linux] iptables 정리

- Kubernetes network 스터디를 진행하면서 iptables 개념은 필수로 이해하고 있어야 하기 때문에 정리하였습니다. iptables : 네트워크 패킷들을 규칙에 따라 제어(Accept, Drop, Modify, NAT, ..)하기 위한 유저..

nyyang.tistory.com

https://www.kangtaeho.com/66

 

iptables와 netfilter 정리

Kubernetes나 Openstack는 네트워크 리소스를 제어하기 위해 iptables를 통해 구성이 되어 있다. 아래 digital ocean에서 잘 설명된 것을 정리하면서 추후에 다시 보기 위해 미천한 실력이지만 번역을 해보

www.kangtaeho.com

 

'LINUX > Advanced' 카테고리의 다른 글

[Linux] [CentOS] 프로세스 정보 확인  (0) 2022.11.13
[Linux] [CentOS] 시스템 구성 정보 확인  (3) 2022.10.26
[Linux] [CentOS] vmcore 분석  (0) 2022.09.24
[Linux] [CentOS] Jumbo Frame  (0) 2022.09.18
[Linux] [CentOS] 보안 설정  (0) 2022.09.16