firewall
Download
Skip this Video
Download Presentation
방화벽 (Firewall)

Loading in 2 Seconds...

play fullscreen
1 / 34

방화벽 (Firewall) - PowerPoint PPT Presentation


  • 168 Views
  • Uploaded on

방화벽 (Firewall). 유닉스 네트워킹 실습 00190078 박혜정. 방화벽의 이해. 방화벽 (Firewall) 외부로부터 내부 망을 보호하기 위한 네트웍 구성 요소중의 하나로써 외부의 불법 침입으로부터 내부의 정보 자산을 보호하고 , 외부로부터 유해 정보의 유입을 차단하기 위한 정책과 이를 지원하는 H/W 및 S/W 를 총칭한다 공격 방법 비인가 접근 프로그램의 알려진 약점 이용 서비스 거부 스푸핑 이브즈드라핑. 필터링. 필터링. Secured Internal Network.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 방화벽 (Firewall)' - arin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
firewall

방화벽 (Firewall)

유닉스 네트워킹 실습

00190078

박혜정

slide2
방화벽의 이해
  • 방화벽 (Firewall)
    • 외부로부터 내부 망을 보호하기 위한 네트웍 구성 요소중의 하나로써 외부의 불법 침입으로부터 내부의 정보 자산을 보호하고, 외부로부터 유해 정보의 유입을 차단하기 위한 정책과 이를 지원하는 H/W 및 S/W를 총칭한다
  • 공격 방법
    • 비인가 접근
    • 프로그램의 알려진 약점 이용
    • 서비스 거부
    • 스푸핑
    • 이브즈드라핑
slide3

필터링

필터링

Secured

Internal Network

Unsecured

Public Network

De-Military Zone

게이트웨이

(Proxy)

내부

네트워크

외부

네트워크

방화벽의 이해
  • 방화벽 시스템(Firewall System)기능
    • 안전하지않은 인터넷으로부터 내부망 보호
    • 내/외부 서비스를 중계하는 게이트웨이
    • 트래픽을 차단하는 필터링
    • 게이트웨이가 있는 중간지역(DMZ)
slide4
방화벽의 이해
  • 방화벽의 종류
    • 패킷 필터링 방식
    • 어플리케이션 게이트웨이 방식
    • 서킷 게이트웨이 방식
    • 하이브리드 방식
    • 베스쳔호스트
    • 스크린 서브네트
slide5
IP 필터링
  • IP 필터링은 무엇인가 ?
    • 라우터를 통과하는 패킷을 몇 가지 조건에 따라 필터링 하기 위한 것이다
    • 패킷 필터링 라우터는 보통 다음에 제시되는 항목들의 전부나 또는 일부에 기반을 두고 IP 패킷을 필터링할 수 있다.
    • 발신지 IP 주소
    • 목적지 IP 주소
    • TCP/UDP 발신지 포트
    • TCP/UDP 목적지 포트
    • 데이터그램 종류 : SYN/ACK, 데이터, ICMP 반향 요청 등
slide6
리눅스 방화벽 설정
  • 리눅스 IP 방화벽을 만들기 위해선 커널이 IP 방화벽을 지원하게 컴파일해야 하고 그에 상응하는 설정 도구가 있어야 한다.
    • Ipfwadm –커널 2.2 시리즈 이전에서는 모두 사용
    • Ipchains –커널 2.2.x에서는 제 3세대 리눅스 IP 방화벽
    • Netfilter –커널 2.3.15이후부터 제 4세대 리눅스 IP 방화벽
slide7
리눅스 방화벽 설정
  • IP 방화벽을 지원하는 커널 설정
    • 우선 커널 컴파일을 해야 할 필요가 있을지 모른다.

Networking options --->

[*] Network firewalls

....

[*] IP: forwarding/gatewaying

....

[*] IP: firewalling

[*] IP: firewall packet loggin

위에서 나타낸 옵션이 커널 기능에 들어 있어야만 가능하다

ip ipfwadm
IP 방화벽 - ipfwadm
  • Ipfwadm 유틸리티
    • 2.2.0 이전의 모든 커널에 대한 방화벽 룰을 만들때 사용하는 도구
    • 리눅스 커널에서 IP 방화벽, 통계분석 규칙을 설정, 유지, 감독하기 위한 도구
    • 분류 : -I [입력 룰], -O [출력 룰], -F [포워딩 룰]
    • ipfwadm -A 명령 매개변수 [옵션] ipfwadm -I 명령 매개변수 [옵션] ipfwadm -O 명령 매개변수 [옵션] ipfwadm -F 명령 매개변수 [옵션] ipfwadm -M [ -l | -s ] [옵션]
slide10
IP 방화벽 설정
  • IP forwadding 을 위한 ipfwadm 이용

# ipfwadm –F -f

# ipfwadm -F -p deny

# ipfwadm -F -a accept –p tcp –s 172.16.1.0/24 –D 0/0 80

# ipfwadm –F –a accept –p tcp –s 0/0 80 –D 172.16.1.0/24

-F 명령어 인자는 ipfwadm에게 이것이 포워딩 룰임을 알려준다

slide11
IP 방화벽 설정
  • 룰 나열

# ipfwadm -F –l

    • 이 명령어는 설정한 모든 포워딩 룰을 나열한다.
    • Ipfwadm 명령어는 /etc/services를 사용하여 만약 항목이 존재한다면 포트 번호를 서비스명으로 바꾼다.

# ipfwadm -F -l -e

    • -e(확장 출력) 인자를 지정하여 세부항목을 좀더 많이 나열한다.
ipfwadm
Ipfwadm 인자 요약
  • 분류
    • 방화벽에게 어떤 종류의 방화벽 룰을 설정하는지를 알려주는 역할을 하며 한번에 단 한가지만 사용한다.

-A : IP 통계분석 규칙.

-I : IP 입력 방화벽 규칙.

-O : IP 출력 방화벽 규칙.

-F : IP 전달 방화벽 규칙.

-M : IP 매스커레이딩(masquerading) 관리.

ipfwadm1
Ipfwadm 인자 요약 - 명령어
  • -a [정책]
    • 새로운 룰을 첨부한다.
    • accept, deny, 또는 reject. 출발지 또는 목적지 이름이 하나 이상의 주소를 나타낼 때는 그것이 나타내는 모든 주소 조합에 대하여 규칙이 추가된다.
  • -i [정책]
    • 선택한 목록의 맨 앞에 하나 또는 그 이상의 규칙을 삽입한다.
  • -d [정책]
    • 현존하는 룰을 삭제한다.
  • -l
    • 선택한 목록에 있는 모든 규칙을 보여준다.
  • -z
    • 선택한 목록의 모든 규칙에 대하여 패킷과 바이트 카운터를 0으로 돌려놓는다.
ipfwadm2
Ipfwadm 인자 요약 - 명령어
  • -f
    • 선택한 규칙 목록을 비워버린다.
  • -p [정책]
    • 선택한 방화벽 유형에 대한 기본 정책을 바꾼다.
    • 정책으로 사용하는 값은 accept, deny, 또는 reject중하나이다.
  • -s tcp tcpfin udp
    • 매스커레이딩에 사용되는 타임아웃값을 바꾼다.
  • -c
    • 선택한 방화벽 유형에 대하여 IP패킷이 허가, 거부(deny) 또는 거절(reject)될 것인지 점검한다.
  • -h
    • 도움말. 명령 문법에 대한 설명을 보여준다.
ipfwadm3
Ipfwadm 인자 요약 - 매개변수
  • -P protocol
    • 규칙 또는 점검할 패킷의 프로토콜을 말한다.
      • 프로토콜로 올 수 있는 값은 tcp, udp, icmp, 또는 all이다.
  • -S address[/mask] [port]
    • 출발지 명시 (선택적).
    • 주소 에는 호스트명, 네트웍명 또는 평범한 IP 주소가 올 수 있다.
  • -D address [/mask] [port]
      • 룰이 일치할 목적지 IP 주소를 지정한다.
  • -V address
      • 패킷을 받거나 보내는 통로가 되어 주는 인터페이스에 대한 주소로서 선택적이다.
  • -W name
    • 패킷을 주고 받는 인터페이스의 이름으로서 선택적이다.
ipfwadm4
Ipfwadm 인자 요약 –선택적 인자
  • -b
      • 양방향 모드. 규칙을 양방향 모두의 IP 패킷에 적용하도록 한다.
  • -o
      • 부합하는 패킷에 대하여 커널 로깅을 하도록 한다.
  • -y
      • 숫자를 확장. K (1000) 또는 M (1000K) 단위로 반올림 표현하지 않고 패킷과 바이트 카운터의 수치를 정확하게 표시한다
  • -k
      • ACK 비트가 설정된 TCP 패킷하고만 부합한다.
  • -e
    • 확장 출력. 이 옵션을 주면 list 명령에 대하여 인터페이스 주소와 규칙 옵션(존재한다면)을 추가로 보여준다.
ip ipchains
IP 방화벽 - ipchains
  • Ipchains 유틸리티
      • 커널 개발버전 2.1.102부터 공식적으로 IP방화벽 관리도구로서 커널에 들어왔다.
      • 패킷 필터를 통해서 패킷의 헤더를 조사해서 설정된 규칙에 의해서 해당 패킷을 받아들일 것인가 버릴것인가를 결정한다
      • ipchains의 버전 확인 방법

[[email protected] /sbin]# ./ipchains –version

ipchains 1.3.9, 17-Mar-1999

      • 체인의 종류 : ‘input’, ‘output’, ‘forward’
ip ipchains1
IP 방화벽 - ipchains
  • 패킷 필터링 기능을 위한 조건
      • 커널 안에 IP방화벽 사슬(Generic IP Firewall Chain) 기능을 갖추고 있어야 한다.
      • 현재 사용하고 있는 커널이 패킷 필터링 기능을 포함하는지 확인하기 위해서는 /proc/net/ip_fwchains파일이 있는지 확인
      • 패킷필터링을 위해 추가해야할 설정 옵션

CONFIG_EXPERIMENTAL

CONFIG_FIREWALL

CONFIG_IP_FIREWALL

CONFIG_IP_FIREWALL_CHAINS

ipchains
Ipchains - 명령어
  • ipchains 설정 파일
      • -N : 새로운 체인을 만든다.
      • -X : 빈 사슬을 지운다.
      • -P : 내장 사슬에 대한 기본 정책을 변경한다.
      • -L : 사슬 속에 든 규칙을 나열한다.
      • -F : 사슬로부터 규칙을 모두 방출한다.
      • -Z : 사슬 속의 모든 규칙에 대한 패킷, 바이트 카운터 값을 0 으로 설정한다.
  • ipchains 내의 규칙 설정 방법
      • -A : 사슬에 새로운 규칙을 추가한다.
      • -I : 사슬 속 어딘가에 새로운 규칙을 삽입한다.
      • -R : 사슬 속 특정 위치의 규칙을 교체한다.
      • -D : 사슬 속의 특정 규칙을 삭제한다.
ipchains1
Ipchains - 명령어
  • 패킷 특성 옵션
      • -s : 패킷의 발신지를 명시한다
      • -d : 패킷의 도착지를 명시한다
      • -p : 패킷의 프로토콜을 명시한다
      • -I : 규칙을 적용할 인터페이스 이름을 명시한다
      • -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다
      • -f : 두 번째 이후의 조각에 대해서 규칙을 명시한다
  • 규칙의 추가나 삭제는 추가(-A), 삭제(-D) 명령을 사용한다.
ipchains2
Ipchains - 예제
  • 예를 들어 127.0.0.1 이라는 IP 주소로부터 오는 모든 ICMP 패킷을 무시하는 경우를 고려하자.

# ping -c 1 127.0.0.1

# ipchains -A input -s 127.0.0.1 -p icmp -j DENY

# ping -c 1 127.0.0.1

  • 규칙을 지우는 첫 번째 방법

# ipchains -D input 1

  • 규칙을 지우는 두 번째 방법

# ipchains -D input -s 127.0.0.1 -p icmp -j DENY

ipchains3
Ipchains - 예제
  • 새로운 체인 만들기

# ipchains -N test

  • 체인 지우기

# ipchains -X test

  • 체인 비우기

# ipchains -F forward

  • 사슬 내용 보기

# ipchains -L input

# ipchains -L test

# ipchains -v -L input

netfilter iptables 2 4
Netfilter와 iptables(커널 2.4)

체크섬

sanity

Input

체인

Demasq?

라우팅

결정

Masq?

Forward

체인

Output

체인

로컬

프로세스

IP 체인의 데이터그램 처리 체인

netfilter iptables 2 41
Netfilter와 iptables(커널 2.4)

체크섬

sanity

라우팅

결정

Forward

체인

라우팅

결정

Input

체인

Output

체인

로컬

프로세스

Netfilter내의 데이터그램 처리 체인

ip iptables
IP 방화벽 - iptables
  • Iptables 유틸리티
      • 리눅스 IPv4 방화벽을 설정하는 명령어
      • iptables의 버전을 확인하는 방법

# iptables --version

iptables 1.2.4

      • 커널은 3가지의 방화벽 체인(chain)을 기본적으로 가지고 패킷 필터링을 시작한다.

체인이라 부르는 이 3가지는 입력(Input), 출력(Output), 전달(Forward)이다.

iptables
Iptables - 명령어
  • -A : 새로운 규칙을 추가한다.(--append)
  • -D : 규칙을 삭제한다.(--delete)
  • -C : 패킷을 테스트한다.(--check)
  • -R : 새로운 규칙으로 교체한다.(--replace)
  • -I : 새로운 규칙을 삽입한다.(--insert)
  • -L : chain에 설정된 규칙을 출력한다.(--list)
  • -F : chain으로부터 규칙을 모두 방출(삭제)한다.(--flush)
  • -Z : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.(--zero)
  • -N : 새로운 chain을 만든다.(--new)
  • -X : chain을 삭제한다.(--delete-chain)
  • -P : 기본정책을 변경한다.(--policy)
iptables1
Iptables –매개변수
  • -s : 패킷의 발신지를 명시한다.(--source)
  • -p : 패킷의 프로토콜을 명시한다.(--protocol)
  • -d : 패킷의 도착지를 명시한다.(--destination)
  • -i : 규칙을 적용할 인터페이스 이름을 명시한다.(--interface)
  • -j : 규칙에 맛는 패킷을 어떻게 처리할 것인가를 명시한다.(-jump)
  • -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다.(--syn)
  • -f : 두 번째 이후의 조각에 대해서 규칙을 명시한다.(--fragment)
iptables2
Iptables의 확장
  • TCP 확장 : -m tcp –p tcp 로 사용
      • --tcp-flags

: \'!\' 옵션을 사용한다면 이것 뒤에 두개의 단어를 사용한다. 첫번째 것은 검사하고자 하는 지시자 리스트의 마스크이고 두번째 단어는 지시자에게 어떤것이 설정 될 것인지를 말해준다.

      • --syn

: !\' 옵션이 선행될 수 있다. 이것은 \'--tcp-flags SYN,RST,ACK,SYN\'의 약어이다.

      • --source-port

:/etc/services 에 기록된 것과 같은 포트 이름이 사용될 수 도 있고 숫자로 나타낼 수도 있다.

      • --sport
      • --destination-port와 --dport
      • --tcp-option

: \'!\' 나 숫자가 옵션에 선행될 수 있는데 숫자가 앞에 올경우 그 숫자 와 TCP 옵션이 같은 경우의 패킷을 검사한다.

iptables3
Iptables의 확장
  • UDP 확장
      • 이 확장은 \'--protocol udp\'가 지정되고 적용이 저정되지 않으면 자동으로 적재된다. 이것은 \'--source-port\', \'--sport\', \'--destination-port\', \'-dport\'를 지원하고 내용은 TCP 설명에서 자세히 나왔다
  • ICMP 확장
      • --icmp-type

: \'!\' 옵션이 선행될 수 있다. 이후에 ICMP 타입의 이름(\'host-unreachable\') 이나 숫자형태 (\'3\'), 또는 숫자형태와 코드(\'/\'로 분리 예. \'3/3\') 의 형 태가 사용된다. 사용할 수 있는 ICMP 형태의 이름의 리스트는 \'-p icmp --help\' 하면 나타난다.

iptables4
Iptables - 예제
  • 만약 네트워크에 24비트 네트워크 마스크(C 클래스)가 있고 172.16.1.0의 주소를 가지고 있다면,

다음 iptables 룰을 사용할 것이다.

# modprobe ip_tables

# iptables –F FORWARD

# iptables –P FORWARD DROP

# iptables -A FORWARD –m tcp –p tcp –s 0/0 --sport 80

–d 172.16.1.0/24 / --syn –j DROP

# iptables -A FORWARD –m tcp –p tcp -s 172.16.1.0/24

--sport / 80 –d 0/0 –j ACCEPT

# iptables -A FORWARD –m tcp –p tcp -d 172.16.1.0/24

--dport 80 –s 0/0 –j / ACCEPT

iptables5
Iptables - 예제
  • 예를들어, 여러분은 127.0.0.1로부터의 모든 ICMP패킷을 DROP하려고 할 것이다. 그렇다면, 이경우 일치되어야할 상태는 \'ICMP이면서 그 출처가27.0.0.1\' 이다. 이 경우 \'target\' 은 DROP 이다. 127.0.0.1은 \'loopback\' 인터페이서 이고 실제적인 네트워크 접속이 전혀 없더라도 이것은 가지고 있을 것이다. 이러한 패킷은 \'ping\' 프로그램을 이용하여 생성할 수 있다.

# ping -c 1 127.0.0.1

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

# ping -c 1 127.0.0.1

iptables6
Iptables - 예제
  • 예로, 다음과 같은 규칙은 192.168.1.1 로 향하는 분절을 DROP 시킨다.

# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP

  • 규칙을 지우는 첫 번째 방법

# iptables -D input 1

  • 규칙을 지우는 두 번째 방법

# iptables -D input -s 127.0.0.1 -p icmp -j DROP

iptables7
Iptables - 예제
  • 새로운 체인 생성

# iptables -N test

  • 체인 제거

# iptables -X test

  • 체인 비우기

# iptables -F forward

ad