리눅스

iptables 를 사용한 방화벽

NUL 2009. 12. 16. 18:00
2009/12/15 - [리눅스] - Redmine VPS 서버 구축
에 이 방화벽을 세팅해봤습니다.


참고 사이트

Flash Cafe - 인터넷 서버 학습


iptables 기본 명령

1. 상태보기
   # iptables -L -v

2. 저장
   # service iptables save
   # iptables-save > XXXX.XXX

3. 재시작
   # service iptables restart


iptables 세팅용 스크립트

배치 파일은 chmod 700 으로
HTTP / SSH / FTP 를 제외한 모두 막기를 기본 개념으로 합니다.
SVN은 HTTP를 쓰고 있는 상황이므로 별도 설정 없음.


#!/bin/sh

/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z

# Loopback address
LOOP=127.0.0.1

# Prevent external packets from using loopback addr
/sbin/iptables -A INPUT -i eth0 -s $LOOP -j DROP
/sbin/iptables -A FORWARD -i eth0 -s $LOOP -j DROP
/sbin/iptables -A INPUT -i eth0 -d $LOOP -j DROP
/sbin/iptables -A FORWARD -i eth0 -d $LOOP -j DROP

# Invalid Drop
/sbin/iptables -A INPUT  -m state --state INVALID -j DROP  
/sbin/iptables -A OUTPUT -m state --state INVALID -j DROP

# ssh
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# ssh Specific IP Only
#/sbin/iptables -A INPUT -p tcp -s [IP Address] --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

# httpd
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# imap
#/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT

# mysqld
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

# ftpd
/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# ftp-data
/sbin/iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# Reject All
/sbin/iptables -A INPUT -p tcp --dport 1:65535 -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


추가


/etc/sysconfig/iptables에 설정 내용을 저장하더라도 리부팅 시에 적용이 안되고 설정한 것들이 날라가는 경우가 있음

원인은 모르겠으나 -_-;

/etc/rc.d/rc.local 에서 스크립트를 실행하는 것으로 해결을 봄