kjh00n의 기록저장소

★tables, chain 본문

시스템 보안 구축

★tables, chain

kjh00n 2024. 11. 11. 12:49

iptables

▪ 정책을 구성하여 원하는 패킷을 허용, 차단, 변환하는 방화벽



tables

▪ 정책이 저장, 사용되는 공간

1. filter table
▪ 데이터를 허용, 차단하는 정책이 저장되는 table

2. nat table
▪ 데이터의 주소를 변환하는 정책이 저장되는 table

3. mangle table
▪ 데이터의 header 값을 변환하는 정책이 저장되는 table

chain

▪ 정책이 방화벽 안에서 어느 시점에 적용될지를 결정하는 요소

▪ 정책에서 허용, 차단과 주소변환이 같이 사용되면 시점이 가장 중요해진다.

1. INPUT (무조건 적용) (filter Table)
▪ 패킷의 목적지가 방화벽인 경우 적용

2. OUTPUT (무조건 적용) (filter Table)
▪ 패킷의 출발지가 방화벽인 경우 적용

3. FORWARD (무조건 적용) (filter Table)
▪ 패킷이 방화벽을 지나가는 경우 적용

4. PREROUTING (정책이 있을 때에 적용) (nat table)
▪ 패킷이 방화벽에 들어오자마자 적용

5. POSTROUTING (정책이 있을 때에 적용) (nat table)
▪ 패킷이 방화벽을 나가기 직전에 적용

1,2,3은 중복 적용이 안된다.

 

table과 chain의 연관

filter
▪ 데이터를 허용, 차단하는 정책이 저장되는 table
▪ INPUT, OUTPUT, FORWARD

nat
▪ 데이터의 주소를 변환하는 정책이 저장되는 table
▪ PREROUTING : 패킷이 방화벽에 들어오자마자 주소 변환하고 싶은 정책
▪ POSTROUTING : 패킷이 방화벽에 나가기 직전에 주소 변환하고 싶은 정책

mangle
▪ 데이터의 header 값을 변환하는 정책이 저장되는 table
▪ INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING

어떤 경우에 출발지, 목적지 주소가 변환되냐?

- 사설 ip가 공인 ip로 변환될 때 = 출발지 주소가 변환

- 공인 ip가 사설 ip로 변환될 때 = 목적지 주소가 변환

 

주소 변환 후 허용, 차단

- 사설→공인→허용, 차단 정책 적용 (주소를 공인으로)

- 공인→사설→허용, 차단 정책 적용 (주소를 사설로)

 

허용, 차단 후 주소 변환

- 사설→허용, 차단 정책 적용 (주소를 사설로)→공인

- 공인→허용, 차단 정책 적용 (주소를 공인으로)→사설

 

공인 IP를 허용, 차단 정책으로 적용하는 경우 문제가 발생

ex) 8.8.8.8 -> 100.1(공인) -> 10.1(사설)

100.1을 차단

 

ex) 10.1 -> 100.1로 나가고 들어오는 경우 100.1 -> 10.1

ex) 10.2 -> 100.1로 나가고 들어오는 경우 100.1 -> 10.2

일괄적으로 공인을 차단하면 100.1 DROP 하면 10.1 10.2로 가는 것들이 다 차단된다.

개별적인 사설 IP에 대한 정책 구성이 불가능해진다.

개별적인, 세부적인 허용, 차단 정책을 구성하고 싶으면 사설 IP를 기준으로 정책 구성해야 한다

 

ex) 10.1 DROP 10.2 ACCEPT

사설 -> 공인 -> 정책 적용

주소변환을 허용, 차단 정책보다 먼저 하면 정책 적용이 안된다.

정책 적용 -> 공인 -> 사설

주소변환을 허용, 차단 정책보다 나중에 하면 정책 적용이 안된다.

 

1. 정책을 구성하는 경우 사설 IP주소로 정책을 구성해야 된다.

 

2. 사설 -> 공인으로 변하는 경우 정책을 먼저 적용해야 한다. = 정책적용 후 주소변환

nat-pat (내부망에 있는 다수의 client가 외부망과 통신하기 위해 사용)

내부(사설) -> 외부(공인) 정책 적용을 주소변환 전에 해야 한다. 정책 적용 이후에 주소변환한다.

 

3. 공인 -> 사설로 변하는 경우 정책을 나중에 적용해야 한다. = 주소변환 후 정책 적용

static nat (외부망에 있는 client가 내부망에 있는 server에 접근할 수 있도록)

외부(공인) -> 내부(사설)

정책 적용을 주소변환 후에 해야 한다.

주소변환 이후에 정책 적용한다.


헷갈리면 외워★

액션

1. 허용, 차단 정책은 어디에 구성하는가?
filter table의 FORWARD 체인에 구성 → ACCEPT, DROP

2. nat-pat 정책은 어디에 구성하는가?
nat table의 POSTROUTING 체인에 구성 → SNAT, MASQUERADE

3. static nat 정책은 어디에 구성하는가?
nat table의 PREROUTING 체인에 구성 → DNAT

iptables 정책 구성 명령어

iptables [테이블] [제어옵션] [체인] [조건] [액션]

 

- 정책 확인

▪ iptables -t [테이블이름] -L

L(List)

▪ iptables -L하면 filter table이 기본으로 입력되서 나온다.

 

- 정책 초기화 (전체 삭제)

▪ iptables -t [테이블이름] -F

F(Flush)

★초기화를 해도 기본정책까지 초기화하지는 않는다

 

- 정책 추가

▪ iptables -t [테이블이름] -A [체인] [조건] [액션]

→ A(Add)

조건 = 매칭되는 데이터를 찾기 위한 조건

액션 = 매칭되는 데이터를 어떻게 처리할지 결정 (ACCEPT, DROP, SNAT, MASQUERADE, DNAT)

 

ex) iptables -t filter -A FORWARD -p icmp -s 10.10.10.1 -d 20.20.20.1 -j ACCEPT

ex) iptables -t filter -A INPUT -p tcp --dport 22 -s 10.10.10.1 -j DROP

 

[-p] = 프로토콜

[-s] = 출발지 IP주소

[-d] = 목적지 IP주소

[--dport] = 목적지 port주소

[--sport] = 출발지 port주소

[-j] = 액션

 

- 정책 주입

▪ 원하는 위치에 정책을 주입한다. (끼워넣기)

 

▪ iptables -t [테이블] -I [체인] 숫자(끼워 넣을 위치) [조건] [액션]

ex) iptables -t filter -I FORWARD 1 -p icmp -s 10.10.10.1 -j ACCEPT

 

10.10.10.1 DROP

20.20.20.1 ACCEPT       <- 중간에 끼워넣기

30.30.30.1 DROP

 

- 정책의 위치는 중요

▪ iptables는 정책의 순서에 따라 적용된다.

▪ 첫 번째 정책이 실행됐다면 그 뒤에 있는 정책은 실행하지 않는다. 

(범위가 넓은 정책은 후순위로, 범위가 좁은 정책은 앞순위로)

 

▪ 체인마다 기본정책이라는 정책이 설정되어 있다.

→ policy DROP or ACCEPT

policy가 DROP이면 그 이후로는 모두 DROP, ACCEPT면 모두 ACCEPT

 

▪ iptables -t filter -P [체인] [액션]

ex) iptables -t filter -P INPUT DROP

 

- 정책 삭제

▪ iptables -t [테이블] -D [체인] [숫자]

ex) iptables -t filter -D INPUT 1

 

-j [액션]

[filter table]

▪ ACCEPT = 허용

 

▪ DROP = 차단 (완전 차단) (차단됐다고 알려주지 않음)

 

▪ REJECT = 차단 (차단됐다고 알려줌)

 

▪ LOG = 조건에 매칭되는 데이터의 로그 작성 (순서를 잘 생각해야 함)

→ LOG 액션은 로그를 남기는 정책이지 허용, 차단을 결정하는 정책은 아니다.

→ LOG 정책은 항상 앞순위에 위치해야 한다.

 

[nat table]

▪ SNAT (Source NAT) = 출발지 주소 변환 (특정 출발지 주소를 원하는 주소로 변경) (거의 사용 X)

 

▪ DNAT (Destination NAT) = 목적지 주소 변환 (특정 목적지 주소를 원하는 주소로 변경) (static nat에 사용)

 

▪ MASQUERADE = 출발지 주소를 변환 (특정 출발지 주소를 원하는 I/F 주소로 변경) (nat-pat에 사용)

 

▪ REDIRECT = 특정 조건에 매칭되는 Port 주소를 원하는 Port 주소로 변경

'시스템 보안 구축' 카테고리의 다른 글

네트워크 방화벽 구축  (0) 2024.11.12
방화벽 실습  (0) 2024.11.11
★firewalld (공부해라)  (0) 2024.11.11
암호학 정리  (0) 2024.11.07
메일 실습  (0) 2024.11.06