본문 바로가기

Network System/Linux

Linux iptables(방화벽)

iptables란?

= netfilter(넷필터)에 rule(규칙) 설정

네트워크 패킷을 필터링하기 위한 리눅스의 기본 방화벽으로 Netfilter Project에서 개발되었다.

2.2커널에서 ipchains를 사용하였으나, 2.4커널부터 iptable이 기본 탑재되었다.

* netfilter : 리눅스 커널 내부의 네트웤 프레임워크

 

[ iptables 특징 ]

1) 순차적 실행 : 동일한 설정에 대하여 먼저 등록한 것이 효력있음

2) iptables의 명령어로 입력할 경우 바로 적용됨

3) 리눅스 시스템에서 /usr/sbin/iptables에 설치됨

 

[ iptables 기능 ]

- 상태추적 : iptables를 경유하는 패킷에 대한 연결 상태를 추적

- 매칭 : 출발지/목적지 IP, 출발지/목적지 PORT, 프로토콜등을 사용한 매칭

- 로깅 : 매칭되는 패킷을 로그로 저장

- 포트 포워딩 : NAT기능을 포함

* NAT(Network Address Translation) : 네트워크 주소 변환으로 IP 패킷의 다양한 정보를 재기록하고 라우터를 통해 네트워크 트래픽을 주고 받는 기술

 

iptables의 구성요소

1. 테이블(tables)

- Filter

- Nat

- Mangle

- Raw

 

2. 체인(chain)

(기본 체인)

- INPUT : 외부에서 유입되는 패킷에 대한 체인

- OUTPUT : 로컬에 생성된 패킷이 외부 시스템으로 접근하는 패킷에 대한 체인

- FORWARD : 로컬 시스템을 경우하는 패킷에 대한 체인

 

(이외)

- PREROUTING : DNAT(외부 IP -> 내부 사설 IP) 

- POSTROUTING : SNAT(내부 IP -> 외부 공인 IP)

 

 

3. 매치(match) : 옵션

--source (-s) 출발지 IP 주소 or 네트워크 이름
--destination (-d) 목적지 IP 주소 or 네트워크 이름
--sport 출발지 port 번호
--dport 목적지 port 번호
--mac-source 출발지 mac 주소
--protocol (-p) 패킷의 프로토콜
--in-interface (-i) 입력 네트워크 인터페이스
--out-interface (-o) 출력 네트워크 인터페이스
--state 연결상태
--string 패킷에 포함된 특정 문자열
-j 패칭되는 패킷을 지정한 대상으로 이동
--tcp-flags TCP 플래그 설정
-m 확장 모듈 로드

 

4. 타겟(target) : 패킷 처리 옵션

ACCEPT 패킷 정상, 라우팅 수행 승인
DROP 해당 패킷 버림
QUEUE 사용자 프로그램으로 처리하기 위해 대기
LOG 패킷을 syslog로 등록
REJECT 해당 패킷 삭제 후 RST 패킷 전달
RETURN Chain내에서 패킷 처리 계속 진행

 

5. 연결 추적(Connection Tracking)

[ -m state --state (상태) ]

(상태)

- NEW : 새로운 접속을 시작하는 패킷

- ESTABLISHED(뜻 : 자리잡은) : 접속을 한 상태에 있는 패킷

- RELATED(뜻 : 관련된) : 접속에 연관성을 가지는 패킷

- NVALID(뜻 : 효력없는) : 유효하지 않은 패킷

 

iptables 명령어

-A (--append) 해당 체인 마지막에 규칙을 추가
-I (--insert) 해당 체인 처음에 규칙을 추가
-D (--delete) 체인의 규칙을 제거
-N (--new) 사용자 정의 체인 생성
-E 사용자 정의 체인의 이름 변경
-R (--replace) 체인의 규칙을 수정
-F (--flash) 체인 삭제 및 규칙 삭제
-L (--list) iptables의 규칙 록록 출력
-X (--delete-chain) 사용자 정의 체인 삭제
-C (--check) 패킷을 테스트
-P (--policy) 기본 정책 변경

 

'Network System > Linux' 카테고리의 다른 글

dpkg-reconfigure  (0) 2021.02.02
netstat  (0) 2021.02.01
Linux isc-dhcp-server Setting  (0) 2021.01.24
Linux scp(Scure Copy Protocol)  (0) 2021.01.23
Linux 하드웨어 시간과 운영체제 시간  (0) 2021.01.20