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 |