You cannot see this page without javascript.

진주성 블로그 방문하기

 

 

iptables [-t table] command [match] [target\jump]

-A(--appebd) : 규칙을 추가한다
-N(--new-chain) : 새로운 체인 생성
-X(--delete-chain) : 체인 제거
-P(--policy) : 체인 기본 정책 변경
-L(--list) : 체인의 규칙 상태 보기
-F(--flush) : 체인내의 모든 규칙 제거
-Z(--zero) : 체인내의 모든 규칙의 패킷과 바이트의 카운트를 0으로 초기화
-D(--delete) : 규칙을 삭제
-R(--relace) : 새로운 규칙으로 대체
-I(--insert) : 체인의 가장 처음에 규칙을 추가한다
-E(--rename-chain) : 체인의 이름을 변경한다

INPUT : 로컬로 들어오는 패킷
FORWARD : INPUT 와 OUTPUT 역할, 라우터에 방화벽을 적용할때 쓰임
OUTPUT : 외부로 나가는 패킷
  • 기존정책
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
  • 루프백 허용
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
  • DNS 포트 허용
iptables -A FORWARD -p udp -m udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
  • ICMP Ping 허용
iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT

 

 

예시 - 필자가 사용하고 있는 방화벽 스크립트

아래 스크립트에서 IP부분 첫줄과 두번째줄 적절히 수정후 실행한뒤

/etc/init.d/iptables save 하면 다음 재기동때에 적용된다.

 

#!/bin/sh

MyIP="xxx.xxx.xxx.xxx"
MyIP2="xxx.xxx.xxx.xxx"
IPTABLE=/sbin/iptables

$IPTABLE -F
$IPTABLE -X
$IPTABLE -t nat -F
$IPTABLE -P INPUT DROP
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT
$IPTABLE -A INPUT -p tcp -m state --state INVALID -j DROP
$IPTABLE -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLE -A INPUT -p icmp -j ACCEPT
$IPTABLE -A INPUT -i lo -j ACCEPT
$IPTABLE -A INPUT -p tcp -d 0/0 --dport auth -j ACCEPT
#$IPTABLE -A INPUT -p tcp ! --syn --sport 21 --dport 1024: -s 0/0 -j ACCEPT
#$IPTABLE -A INPUT -p tcp --sport 50000:50100 --dport 1024: -s 0/0 -j ACCEPT

 

# Name service
$IPTABLE -A INPUT -p udp -s $MyIP --sport 53 --dport 0: -j ACCEPT
$IPTABLE -A INPUT -p udp -s $MyIP2 --sport 53 --dport 0: -j ACCEPT
$IPTABLE -A INPUT -p udp -s 168.126.63.1 --sport 53 --dport 0: -j ACCEPT
$IPTABLE -A INPUT -p udp -s 168.126.63.2 --sport 53 --dport 0: -j ACCEPT
$IPTABLE -A INPUT -p udp -s any/0 --sport 0: -d $MyIP --dport 53 -j ACCEPT
$IPTABLE -A INPUT -p udp -s any/0 --sport 0: -d $MyIP2 --dport 53 -j ACCEPT
$IPTABLE -A INPUT -p udp -s any/0 --sport 53 -d $MyIP --dport 0: -j ACCEPT
$IPTABLE -A INPUT -p udp -s any/0 --sport 53 -d $MyIP2 --dport 0: -j ACCEPT

 

# All service
$IPTABLE -A INPUT -p all -s 211.233.81.73 -d $MyIP -j ACCEPT
$IPTABLE -A INPUT -p all -s 211.233.81.73 -d $MyIP2 -j ACCEPT
 

 

# Broad Cast Drop
#$IPTABLE -A INPUT -p all -s 211.233.73.127 -d $MyIP -j DROP
#$IPTABLE -A INPUT -p all -s 211.233.81.127 -d $MyIP -j DROP
#$IPTABLE -A INPUT -p all -s 222.231.6.191 -d $MyIP -j DROP

 

# Web Service Port
$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 80 -j ACCEPT
$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 80 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 80 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 9000 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 8000 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 8008 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 8009 -j ACCEPT

 

#Mail Service Port
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 25 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 110 -j ACCEPT

 

#FTP Service Port
$IPTABLE -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
$IPTABLE -A INPUT -p tcp -m tcp --sport 21 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
$IPTABLE -A INPUT -p tcp -m tcp --dport 50000:50100 -j ACCEPT
$IPTABLE -A INPUT -p tcp -m tcp --sport 50000:50100 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

 

#MySQL Service Port
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 3306 -j ACCEPT
 

# SSH Service
$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP --dport 208 -j ACCEPT
$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 208 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 208 -j ACCEPT

 

# Samba Service
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 137 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 138 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 139 -j ACCEPT
#$IPTABLE -A INPUT -p tcp -s any/0 --sport 1024: -d $MyIP2 --dport 445 -j ACCEPT

 

# IP DROP
#$IPTABLE -A INPUT -p all -s 191.96.249.97 -d $MyIP -j DROP ##2017_03_07_10_56##hack-ip

...

.

.

.

 

비정상 패킷 차단

 

DNS UDP size 512byte 이상의 패킷을 차단

iptables -A INPUT -p udp  --dport 53 -m length --length 512: -j DROP

 

DNS 5초동안 5번 쿼리 발생시 해당패킷 차단

iptables -A INPUT -p udp --dport 53 -m recent --name ddos2 --set

iptables -A INPUT -p udp --dport 53 -m recent --name ddos2 --update --second 5 --hitcount 5 -j DROP

 

Hulk DoS 공격 방어

# 30개 이상의 concurrent connection에 대한 차단
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP

 

비정상적인 TCP FLAG 조합

SYN_FIN 조합

iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP

SYN_FIN 변형 조합

iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

FIN 패킷 차단
iptables -A INPUT -p tcp --tcp-flags ALL FIN -j DROP

NULL 패킷 차단
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

모든플래그조합 패킷 차단 (UAPRSF) - X-mas scan
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

 

위조된 TCP SYN 패킷을 차단
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

 

웹서버에 초당 10번 들어오는 패킷 차단

iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 10/s -j DROP

 

웹서버에 대한 같은 네트워크대역에서 10번 동식 접속하는 TCP SYN flooding 차단

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-abobe 10 --connlimit-mask 24 -j DROP

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

 

 

FTP 상태기반 오픈설정

Atcive Mode/Passive Mode

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    #Atcive Mode/Passive Mode

iptables -A INPUT -m state --state NEW -p tcp --dport 21 -J ACCEPT   #Atcive Mode/Passive Mode

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -J ACCEPT #Atcive Mode

 

SSH Brute Force/Dictionary Attack 차단 룰 설정 : 60초 이내에 5번 이상 연결요청이 차단

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -m recent --name SSH_DROP --set

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -m recent --name SSH_DROP --update --seconds 60 --hitcount 5 -j DROP

 

번호 제목 날짜 조회 수
65 BCP 2017.11.01 588
64 WLAN, VLAN 2017.11.01 189
63 ISMS - 정보보호관리체계 2017.11.01 169
62 위험관리 2017.11.01 218
61 법규 - 추가작성 2017.11.01 113
60 개발보안 file 2017.11.01 563
59 어플리케이션 보안 file 2017.11.01 133
58 시스템보안 file 2017.11.01 1314
57 DDos 공격대응 가이드 - kisa 자료 file 2017.10.31 290
56 블록체인 file 2017.10.31 161
55 route access-list file 2017.10.30 590
54 전자서명의 원리 file 2017.10.30 183
53 사이버 침해사고 대응 절차 file 2017.10.29 235
52 스니핑용 promisc 모드 file 2017.10.29 320
51 DDoS 공격도구 file 2017.10.18 221
진주성 블로그 방문하기
CLOSE