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

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

3 Responses

  1. 2022년 6월 19일

    1dwindle

  2. 2023년 1월 26일

    1tradesman

페이스북/트위트/구글 계정으로 댓글 가능합니다.