제가 IT 업계에서 일을 하다 보니 심심도 하고, 개인적인 공부차원에서 방화벽을 구축해 보았았습니다.
방화벽 Rule은 기존 저희 회사에서 쓰고 있는 정책 그대로 적용되어 있는 것이고, 테스트를 거친 것입니다.
저희 회사 방화벽은 Microsoft사의 ISA2004 제품입니다. Application상에서 구동되는 상당히 좋은 제품이지요.
그런데 왜 회사에 방화벽이 있으면서 더 만들었냐구요? 쉽게 말해서 그냥 이중화 차원에서죠. ISA2004 서버가
논리적으로나 물리적으로 다운되면 사무실에서 외부로 구동되는 모든 서버들이 정지되어 버리지 않습니까?
그 해결방안으로 개인적으로 만들어 본 것입니다.
그럼 이제 부터 구축해 볼까요?
사내 구축한 방화벽 시스템과 동일하게 구축해 보겠습니다.
준비물 : 1. Server (당연히 있어야죠. 한 팬티엄 3 - 700Mhz 이상에 메모리 512MB 이상 정도면 충분할 듯 싶네요.)
참고로 이 서버는 팬티엄 3 - 600Mhz 듀얼 CPU에 메모리 512MB 입니다.
2. NIC(랜카드) : 4 개
3. OS : CentoOS 4 (Red Hat Enterprize Linux AS 4 복재판)
다운 받는 주소 : http://www.centos.org (레드햇 엔터프라이즈 리눅스 AS 4의 공개된 소스를 리빌드하였기
때문에 정품과 동일하다고 보시면 되고, YUM이란 프로그램으로 보안업데이트를 지원하고 있습니다.)
4. Binary RPM(srpm) 설치하기 전에 필요한 패키지는 다음과 같습니다.
libxml2 v2.4.10 or newer
libxslt v1.0.7 o newer
ucd-snmp or net-snmp
openssl - always use latest version
qt and qt-devel 3.1.x, 3.2.x, 3.3.x
위 파일들이 없으시면, yum을 사용하여 설치하세요.
예) # yum install libxml2
# yum install libxslt
# yum install net-snmp
# yum install openssl
# yum install qt
# yum install qt-devel
5. 방화벽 소프트웨어 : FWBUILDER (오픈소스) 설치버전 : 2.0.7-7
다운 받는 주소 : http://www.fwbuilder.org
프로그램 다운로드를 클릭하면 http://sourceforge.net/ 에서 다운로드 받게 되는데 여기에는 RHEL 버전이
없는 것 같네요. 그냥 Source RPM을 다운 받아서 RPM으로 만들어서 설치하셔도 됩니다. 잘 찾아보시면 레드햇 엔터프라이즈용
RPM도 있을 겁니다. 지금 서버에 설치되어 있는 것이 RHEL4 버전용 입니다.
이 프로그램 상당히 좋은 프로그램이죠. 사설 IP(내부 네트워크)에서 공인 IP로 SNAT 시켜 DMZ 구성하는 방법은 인터넷을
뒤지면 몇개 나오는 것 같은데 공인 IP를 네트워크로 쪼개서 하는 방법은 없는 듯합니다. ^^; 또한 프로그램 상에서 방화벽
만드는 룰셋도 지원 합니다. 구현 방법 및 설치가 어려우시면 웹사이트에 설치 방법 PDF 파일이 있습니다. 구버전으로 되어 있고 ,
영어라도 별로 어렵지 않게 볼수 있네요.
Firewall 구현
회사 네트워크
통신회선 : DACOM Metro 10M
공인 : 211.50.x.0/26 (211.50.x.0 - 211.50.x.63) <-- 외부 공인 랜카드(eth0)
211.50.x.64/26 (211.50.x.64 - 211.50.x.127) <-- 내부 공인 (DMZ) 랜카드(eth1)
192.168.1.0/24 (192.168.1.0 - 192.168.1.255) <-- 내부 사설 업무용 랜카드(eth2)
172.30.0.0/16 (172.30.0.0-172.30.255.255) <-- 내부 사설 교육용 랜카드(eth3)
랜카드 IP 설정
구 분 |
I P / Netmask / Gateway |
eth0 |
211.50.x.62 / 255.255.255.192 / 211.50.x.1 |
eth1 |
211.50.x.65 / 255.255.255.192 / 없음 |
eth2 |
192.168.1.254 / 255.255.255.0 / 없음 |
eth3 |
172.30.0.1 / 255.255.0.0 / 없음 |
프로그램 실행 : GNOME에서 프로그램 실행 이나 터미널에서 fwbuilder 을 치고 실행하시면 됩니다. 바탕화면에 실행 아이콘을 만들어서
클릭해도 좋을 듯 싶군요.
방화벽 Policy 정책 화면
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-1.jpg)
- 0 : Manger --> Firewall 허용 (Manager는 외부에서 원격으로 방화벽을 접속할 수 있는 host를 말합니다.) 출발지에서 Manager를 지우고 방화벽을 적용하면 모든 사이트에서 허용이 됩니다. VNC는 패스워드는 8자리 밖에 못 쓰는 제한이 있지만, 영자&숫자&특수문라를 조합하여 즐겨 사용고 있습니다.
- 1 : Work-192.168.1.0 / Edu-172.30.0.0 -->Firewall / broadcast (DHCP 요청)
- 2 : Firewall --> Work-192.168.1.0 / Edu-172.30.0.0 (DHCP 응답)
- 3 : Firewall --> Any (방화벽 내에서 외부로 인터넷 접속 허용)
- 4 : Any --> Firewall (외부에서 Firewall 접속 거부)
- 5 : 특별한 사이트(국민연금) --> Work-192.168.10 (특정 TCP Port 허용)
- 6 : 모든 서비스 거부
모든 방화벽 Policy Rule은 우선순위로 0번 부터 적용 됩니다.
방화벽 External 정책 화면 : eth0
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-2.jpg)
- 0 : Firewall / Work-192.168.1.0 / Edu-172.30.0.0 / Perimeter-DMZ (Anti Spoofing Rule)
방화벽 Work 정책 화면 : eth2
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-3.jpg)
- 0 : 모든 사내 업무용 네트워크 ALL 허용
방화벽 Edu 정책 화면 : eth3
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-4.jpg)
- 0 : Any --> Work-192.168.1.0 / Firewall 거부 ( 교육용 사설 네트워크에서 업무용 네트워크 및 방화벽으로 접속하는 것을 거부한다.)
- 1 : 모든 Inboud/Outbound 서비스 허용
방화벽 DMZ 정책 화면 : eth1
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-5-1.jpg)
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-5-2.jpg)
- 0 - 1 : DNS 서비스 허용
- 2 - 9 : DMZ 에 위치한 공인 IP 서버들이며, 외부에서 접속 가능 (Service : 서비스 / Direction : Outbound)하도록 설정
- 10 : DMZ 내부 서버로의 Ping / Traceroute(Tracert) 테스트 허용
- 11 : DMZ 내부 서버에서 외부로 인터넷 접속 허용 (Direction : Outbound)
- 12 : 서버 외 Outbound 모두 거부
방화벽 loopbak 정책 화면 : lo
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-6.jpg)
방화벽 NAT 정책 화면
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-7.jpg)
- 0 : Work-192.168.1.0 / Edu-172.30.0.0 --> External (외부) 로 내부 사설 업무/교육 네트워크 인터넷 접속이 가능하도록 설정
Translate source address for outgoing connections (MASQUERADE)
IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 211.50.x.62
IPTABLES -t nat -A POSTROUTING -o eth0 -s 172.30.0.0/16 -j SNAT --to-source 211.50.x.62
이정도 되겠습니다. 리눅스로 인터넷 공유 설정해 보신 분들은 아시겠지요.
NIC(랜카드) 정보
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-8.jpg)
특정 DMZ내 Host Server 및 특정 외부 사이트 목록
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-9.jpg)
직접 만드시면 되겠습니다. 참고로 저희 사무실에서 외부로 서비스 중인 서버들만 8대군요. ^^ (Manager와 국민연금EDI 제외)
Manager Host는 외부에서 방화벽을 컨트롤을 가능토록 설정하기 위해 특정 공인 IP을 넣어 만든 것입니다.
네트워크
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-10.jpg)
- Perimeter-DMZ 네트워크 : 211.50.x.64/26 (211.50.x.64 - 211.50.x.127)
- Work-192.168.1.0 네트워크 : 192.168.1.0/24 (192.168.1.0 - 192.168.1.255)
- Edu-172.30.0.0 네트워크 : 172.30.0.0/16 (172.30.0.0-172.30.255.255)
Policy Rule 설정 완료 후 적용
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-11-1.jpg)
![](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fysh.wo.tc%2Fimages%2Ffw-11-2.jpg)
방화벽이 Policy 적용이 완료 되었다. 이젠 방화멱 보안 설정이 완료 된 것이다.
서버 리부팅 후 자동으로 방화벽이 정책 실행되도록 하는 법
아시다시피, 리눅스에서는 IPTABLES 를 활용하여 방화벽을 구현하였다.
위 보안 정책 GUI는 XXX.fwb 로 저장되며, 보안 정책을 컴파일하고 하면, XXX.fw 생성이 된다.
감이 오시겠지요? 여기서 XXX.fw 파일을 열어보시면, iptables script로 이루어 진것을 보실수 있습니다.
그럼 자동으로 서버 리부팅시 방화벽 정책이 적용되게 해 보겠습니다.
두가지 방법이 있으니 골라서 사용하십시오.
전자 :
저장된 디렉토리로(가정 : /etc/firewall) 가서 다음과 같이 치시기만 하면 됩니다.
# ./XXX.fw <-- 방화벽 보안정책 적용됨.
서버 리부팅시 자동으로 실행되도록 하려면,
# vi /etc/rc.d/rc.local 파일을 열어서
/etc/firewall/XXX.fw <-- 추가하고 저장하고 나가면 자동으로 방화벽이 실행되게 된다.
# chkconfig --level 2345 iptables off <-- 시작시 서비스로 실생되는 것을 없앤다.(기본 방화벽 정책 사용안함)
후자 :
# iptables -F <-- 모든 IPTABLES 정책 초기화
# /etc/firewall/XXX.fw <-- FWBUILDER로 만들어진 방화벽 정책 적용
# service iptables save <-- 방화벽 정책 저장(/etc/sysconfig/iptables 에 정책이 저장된다.)
# chkconfig --level 2345 iptables on <-- 서버 시작시 기본 방화벽 정책을 사용함)
전 전자를 사용합니다. 바로바로 FWBUILD에서 정책을 수정하면 바로바로 적용되기 때문이죠. 후자로 하시게 되면
" service iptables save " 를 해 주셔야 할 듯 싶습니다.
한번 리부팅 해보십시오! 이제 당신에게 강력한 오픈 소스 방화벽이 생기신 겁니다.
유용하게 사용해 보세요.
위 글 가져가시는 분은 꼭 출처를 남겨주세요.
제작자 : 승현이 아빠
출처 : http://유승현.com or http://ysh.wo.tc