Try Attack/Network Hacking[basic]

iptables

D4tai1 2018. 11. 4.

1. iptables

▶ 리눅스의 대표적인 방화벽이며 IP와 PORT번호를 확인하여 접근을 허용하거나 차단한다.

 

1) port번호

 [1] Well-Known Port

  ▶ 잘 알려진 포트를 말하며 0번~1023번 사이의 포트를 말한다

 [2] Registered Port

  ▶ 업체나 어플리케이션 만든 회사의 소프트웨어에서 사용하는 포트를 말한다.

  ▶ 1024번~49151번 사이의 포트를 말한다.

 [3] Dynamic Port

  ▶ 동적으로 할당되는 임의의 포트번호이다.

  ▶ 49152번~65535번 사이의 포트를 말한다.

 

※ 웹서비스가 80번을 사용하지만 꼭 80번 포트를 웹서비스포트로 사용할 이유는 없다.

즉, 통상적으로 그렇게 많이 쓴다는 말이다.

 

2) 옵션

▶ -A(append) : 새 규칙 추가

▶ -D(delete) : 규칙 제거

▶ -C(check) : 패킷 테스트

▶ -I(insert) : 새 규칙 삽입

▶ -R(replace) : 규칙 변경

▶ -L(list) : 규칙 출력

▶ -F(flush) : 규칙 초기화

▶ -Z(zero) : 모든 체인의 패킷과 바이트 카운터의 값을 0으로 변경

▶ -N(new) : 새로운 체인 생성

▶ -X(delete chain) : 체인 삭제

▶ -P(policy) : 정책 변경

▶ -p(protocol) : 정책을 적용할 프로토콜

▶ -m(module) : 정책에 사용할 모듈

▶ -s(source) : 송신자 IP주소

▶ -d(destination) : 수신자 IP주소

▶ -i(interface) : 적용할 인터페이스

▶ -j(jump) : 룰을 적용할 타겟

▶ -y(syn) : syn 차단

▶ -f(fragment) : 두 번째 이후 조각에 대해 규칙 지정

 

3) 시연

 [1] 규칙확인

 

tip. 영상 내 소스는 복사가 가능하며, 일시정지 및 영상위치를 이동할 수도 있습니다. 

  ▶ [iptables -L] 명령어로 방화벽 규칙을 확인할 수 있다.

 

 [2] 규칙추가

 

  ▶ [iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT] 명령어로 수신자의 80번 포트로 들어오는 TCP패킷을 허용하는 규칙을 추가한다.

 + 추가지식 방화벽 룰 설정

  - 방화벽 룰 설정시에는 정책 순서가 중요하다.

  - 하나의 네트워크대역을 전부 차단하는 규칙을 추가한 후 그 중 일부만 허용하는 규칙을 추가할 경우

  - 앞에서 이미 차단됬기 때문에 허용하려고 해도 무시된다.

  - 그래서 보통 허용할 규칙을 정하고 나머지를 차단하는 방법을 사용하며 이러한 방식을 화이트리스트 방식이라 한다.

 

[3] 체인생성 및 규칙추가

 

  ▶ [iptables -N ICMP] 명령어로 ICMP체인을 생성한다.

  ▶ [iptables -A INPUT -p icmp -j ICMP] 명령어로 ICMP를 위한 정책을 추가한다.

  ▶ [iptables -A ICMP -p icmp --icmp-type 8 -j DROP] 명령어로 ICMP체인에 icmp echo-request패킷을 차단하는 규칙을 추가한다.

+ 추가지식 ICMP TYPE

 

   - 에코 응답(Echo Reply)  : Type 0
   - 목적지도달불가(Destination Unreachable) : Type 1
   - 너무 큰 패킷(Packet Too Big)  : Type 2
   - 시간 초과(Time Exceeded)  : Type 3
   - 매개변수 문제(Parameter Problem)  : Type 4  등
   - 재지정(Redirect)  : Type 5
   - 에코 요청(Echo Request)  : Type 8
   - 시간 초과(Time Exceeded)  : Type 11
   - 매개변수 문제(Parameter Problem) : Type 12

 

 [4] 방화벽 정상동작 확인(공격자)

  ▶ 희생자에게 icmp패킷을 전송하지만 응답이 오지 않음을 확인할 수 있다.

 

 [5] ICMP 패킷 확인(공격자)

  ▶ 확인해보면 전송은 되지만 응답이 없는 것을 확인할 수 있다.

 

 [6] 도커컨테이너를 이용한 웹서버생성

 

  ▶ [sudo docker run -i -t -p 7777:80 --name webSite ubuntu:16.04] 명령어를 이용하여 호스트의 7777포트로 들어오면 webSite 컨테이너의 80번 포트로 연결시켜준다.

 

 [7] 웹서버 접속확인

  ▶ 192.168.234.103:7777 주소로 정상접속이 되는 것을 확인할 수 있다.

 

 [8] 웹서버컨테이너 접속차단 규칙추가

 

 

 [9] 규칙삭제

  ▶ [iptables -D INPUT 4] 명령어를 입력하면 INPUT체인에 있는 4번째 규칙이 삭제된다.

 

 [10] 재부팅 시 정책유지

 

  ▶ [iptables-save > /etc/iptables.rules] 명령어를 이용하여 현재 저장된 규칙을 백업해 놓는다.

  ▶ [vi /etc/network/interfaces] 명령어로 편집기를 연 후 [iptables-restore < /etc/iptables.rules] 명령어를 이용하여 저장된 규칙을 방화벽 룰에 입력한다.

  ▶ 즉, 네트워크 인터페이스가 켜지면서 방화벽 룰도 같이 켜지게 된다.

 

'Try Attack > Network Hacking[basic]' 카테고리의 다른 글

Nmap 포트스캔  (1) 2018.11.04
FTP서버 해킹  (0) 2018.10.28
DNS Spoofing  (0) 2018.10.21
ARP Spoofing  (0) 2018.10.21

댓글