보안 리눅스 기본 방화벽 iptable 요약정리
2017.09.26 01:10
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
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
51 |
DDoS 공격도구
![]() | 2017.10.18 | 383 |
50 |
UDP 플러드 공격 - NTP, DNS, SSDP Amplification DDoS Attack
![]() | 2017.10.18 | 1450 |
49 |
Smurf Attack / Land Attack / Ping of Death
![]() | 2017.10.17 | 1581 |
48 |
Tear Drop / Tiny Fragment / Fragment Overlap(고전적인방법)
![]() | 2017.10.17 | 10123 |
47 |
tcpdump - dump traffic on a network
[1] ![]() | 2017.10.13 | 4159 |
46 |
윈도우용 wget
![]() | 2017.09.28 | 4271 |
45 |
룰 기반의 IDS(침입탐지시스템) - snort
![]() | 2017.09.27 | 8252 |
» |
리눅스 기본 방화벽 iptable 요약정리
![]() | 2017.09.26 | 1525 |
43 |
서버 공격에 대한 기법을 소개합니다.(고전적인 방법)
![]() | 2017.09.26 | 2362 |
42 |
서버의 취약점 분석 할수 있는 도구들
![]() | 2017.09.26 | 1976 |
41 |
웹로직 forceshutdown 시키는 스크립트
![]() | 2017.09.13 | 392 |
40 |
win-sshfs for windows
![]() | 2017.09.13 | 8091 |
39 |
uptime 갑인가?
![]() | 2017.09.13 | 875 |
38 |
winscp for windows
![]() | 2017.09.13 | 238 |
37 |
한글 putty
![]() | 2017.09.13 | 12261 |