Iptables
: 리눅스 상에서 방화벽을 설정하는 도구로서 커널 2.4 이전 버전에서 사용되던 ipchains를 대신하는 방화벽 도구이다
Iptables 정책
: iptables 정책은 여러 구분으로 나눠지며 중요한 부분은 chain이다
chain은 패킷이 조작될 상태를 지정하며 ipchains에 내장된 기본 chain은 아래 내용과 같다
- chain INPUT : 서버로 들어오는 기본 정책
- chain FORWARD : 서버에서 forwarding 기본 정책( 목적지가 서버가 아닌 통과하는 chain이다 )
- chain OUTPUT : 서버에서 나가는 기본 정책
iptables의 구조
iptables -A INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -j [정책]
iptables 설정 파일
- 설정 파일 작업시 정책에 대한 순서를 편하게 설정할 수 있다는 장점이있다
/etc/sysconfig/iptables
iptables 기본 옵션
옵션 | 설명 |
-L | 적용되어 있는 정책 목록을 출력한다 |
-A | 새로운 정책을 추가한다( 제일 아래에 추가됨 ) |
-I | 위치를 선책하여 정책을 삽입한다( 제일 앞에 추가됨 ) |
-R | 위치를 선택하여 정책을 교환한다 |
-D | 위치를 선택하여 정책을 제거한다 |
-N | 새로운 체인을 만든다 |
-P | 체인에 미리 정의되어 있는 정책을 수정한다 |
-Z | 체인의 모든 규칙들의 패킷과 비이트 카운트를 0으로 만든다 |
-X | 비어있는 체인을 제거한다 |
iptables 제어 옵션
옵션 | 설명 |
-s | 패킷의 송신지를 제어한다 |
-d | 패킷의 수신지를 제어한다 |
-j [옵션] | 방화벽을 지난 후 패킷의 상태를 제어한다 [ 옵션 : ACCEPT, DROP, REJECT ] |
-p | 프로토콜을 제어한다 |
--sport | 송진지 포트를 제어한다 |
--dport | 수신지 포트를 제어한다 |
패킷 상세 내역에 따른 제어 옵션 명령어
명령어 | 설명 |
--tcp-flags | tcp 플래그에 따라 패킷을 제어한다 |
-m state --state[ 상태 ] | 패킷의 상태와 목적에 따라 제어한다 |
-m state --state[ 상태 ] 상태 옵션
상태 옵션 | 설명 |
-NEW | 새로 접속을 시도하는 패킷 |
-ESTABLISHED | 접속을 한 상태에 있는 패킷 |
-INVALID | 유효하지 않은 패킷 |
-RELATED | 접속에 연관성을 가지는 패킷 |
iptables 규칙 추가 예제
- 로컬로 들어오는 ICMP 요청에 대한 특정 호스트(192.168.0.10)의 패킷을 허용하지 않고자 할 때
#iptables -A INPUT -s 192.168.0.10 -p icmp -j DROP
iptables 규칙 제거 예제
- 위에서 만든 규칙을 제거할 때
#iptables -D INPUT -s 192.168.0.10 -p icmp -j DROP
or
#iptables -D INPUT [라인 번호]
( "iptables -L --line-numbers" 명령어로 조회가능 )
#iptables -F INPUT
(모든 체인이 삭제된다)
iptables 정책 순서
- 모든 방화벽은 순차적 실행이기 때문에 등록 순서에 있어서 먼저 등록한 부분에 대해서 효력이 유효하기 때문에 등록시에는 순서가 매우 중요하다
- 모든 입출력 패킷에 대해 거부하는 설정이 먼저 등록되면 그 이후에 포트를 열어주는 설정을 하여도 효과가 없다
- 허용하는 정책을 먼저 정의한 다음 거부하는 정책을 설정해야 한다
'리눅스' 카테고리의 다른 글
Tcp Wrapper (0) | 2020.09.22 |
---|---|
Zeroboard( 제로보드 ) (0) | 2020.09.19 |
리눅스 APM (0) | 2020.09.18 |
리눅스 demon(데몬) (0) | 2020.09.18 |
리눅스 rpm과 yum (0) | 2020.09.18 |