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

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



filter.conf 는 OOPS Firewall 이 설치되어 있는 서버의 Inboud/Outbound 필터링을 하기 위
한 설정 파일이다.

filter.conf 는 아래와 같이 크게 전체적으로 허가를 하는 섹션과  TCP, UDP, ICMP 의 형태
로 Daemon service 들의 패킷을 제어하는 형태로 설정을 한다.

보통 이글을 보는 사람들의 서버에서 이루어지는 서비스는 거의 TCP일 것이다. UDP service
는 드문것으로 알고 있다. 그러므로 TCP 쪽만 주의해서 보면 된다. 그리고 필요한 부분, 또
는 필자가 알고 있는 부분에 대해서는 부연 설명을 붙여 놓게 될것이다.

ICMP 설정에서는 ping 에 대해서만 다루도록 한다. 다른 ICMP 서비스는 막히게 되며 GLOBAL
section 에서 모두 열어주게 되는 호스트및 네트워크들만 서비스가 가능하다.

또한, 체크할 것은 filter.conf 에서의 변화 중 하나는, 3.x 버전 까지는 포트를 지정할 때
에 범위를 지정할 수가 없었으나, 4.x 부터는 - 문자를 사용하여 범위를 지정할 수가 있다.

  . 6.x 부터는 port에 session status를 설정할 수 있다.
  . 7.x 부터는 ip address를 range로 표현을 할 수 있다.


Hanterm - cat /etc/oops-firewall/filter.conf

 [root@bbuwoo oops-firewall]$ cat /etc/oops-firewall/filter.conf

  ##########################################################################
  # paket filtering 을 위한 설정
  # $Id: filter.conf 338 2013-01-04 19:17:13Z oops $
  #
  # Rules:
  #
  #  * IP address format
  #   - Anywhere format
  #     0.0.0.0/0 = 0/0 = ANYWHERE = anywhere
  #   - IP range format
  #     1.1.1.1-255       => 1.1.1.1-1.1.1.255
  #     1.1.1.1-2.255     => 1.1.1.1-1.1.2.255
  #     1.1.1.1-2.3.255   => 1.1.1.1-1.2.3.255
  #     1.1.1.1-1.2.3.255 => 1.1.1.1-1.2.3.255
  #   - subnet
  #     10.10.10.0/24
  #     10.10.10.0/255.255.255.0
  #
  #  * Port format
  #    port[:state] => state가 지정되지 않으면 기본으로 NEW를 사용
  #
  #    53
  #    53-100 (range)
  #    53:NEW
  #    20:ESTABLISHED,RELATED
  #
  #    => STATE
  #       NEW          : 새로운 연결
  #       ESTABLISHED  : 연결이 성립되어 있는 상태
  #       RELATED      : FTP의 20번 포트나 passive port와 같은 연관 연결
  #       INVALID      : 이상 패킷
  #
  #  * 설정 format
  #
  #    값의 구분자는 공백문자를 사용함.
  #
  #      Directive = VALUE1 VALUE2 VALUE3
  #
  #    다음과 같이 값을 여러줄로 설정이 가능. 마지막은 '\' 문자가 없어야 함.
  #
  #      Directive = VALUE1 \
  #                  VALUE2 \
  #                  VALUE3

  위의 표현법을 잘 인지해 두자.

  ##########################################################################
  # GLOBAL Setting
  ##########################################################################
  # 자신의 서브넷에 대해 모든 서비스 open
  # 자기 자신만 접속이 가능하게 할때만 0 으로 지정 (이경우 콘솔에서만 접속
  # 이 가능하게 됨)
  #
  # 사용     : 1 or true or yes
  # 사용안함 : 0 or false or no
  #
  ALLOWSELF = true

  ALLOSELF 의 값을 1로 하면 자신의 호스트에 설정이 되어 있는 NETWORK 와
  SUBNET MASK 를 판단하여 해당 호스트의 네트워크에서는 아무런 제한이 없
  이 접근이 가능하게 설정을 한다. 0 을 선택했을 경우에는 자기 자신의 주
  소 에서만 아무런 제약이 없도록 한다.

  기본값은 true(1)이지만 안전한 네트워크라는 확신이 없다면 false로 설정
  하는 것을 권장한다.

  # 모든 서비스를 허락할 호스트 설정
  #
  # RULE:
  #       SOURCE_IP
  #
  ALLOWALL =

  ALLOWALL은 위에서의 자신의 네트워크 외에 다른 곳에서 아무런 제약을 받
  지 않을 호스트나 네트워크를 설정을 한다. 설정 형식은 상단 주석의 IP주
  소 표현 형식을 이용할 수 있다.

  여기서 원격 작업을 하는 사람들은 꼭 현재 작업을 하고 있는 호스트의 IP
  주소를 임시로 넣어 주도록 한다. 안그랬다가 원망살 일이 있게 된다고 앞
  에서 분명히 경로를 했다.

  좀더 쉽게 말하면.. firewall 설정을 하는 서버가 A이고 현재 키보드 작업
  을 하고 있는 client 가 B 라면 여기에 B 의 IP 주소를 꼭 넣우 주고 작업
  을 하라는 의미이다. 모든 작업이 완전 하게 되었다고 테스트를 마쳤을 경
  우에만 삭제를 해 주도록 한다.

  즉 ALLOWALL 은 말 그대로 아무런 제약을 하지 않을 곳이라는 의미이다.


  ##########################################################################
  # TCP configuration
  ##########################################################################
  #
  # 모두 열여줄 포트를 설정
  # 
  # RULE:
  #       DESTINATION_PORT[:STATE]
  #
  TCP_ALLOWPORT = 22

  자 여기서 부터는 TCP protocol만 제어를 하게 된다. TCP_ALLPORT 는 여기
  에 지정한 PORT번호들은 TCP service 안에서는 아무런 제약을 하지 않겠다
  는 의미이다. 즉 service 를 하는 서버들은 이 부분에 지정이 되어야 할것
  들이 꽤 될것이다. 웹 서비스를 하고 있다면 80 번을, mail service 를 하
  고 있다면 25 번 (tls 기능을 사용시에는 587번도) 등 필요한 곳 즉, 불특
  정 지역에서 접근을 가능하게 할 포트들을 적도록 한다. 참고로 name 서비
  스의 경우에는 UDP 53 번만 열어 주면 된다.

  포트 번호를 모른다면 /etc/services file 을 참고하면 된다.

  주의 할것은 slave name server와의 통신이 필요하다면 slave name server
  에서 tcp 53번으로의 접속을 허가해야 한다.

  # 특정 호스트에 특정 포트를 열어 줄때
  # RULE:
  #       SOURCE_IP[:DESTINATION_PORT[:STATE]]
  #
  TCP_HOSTPERPORT =

  TCP_HOSTPERPORT 는 특정 호스트에 특정 PORT 만을 허락할 경우 설정을 한
  다. 즉 192.168.1.1 에서만 텔넷에 접속을 할 수 있게 하려면 위의 전체를
  열어주는 설정에서 텔넷(23) 포트를 제거한후에 이 설정에 192.168.1.1:22
  라고 지정을 하면 된다. 즉 원하는 호트스에 원하는 포트 번호를 지정하는
  것이라는 말이다.


  ##########################################################################
  # UDP configuration
  ##########################################################################
  #
  # 모두 열여줄 포트를 설정
  # RULE:
  #       DESTINATION_PORT[:STATE]
  #
  UDP_ALLOWPORT =

  드디어 UDP 설정이다. 이곳에서의 설정은 거의 할 기회는 없을 것이다. 주
  의할 것은 named, ircd 와 같은 daemon 을 운영할 경우에는 이곳에서의 설
  정이 꼭 필요 하다는 것이다. samba 의 경우에도 udp 는 사용이 되기는 하
  지만 samba 의 경우에는 내부 네트워크 안을 안 벗어 나는 것이 보안상 좋
  으므로 ALL 의 설정 보다는 아래의 PERHOST의 설정에서 해 주는 것을 권장
  한다. Name Server 를 운영한다면 위의 값에 53 이 꼭 들어가야 한다.

  # 특정 호스트에 특정 포트를 열어 줄때
  #
  # RULE:
  #       SOURCE_IP[:DESTINATION_PORT[:STATE]]
  #
  UDP_HOSTPERPORT =

  내 생각에는 samba 를 운영할때 외에는 별로 설정할 것이 없다고 생각된다.

  ##########################################################################
  # ICMP configuration
  ##########################################################################
  #
  # 특정 호스트에 ping 을 열어 줄때
  # RULE:
  #       SOURCE_IP
  #
  ICMP_HOSTPERPING =

  ping 에 관한 설정이다. 문서들을 좀 보는 사람들이라면 ping 막는 법으로
  sysctl 을 이용하여 막는 방법들을 본적이 있을 것이다. 하지만 sysctl 을
  이용하여 ping 을 막을 경우에는 자기 자신도 ping 을 사용하지 못하게 된
  다. 하지만 IPTABLE을 이용하면 상대방은 나에게 핑을 쏘지 못하지만 나는
  핑을 테스트 할수 있게끔 설정이 가능하다.

  일단 여기서의 설정은 이 설정을 하는 호스트로 핑을 할수 있는 권한을 주
  는 것이다. 위의 GLOBAL 설정에서 지정된 호스트및 네트워크 와 여기서 지
  정된 호스트및 네트워크를 제외하고는 핑을 보내면 패킷이 drop 된다.

  # 특정 호스트에 traceroute 를 열여줄 때
  #
  # RULE:
  #       SOURCE_IP
  ICMP_HOSTPERTRACE = ANYWHERE

  oops-firewall 은 기본적으로 icmp 의 traceroute 에 관련된 패킷을 제어
  하지는 않지만, Unix 의 traceroute 의 경우에는 패킷을 udp 로 보내기 때
  문에 제어를 받게 된다. 그러므로 이 옵션에서 해당된 사이트로 열어 주기
  위해서는 이 옵션을 지정해 줘야 한다. 이 옵션을 지정해 주면, 해당 주소
  에 대하여 udp 33434 부터 30 홉스에 해당하는 33525 까지를 열어 주게 된
  다.

  7.0.0 부터는 tracepath가 사용하는 44444 포트도 지원을 한다.

  만약 전체를 열어 주고 싶다면 0.0.0.0/0 으로 설정을 해 주면 된다.


  ##########################################################################
  # LOG configuration
  ##########################################################################
  #
  # DENY rule 에 대한 로그를 남길 것인가 여부를 위해 설정.
  # 형식 1 -> 남김
  #      0 -> 남기지 않음
  #
  # 사용     : 1 or true or yes
  # 사용안함 : 0 or false or no
  #
  # 보통 로그는  syslogd 에서 kernel message 를 다른곳으로 남기지 않는한은
  # /var/log/messages 에 kernel: 이라는 분류로 로그가 남게된다.
  #
  USE_LOG = false

  로그를 남길지 남기지 않을지 여부를 지정한다. DENY RULE 에 대해서만 로
  그가 남는다. 로그는 위의 주석에 있듯이 따로  syslogd 에서 설정을 하지
  않는 한은 RH 배포본의 경우 /var/log/messages 에 남게 된다.

  이 기능은 현재 제거를 할지 유지를 할지 결정을 하지 못했다.  제대로 관
  리가 되고있지 않아 정확하게 어느정도로 잘 작동하는지 확인해 보지 않아
  서 이 기능의 정책성 사용 여부는 권장하지 않는다.

  ##########################################################################
  # 외부 서비스 이용을 위한 filtering 설정
  #

  7.0.0 부터 OUT_TCP_HOSTPERPORT와 OUT_UDP_HOSTPERPORT 지시자가 추가 되
  었다.

  ##########################################################################
  # TCP configuration
  ##########################################################################
  #
  # 내부에서 외부로의 접속을 허가할 TCP 포트 설정
  #
  # RULE:
  #       DESTINATION_PORT[:STATE]
  #
  OUT_TCP_ALLOWPORT = 21 22 25 43 80 123 443 873

  만약 rdate 를 이용해서 시간 동기화를 할 경우에는 37번 포트를 열어주도
  록 한다. time.kriss.re.kr 과 같이 ntp 를 이용한 time server 로 동기화
  를 할 경우에는 123 번을 열어준다.

  또한, 제한을 하고 싶지 않을 경우에는 간단하게, 1-65535 으로 지정을 하
  면 모든 포트를 열게 된다.

  # 내부에서 접속할 외부 특정 호스트와 TCP 포트 설정
  #
  # RULE:
  #       DESTINATION_IP[:DESTINATION_PORT[:STATE]]
  #
  OUT_TCP_HOSTPERPORT =

  ##########################################################################
  # UDP configuration
  ##########################################################################
  #
  # 내부에서 외부로의 접속을 허가할 UDP 포트 설정
  #
  # RULE:
  #       DESTINATION_IP[:DESTINATION_PORT[:STATE]]
  #
  OUT_UDP_ALLOWPORT =

  원격으로 SNMP 연력을 위해서는 여기에 161 번을 열어줘야 한다.

  # 내부에서 접속할 외부 특정 호스트와 UDP 포트 설정
  #
  # RULE:
  #       DESTINATION_IP[:DESTINATION_PORT[:STATE]]
  #
  OUT_UDP_HOSTPERPORT =

 [root@bbuwoo oops-firewall]$


다음은 공유 설정을 위한 masq.conf 설정을 보도록 한다.


>> 이전 : OOPS Firewall 인터페이스 설정
>> 다음 : OOPS Firewall 인터넷 공유 설정


    



 Home > Lecture > Firewall > Firewall-3

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