Scapy

지금까지 패킷분석과 관련한 많은 도구들을 언급하였는데, 이 도구를 미처 소개하지 못했다.
강력한 기능과 프로그램적인 면에서도 뛰어난 도구인데말이다. 필자가 오늘 소개하고자 하는 도구는
Scapy 라는 것이다. Scapy 는 인터렉티브하게 패킷을 조작할 수 있는 강력한 기능을 제공하며,
수 많은 프로토콜의 디코딩 기능과 수정된 패킷을 전송할 수 있는 기능등을 포함하고 있다.

이 도구의 큰 장점은 다양한 기능을 수행할 수 있는 것인데, 우리가 흔히 스캐닝을 하거나, 패킷덤프를
하거나, 원격 시스템의 Alive 유무를 점검 또는 공격 패킷등을 만들고자 할때 사용하는 도구들이
다 달라진다. 예를 들면, hping, nmap, arpsoof, tcpdump, tshark, p0f 등의 여러 도구의 기능들 말이다
하지만 Scapy 는 이 도구 하나로 가능하다. 너무 강력한 도구인양 소개한 것일까?

사용용도에 따라 달라지겠지만 무척이나 편리한 기능을 갖고 있는 것은 사실이다. 다만 사용하는데 있어서는
일반적인 도구에 비해서는 사용방법이 처음에는 힘들 수도 있다. Scapy 는 파이썬을 기반으로
작성되어 있는데, 사용형태가 파이썬에서 코드를 사용하는 것과 같이 사용할 수 있으므로
파이썬에 익숙해져 있는 사용자라면 더 없이 편할 것이다. 또한, Scapy 모듈을 이용하여,
파이썬에서 패킷을 핸들링 하는 프로그램을 작성한다면 간단하게 그 기능을 이용할 수 있어
개발자 관점에서도 유용하다.

뛰어나다는 설명보다도 일단 직접 경험해 보는 것이 빠르다.  바로 설치해 보고 각 기능을
사용해 보면 앞서 얘기한 것들이 이해가 될 것이다.

1. 설치

Scapy 2.x 이상의 버전에서는 파이썬 2.5 이상이 필요하다. 그리고 libpcap, libdnet 이 필요하다.
보통 많은 경우에는 이런것들이 이미 설치되어 있으므로 사용하는데 큰 문제는 없을 것이다.

다음의 경로에서 파일을 다운로드 받을 수 있다:


$ unzip scapy-latest.zip
$ cd scapy-2.*
$ sudo python setup.py install

하는 것으로 쉽게 설치가 된다. 파이썬에 익숙한 사용자라면 어렵지 않을 것이다. 또는,
각 시스템에서 제공하는 패키지가 있다면 그것을 이용해도 좋다.

# apt-get install scapy

* 참고로 윈도우 기반에서 사용하고자 한다면, 다음의 문서를 참고하여 실행해 보길 바란다.

2. 간단한 사용 예

실행하게 되면 다음과 같은 화면을 볼 수 있다.

# scapy
WARNING: No route found for IPv6 destination :: (no default route?)
Welcome to Scapy (2.1.0)
>>>

(설치되어 있는 모듈 및 환경에 따라, 경고 메시지가 뜰 수 있는데 무시하고 사용 가능하다.단, 해당 모듈 기능을 사용하지 않는 한)

몇 가지 간단한 기능을 살펴보자!

>>> ls()
ARP        : ARP
BOOTP      : BOOTP
CookedLinux : cooked linux
DHCP       : DHCP options
DNS        : DNS
DNSQR      : DNS Question Record
DNSRR      : DNS Resource Record
....
현재 지원하는 레이어 형태를 볼 수 있다. 쉽게 보면 프로토콜 이다.

다음은 존재하는 PCAP 파일을 오픈하는 것이다. 오픈할 파일을 " 없이 사용하는 경우는 다른 형태로 이해한다.
오픈 후에는 파싱되어 메모리 상에 다 들어가 있으므로 바로 바로 필요한 내용을 꺼내 사용할 수 있다.

>>> a=rdpcap(test.pcap)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'test' is not defined
>>> a=rdpcap("test.pcap")
>>> a
<test.pcap: TCP:2040 UDP:0 ICMP:0 Other:0>
>>>

파일 전송도 할 수 있는데, 원하는 형태로 마음대로 수정하여 전송이 가능하다. 각 프로토콜 레이어 별로 정보를 기록하고 헤더를 붙일 수 있다. 아래의 경우는 IP 헤더에서 목적지를 1.2.3.4 로 설정하고, ICMP 헤더를 붙인 것이다.

>>> send(IP(dst="1.2.3.4")/ICMP())
.
Sent 1 packets.

전송하기 전 tcpdump 로 확인한 내용을 보면, 목적지 1.2.3.4 로 ICMP 패킷이 전송된걸 확인할 수 있다.

# tcpdump -v icmp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
09:07:36.479199 IP (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto ICMP (1), length 28) packet > 1.2.3.4: ICMP echo request, id 0, seq 0, length 8

이 정도에서 간단한 맛보기를 언급하고 다음 이어지는 두번째 편에서 좀더 세부적으로 Scapy 기능을 알아보도록 하겠다. 계속 이것저것 소개할 것이 많은데, 정리하고 쓰자니 시간이 꽤 걸리는 거 같다. 이래서 정리는 인내가 필요해지는 것 같다 :-)
 


<script type="text/javascript" src="http://ss.textcube.com/service/blog/script/blogger.js"></script>

네트워크 패킷을 인젝션하고 캡쳐할 수 있는 도구 Packit(Packet toolkit) 을 소개한다.
앞서 소개했던 많은 도구들과 같이 인젝션하기에 유용한 도구이다.

TCP,UDP,ICMP,IP,ARP,RARP 그리고 이더넷 헤더등 거의 모든 것을 정의할 수 있어,
방화벽, 침입탐지시스템, 트래픽 테스트와 같은 곳에 이용할 때 유용하게 사용될 수 있을 것이다.
Packit 의 버전은 현재 1.0 이며 설치를 하기 위해서는 libnet 1.1.2 이상의 라이브러리와
libpcap 라이브러리또한 필요하다.

소스파일의 다운로드는 다음의 경로에서 할 수 있다:

APT 패키지 사용자라면,
# apt-get install packit 으로 쉽게 설치도 가능하다.

사용에는 큰 어려움이 없으나, 다만 옵션이 상당히 많다. 이 뜻은 세부적으로
정의할 수 있다는 뜻이된다. 기본 사용방법은 아래와 같다:

usage: packit -m mode [-options] 'expression'

사용할 때 모드가 있다는 것을 주의해야 하는데, 모드에 따라서 옵션이 달라지기 때문이다.
옵션에는 capture, inject, trace 가 있으며 기본모드는 inject 이다.

1. 패킷 캡쳐

자주 사용할 만한 패킷 캡쳐 옵션 몇가지를 정리해 보면 아래와 같다

-c count 캡쳐할 카운트 수를 지정
-e 링크 레이어 헤더 데이터 출력
-i interface 네트워크 인터페이스 지정
-n 호스트 주소를 이름으로 변환하지 않음
-r file 패킷을 읽을 파일 지정
-s snaplen 패킷 캡쳐할 snaplen 데이터 사이즈 정의 (기본:68 바이트)
-w file 패킷 파일 저장
-X 헥사와 아스키로 데이터 출력

사용 옵션들을 보면 패킷인사이드에서 여러번 다뤘던 도구들과 큰 차이는 없다.
특히 tcpdump 에 익숙하다면 더욱 그럴것이다.

사용예제>

#packit -m capture -c 100 -i eth0 -w /data/packetinside.pcap
#packit -m cap -nX 'tcp and port 80'

2. 패킷 인젝션

기본적으로 인젝션 되는 패킷의 옵션은 아래와 같으며, 옵션만 봐도 크게 어렵지는 않다.

-t protocol 인젝트할 프로토콜 타입 지정 : TCP, UDP, ICMP, ARP (기본은 TCP)
-c count 인젝션에 몇 개의 패킷을 사용할 것인지 정의
-i interface 네트워크 인터페이스
-w interval 각 패킷을 보내는 간격 시간 (기본 : 1초)
-h 패킷을 보낸 후, 응답을 프린트 해줌 * 필요에 따라 유용한 기능
-v Verbose 모드로 세부적으로 정보를 출력함
-p payload 인젝션 할 페이로드를 지정, HEX 는 '0x' 로 시작하며 각 값의 구분은 공백으로 함
ASCII : -p 'hello world, packetinside.com'
HEX: -p '0x 40 40 40 90 90 90 0d 0a'
-Z length 인젝트할 패킷의 사이즈 정의

-t 로 프로토콜을 지정한 후 각 프로토콜 마다 사용가능한 옵션을 이용하면 되는데
IP,TCP,UDP,ICMP,ARP,이더넷 헤더 옵션을 가지고 있다.
여기서 각 옵션을 일일이 설명하기는 힘들고, packit 의 간단한 도움말을 보면 쉽게 알 수 있다.

TCP/UDP header options
  -a ack      Acknowledgement number
  -D port     Destination port (Range format: start-end)
  -F flags    Flags (format: -F UAPRSF)
  -q seq      Sequence number
  -S port     Source port (Default: Random)
  -u urg      Urgent pointer
  -W size     Window size (Default: 65535)

ICMPv4 header options
  General:
  -C code     Code (Default: 0)
  -K type     Type (Default: 8)

  Echo(0) / Echo Reply(8):
  -N id       ID number
  -Q seq      Sequence number

  Unreachable(3) / Redirect(5) / Time Exceeded(11):
  -g gateway  Redirect gateway host (ICMP Redirect only)
  -j address  Original source address
  -J port     Original source port
  -l address  Original destination address
  -L port     Original destination port
  -m ttl      Original time to live
  -M id       Original ID number
  -O tos      Original type of service
  -P proto    Original protocol (Default: UDP)

  Mask Request(17) / Mask Reply(18):
  -N id       ID number
  -Q seq      Sequence number
  -G mask     Address mask

  Timestamp Request(13) / Timestamp Reply(14):
  -N id       ID number
  -Q seq      Sequence number
  -U ts       Original timestamp
  -k ts       Recieved timestamp
  -z ts       Transmit timestamp

IP header options
  -d address  Destination address
  -f          Don't fragment
  -n id       ID number
  -o tos      Type of service
  -s address  Source address
  -T ttl      Time to live (Default: 128)
  -V ipproto  IP protocol number (RAWIP only)

ARP header options
  -A op       Operation type (Default: 1 (ARP request))
  -x address  Source protocol address
  -X hwaddr   Source hardware address
  -y address  Destination protocol address
  -Y hwaddr   Destination hardware address

Ethernet header options
  -e ethaddr  Source ethernet address
  -E ethaddr  Destination ethernet address

옵션은 위와 같으며, 패킷인사이드 블로그를 열심히 보신 분들이라면 옵션을 이해하는데 
어려움이 없을 것이다. 몇가지 예제를 보도록 하자.

다음은 출발지 소스는 8.8.1.1 로 하고 목적지는 192.168.0.1 로 보내는데 총 10개의 패킷을
보낸다. -h 옵션은 응답도 출력하도록 한 것이다. -h 옵션이 주어지지 않으면,
단순히 전송하는 정보만 출력할 것이다.

# packit -t icmp -s 8.8.1.1 -d 192.168.0.1 -c 10  -h
Mode:  Packet Injection using device: eth1

-| SND 1 |------------------------------------------------------------------

Timestamp:   10:28:54.469954
ICMP header: Type: Echo Request(8)  ID: 5854  Seqn: 56577  
IP header:   Src Address: 8.8.1.1  Dst Address: 192.168.0.1
    TTL: 128  ID: 53261  TOS: 0x0  Len: 28  

-| No Response From Peer |--------------------------------------------------

아래는 TCP 패킷을 보내는 것으로 목적지 포트 80에 TTL은 111 그리고 페이로드는 0x40 을
보낸 것이다.

# packit -t TCP -s 192.168.0.253 -d 192.168.0.200 -S 403 -D 80 -T 111 -p '0x 40'
Mode:  Packet Injection using device: eth1

TCP header:  Src Port: 403  Dst Port(s): 80  Flag(s): None
    Window: 65535  
IP header:   Src Address: 192.168.0.253  Dst Address: 192.168.0.200
    TTL: 111  ID: 49354  TOS: 0x0  Len: 41  

Writing packet(s) (1): .

-| Packet Injection Statistics |--------------------------------------------
Injected: 1  Packets/Sec: 1.0  Bytes/Sec: 41.0  Errors: 0

그리고 다음은 ARP 패킷을 만들어 전송한 것이다. 우선 -t 로 ARP 타입을 지정해 주고
-A 1 은 ARP Request 를 뜻하고 -x 는 보내는 IP 주소 -X 보내는 이더넷 주소를 정의한 것이다.

# packit -t arp -A 1 -x 1.2.3.4 -X 5:4:3:2:1:0  
Mode:  Packet Injection using device: eth1

ARP header:  Type: Request(1)
    Sender:  Protocol Address: 1.2.3.4  Hardware Address: 5:4:3:2:1:0
    Target:  Protocol Address: 0.0.0.0  Hardware Address: 0:0:0:0:0:0


Writing packet(s) (1): .

-| Packet Injection Statistics |--------------------------------------------
Injected: 1  Packets/Sec: 1.0  Bytes/Sec: 42.0  Errors: 0

여기서는 간단한 형태로만 만들어 패킷을 전송하지만, 사용하고자 하는 목적에 따라서
다양하게 만들어 볼 수 있다. 옵션을 여러개 사용하여 복잡해 보이지만,
막상 사용해 보면 옵션등이 사용하려는 목적을 대충 추정해 볼 수 있어 심플하게 패킷을 전송할 수 있다.

여기 블로그에서 언급한 많은 도구들 중에서 어떤것이 자기에게 더욱 적합한지는 여러분들이 판단하길 바란다
 


IDS 로 많이 사용중인 오픈소스 스노트가 있다. 스노트로 제작된 관련 탐지 룰도 많이 찾아 볼 수 있고, 실제 무료/상업용 침입차단 패턴이 이 스노트 형태의 기반이 많다. 여기서 스노트를 다룰 것은 아니다. 다만, 패킷 분석이 많이 사용되는 영역중에 하나로 어떤 위협을 차단/탐지 하기 위한 패턴 작성을 빼 놓을 수 없다.

네트워크 상에서 흘러다니는 트래픽을 정확히 분석 판단하고 어떤 부분을 패턴으로 뽑아내어 사용할 것인가는 단순한 것부터 복잡한 것까지 다양하다.

시그너처 패턴 작성 후 올바로 탐지하는 것을 테스트 하기 위해 트래픽을 재 전송해 보고 한다. 이미 여기서 언급한 tcpreplay 나 기타 도구를 이용해 재전송해보는 것으로 내가 만든 패턴이 올바른지 확인할 수 있다.

앞서 소개한 PackIt 도구에서 유용한 유틸리티가 하나 있다. 그것은 스노트 룰을 PackIt 명령어로 만들어, 패킷을 전송할 수 있도록 도와주는 것이다. 스노트 룰의 QA 등과 같은 업무에는 나름 유용하게 사용할 수 있을 것이다.

다운로드는 다음의 경로에서 가능하다.

http://packetfactory.openwall.net/projects/packit/s2pgen.pl

이 파일은 펄(Perl) 스크립트로 간단히 만들어져 있는 것으로 룰 파일을 지정하면, packit 으로 검증해 볼 수 있게 명령어를 만들어 준다. 파일을 열어 첫 시작부분을 보면 주소 설정을 정의하는 부분이 있다. 시그너처 파일에서 룰을 읽어들여 파싱할때 필요한 기본 정보이다. 이 정보들만 여러분들의 네트워크 상황에 맞게끔만 조절하여 사용하면 된다.


# Defaults
$DEFAULT_PACKIT     = "packit";
$DEFAULT_ADDR       = "10.0.0.1";
$DEFAULT_DATA       = "R";

# Host/Port definitions
$EXTERNAL_NET_ADDR  = "10.0.0.1";
$HOME_NET_ADDR      = "192.168.0.4";
$HTTP_SERVER_ADDR   = "192.168.0.2";
$SQL_SERVER_ADDR    = "192.168.0.3";
$SMTP_SERVER_ADDR   = "192.168.0.4";
$TELNET_SERVER_ADDR = "192.168.0.5";
$AIM_SERVER_ADDR    = "192.168.0.6";
$ORACLE_PORT        = "1521";
$HTTP_PORT          = "80";
$SHELLCODE_PORT     = "81";

우선 스노트에서 제공하는 기본 룰 파일중 하나인 ddos.rules 파일을 가지고 만들어 보면 아래와 같다 :


# ./s2pgen.pl ddos.rules
echo

echo DDOS TFN Probe
packit -t icmp -s10.0.0.1 -d192.168.0.4 -p "0x 31 32 33 34" -SR -DR    -K 8  -N 678

echo DDOS tfn2k icmp possible communication
packit -t icmp -s10.0.0.1 -d192.168.0.4 -p "0x 41 41 41 41 41 41 41 41 41 41" -SR -DR    -K 0  -N 0

echo DDOS Trin00 Daemon to Master PONG message detected
packit -t udp -s10.0.0.1 -d192.168.0.4 -p "0x 50 4f 4e 47" -SR -D31335 

echo DDOS TFN client command BE
packit -t icmp -s10.0.0.1 -d192.168.0.4  -SR -DR    -K 0  -N 456 -Q 0


packit 을 통해 보내기 전 echo 로 어떤 패킷인지 출력해 주고 packit 명령어로 전송할 패킷 정보를 만들어 준다. 그리고, 스노트에서 탐지가 되는지 확인해 보면 된다.

시그너처 제작 업무를 하는 이들에겐 나름 도움이 될 것이다. 또는 이를 변형하여 원하는 형태의 도구를 이용하여 만들어보는 것은 어떨까?
 

// www.packetinside.com/search?updated-max=2011-01-01T21:14:00%2B09:00&max-results=7 


tcpdump 에서 -xX 와 같이 출력되는 형태의 데이터를 가져오고자 한다.

$ tcpdump -xX -n -r test.pcap

에서 출력되는 다음의 내용을 대상으로 가정해 보겠다.


0x0000:  4500 003e 344e 4000 4011 5d49 c0a8 00f0  E..>4N@.@.]I....
0x0010:  a87e 3f01 bddb 0035 002a 7cef 8555 0100  .~?....5.*|..U..
0x0020:  0001 0000 0000 0000 0377 7777 0667 6f6f  .........www.goo
0x0030:  676c 6502 636f 026b 7200 001c 0001       gle.co.kr.....

대략 추정되는 것과 같이 DNS  패킷이다.  자, 그럼 일단 Scapy 를 실행하고 'IP(import_hexcap())' 를 이용해서 패킷 HEX 데이터를 로드해 보자. tcpdump 의 텍스트 내용을 복사하고 import_hexcap() 를 수행후 그 상태에서, 바로 붙여 넣기를 한다. 그리고 Ctrl+D 를 누른다. Ctrl+C 를 누르면 안된다. 붙여 넣기가 완료되면 그 아래에 바로 해당 값들이 변환되어 Scapy 에서 보기 쉽게 표현해 준다.

Welcome to Scapy (2.1.0)
>>> IP(import_hexcap())
        0x0000:  4500 003e 344e 4000 4011 5d49 c0a8 00f0  E..>4N@.@.]I....
0x0010:  a87e 3f01 bddb 0035 002a 7cef 8555 0100  .~?....5.*|..U..
0x0020:  0001 0000 0000 0000 0377 7777 0667 6f6f  .........www.goo
0x0030:  676c 6502 636f 026b 7200 001c 0001       gle.co.kr.....
^D
<IP  version=4L ihl=5L tos=0x0 len=62 id=13390 flags=DF frag=0L ttl=64 proto=udp chksum=0x5d49 src=192.168.0.240 dst=168.126.63.1 options=[] |<UDP  sport=48603 dport=domain len=42 chksum=0x7cef |<DNS  id=34133 qr=0L opcode=QUERY aa=0L tc=0L rd=1L ra=0L z=0L rcode=ok qdcount=1 ancount=0 nscount=0 arcount=0 qd=<DNSQR  qname='www.google.co.kr.' qtype=AAAA qclass=IN |> an=None ns=None ar=None |>>>
>>>


한눈에 보기 쉽게 정리가 된다. 자, 그럼 이제 무엇을 할 수 있겠는가? 이렇게 로드가 되었다면 이제 이 데이터는 내 마음대로 수정이 가능한 것이다. 데이터는 원하는 형태로 조정하고 전송시킬 수도 있게 되는 것이다. 예를 들어, 아래 그림과 같이 _.show() 해서 보면 패킷 구조를 한눈에 쉽게 파악할 수도 있다.


만약 특정 값을 수정한다면 아래와 같이 쉽게 할 수도 있다. 로드한 값을 a 에 저장하고 UDP 의 목적지 포트인 53을 9999로 변경해 보고 확인한 것이다.

>>> a[UDP].dport
53
>>> a[UDP].dport = 9999
>>> a
<IP  version=4L ihl=5L tos=0x0 len=62 id=13390 flags=DF frag=0L ttl=64 proto=udp chksum=0x5d49 src=192.168.0.240 dst=168.126.63.1 options=[] |<UDP  sport=48603 dport=9999 len=42 chksum=0x7cef |<DNS  id=34133 qr=0L opcode=QUERY aa=0L tc=0L rd=1L ra=0L z=0L rcode=ok qdcount=1 ancount=0 nscount=0 arcount=0 qd=<DNSQR  qname='www.google.co.kr.' qtype=AAAA qclass=IN |> an=None ns=None ar=None |>>>


Scapy 의 활용도는 무궁무진 하다. 패킷 데이터를 쉽고, 간단하게 처리할 수 있으니 이 얼마나 편하던가 :-) 앞으로도 Scapy 기능에 대해서 가끔씩 소개할 예정이다.

// www.packetinside.com/search?updated-max=2011-06-02T00:51:00%2B09:00&max-results=7



예전에 검색하다 Tcpdump 필터를 하나 발견한 것이 있다. AWK 로 제작한 간단한 스크립트로 Tcpdump 의 출력내용을 awk 로 파싱하여 좀더 보기 쉽게 출력한 것이다. 다음은 일반적으로 tcpdump 를 통해 출력한 내용의 일부분이다.

# tcpdump -i eth0 -s1550 -x


09:26:19.571231 IP 202.131.29.71.www > 192.168.15.11.60478: . 1:1461(1460) ack 658 win 6570
0x0000:  4500 05dc 89d8 4000 3406 ffc5 ca83 1d47
0x0010:  c0a8 0f0b 0050 ec3e b64f e2ba e85c e4e9
0x0020:  5010 19aa 1b94 0000 4854 5450 2f31 2e31
0x0030:  2032 3030 204f 4b0d 0a44 6174 653a 204d
0x0040:  6f6e 2c20 3131 204a 756c 2032 3031 3120
0x0050:  3133 3a32 363a 3137 2047 4d54 0d0a 5365
0x0060:  7276 6572 3a20 4170 6163 6865 0d0a 4c61



물론 -X 옵션과 같은 몇 가지를 조합하면 ASCII 값도 출력시키면서 조금은 더 보기 좋게 볼 수 있다. 여기서 소개하는 것을 이용하면 아래 화면과 같은 형태로 출력된다.


상단에 헤더정보가 요약되어 보이고 다음에 스트링 문자열을 보여준다. 사용방법은 아래 경로에서 스크립트를 다운로드 받고,

# tcpdump -i eth0 -l -s 65535 -x | fil

과 같이 사용하면 된다. 그냥 간단히 덤프하는 출력 내용을 fil 로 전달하는 것 뿐이다.

http://www.ishiboo.com/~danny/Projects/tcpdump.awkfilter/fil

요새는 워낙 좋은 도구들이 많이 나와있다보니 이런 필터가 큰 의미가 있을까 하는 분들도 있을 것이다. 나또한 이 필터의 직접 적인 출력 내용보다도 이런 방식으로 활용할 수 있다는 것을 여러분들에게 소개해 주고 싶은 것이다. Awk 로 만들어져 있지만, 이외에도 다양한 스크립트를 이용할 수 있다.  업무에 따라, 필요로 하는 정보가 조금씩 달라진다. 그럴때 나에게 맞는 도구를 간단히 만들어 응용해 보면, 더욱 효과적인 패킷 분석이 가능해 진다.  꼭, 어렵게 생각할 필요는 없다. 기존에 나와있는 도구를 잘 응용하면 여러분이 원하는 도구로 쉽게 만들어 버릴 수 있다는 사실을 잊지말자!

P.S 처음 받아서 실행해 보면, 출력이 제대로 되지 않아 살펴보았다. fil 필터를 열어보면 다음과 같은 시작부분에서 startip 를 0 에서 1로 변경하였다. 그냥 실행시 제대로 정보가 출력되지 않아, 프로토콜 번호를 찍어보니 엉뚱한 것이 찍히고 있었고, 코드를 확인결과 startip 만 살짝 바꾸면 위와 같이 출력이 된다.


BEGIN {
        BIGENDIAN = 0
        margin="   "
        startip=1
        FS = " "
}

 

// www.packetinside.com/search?updated-max=2011-07-25T12:25:00%2B09:00&max-results=7

  • flow 모니터링


네트워크 엔지니어라면 언제나 관심을 가지게 되는게 기본적으로 트래픽(bps,pps)체크이지만 이건 누구나 하는 것이고
추가 적으로 실제로 오고 가는 패킷의 헤더내용에 관심을 가지게 된다.
모든 패킷을 덤프해서 정보를 보는것도 방법이기는 하나 10G이상의 트래픽을 다 모니터링 하려면 서버로 하는 것은 사실상
불가능 하다. 이를 위해서 네트워크장비에서 패킷의 헤더 정보만 서버로 보내주고 이를 분석하는 것이 대안이 될 수 있다.

  • flow란.


원래 flow란게 기본적으로 5 tuple (protocol, src/dst ip src/dst port)정보를 flow란 개념으로 사용했었다. 다시 말해서 네트워크 장비로 유입되는 헤더에서 ip 와  protocol헤더를 보고 해당 정보를 가져 오게 되는 것이다. 이 정보만 서버에 보내주면 분석이 가능 한데 다시 말하면 이 정보도 대단한 양이 된다. 모든 패킷에 대해서 이 정보를 보내주게 된다면 그 또한 서버도 버티기 힘든 분량이라 이 정보를 압축 해서 보내게 된다. 

  • netflow


시스코에서 사용하는 netflow는 flow정보를 특정 시간(최소 1분)동안 장비에서 keeping하고 있다가 동일 flow는 counter를 증가시켜서 일종의 압축 방식으로 보내주게 된다. 이 정보가 일반 내부 트래픽 이라면 이 압축 정보가 효과가 있을 수 있으나 인터넷 트래픽이라면 5tuple을 1분동안 저장 하더라도 많은 메모리가 필요하게 되며 일반적인 네트워크 장비에서 소화 불가능한 수치가 된다. 그래서 여기에 sampling rate을 두고 몇 개당 한개씩 골라서 이 정보를 장비에서 가지고 있다가 서버에 보내주는 방식이다. 기본 개념은 좋은데 sampling rate이 높으면 기하 급수적으로 정확도가 떨어지고 sampling rate 낮으면 정보를 가지고 있는 시간동안 memory overflow가 생겨서 실제 서버로 보내주는 데이터는 sampling rate이 높을 때 보다 정확도가 더 떨어지는 기괴한 현상이 생긴다. 그래서 개인적으로 netflow는 인터넷 트래픽이 아닌 내부 데이터 연동용 장비에서만 가능 하다는 생각이다.
그런데 오랜만에 시스코에서 이쁜짓을 했는데 그것이 flexible netflow다 5 tuple을 다 가지고 있는게 아니라 특정 요소만 찍어서 보내는 방식이다. 다시 말하면 5tuple을 다 사용한다면 1분동안 keeping 해야 되는 데이터가 1백만 이라고 하면 src ip , src port 이렇게 한정짓는 다면 1십만 정도의 flow가 생겨서 장비에서 감당 가능 한 정보가 된다. 물로 linerate로 100% 이걸 처리 해줄 하드웨어도 필요하다.. 이게 시스코에서 간만에 만든 쓸만한 장비 nexus에서는 가능하다.
실제로 필자가 운영하는 장비에서는 모든 outbound트래픽의 src ip, src port를 다 이렇게 해서 모니터링해서 서비스 별로 실제 인터넷 트래픽 사용량을 계산하고 있다.

  • sflow


Sflow는 netflow란 약간은 개념은 틀리다. sflow는 기본적으로 l2정보 (mac, interface, vlan)정보까지 다 가능 한게 원래 태생이다. 물론 시스코도 이런 정보는 최근에 가능하다. 그리고 sflow는 netflow처럼 데이터를 keeping하고 있는 것이 아니라 바로바로 서버에 flow정보를 보내주는 방식이다. 물로 sflow도 record단위로 그룹핑 해서 정보를 보내준다. 그러나 이 것의 약점이라면 역시나 정보가 너무 많다는 것이다. 5tuple뿐만 아니라 l2정보까지 다 보내는 방식이니 대단한 장비가 아닌 이상 1:1 (line-rate) sampling 정보를 받는 것은 불가능 하다.

  • cflow, jflow


주니퍼에서 쓰는게 jflow이는 원래 cflow란 걸 조금 고친것으로 기본적으로 netflow와 비슷하다고 보면 된다.

  • 어느것을 사용할 것인가...


오차 범위가 심하더라도 대략적인 trends만 필요하다면 어느것을 써도 무방하다. 비슷한 오차범위를 가지지만 그래도 일반 적인 경우라면 sflow가 더 효율적일 수 있다. 
단 필자 처럼 line-rate 1:1 정보를 보고 정확한 트래픽 패턴과 공격시에 대한 정확한 분석이 필요하다면 현재로써는 flexible netflow가 완승이다. 물로 jflow나 sflow에서도 flexible 하게 정보의 필터링을 하고 조금더 새로운 하드웨어가 나오겠지만 그 전까지는 그리고 현존하는 장비에서는 cisco nexus의 flexible netflow를 사용하기를 바란다.


Netflow supported by Cisco, Juniper, Alcatel Lucent, Huawei, Enterasys, Nortel, VMWare

sFlow supported by Alaxala, Alcatel Lucent, Allied Telesis, Arista Networks, Brocade, Cisco, Dell, D-Link, Enterasys, Extreme, Fortinet, Hewlett-Packard, Hitachi, Huawei, IBM, Juniper, LG-Ericsson, Mellanox, MRV, NEC, Netgear, Proxim Wireless, Quanta Computer, Vyatta, ZTE and ZyXEL (see sFlow link)

PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약 
서핑하다가 본 패킷 관련 블로그 글 하나를 소개하고자 한다. 유닉스 환경에 익숙한 사용자 분들이라면
awk, uniq, sed 와 같은 유틸리티들이 얼마나 막강하고 유용한지를 알 것이다. tcpdump 의 출력내용을 
이 도구를 이용해 활용하는 방법이다. 원문의 글은 아래 경로에서 볼 수 있고,

http://isc.sans.edu/diary.html?storyid=8515

필자가 명령어 관점에서 적절히 내용을 요약 소개하도록 하겠다. 일부 명령어는 조금 수정하였다. 이 글은 SANS 의 Incident Handler 인 Guy Bruneau 가 작성한 글이며, 여러분들에게 소개해도 좋다는 승낙을 받았다. 

 

수집된 큰 파일의 PCAP 파일을 분석하려고 하면 시간이 많이 소요될 뿐만 아니라 복잡하기만 하다. 3개의 예제를 소개할 것인데, 한개는 의심스러운 포트를 찾기 위한 것과 출발지 IP 를 찾는 것이다.
참고로 여기서 사용한 IP 는 필자가 가지고 있는 PCAP 파일의 IP 를 랜덤하게 rewrite 한 것이다.

첫번째 예제는 어떤 소스IP 가 목적지 107.251.237.45 번에 80 번 포트로 SYN 패킷을 보냈는지 찾는 것이다.

일단 사용한 명령어를 보면 아래와 같으며, 하나하나 살펴볼 것이다.

#  tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}' | sort | uniq -c | awk '{print $2 "t" $1 }'

1) tcpdump 를 사용하면서 -n 은 resolving 을 하지 말라는 것이다. 그리고 -t 옵션은 날짜/시간을 출력하지 않으며, -r 은 fake2.pcap 파일을 읽어들이라는 뜻이다. resolving 이라고 표현한 것은 tcpdump 를 통해서 볼때 IP 주소로 안 나오고 DNS 로 변환되어 나오는 것들을 말하는데, -n 은 IP 로만 출력된다고 보면 된다.

2) 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' 는 필터 문법을 사용한 것으로 tcp[13] = 0x02 는 TCP SYN 패킷을 뜻하고 dst host 107.251.237.46 가 목적지 IP 주소와 dst port 80 은 목적지 포트 80번을 뜻한다. 아래와 같은 결과를 얻을 수 있다.

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
IP 45.129.53.45.1107 > 107.251.237.46.80: S 2848095605:2848095605(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1109 > 107.251.237.46.80: S 2969874981:2969874981(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1113 > 107.251.237.46.80: S 3283036520:3283036520(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1117 > 107.251.237.46.80: S 1316869520:1316869520(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1118 > 107.251.237.46.80: S 416262863:416262863(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1119 > 107.251.237.46.80: S 1231482360:1231482360(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1120 > 107.251.237.46.80: S 4007769174:4007769174(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1121 > 107.251.237.46.80: S 2037777415:2037777415(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1122 > 107.251.237.46.80: S 2064521910:2064521910(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1125 > 107.251.237.46.80: S 2824615168:2824615168(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1126 > 107.251.237.46.80: S 578435425:578435425(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1127 > 107.251.237.46.80: S 3649101981:3649101981(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1128 > 107.251.237.46.80: S 4156669539:4156669539(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1130 > 107.251.237.46.80: S 2942142219:2942142219(0) win 65535 <mss 1460,nop,nop,sackOK>
IP 45.129.53.45.1131 > 107.251.237.46.80: S 1880140019:1880140019(0) win 65535 <mss 1460,nop,nop,sackOK>

3) 파이프와 awk ( | awk '{print $2}') 를 이용하여 tcpdump 의 결과중 출발지 IP 만 출력하게 한 것이다. 필드 $2 가 출발지 IP 이며, 목적지 주소로 할 경우 $4 로 변경하면 된다.

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
45.129.53.45.1107
45.129.53.45.1109
45.129.53.45.1113
45.129.53.45.1117
45.129.53.45.1118
45.129.53.45.1119
45.129.53.45.1120
45.129.53.45.1121
45.129.53.45.1122
45.129.53.45.1125
45.129.53.45.1126
45.129.53.45.1127
45.129.53.45.1128
45.129.53.45.1130
45.129.53.45.1131

4) 파이프와 tr  (| tr . ' ')를 이용하여  . 을 공백으로 바꾸는 것이다.

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '
reading from file fake2.pcap, link-type EN10MB (Ethernet)
45 129 53 45 1107
45 129 53 45 1109
45 129 53 45 1113
45 129 53 45 1117
45 129 53 45 1118
45 129 53 45 1119
45 129 53 45 1120
45 129 53 45 1121
45 129 53 45 1122
45 129 53 45 1125
45 129 53 45 1126
45 129 53 45 1127
45 129 53 45 1128
45 129 53 45 1130
45 129 53 45 1131

5) 다시 파이프와 awk (| awk '{print $1"."$2"."$3"."$4}') 를 이용하여 IP 주소 형태로 구성한 것이다. $5는 포트인데 제외시킨 것이다.

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45

6)  sort 명령어를 ( | sort) 를 이용하여 트래픽을 IP 로 정렬한다.  ** 여기 예에서는 하나의 IP 만 이용되었음을 참고하길 바란다.

0# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}' | sort
reading from file fake2.pcap, link-type EN10MB (Ethernet)
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45
45.129.53.45

7) 다음으로 | uniq -c 명령어를 통해 출발지 IP 가 몇번 반복했는지 출력하는 것이다.

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}' | sort | uniq -c
reading from file fake2.pcap, link-type EN10MB (Ethernet)
     15 45.129.53.45

8) 그러면 출발지 IP 45.129.53.45 가 15번 SYN 을 보냈다는 것을 알 수 있다. 다음 명령어인 awk '{print $2 "t" $1 }' 는 보기 좋게 IP 주소와 카운트 출력을 서로 맞바꾼 것이다. 

# tcpdump -ntr fake2.pcap 'dst host 107.251.237.46 and tcp[13] = 0x02 and dst port 80' | awk '{print $2}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}' | sort | uniq -c | awk '{print $2 "t" $1 }'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
45.129.53.45    15

다른 예제로 사용한 것은 목적지 80 번 포트로 목적지 IP 의 건수를 출력한 것이다.  위 예제와 큰 차이는 없다.

# tcpdump -ntr fake2.pcap 'dst port 80' | awk '{print $4}' | tr . ' '| awk '{print $1"."$2"."$3"."$4}' | sort | uniq -c | awk '{print $2 "t" $1 }'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
103.215.23.19   119
105.143.221.251 5
105.143.229.47  5
107.211.203.241 20
107.251.105.215 34
107.251.237.46  75
111.157.46.185  653
111.190.92.253  12
111.200.248.236 21
111.212.148.21  40
121.166.117.57  25
121.205.250.221 10
121.205.250.223 24
123.187.14.83   31
123.187.14.89   15
125.167.70.221  15
159.180.121.215 11
189.252.57.215  5
189.252.57.217  5
43.197.190.189  6
45.219.248.116  15
59.185.219.21   5
59.185.219.245  28
59.185.219.57   113

다음은 목적지 포트번호인 $5 를 사용하였는데 출력을 시키고 정렬하면서 , sed 명령어로 제일 끝부부의 출력인 : 를 삭제하여 출력한 것이다.

# tcpdump -n -r fake2.pcap | awk '{print $5}' | tr . ' ' | awk '{print $5}' | sort | uniq -c | sed 's/:$//'
reading from file fake2.pcap, link-type EN10MB (Ethernet)
      2
     16 1039
      3 1040
      3 1041
     30 1042
     10 1043
     10 1044
      7 1045
      6 1046
      6 1047
      7 1048
      9 1049
      7 1050
      3 1051
      3 1052
      3 1053
     21 1054
     42 1055
     64 1056
     15 1057
     10 1058
     77 1059
     49 1060
     22 1061
     16 1062
     24 1063
     22 1064
     19 1065
     21 1066
   
간단하게 원문의 예제와 다르게 수정한 것을 소개해 보았는데, 아주 기본적인 형태를 언급한 것이다. awk, sed 와 파이프 문만 잘 사용해도 출력되는 스트링을 자유자재로 편집하여 유용한 수치를 뽑아낼 수 있다. 나 또한 즐겨쓰는 유틸리티 인데, 이 각각의 도구가 책 한권씩 소개되어 있을만큼 문자열을 다루는데 있어서는 최고다.

tcpdump 를 예로 들어 설명했는데 tshark 의 결과를 이용하는데도 유용하다. tshark 는 출력시키고자 하는 내용을 원하는 포맷 형태로 맞추어 출력도 가능하여 효과적으로 사용할 수 도 있는데, 정리가 되는대로 여러분들에게 소개할 것이다.

power off
power on ctrl + break 여러번
>o/r 0x2142
>i
sh version

Would you like to enter the initial configuration dialog? [yes]: no

Router> en
Router#

conf t
enable secret cisco
config-register 0x2102
end
write
reload

sh flash (4096K bytes)
----------------------------------------------------------------------

*test2*

#router config#
en
conf t
hostname r1
int s0       
ip address 10.1.1.1 255.255.255.0
no shut
clock rate 64000
enc ppp
end
sh run
sh ip int brief
ping 10.1.1.2


#ethernet config#
conf t
int e0
ip address 192.168.1.1 255.255.255.0
no shut
end
sh ip int brief
#pc config#
ipconfig ip/ip 192.168.1.2 255.255.255.0
ipconfig dg 192.168.1.1

#network add#
conf t
router rip
network 10.0.0.0     <--자신이 서비스 하는 네트웍
network 192.168.1.0  <--   상동 
end

----------------------------------------
telnet.console 접속및 비밀번호 설정 과 접속 해제실습
conf t
line con 0
login
password cisco
line vty 0 4
login password sist
exit
1.enable password cisco
2.enable secret router
sh run
telnet
<ctrl+shift+6>x
sh sess
sh user
resum 1e

disconnect
세션은 끊는다(자신이 연결한것을 자신이 끊는다)
clear line 11
세션을 끊는다(상대방이 접속한 세션을 강제로 끊는다)

*부팅 플러쉬내용을 램으로 불러온다
bootstrap rom(sub ios)
ios        flash
설정 파일 nvram  <sh startup>
          ram    <sh run> 

0x2142 :nvram설정파일을 무시하고 부팅하라
네크웍이 연결된곳에서 ios가져온다
롬모드
0x0 수동으로 부팅
0x1 자동으로 부팅 
0x2 to 0xF 정상적으로 플래쉬에서 부팅
command configer-regeister 0x2102
ctol+z =end
reload =reboot

ram <-------->pc  ip로 통신한다
라우터와      랜카드 L3 L3 cross cable
라우터와 연결된 스위치(etrhnet interface)와 랜카드 L2-L3 direct cable
랜카드가 2개인경우 남는 이더넷카드와 라우터와 연결
ㄱ.2번째랜카드에 ip.gateway설정
ㄴ.ping 확인
ㄷ.tftp server 활성
ㄹ.copy run tftp
ㅁ.tftp>cisco system>cisco tftp server>file 저장확인

*버전 다른 라우터
라우터  ㅡㅡ네트웍서버ㅡㅡ라우터
access,space,filename contconvention
=>sh flash 로 파일명 확인
copy flash tftp
copy fftp  flash(filename 주의)
----------------------------------------------------------------------
*스위치 중요한 3가지 기능
1 address learning(mac)
2 forward/filter decision
3 loop avoidance 
unicast / broadcast
동일 프레임이 쌓이므로(broadcast storm)
맥테이블이 불안

stp :포트를 블락 시킴으로서 루프를 없앨수 있다

*스위치설정*

r1 192.168.1.1
r2 192.168.1.2
sw 192.168.1.6
송pc 192.168.1.5
second lan192.168.1.4
스위치에 아이피 부여
텔넷설정
라우터에서 텔넷접근
conf t
int vlan 1
ip address 192.168.1.6 255.255.255.0
no shut
exit
enable pasword cisco
line vty 0 4
login
password cisco
end
telnet 192.168.1.5//라우터에서 스위치로 테스트

*스위치 명령어
interface vlan 1
ip address
duplx auto full 전화 half 무전
sh mac address
sh port-security
*erase startip-config*
show version
reload

*Spanning Tree Protocol
역할:루프 해결
동작방법:한포트를 블락
어떤 포트를 블락 할 것인가..
stp
rstp
*stp 포트 결정
네트웍당 루트 브릿지는 하나 (패킷을 받는다)이며 각포트들은 designated port
루트포트 :루트 브릿지로 가는 최적경로   norootbrige 는 하나의 루트 포트만 있다
dp;세그먼트당 지정이 포트는 하나

루트브릿지 결정
*브릿지 아이디(브릿지 piority+mac address)를 보고 결정
BPDU 
root bridge =brige with the lowest brigde id

*
새로운루트스위치 추가시 연결되는 norootbridge의 root port를 막는 후에 루트스위치를 설정


BPDU 루프가 어디서 돌고 있는지 알아낼수 있다
root id = b id 자신이 바로 루트인경우
root id x b id    자신이 루트가 아닌경우

세션을 연결하기 위해 확인 :헬로우 타임bpdu 2초
----------------------------------
sw1실습
1홀수:192.168.1.0/24
짝수 :192.168.2.0/24

2홀수:vlan3
짝수 :valn4

3domail:sist
4server:s1(s2.s3 client mode)
--------------------------------
router 활성

##si setting##
vlan database
vtp domain sist
vtp server
vlan 3 name vlan3
vlan 4 name vlan4
end
sh vtp status//확인명령
sh vlan      //확인명령

client(s2.s3)
vlan database
vtp domain sist
vtp client

*trunk port 설정
conf t
int f0/11  
switchport trunk enc 
switchport mode trunk

sh spanning-tree
sh vlan


*vlan setting*
int f0/1
switchport mode access
switchport access vlan 3

sh span
sh run

'Network' 카테고리의 다른 글

netflow, sflow, jflow, cflow 비교  (0) 2017.01.08
PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약  (0) 2017.01.08
라우터 설정  (0) 2017.01.08
라우터 패스워드 복구  (0) 2017.01.08
Routing Table  (0) 2017.01.08

sh run - ram info
sh start - nvram info
sh conf

// 복사
copy running-config startup-config = write

// 인터페이스 정보
show interfaces ehternet 0 - Layer1, Layer2

// 명령어 취소
명령 앞에 no 혹은 clear

sh cdp neighbors

라우터 텔넷 접속후 ctrl+shift+6 x 하면 자기 라우터로 돌아옴
resume 1 하면 다시 접속함

## sh ##
ip int brief - Layer1 Layer2 Layer3
ip route
logging - log
processes
memory
protocols

## 라우터 상호 통신하기 ##

// Router1 Router2 세팅
conf t
hostname r1
int s0
ip address 10.1.1.1 255.255.255.0
no shut
clock reate 64000
enc ppp
end
sh run
sh ip int brief

// Ethernet 세팅
conf t
int e0
ip address 192.168.1.1 255.255.255.0
no shut
end
sh ip int brief

// PC 세팅
ipconfig /ip 192.168.1.2 255.255.255.0
ipconfig /dg 192.168.1.1

// 네트워크 세팅
conf t
router rip
network 10.0.0.0
network 192.168.1.0
end

Router2도 위처럼 셋팅..

// 스위치
conf t
int vlan 1
ip address 192.168.1.4 255.255.255.0
no shut
end
sh ip int brief

description 

## 패스워드 설정 ##
line console 0 - 콘솔에 패스워드 설정 - enable 하기 전에도 패스워드 물어봄
login
passwd cisco

// 텔넷 패스워드
conf t
line vty 0 4 - 텔넷 접속 vty, con, aux
login
password cisco
end

'Network' 카테고리의 다른 글

PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약  (0) 2017.01.08
라우터 - Spanning Tree, Trunk Port  (0) 2017.01.08
라우터 패스워드 복구  (0) 2017.01.08
Routing Table  (0) 2017.01.08
TTL (Time To Live)  (0) 2017.01.08

ctrl+break
o/r 0x2142
en
conf t
enable secret cisco
config-register 0x2142
end
write
reload

sh run

패스워드 확인 enable secret ..................

sh flash

int atm 0/0

'Network' 카테고리의 다른 글

라우터 - Spanning Tree, Trunk Port  (0) 2017.01.08
라우터 설정  (0) 2017.01.08
Routing Table  (0) 2017.01.08
TTL (Time To Live)  (0) 2017.01.08
VoIP 개요, 구성도, 도입장점, 네트워크 구성도  (0) 2017.01.07

+ Recent posts