CentOS

방화벽 iptables

1. 개요

Redhat 계열, CentOS 6.x 이하에서는 방화벽으로 iptables를 사용한다.
그에 대한 간단한 소개와 정책 적용 방법에 대해서 소개한다.

 

2. 정책 확인

iptables -nL –line-numbers

3. 정책 삭제

### 모든 정책 삭제
iptables -F

### 특정 정책 삭제
iptables -D [INPUT/OUTPUT/FORWARD] [NUMBER]

4. 정책 추가

– 자주 사용하며 기본이 되는 정책

# 체인의 기본 정책 DROP 설정
iptables -P [INPUT/OUTPUT] DROP
# 내부 → 외부 후 다시 내부로 들어오는 패킷에 대해 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 1.2.3.4에서 접속하는 SSH 허용(INPUT)
iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s 1.2.3.4 -j ACCEPT
# 1.2.3.4에서 접속하는 SSH 허용(OUTPUT)
iptables -A OUTPUT -p tcp --sport 22 -d 1.2.3.4 -j ACCEPT
# eth0 인터페이스를 제외한 다른 인터페이스에서 들어오는 icmp 허용
iptables -A INPUT -p icmp ! -i eth0 -j ACCEPT
# 192.168.1.0/24 대역에서 들어오는 패킷 DROP
iptables -A INPUT -s 192.168.1.0/24 -j DROP
# 1.2.3.0 - 1.2.3.255에서 들어오는 패킷 DROP
iptables -A INPUT -p all -m iprange --src-range 1.2.3.0-1.2.3.255 -j DROP

### 1.2.3.4에서 접속하는 SSH에 대한 LOG 기록
# iptables log는 /var/log/messages에서 확인 가능 / tail -f /var/log/messages
# -A 옵션은 정책 맨 아래에 추가 / -I 옵션은 정책 맨 위에 추가
# 로그명 "INPUT_ACCEPT_SSH"
iptables -I INPUT -p tcp --dport 22 -s 1.2.3.4 -j LOG --log-prefix "INPUT_ACCEPT_SSH"
# 로그명 "INPUT_ACCEPT_SSH"IP, TCP 상세정보(Header 구조 등), TCP seq 출력
iptables -I INPUT -p tcp --dport 22 -s 1.2.3.4 -j LOG --log-prefix "INPUT_ACCEPT_SSH" --log-ip-options --log-tcp-options --log-tcp-sequence

### INPUT 패킷의 ctstate 상태에 대해서 ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
OPTION
부가 내용
-A [chain]
A(Add) / I(Insert) / R(Replace) / D(Delete)
INPUT / FORWARD / OUTPUT
-p [protocol]
p(protocol)
tcp / udp / icmp / all
–sport
sport(source port)
[출발지 포트]
* 출발지 포트는 클라이언트 PC에서 1024이후 포트에서 접속하기 때문에 1024: (1024 이후)로 지정
–dport
dport(destination port)
[도착지 포트]
* 목적지 포트는 대상 서버의 포트 IP
-s
s(source IP)
[출발지 IP]
-d
d(destiation IP)
[도착지 IP]
-j [target]
j(jump)
ACCEPT(허용) / DROP(버림) / REJECT(거부) / QUEUE(패킷을 사용자 프로그램으로 넘김) / RETURN(stop 메시지 보냄)
* 패킷 처리를 어떻게 할 것인가
Back To Top