BBUWOO'S [ LIKE UNIX ] WORLD Home > Lecture > Firewall > Firewall-1  

HOME
WHAT's BBUWOO?
LInux AnNyung
Open Source
    GitHUB
    GitHUB (for PHP)
LECTURE
MINI LECTURE
QnA BOARD
ENGLISH POEM


WARNNING

강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://oops.org 에서 확인할수 있다.



OOPS Firewall v7


가장 훌륭한 보안 관리자의 첫번째 요소로는 필자는 관심으로 생각을 한다. 즉 얼마나 보안
문제에 관심을 가지고 지켜보고 둘러 보고 패치를 하는지에 그 점수를 가장 많이 준다는 말
이다.

하지만 우리나라의 여건및 고용주들의 습성에 봐서 그렇게 할수 있는 관리자라도 아마 그렇
게 일을 할수가 없을 것이다. 그러므로 내가 비울 수 있는 동안 잠시나마라도 안심을 할 수
있게 해 주는 것이 바로 방화벽이다. 이번 강좌 에서는 이 방화벽을 구축해 보도록 하겠다.

지금 부터 강좌를 해 나가는 부분은 엄밀하게 말하자면 방화벽에 대한 강좌는 아니다. 방화
벽을 구축하는 강좌이지 방화벽에 대한 이해및 원리, 설정 방법을 논하는 것이 아니라 필자
가 임으로 패키징 해 놓은 방화벽을 어떻게 사용을 할 것인가에 대한 설명이다.

필자가 지금부터 설명을 할 방화벽은 Kernel 2.4/2.6 의 Netfilter 기능을 이용한 패킷필터
링이다. 즉 Kernel 2.4 이상 버전과 iptables 라는 패키지가 필요하다. iptables 는 Kernel
2.2 에서의 ipchains 보다 좀더 진화한 패킷 필터링 프로그램이라고 생각하면 된다.




    1. 6.x 이하 버전과 설정파일이 호환되지 않음 (코드/룰 재작성)
    2. Bridge ruleset 성능 강화
    3. Bridge device control을 더이상 하지 않음. Birdge 구성은 시스템에서 해야 함.
    4. Forwarding ruleset 강화
    5. Masquerading ruleset 강화
    6. Session status를 세밀하게 설정 가능
    7. IP/Port 의 range 처리 강화




원격 으로 이 작업을 하는 경우에는 조금만 실수를 하면 그냥 끝장이다.  data 가 날라가는
것은 아니지만 순식간에 접속이 되지를 않게 된다. 즉 원격에 있는 호스트로 달려가서 다시
풀어줘야 한다는 말이다. 그러므로 이 색상의 라인은 아주 주의해서 읽기 바란다.

될수 있으면 해당 호스트의 콘솔에서 직접 작업을 하기를 권장한다. 또한 이 방화벽을 사용
함에 있어서 발생하는 문제에 대해서는 본인이 책임을 지지 않으니 알아서들 결단을 내리기
를 바랄 뿐이다.
 
다시 한번 당부하지만 이글을 한번 정도는 정독을 한후에 설정을 해 보기를 권장한
다. 즉 읽어보고 이해가 충분히 되거든 설정을 하기 바란다.

또한 RH 7.x 이상 에서는 커널 2.4/2.6 을 기본 지원 하지만 ipchains 를 이용한 자체 방화
벽을 제공 하고 있다. 하지만 RH에서 제공하는 방화벽 보다는 OOPS FIREWALL 이 좀 더 향상
된 기능을 제공하고 있으며, RH 에서 제공하는 FIREWALL 대신에 OOPS FIREWALL 을 사용하는
방법을 여기서 잠깐 논하겠다.

일단 ntsysv를 실행해서 ipchains와 iptables의 체크를 삭제하도록 한다. 다음 명령을 실행
하여 ipchains 와 iptables 를 내리도록 한다. (배포본에 버전에 따라 ipchains가 없을수도
있다.)


Hanterm - /sbin/chkconfig iptables off

 [root@bbuwoo /etc]$ /sbin/chkconfig iptables off >& /dev/null
 [root@bbuwoo /etc]$ /sbin/chkconfig ipchains off >& /dev/null
 [root@bbuwoo /etc]$ /etc/init.d/iptables stop
 [root@bbuwoo /etc]$ /etc/init.d/ipchains stop
 [root@bbuwoo /etc]$





OOPS Firewall v7은 http://mirror.ops.org 에서 소스 파일을 얻을 수 있다. OOPS Firewall
은 rpm package와 deb package 생성을 지원한다. 설치시에 msgfmt가 필요하므로 gettext 패
키지 설치 여부를 확인하기 바란다.

다음은 rpm 패키지 생성을 위한 명령이다. rpm package 를 만들기 위해서는 rpm-build 패키
지가 필요하다.

* RPMize 

Hanterm - rpmbuild -Uhv oops-firewall-7.0.1-1.noarch.rpm

 [root@bbuwoo root]$ curl -o oops-firewall-7.0.1.tar.bz2 \
  > http://mirror.oops.org/pub/oops/oops-firewall/oops-firewall-7.0.1.tar.bz2
 [root@bbuwoo root]$ rpmbuild -tb oops-firewall-7.0.1.tar.bz2
 [root@bbuwoo root]$ cd /root/rpmbuild/RPMS/noarch (RHEL 6 or CentOS 6)
 [root@bbuwoo root]$ cd /usr/src/rpm/RPMS/noarch (RHEL 5 or CentOS 5 이하버전)
 [root@bbuwoo noarch]$ rpm -Uhv oops-firewall-7.0.1-1.noarch.rpm
 [root@bbuwoo noarch]$



위와 같이 생성을 했을 경우 RHEL 5 또는 CentOS 5 까지는 /usr/src/redhat/RPMS/noarch 에
생성이 되고, RHEL 6 또는 CentOS 6 부터는 /root/rpmbuild/RPMS/noarch 에 생성이 된다.


* Debianize

다음은 deb 패키지 설치을 위한 명령이다. deb package생성에 대해서는 소스 파일안에 있는
README.debian 문서를 참조하라. 여기서는 빌드된 deb package를 다운로드 받아서 설치하는
방법을 본다.


Hanterm - dpkg -i oops-firewall_7.0.1-1_all.deb

 [root@bbuwoo root]$ curl -o oops-firewall_7.0.1-1_all.deb \
  > http://mirror.oops.org/pub/oops/oops-firewall/deb/oops-firewall_7.0.1-1_all.deb
 [root@bbuwoo root]$ apt-get install ipcalc
 [root@bbuwoo root]$ dpkg -i oops-firewall_7.0.1-1_all.deb
 [root@bbuwoo root]$




* Source build

다음은 소스 설치 방법에 대해 기술한다.


Hanterm - bash debbuild-sh

 [root@bbuwoo root]$ curl -o oops-firewall-7.0.1.tar.bz2 \
  > http://mirror.oops.org/pub/oops/oops-firewall/oops-firewall-7.0.1.tar.bz2
 [root@bbuwoo root]$ tar xvfpj oops-firewall-7.0.1.tar.bz2
 [root@bbuwoo root]$ cd oops-firewall-7.0.1
 [root@bbuwoo oops-firewall-7.0.1]$ ./configure --help

  Usage: ./configure [option]
  Options: [defaults in brackets after descriptions]
  Configuration:
    --prefix=PREFIX   설치할 경로의 prefix를 설정
    --bindir=DIR      oops-firewall 실행 파일 경로 [PREFIX/bin]
    --confdir=DIR     설정 파일 경로 [PREFIX/etc/oops-firewall]
    --includedir=DIR  function 라이브러리 경로 [PREFIX/include/oops-firewall]
    --shareddir=DIR   modifiable architecture-independent data in DIR [PREFIX/share]
    --initdir=DIR     redhat/debian init script path [/etc/rc.d/init.d]
    ..

  Check Utility:
    --perl=PATH       path of perl
    --iptables=PATH   path of iptables

 [root@bbuwoo oops-firewall-7.0.1]$ ./configure --prefix=/opt/oops-firewall \
  >                                          --initdir=/etc/rc.d/init.d
 [root@bbuwoo oops-firewall-7.0.1]$ make
 [root@bbuwoo oops-firewall-7.0.1]$ make install
 [root@bbuwoo oops-firewall-7.0.1]$ cd /usr/sbin
 [root@bbuwoo sbin]$ ln -sf /opt/oops-firewall/bin/oops-firewall oops-firewall
 [root@bbuwoo sbin]$ cd /opt/oops-firewall
 [root@bbuwoo oops-firewall]$ tree
  .
  ├── bin
  │   └── oops-firewall
  ├── etc
  │   ├── application.conf
  │   ├── bridge.conf
  │   ├── filter.conf
  │   ├── forward.conf
  │   ├── interface.conf
  │   ├── masq.conf
  │   ├── modules.list
  │   ├── tos.conf
  │   └── user.conf
  ├── include
  │   ├── bridge.h
  │   ├── check.h
  │   ├── color.h
  │   ├── command.h
  │   ├── config.sed
  │   ├── default.h
  │   ├── device.h
  │   ├── forward.h
  │   ├── init.h
  │   ├── masq.h
  │   ├── modules.h
  │   ├── oops-firewall.h
  │   ├── print.h
  │   ├── rule.h
  │   ├── user_post.sed
  │   ├── user_pre.sed
  │   └── version.h
  └── share
      ├── doc
      │   └── oops-firewall-7.0.1
      │       ├── COPYING
      │       ├── CREDIT
      │       ├── Changelog
      │       └── README
      └── locale
          └── ko
              └── LC_MESSAGES
                  └── oops-firewall.mo

  9 directories, 32 files

 [root@bbuwoo oops-firewall]$




다음 장에서는 oops-firewall 를 어떻게 사용하는지 설정하는 것을 보도록 하겠다.


>> 다음 : OOPS Firewall 인터페이스 설정


    



 Home > Lecture > Firewall > Firewall-1

Copyright 1997-2024 JoungKyun Kim 
LAST MODIFIED: 2017/01/18