1 / 34

방화벽 (Firewall)

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

arin
Download Presentation

방화벽 (Firewall)

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 방화벽 (Firewall) 유닉스 네트워킹 실습 00190078 박혜정

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

  3. 필터링 필터링 Secured Internal Network Unsecured Public Network De-Military Zone 게이트웨이 (Proxy) 내부 네트워크 외부 네트워크 방화벽의 이해 • 방화벽 시스템(Firewall System)기능 • 안전하지않은 인터넷으로부터 내부망 보호 • 내/외부 서비스를 중계하는 게이트웨이 • 트래픽을 차단하는 필터링 • 게이트웨이가 있는 중간지역(DMZ)

  4. 방화벽의 이해 • 방화벽의 종류 • 패킷 필터링 방식 • 어플리케이션 게이트웨이 방식 • 서킷 게이트웨이 방식 • 하이브리드 방식 • 베스쳔호스트 • 스크린 서브네트

  5. IP 필터링 • IP 필터링은 무엇인가 ? • 라우터를 통과하는 패킷을 몇 가지 조건에 따라 필터링 하기 위한 것이다 • 패킷 필터링 라우터는 보통 다음에 제시되는 항목들의 전부나 또는 일부에 기반을 두고 IP 패킷을 필터링할 수 있다. • 발신지 IP 주소 • 목적지 IP 주소 • TCP/UDP 발신지 포트 • TCP/UDP 목적지 포트 • 데이터그램 종류 : SYN/ACK, 데이터, ICMP 반향 요청 등

  6. 리눅스 방화벽 설정 • 리눅스 IP 방화벽을 만들기 위해선 커널이 IP 방화벽을 지원하게 컴파일해야 하고 그에 상응하는 설정 도구가 있어야 한다. • Ipfwadm –커널 2.2 시리즈 이전에서는 모두 사용 • Ipchains –커널 2.2.x에서는 제 3세대 리눅스 IP 방화벽 • Netfilter –커널 2.3.15이후부터 제 4세대 리눅스 IP 방화벽

  7. 리눅스 방화벽 설정 • IP 방화벽을 지원하는 커널 설정 • 우선 커널 컴파일을 해야 할 필요가 있을지 모른다. Networking options ---> [*] Network firewalls .... [*] IP: forwarding/gatewaying .... [*] IP: firewalling [*] IP: firewall packet loggin 위에서 나타낸 옵션이 커널 기능에 들어 있어야만 가능하다

  8. IP 데이터그램의 처리 단계 2 4 ? ? 1 5

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

  10. 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에게 이것이 포워딩 룰임을 알려준다

  11. IP 방화벽 설정 • 룰 나열 # ipfwadm -F –l • 이 명령어는 설정한 모든 포워딩 룰을 나열한다. • Ipfwadm 명령어는 /etc/services를 사용하여 만약 항목이 존재한다면 포트 번호를 서비스명으로 바꾼다. # ipfwadm -F -l -e • -e(확장 출력) 인자를 지정하여 세부항목을 좀더 많이 나열한다.

  12. Ipfwadm 인자 요약 • 분류 • 방화벽에게 어떤 종류의 방화벽 룰을 설정하는지를 알려주는 역할을 하며 한번에 단 한가지만 사용한다. -A : IP 통계분석 규칙. -I : IP 입력 방화벽 규칙. -O : IP 출력 방화벽 규칙. -F : IP 전달 방화벽 규칙. -M : IP 매스커레이딩(masquerading) 관리.

  13. Ipfwadm 인자 요약 - 명령어 • -a [정책] • 새로운 룰을 첨부한다. • accept, deny, 또는 reject. 출발지 또는 목적지 이름이 하나 이상의 주소를 나타낼 때는 그것이 나타내는 모든 주소 조합에 대하여 규칙이 추가된다. • -i [정책] • 선택한 목록의 맨 앞에 하나 또는 그 이상의 규칙을 삽입한다. • -d [정책] • 현존하는 룰을 삭제한다. • -l • 선택한 목록에 있는 모든 규칙을 보여준다. • -z • 선택한 목록의 모든 규칙에 대하여 패킷과 바이트 카운터를 0으로 돌려놓는다.

  14. Ipfwadm 인자 요약 - 명령어 • -f • 선택한 규칙 목록을 비워버린다. • -p [정책] • 선택한 방화벽 유형에 대한 기본 정책을 바꾼다. • 정책으로 사용하는 값은 accept, deny, 또는 reject중하나이다. • -s tcp tcpfin udp • 매스커레이딩에 사용되는 타임아웃값을 바꾼다. • -c • 선택한 방화벽 유형에 대하여 IP패킷이 허가, 거부(deny) 또는 거절(reject)될 것인지 점검한다. • -h • 도움말. 명령 문법에 대한 설명을 보여준다.

  15. Ipfwadm 인자 요약 - 매개변수 • -P protocol • 규칙 또는 점검할 패킷의 프로토콜을 말한다. • 프로토콜로 올 수 있는 값은 tcp, udp, icmp, 또는 all이다. • -S address[/mask] [port] • 출발지 명시 (선택적). • 주소 에는 호스트명, 네트웍명 또는 평범한 IP 주소가 올 수 있다. • -D address [/mask] [port] • 룰이 일치할 목적지 IP 주소를 지정한다. • -V address • 패킷을 받거나 보내는 통로가 되어 주는 인터페이스에 대한 주소로서 선택적이다. • -W name • 패킷을 주고 받는 인터페이스의 이름으로서 선택적이다.

  16. Ipfwadm 인자 요약 –선택적 인자 • -b • 양방향 모드. 규칙을 양방향 모두의 IP 패킷에 적용하도록 한다. • -o • 부합하는 패킷에 대하여 커널 로깅을 하도록 한다. • -y • 숫자를 확장. K (1000) 또는 M (1000K) 단위로 반올림 표현하지 않고 패킷과 바이트 카운터의 수치를 정확하게 표시한다 • -k • ACK 비트가 설정된 TCP 패킷하고만 부합한다. • -e • 확장 출력. 이 옵션을 주면 list 명령에 대하여 인터페이스 주소와 규칙 옵션(존재한다면)을 추가로 보여준다.

  17. ICMP 데이터그램 유형

  18. IP 방화벽 - ipchains • Ipchains 유틸리티 • 커널 개발버전 2.1.102부터 공식적으로 IP방화벽 관리도구로서 커널에 들어왔다. • 패킷 필터를 통해서 패킷의 헤더를 조사해서 설정된 규칙에 의해서 해당 패킷을 받아들일 것인가 버릴것인가를 결정한다 • ipchains의 버전 확인 방법 [root@eve /sbin]# ./ipchains –version ipchains 1.3.9, 17-Mar-1999 • 체인의 종류 : ‘input’, ‘output’, ‘forward’

  19. IP 방화벽 - ipchains • 패킷 필터링 기능을 위한 조건 • 커널 안에 IP방화벽 사슬(Generic IP Firewall Chain) 기능을 갖추고 있어야 한다. • 현재 사용하고 있는 커널이 패킷 필터링 기능을 포함하는지 확인하기 위해서는 /proc/net/ip_fwchains파일이 있는지 확인 • 패킷필터링을 위해 추가해야할 설정 옵션 CONFIG_EXPERIMENTAL CONFIG_FIREWALL CONFIG_IP_FIREWALL CONFIG_IP_FIREWALL_CHAINS

  20. Ipchains - 명령어 • ipchains 설정 파일 • -N : 새로운 체인을 만든다. • -X : 빈 사슬을 지운다. • -P : 내장 사슬에 대한 기본 정책을 변경한다. • -L : 사슬 속에 든 규칙을 나열한다. • -F : 사슬로부터 규칙을 모두 방출한다. • -Z : 사슬 속의 모든 규칙에 대한 패킷, 바이트 카운터 값을 0 으로 설정한다. • ipchains 내의 규칙 설정 방법 • -A : 사슬에 새로운 규칙을 추가한다. • -I : 사슬 속 어딘가에 새로운 규칙을 삽입한다. • -R : 사슬 속 특정 위치의 규칙을 교체한다. • -D : 사슬 속의 특정 규칙을 삭제한다.

  21. Ipchains - 명령어 • 패킷 특성 옵션 • -s : 패킷의 발신지를 명시한다 • -d : 패킷의 도착지를 명시한다 • -p : 패킷의 프로토콜을 명시한다 • -I : 규칙을 적용할 인터페이스 이름을 명시한다 • -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다 • -f : 두 번째 이후의 조각에 대해서 규칙을 명시한다 • 규칙의 추가나 삭제는 추가(-A), 삭제(-D) 명령을 사용한다.

  22. 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

  23. Ipchains - 예제 • 새로운 체인 만들기 # ipchains -N test • 체인 지우기 # ipchains -X test • 체인 비우기 # ipchains -F forward • 사슬 내용 보기 # ipchains -L input # ipchains -L test # ipchains -v -L input

  24. Netfilter와 iptables(커널 2.4) 체크섬 sanity Input 체인 Demasq? 라우팅 결정 Masq? Forward 체인 Output 체인 로컬 프로세스 IP 체인의 데이터그램 처리 체인

  25. Netfilter와 iptables(커널 2.4) 체크섬 sanity 라우팅 결정 Forward 체인 라우팅 결정 Input 체인 Output 체인 로컬 프로세스 Netfilter내의 데이터그램 처리 체인

  26. IP 방화벽 - iptables • Iptables 유틸리티 • 리눅스 IPv4 방화벽을 설정하는 명령어 • iptables의 버전을 확인하는 방법 # iptables --version iptables 1.2.4 • 커널은 3가지의 방화벽 체인(chain)을 기본적으로 가지고 패킷 필터링을 시작한다. 체인이라 부르는 이 3가지는 입력(Input), 출력(Output), 전달(Forward)이다.

  27. 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)

  28. Iptables –매개변수 • -s : 패킷의 발신지를 명시한다.(--source) • -p : 패킷의 프로토콜을 명시한다.(--protocol) • -d : 패킷의 도착지를 명시한다.(--destination) • -i : 규칙을 적용할 인터페이스 이름을 명시한다.(--interface) • -j : 규칙에 맛는 패킷을 어떻게 처리할 것인가를 명시한다.(-jump) • -y : 접속 요청 패킷인 SYN패킷을 허용하지 않는다.(--syn) • -f : 두 번째 이후의 조각에 대해서 규칙을 명시한다.(--fragment)

  29. 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 옵션이 같은 경우의 패킷을 검사한다.

  30. Iptables의 확장 • UDP 확장 • 이 확장은 '--protocol udp'가 지정되고 적용이 저정되지 않으면 자동으로 적재된다. 이것은 '--source-port', '--sport', '--destination-port', '-dport'를 지원하고 내용은 TCP 설명에서 자세히 나왔다 • ICMP 확장 • --icmp-type : '!' 옵션이 선행될 수 있다. 이후에 ICMP 타입의 이름('host-unreachable') 이나 숫자형태 ('3'), 또는 숫자형태와 코드('/'로 분리 예. '3/3') 의 형 태가 사용된다. 사용할 수 있는 ICMP 형태의 이름의 리스트는 '-p icmp --help' 하면 나타난다.

  31. 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

  32. 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

  33. 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

  34. Iptables - 예제 • 새로운 체인 생성 # iptables -N test • 체인 제거 # iptables -X test • 체인 비우기 # iptables -F forward

More Related