[보안] GNU/Linux Bridge 설비를 이용한 Firewall 구축하기 Mini-HOWTO
GNU/Linux Bridge 설비를 이용한 Firewall 구축하기 Mini-HOWTO
작성자: 정정화(jhjung@wyzsoft.com)
작성일: 2000년 6월 19일 17시 50분
대상: 기존 네트워크 환경에 전혀 수정을 가하지 않은채로 방화벽 설비를
사용할 분들
참고 문서: Firewall HOWTO , Linux Real IP Forward/Firewall Machine 구축기
0. 저작권 GPL을 따른다.
1. 들어가기 앞서
기존 본인이 쓴 Linux Real IP Forward/Firewall Machine 구축기는 물론
잘 작동하지
만 라우터에 대한 직접적인 수정을 요구하는 부분이 있어 라우터에 대한 이해
없이는 잘 설정을 못하시는 분들이 많아 방법을 고심하던중 리눅스의 브리지
설비를 이용한 투명한(transparent) 방식의 Firewall을 소개하기에 이르렀다 🙂
2. 요구사항 – Linux Real IP Forward/Firewall Machine 구축기와 같음 –
그러나 윗작업보다는 약간 설정할 부분이 많기 때문에 담배 한갑 더 추가
3. 본인의 장비 및 환경
– Router: CISCO 4500M + 1 Fastethernet module + 2 serial module –
Linux1: Intel pentium III 600 + 256M ram + 12G HDD – NIC: 3com 905 ,
905b – HUB: Intel 405T standalone switch HUB * 3 – IP대역: 211.50.38.0/25
(255.255.255.128) – 디스 한보루 + 불티나 라이터(지포는 잃어버렸음. 새로
사줄 여자분 환영) – Network Bandwidth: T1 – GNU/Linux kernel 2.2.5(커널
버전이 낮은 이유가 있음) – Redhat linux 6.2
4. 여전한 닭질의 시작
저번에 만들어 두었던 크로스 케이블을 버릴 필요는 없다. 이번에도 역시
써야되니까
Cross
+—+ +—+ +—+ ———— PC
| |——-| |— | | ———— PC
| | | | | | ———— PC
+—+ +—+ +—+ ———— PC
Router Linux Hub
box
[그림.1] Linux Box가 추가된 상태
http://ac2i.tzo.com/bridge_filter/ 에서 브리지 필터를 다운 받은후
커널에 패치한다. 2.2.5 기준이기 때문에 상위 버전에서 패치하려면 수작업이
필요할 것이다. 본인은 귀찮아서 커널을 2.2.5로 낮추었다 :))) 커널 컴파일
옵션에서 네트워크에 관련된 옵션은 잘 선택해야된다. 그리고 절대적으로
*BRIDGE* 부분은 무조건 enable시킨다. 제대로 컴파일을 하고 재부팅을 한
후 ipchains -L 을 쳐보면 bridgein 이라는 Chain 하나가 더 생성된 것을
볼 수 있다. 이제 커널에 bridgein, input, forward, output 네개의 기본
체인이 적재된것이다. 그리고 모든 방화벽에 관련된 룰설정은 bridgein에서만
작동한다. 참고로 브리지에 붙은 NIC는 IP를 부여하지 않는게 원칙이지만
외부에서 관리할 경우를 생각해서 IP를 줄 수 있다. 중요한 것은 두 NIC에
대해서 promisc모드와 arp 모드를 켜는 것이다. promisc 모드를 켜지 않으면
브리지가 작동하지 않는다 arp는 arp_proxy를 위해서 켜는 것이다.
ex) ifconfig ethx promisc arp
그리고 브리지 자체를 설정하기 위해서는 bridge config 툴을 받아야 한다.
ftp.tux.org/people/alan-cox/BRCFG.tgz를 받아서 컴파일 한다.
컴파일 후 brcfg를 적당한 곳에 카피한 후(/usr/sbin 정도) 다음 명령을
실행한다. brcfg -ena brcfg -port 1 -ena brcfg -port 2 -ena
브리지가 잘 작동하는것이 보일 것이다. 이 시점부터는 리눅스는 브리지로
작동하기 때문에 ipchains 로 bridgein 에 룰만 설정하면 방화벽으로서의
역할을 충실히 수행한다. 참고로 bridgein 에 대해서는 현재 REJECT 룰은 걸
수 없다. DENY와 ACCEPT만 가능하다. 조만간 패치가 될 것으로 보인다. 가끔
arp를 못 알아내는 경우가 생기는데 /proc/sys/net/ipv4/conf/all/proxy_arp
의 내용을 1로 바꿔서 arp_proxy 가 작동하게 하면 별 문제가 없을 것이다.
5. 요약
-커널 패치(bridge filter) -커널 컴파일(bridge option ‘Y’) -ifconfig
ethx promisc arp -brcfg -ena -brcfg -port 1 -ena -brcfg -port 2 -ena
-tcpdump 등으로 작동 확인 *브리지 자체는 데이터 링크에서 작동하기
때문에 상위 레이어에서 무슨일이 일어나던 상관하지 않는다. 즉 TCP/IP/ICMP
프로토콜 이외에도 본인의 능력여하에 따라서 다른 프로토콜 역시 제어할 수
있다. 이것은 이 문서를 읽는 분들의 과제로 남긴다.
6. 사용후기
기존 IP 포워딩에서 문제였던 라우터를 더이상 신경쓸필요가
없다. 결론은 무지 편해졌다이다!!!! 날잡고 방화벽 바꾸시길 다들.
6. 질문및 의견
정정화(jhjung@wyzsoft.com) 와이즈소프트 기술개발 연구소 개발3팀/팀장
방화벽/보안기술 개발팀
7. 감사의 말 이번엔 혼자 썼음-_-;