Wisdom’s Cloud
[Linux] netfilter와 iptables 본문
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
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 |