# Cisco ASAv GNS3 올려서 테스트 해보자
 
0. ASAv 소개
기존 Cisco ASA 물리방화벽을 VM으로 제공함, REST API 제공
제공성능 : ASAv5 (100M throughput), ASAv10 (1G throughput), ASAv30 (2G throughput), ASAv50 (10G throughput)
이중화 : Active-Standby
제공 하이퍼바이저 : KVM, VMwareESX, Hyper-V
Public Cloud 지원 : AWS, MS Azure
제공 모드 : Routed, transparent
* 물리ASA 대비 ASAv에서 미제공 되는 기능 : 클러스터링, 멀티 컨텍스트 모드, Active/Active Failover, 이더채널

 
 
1. 테스트 구성도
GNS3 : v2.1.2
Cisco ASAv : v9.8.1, asav981.qcow2, MgMt NIC(사용안함), Gi0/0(내부망 연동), Gi0/1(외부망 연동), import appliance 등록
* 라이선스 미등록 : Lab Edition Mode(No license) Throughput 100Kbps 이하로 동작
HostPC : 윈도우OS, TFTP서버역활

 
 
2. ASAv 기본 설정
2.1 ASAv Power ON console 접속(VNC type)
기본 enable password 없음, 그냥 '엔터' enable 모드 접속됨

 
 
2.2 VNC 대신 console 접속 telnet 접속하기
기본 serial port disable 되어 있지만, 아래 처럼 설정하여 serial port enable 하여 console telnet 으로 접속 가능
copy disk0:/coredumpinfo/coredump.cfg use_ttyS0
dir

 
GNS3에서 ASAv Stop configure 에서 console type telnet 변경 Power ON 한다

 
이제 console 접속 telnet 으로 접속 되는 것을 있다

 
 
2.3 ASAv 기본적인 설정
호스트이름 설정, VTY(가상 터미널) 접속 계정 정보 설정, 인터페이스 IP 설정, 라우팅 설정, SSH 설정, ICMP inspection 허용
참고로 ASAv management0/0 GNS3에서는 사용하지 않아도됨 (이유) KVM console 접속 기능으로 telnet 접속 가능
ciscoasa> enable
Password:
ciscoasa# conf t
ciscoasa(config)# hostname ASAv
ASAv(config)# username admin password qwe123 privilege 15
ASAv(config)# aaa authentication ssh console LOCAL
ASAv(config)# enable password qwe123
 
ASAv(config-if)# interface gi0/0
ASAv(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
ASAv(config-if)# ip add 172.16.1.1 255.255.255.0
ASAv(config-if)# no shut
ASAv(config-if)# exit
 
ASAv(config)# interface gi0/1
ASAv(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
ASAv(config-if)# ip add 192.168.254.40 255.255.255.0
ASAv(config-if)# no shutdown
ASAv(config-if)# exit
 
ASAv(config)# route outside 0.0.0.0 0.0.0.0 192.168.254.254
ASAv(config)# dns domain-lookup outside
ASAv(config)# dns name-server 168.126.63.1
 
ASAv(config)# ssh version 2
ASAv(config)# ssh 192.168.254.0 255.255.255.0 outside
 
ASAv(config)# policy-map global_policy
ASAv(config-pmap)#  class inspection_default
ASAv(config-pmap-c)# inspect icmp
 
 
2.4 ASDM 접속 설정
HostPC asdm 파일을 위치하고 TFTP 서버 설정 ASAv에서 asdm 파일을 다운로드 ASDM 접속 설정하자
ASDM 파일 : asdm-781.bin
 
ASAv# copy tftp: flash:
Address or name of remote host []? 192.168.254.198
Source filename []? asdm-781.bin
Destination filename [asdm-781.bin]?
Accessing tftp://192.168.254.198/asdm-781.bin...!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Verifying file disk0:/asdm-781.bin...
!!!!!!!!!!!!!!!!!!!!!!!!!
Writing file disk0:/asdm-781.bin...
26916068 bytes copied in 36.20 secs (747668 bytes/sec)
ASAv# dir

 

 
 
HTTP 접속 설정 ASDM 이미지 지정 설정
ASAv(config)# aaa authentication http console LOCAL
ASAv(config)# http server enable
ASAv(config)# http 192.168.254.0 255.255.255.0 outside
ASAv(config)# asdm image disk0:/asdm-781.bin
ASAv(config)# end
ASAv# copy running-config startup-config
 
 
https://IP 접속하여 ASDM Launcher 설치하자. JRE(Java) 없을 설치하자

 
ASDM Launcher 통한 ASA 설정 대쉬보드 확인

 
ASA 설정 대쉬보드 접속 확인

 
 
# 참고링크


Posted by 쏠라구구
# Suricata 소개
오픈소스 네트워크 탐지분석(IDS)/차단(IPS) 시스템이다. 또한 네트워크 보안 모니터링과 offline pcap processing 가능하다
다양한 시스템과 연동이 된다 : SIEMs, Splunk, ELK
다양한 프로토콜 디코더하여 분석 가능 : IPv4, IPv6, TCP, UDP, SCTP, ICMPv4/v6, GRE, Ethernet, VLAN, QINQ, MPLS, ERSPAN
 
 
# 테스트 구성
[1] 웹트래픽에 대한 Proxy 서버 기능으로 Suricata 에서 탐지
[2] Network Switch Mirror(SPAN) Cisco ERSPAN Mirror 트래픽 수집/탐지
[3] 오픈스택 환경에서 특정 Instance 트래픽을 Mirror 하여 탐지
[4] 오픈스택 환경에서 특정 Instance 트래픽을 다른 곳에 있는 Suricata 에서 트래픽을 전달 받아서(GRE 활용) 탐지하기
 
 
[1] 웹트래픽에 대한 Proxy 서버 기능으로 Suricata 에서 탐지
# 구성도
.Suricata 경우 IDS 모드로 활성화하고 다른 PC Web Proxy Suricata 통하여 사용한다

 
# Suricata 설치
yum -y suricata
 
## 버전확인
yum 으로 설치 3.2 버전으로 설치된다. 4.X 설치 시에는 수동설치하자
[root@openstack ~]# suricata -V
This is Suricata version 3.2.4 RELEASE
 
## HOME_NET 설정
vi /etc/suricata/suricata.yaml
HOME_NET 을 예시'[192.168.254.0/24, 10.0.0.0/8]' 처럼 내부망 대역을 지정함
 
## rule 다운로드
yum 으로 설치 default 적용 rule 없는 것은 직접 다운받아서 rules 폴더에 넣어야
cd /etc/suricata
tar -xvzf emerging.rules.tar.gz
ls -al /etc/suricata/rules
 
# 지정된 NIC(인터페이스)에서 Suricata(IDS 모드, 탐지) 실행
suricata -c /etc/suricata/suricata.yaml -i ens32
ps -ef | grep suricata
 
# Suricata 발생로그 확인
ls -al /var/log/suricata/
 
아래 로그(csv 형식, 콤마',' 구분됨) 확인
tail -f /var/log/eve.json
 
엑셀에서 구분기호 분리하여 확인

 
# Suricata 시그니처 탐지 테스트
malware 제공하는 사이트에서 malware 다운로드를 시도해보고 suricata 시그니처 탐지되는지 확인
 
## 시그니처 탐지 로그 확인 실행
tail -f /var/log/fast.log
 
## 내부에 Term Linux 에서 malware 다운로드 시도
https://www.wicar.org/ 에서 'TEST MALWARE!' 선택 이후 빨간색 Malware 아무거나 선택하여 다운로드 시도

 
## 시그니처 탐지 로그 확인

 
 
[2] Network Switch Mirror(SPAN) Cisco ERSPAN Mirror 트래픽 수집/분석
# 구성도
Ubuntu CiscoCSR1kv 통해서 인터넷을 사용하는 구조에서, CSR1kv Gi3 포트에 in/out 트래픽을
ERSPAN(GRE) 감싸서 Suricata 전달(Mirror)을함, IP 기반으로 Suricata IP 가지고 있다면 위치에 상관없이 트래픽을 받음
또한 Suricata 3.X 부터는 ERSPAN 헤더를 인식하여 알아서 내부의 IP Data Payload 탐지가 가능하다.
이전 포스팅인 ntopng 경우 gre/erpan 헤더를 strip 해야지만 ntopng 에서는 트래픽 모니터링이 되는 것과 차별화된다.

 
# CiscoCSR1kv 설정
이전 포스팅 설정 참고
 
# CiscoCSR1kv ERPSAN 설정
monitor session 1 type erspan-source
source interface Gi3
destination
  erspan-id 1
  ip address 192.168.254.60
  origin ip address 192.168.254.70
  exit
no shut
 
# Suricata 인입되는 ERSPAN 패킷 확인
tshark -i ens32 -w /tmp/erspan.pcap
 
## SFTP 해당 파일 다운로드 wireshark 에서 확인
실제 외부 IP헤더에는 ERSPAN 주고 받는 IP 확인이 되고 내부IP헤더에는 Ubuntu(=192.168.15.100) 외부와 통신을 주고받은 패킷 확인이 된다

 
 
# Suricata 발생로그 확인
tail -f /var/log/fast.log
tail -f /var/log/eve.json
 
아래 처럼 eve.json 에서 ERSPAN 헤더 내부에 IP(192.168.15.100) 탐지를 하는 것을 있다.
, Suricata GRE-ERSPAN 헤더를 strip 하고 실제 사용자의 IP헤더와 데이터를 탐지한다

 
 
[3] 오픈스택 환경에서 특정 Instance 트래픽을 Mirror 하여 탐지
# 구성도
Web(Instance) 경우 vRouter - 물리NIC 통해서 외부 인터넷을 사용한다.
이때 Linux Bridge tc(traffic control) 이용하여 특정한 nic mirror 하여 다른 nic 으로 전달해줄수 있다
오픈스택 내부에 인스턴스나 vRouter tapX으로 연결되므로 원하는 tapX tc mirror하여 suricata nic 전달하여 탐지 가능하다

 
# tc mirror 하는 script 생성
아래에 $1 모니터링해야되는 nic 연결된 tap이며 뒤에 $2 suricata 연결된 tap nic 정보이다
tap 인터페이스 입장에서는 아래 ingress egress 반대이다.
tc_mirror_add.sh
#!/bin/bash
 
source_if=$1
dest_if=$2
 
# enable the destination port
ifconfig $dest_if up;:
 
# mirror ingress traffic
tc qdisc add dev $source_if ingress;:
tc filter add dev $source_if parent ffff: \
protocol all \
u32 match u8 0 0 \
action mirred egress mirror dev $dest_if;:
 
# mirror egress traffic
tc qdisc add dev $source_if handle 1: root prio;:
tc filter add dev $source_if parent 1: \
protocol all \
u32 match u8 0 0 \
action mirred egress mirror dev $dest_if;:
chmod 744 tc_mirror_add.sh
 
# tc mirror 삭제하는 script 생성
생성한 tc mirror 삭제시에는 $1 삭제하면 된다
#!/bin/bash
 
source_if=$1
 
# de-provision ingress mirroring
tc qdisc del dev $source_if ingress;:
 
# de-provisoin egress mirroring
tc qdisc del dev $source_if root;:
chmod 744 tc_mirror_del.sh
 
 
# web suricata nic 연결된 tapX 찾기
Instance 상세정보에서 nic 연결된 tapX 정보를 획득한다
openstack server list
openstack server show web | grep instance
openstack server show suricata | grep instance
cat /etc/libvirt/qemu/instance-0000002c.xml | egrep '(nova:name|tap)'
      <nova:name>web</nova:name>
      <target dev='tap3d4aa6d6-55'/>
cat /etc/libvirt/qemu/instance-0000002e.xml | egrep '(nova:name|tap)'
      <nova:name>suricata</nova:name>
      <target dev='tap308e398c-f3'/>
ifconfig tap3d4aa6d6-55 && ifconfig tap308e398c-f3

 
 
# tc 미러 설정
./tc_mirror_add.sh tap3d4aa6d6-55 tap308e398c-f3
 
## tc 미러 설정 확인
root@openstack ~]# tc filter show dev tap3d4aa6d6-55
filter parent 1: protocol all pref 49152 u32
filter parent 1: protocol all pref 49152 u32 fh 800: ht divisor 1
filter parent 1: protocol all pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid ???
  match 00000000/00000000 at 0
        action order 1: mirred (Egress Mirror to device tap308e398c-f3) pipe
        index 6 ref 1 bind 1
 
 
# Suricata 에서 mirror 되어 트래픽 인입되는지 확인
아래 "ICMP~"처럼 172.16.1.25(Web) 트래픽이 Suricata 에서도 인입되는것을 있다

 
# Suricata 에서 탐지 확인
Suricata fast.log 172.16.1.25(Web)으로 들어오는 icmp 탐지됬음을 있다

 
# tc 미러 설정 삭제
./tc_mirror_del.sh tap3d4aa6d6-55
tc filter show dev tap3d4aa6d6-55
 
 
 
[4] 오픈스택 환경에서 특정 Instance 트래픽을 다른 곳에 있는 Suricata 에서 트래픽을 전달 받아서(GRE 활용) 탐지하기
# 구성도
Web(Instance) 경우 vRouter - 물리NIC 통해서 외부 인터넷을 사용한다.
이때 Linux Bridge tc(traffic control) 이용하여 특정한 nic mirror 하여 GRE 감싸서 다른 대역에 있는 Suricata IP 전달한다
필요한 해당 컴퓨트노드에 GRE NIC 생성을 해야된다.
또한 GRE 전달 egress 트래픽이 gre 전달이 안되서 어쩔수 없이 pair 형태(다른 방향) 다른 인터페이스에서 ingress 추가하여 전달함

 
 
# tc mirror 하는 script 생성
아래에 $1 모니터링해야되는 nic 연결된 tap이며 뒤에 $2 suricata 연결된 gre nic 정보이다
아래 10.1.1.100 Suricata IP 설정해주고, 192.168.254.10 해당 컴퓨트노도의 IP eth0 IP NIC 설정하면됨
 
# tunnel0 (GRE) 인터페이스 생성
modprobe ip_gre
ip tunnel add tunnel0 mode gre remote 10.1.1.100 local 192.168.254.10 ttl 255 dev eth0
ip link set tunnel0 up
 
# vRouter qr/qg 연결된 tapX 확인
[root@openstack ~]# ip netns
qrouter-45ce0a82-e943-4769-81f2-5c5154d7ae05 (id: 0)
 
[root@openstack ~]# ip netns exec qrouter-45ce0a82-e943-4769-81f2-5c5154d7ae05 ifconfig
qg-f5aa2b31-9f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.40  netmask 255.255.255.0  broadcast 192.168.254.255
qr-c7e5bbd5-6b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 172.16.1.254  netmask 255.255.255.0  broadcast 172.16.1.255
 
[root@openstack ~]# ip netns exec qrouter-45ce0a82-e943-4769-81f2-5c5154d7ae05 ethtool -S qg-f5aa2b31-9f
NIC statistics: peer_ifindex: 12
[root@openstack ~]# ip netns exec qrouter-45ce0a82-e943-4769-81f2-5c5154d7ae05 ethtool -S qr-c7e5bbd5-6b
NIC statistics: peer_ifindex: 10
 
[root@openstack ~]# ip a | grep ^11
12: tapf5aa2b31-9f@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brq56ab4266-66 state UP qlen 1000
[root@openstack ~]# ip a | grep ^10
10: tapc7e5bbd5-6b@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master brq77fd4f43-49 state UP qlen 1000
 
ifconfig tapf5aa2b31-9f && ifconfig tapc7e5bbd5-6b
[root@openstack ~]# ifconfig tapf5aa2b31-9f && ifconfig tapc7e5bbd5-6b
tapf5aa2b31-9f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 62:33:b9:99:84:f7  txqueuelen 1000  (Ethernet)
        RX packets 488646  bytes 144448507 (137.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 760051  bytes 188525160 (179.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
tapc7e5bbd5-6b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        ether 06:34:f7:a6:de:ae  txqueuelen 1000  (Ethernet)
        RX packets 4092  bytes 381522 (372.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3952  bytes 281664 (275.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
# tc 미러 설정
tc_mirror_gre_add.sh
#!/bin/bash
 
source_if=$1
dest_if=$2
 
# mirror ingress traffic
tc qdisc add dev $source_if ingress;:
tc filter add dev $source_if parent ffff: \
protocol all \
u32 match u8 0 0 \
action mirred egress mirror dev $dest_if;:
 
./tc_mirror_add.sh tapf5aa2b31-9f tunnel0
./tc_mirror_add.sh tapc7e5bbd5-6b tunnel0
ifconfig tunnel0
ip a
 
 
# GRE 통한 remote 에서 Suricata 탐지 확인
내부 Web(172.16.1.25.)에서 외부(DNS 168.126.63.1 , wget 192.30.255.133) 직접 통신 확인
 
## Suricata 에서 tshark 인입되는 패킷 캡쳐 확인
gre 헤더를 포함한 패킷으로 필터링을 하였고 내부Web(172.16.1.25) 외부랑 통신하는 패킷이 Suricata Remote Mirror 되어서 인입되었다
또한 ingress/egress 패킷이 인입되었고 GRE 헤더로 감싸서 전달 것을 있다

 
## Suricata 에서 eve.json 로그 확인
아래 처럼 Suricata GRE 헤더를 자동 인식하여 strip 내부IP 인식하여 탐지하는 것을 있음

 
 
# tc mirror 삭제하는 script 생성
생성한 tc mirror 삭제시에는 $1 삭제하면 된다
#!/bin/bash
source_if=$1
# de-provision ingress mirroring
tc qdisc del dev $source_if ingress;:
./tc_mirror_gre_del.sh tapf5aa2b31-9f
./tc_mirror_gre_del.sh tapc7e5bbd5-6b
 
 
# 참고링크


Posted by 쏠라구구
# Ntopng 소개
ntop의 업그레이드 버전이며 네트워크 트래픽 및 플로우에 대한 모니터링을 웹기반으로 보여준다

# 기능
웹 기반 트래픽 모니터링 및 분석 (High-speed web-based traffic analysis)
nDPI (Identify hundreds of L7 protocols.) : 오픈소스 DPI 프레임워크 장착으로 L7 Application 인지
nProbe Cento (100Gbit NetFlow Probe and Traffic Classifier) : netflow 기반 l7 분석 기능 제공
트래픽 레코딩 (n2disk) 및 트래픽 재생(disk2n)
패킷 캡쳐 : PF_Ring 사용하여 처리 가능

# 테스트 구성
[1] inline 구성시 트래픽 모니터링
[2] 웹트래픽에 대한 Proxy 서버 기능으로 트래픽 모니터링
[3] Network Switch 의 Mirror(SPAN)과 Cisco ERSPAN Mirror 트래픽 수집/분석


[1] inline 구성시 트래픽 모니터링
# 구성도
내부에 인터넷 사용을 위한 우분투PC가 1대 있고 인터넷을 경유하는 곳에 CentOS7을 배치하였다



# 사전준비
## ip_forwarding 활성화
echo 1 > /proc/sys/net/ipv4/ip_forward

# SNAT(Masquerading)
iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE

# ntop 설치
yum install -y epel-release
yum update -y

## ntop 레포 url 지정
cat << "EOF" >> /etc/yum.repos.d/ntop.repo
[ntop]
name=ntop packages
enabled=1
gpgcheck=1
[ntop-noarch]
name=ntop packages
enabled=1
gpgcheck=1
EOF

## ntop 설치
yum update -y
yum --enablerepo=epel install -y redis ntopng
yum --enablerepo=epel install -y hiredis-devel

### community version 설정 추가
echo '--community' >> /etc/ntopng/ntopng.conf

systemctl start redis.service
systemctl enable redis.service
systemctl start ntopng.service
systemctl enable ntopng.service
systemctl status ntopng.service

## ntop web GUI 접속
http://IP:3000 기본계정(admin/admin) -> 암호변경필요



# 트래픽 모니터링 확인
왼쪽(우툰투 PC)에서 인터넷을 하면 ntopng에 트래픽에 대한 정보가 출력된다




[2] 웹트래픽에 대한 Proxy 서버 기능으로 트래픽 모니터링
# 구성도



# CentOS7에 Proxy (Squid) 설치 및 설정
yum -y install squid

## Windows7 PC(IP)에 대한 proxy 허용 설정
echo 'acl full_access src 192.168.254.198' >> /etc/squid/squid.conf
echo 'http_access allow full_access' >> /etc/squid/squid.conf

systemctl start squid
systemctl enable squid

## Window7 에 Proxy 설정 : squid 경우 기본 3128 포트를 사용한다



##  모니터링 확인
맨 왼쪽이 Window7 이고 가운데 'openstack' 이 ntopng/squid 이다. squid를 경유하여 외부로 인터넷을 하는 것을 알 수 있다




[3] Network Switch 의 Mirror(SPAN)과 Cisco ERSPAN Mirror 트래픽 수집/분석
# 구성도
오른쪽 상단에 Network Switch 에서 Mirror(SPAN)하여 ntopng 에서 분석 가능함. 실습은 Skip하고 다른 포스팅에서 하겠음
왼쪽에 Cisco CSR1kv에서 ERSPAN 으로 IP기반으로 CentOS7에 트래픽을 전달하고 ntopng가 분석이 가능함


# Cisco CSR1kv 설정
## 인터페이스 및 라우팅 및 NAT 설정
interface GigabitEthernet2
ip address 192.168.254.70 255.255.255.0
ip nat outside
no shut
!         
interface GigabitEthernet3
ip address 192.168.15.60 255.255.255.0
ip nat inside
no shut
!
ip route 0.0.0.0 0.0.0.0 192.168.254.254
!
access-list 1 permit 192.168.15.0 0.0.0.255
!
ip nat inside source list 1 interface GigabitEthernet2 overload

## ERSPAN 설정
monitor session 1 type erspan-source
source interface Gi3
destination
  erspan-id 1
  ip address 192.168.254.60
  origin ip address 192.168.254.70
  exit
no shut


# Ntopng 설정
## ERSPAN 헤더를 제거(strip) 하기
RCDCAP 설치 : 아래 링크 참고
내용 작성중~~

## ntopng 실행
모니터링 인터페이스를 아래 처럼 1개 더 추가하고 실행하자
echo '-i ens32' >> /etc/ntopng/ntopng.conf
echo '-i tunnel0' >> /etc/ntopng/ntopng.conf



# 참고링크


Posted by 쏠라구구


티스토리 툴바