iptables multiport모듈을 사용한 방화벽
일반적으로 iptables의 방화벽 스크립트는 아래와 같다.
포트별로 개별라인이 필요하다.
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 20 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 53 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 110 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 143 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 443 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 -d $IPADDR –dport 3306 -j ACCEPT
하지만 multiport모듈을 사용하면 아래와 같이 한줄로 표현이 가능하다.
사용방법은 아래와 같은 라인에 –dport에 ,로 구분하여 포트를 추가해주면된다.
$IPTABLES -A INPUT -p tcp -m multiport -s 0.0.0.0/0 -d $IPADDR –dport 20,21,22,25,53,80,110,143,443,3306 -j ACCEPT
이렇게하면 기본적인 정책은 4줄로 구현이 가능하다.
tcp dport, tcp sport, udp dport, udp sport 이렇게 4줄이다.
아래 스크립트를 사용하면 기본적인 서비스들은 대부분 적용이 된다.
문의사항은 아래 사이트에 남겨주시기 바랍니다.
http://hubgo.com
#!/bin/sh
# iptables 의 절대 경로
IPTABLES=”/usr/local/sbin/iptables”
#rpm버전의 경우 /sbin/iptables
IPADDR=”192.168.0.100″
####################################################
# 2004/11/20 made by http://hubgo.com
# 2004/12/14 edit
# 2004/12/15 added dns server client
# 2004/12/18 added time server client
# 2004/12/23 added whois server client
# 2005/02/16 edited iptables order
# 2005/03/07 edit rules by multi port modules
#
####################################################
#/sbin/depmod -a
$IPTABLES -F
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# Local Traffic ALL allow
$IPTABLES -A INPUT -s 127.0.0.1 -j ACCEPT
$IPTABLES -A INPUT -s $IPADDR -j ACCEPT
# All Allow for IP or IP Range
$IPTABLES -A INPUT -s 218.54.191.0/24 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED,RELATED -j ACCEPT
# Dport Allow
$IPTABLES -A INPUT -p tcp -m multiport -s 0.0.0.0/0 -d $IPADDR –dport 20,21,22,25,53,80,110,143,443,3306 -j ACCEPT
$IPTABLES -A INPUT -p udp -m multiport -s 0.0.0.0/0 -d $IPADDR –dport 20,21,53 -j ACCEPT
# Sport Allow
$IPTABLES -A INPUT -p tcp -m multiport -s 0.0.0.0/0 -d $IPADDR –sport 20,21,25,37,43,53,80,443 -j ACCEPT
$IPTABLES -A INPUT -p udp -m multiport -s 0.0.0.0/0 -d $IPADDR –sport 53 -j ACCEPT
# Ping Allow
$IPTABLES -A INPUT -p icmp -s 0.0.0.0/0 -d $IPADDR -j ACCEPT
# net send drop
$IPTABLES -A INPUT -p tcp –syn -d $IPADDR –sport 139 -j DROP
$IPTABLES -A INPUT -p tcp –syn -d $IPADDR –sport 2603 -j DROP
$IPTABLES -A INPUT -p tcp –syn -d $IPADDR –sport 6666:6667 -j DROP
$IPTABLES -A INPUT -p udp -m multiport -d $IPADDR –dport 135 -j DROP
## INVALID packet drop
$IPTABLES -A INPUT -m state –state INVALID -j LOG –log-prefix “INVALID DROP”
$IPTABLES -A INPUT -m state –state INVALID -j DROP
# syn packet drop
$IPTABLES -A INPUT -p tcp –syn -d $IPADDR -j DROP