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. 감사의 말 이번엔 혼자 썼음-_-;