집에 굴러다니는 장비가
ThinkPad R52 노트북 1대
AMD Sempron 데스크탑 1대
Compaq ProLiant DL360 1u 서버 1대
케이블 모뎀 1대 (내꺼 아님)
zio INB3040SR V2 4포트짜리 공유기 1대
그외 잡다구리한 컴퓨터 부품들...
DL360이 방화벽 겸 공유기 역할을 할 것이고 데스크탑 pc는 가상서버(OpenVZ 기반)를 운영할 것이다.
노트북은 순수하게 데스크탑 용도.
---|모뎀|---|방화벽|---|공유기|(실제 hub 역할을 하게된다)
| |
| |
|노트북| |데스크탑|
1. 방화벽 서버 세팅
1) gentoo를 설치한다.
2) 네트웍 설정을 한다.
# cat /etc/conf.d/net
# 외부 네트웍을 연결하는 인터페이스
iface_eth0="dhcp"
config_eth0=( "dhcp" )
modules_eth0=( "dhcpcd" )
dhcp_eth0="nodns nontp nonis"
# 내부 네트웍을 연결하는 인터페이스
config_eth1=( "1.1.1.1 netmask 255.255.0.0" )
3) dhcp 서버로부터 유동ip를 제대로 받아오는지 확인한다.
이부분이 가장 시간허비한 부분인데 Compaq ProLiant DL360에서 dhcp 클라이언트 문제 를 참조.
참고로, 모뎀을 끄고 몇분있다 다시 켜도 못받아 오는 경우가 있다.
이럴땐 모든 랜케이블 다 뽑고 컴퓨터 전원 다 뽑고 밖에서 담배한대 피우고 들어와서 다시 작업하자.
4) iptables 설치를 한다.
emerge iptables로 한번에 끝낼 수 있지만 현재 portage tree에 올라온 버전은 1.3.5 인데 netfilter.org에서 1.3.8까지 나왔다.
그리고 무엇보다도 patch-o-matic 으로 특정기능, 이를테면 string matching 이나 특정 국가 접속차단 같은 기능을 추가하려면 커널을 다시 컴파일 해야한다. iptables는 어플리케이션 기반이 아니고 커널기반에서 작동한다. 기억..
# cd /usr/src/linux
# wget http://netfilter.org/어쩌구저쩌구/iptables-1.3.8.tar.bz2
# wget http://netfilter.org/블라블라블라/patch-o-matic-20070821.tar.bz2
# bzip2 -cd iptables-1.3.8.tar.bz2 | tar xvf -
# ln -s iptables-1.3.8 iptables
# bzip2 -cd patch-o-matic-20070821.tar.bz2 | tar xvf -
# cd patch-o-matic-20070821
# ./runme --download
# ./runme all
패치할 항목을 선택한다.
N : 안한다. 다음
y : 선택
b : 이전으로
t : 적합한지 테스트
# cd ../linux
# make menuconfig
이렇게 하면 방금 추가한 항목들이 나타난다.
# make && make modules_install
모듈로 선택한 놈들을 /etc/modules.autoload.d/kernel-2.6 에 추가한다.
mod_insert.sh 스크립트를 이용한다.
grub 수정/재설정하고 재부팅한다.
5) 방화벽 정책을 설정한다.
# cat /root/firewall.sh
#!/bin/sh
..
IPTABLES="/sbin/iptables"
EXTERN_IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | sed -e "s/.*://"`
..
# iptables의 string matching 기능, 네이트온 접속을 차단한다
$IPTABLES -A FORWARD -p tcp -m string --string "nateon.nate.com" --algo bm --to 65535 -j DROP
# 내부에서 밖으로 빠져나가는 패킷은 eth0에서 받은 유동 ip로 변환한다.
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to $EXTERN_IP
# 패킷의 적합여부 체크
$IPTABLES -A FORWARD -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
...
# cat /etc/conf.d/local.start
/root/firewall.sh &> /dev/null
2. 방화벽에 물리는 노트북, 데스크탑 세팅
간단하다.
네트웍 정보에서 방화벽의 eth1 인터페이스 영역의 정보를 입력한다.
노트북 :
ip 1.1.1.50
mask : 255.255.0.0
gw : 1.1.1.1 (방화벽 eth1 의 ip)
데스크탑 :
ip 1.1.1.100
mask : 255.255.0.0
gw : 1.1.1.1 (방화벽 eth1 의 ip)
issue
a. patch-o-matic 에서 geoip(국가별 필터링) 추가하고 커널 컴파일 했는데 오류가 나옴. 원인을 찾아야 함.
b. string matching 기능이 그다지 신뢰할 만하지 않다는 것이다.
네이트온 접속을 차단하기 위해 ethereal로 패킷분석해 걸러낼 문자열을(예를들어 natoon.nate.com) 추가했지만 이는 네이트온 패킷에서만 나오는 것인지 다른 프로그램에서도 나오는 것인지 확실히 구분하기가 모호하다.
그리고 구글이나 일반 웹페이지에서 검색어로 natoon.nate.com 하면 그냥 거부가 되니 분명 문제가 있다.
L7 filtering 을 연구해봐야 겠다.
http://l7-filter.sourceforge.net/
c. 방화벽 구축후 http://www.netfilter.org/ 접속이 안된다. 다른곳은 이상없는데.. 우째 이런일이 ~~
하루쯤 지나니 이상없이 접속할 수 있다.

댓글을 달아 주세요