리눅스
iptables 를 사용한 방화벽
NUL
2009. 12. 16. 18:00
2009/12/15 - [리눅스] - Redmine VPS 서버 구축
에 이 방화벽을 세팅해봤습니다.
# iptables -L -v
2. 저장
# service iptables save
# iptables-save > XXXX.XXX
3. 재시작
# service iptables restart
HTTP / SSH / FTP 를 제외한 모두 막기를 기본 개념으로 합니다.
SVN은 HTTP를 쓰고 있는 상황이므로 별도 설정 없음.
에 이 방화벽을 세팅해봤습니다.
참고 사이트
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
/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 에서 스크립트를 실행하는 것으로 해결을 봄