# GNS3에서 제공하는 다양한 Appliance 를 사용해보자
 
0. GNS3 Appliance 사용하기
사용하고자 하는 appliance 를 선택 후 *.gns3a 다운로드 이후 GNS3에서 File - Import appliances 로 등록하자
 
 
1. AAA Server
AAA(인증, 권한부여, 감사/로그)를 구현하는 인증 프로토콜에 RADIUS 와 TACACS+ 서버 기능을 제공함
보통 네트워크장비/네트워트보안 장비와 VPN클라이언트에 접속 시 사용자에 대한 접근을 관리함
사용 SW : TACACS 서버(tac_plus), RADIUS 서버(free radius)

 
 
2. TACACS+
AAA 기능을 제공하는 인증 프로토콜이며 최초 1984년 BBN Technologies 에 의해 개발되었고,
이후 Cisco에서 기능을 보완/확장하여 TACACS+ 자체 형식으로 구현함.
RADIUS 에 비해 tcp 기반인 TACACS+가 많이 사용됨에 따라 시스코에서 TACACS+ 개발킷을 공개하였고,
shrubbery networks 에서 해당 소스를  기반으로 tac_plus 서버를 개발함
 
 
2.1 구성도
AAA_Srv(Container) 1대와 2대의 Cisco Router 로 구성

 
 
2.2 AAA_Srv (TACACS+)
tacacs+ 프로세스 확인
ps -ef | grep tacacs

 
tac_plus 버전 확인
root@AAA_Srv:~# tac_plus -v
tac_plus version F4.0.4.27a
 
tacacs+ 설정 파일 확인
grep ^[^#] /etc/tacacs+/tac_plus.conf
-------------------------------------------
# tacacs+ 서버와 통신 시 사용하는 암호키
key = gns3
 
# gns3 라는 유저 설정 내용 : admin(멤버=그룹)소속, 암호는 gns3(des 결과)
user = gns3 {
    name = "Admin User"
    member = admin
    login = des AxKP5aUynXxrg
                service = junos-exec {
                        local-user-name = remote-admin
        }
}
 
# admin 그룹 설정 내용 : 기본 서비스 허용, exec 권한 레벨 15
group = admin {
        default service = permit
        service = exec {
                priv_lvl = 15
                }
        }
 
# readonly 유저 : 암호(gns3), cmd 권한(특정 지정된 cmd만 사용하게 설정)
-------------------------------------------
 
 
2.3 Cisco1 장비에 AAA(TACACS+) 설정 - 인증 Authentication
local 계정(sola/soal99) , enable 암호(sola99), telnet 접속 허용
tacacs+ 서버 설정 : IP(192.168.254.180), 서버와 통신 시 암호키(gns3)
AAA 설정 : 인증 시 tacacs+ 사용하며, tacacs+ 통신 fail 시 local 계정으로 인증
 
username sola password sola99
username sola privilege 15
enable password sola99
line vty 0 4
 transport input all
 
tacacs-server host 192.168.254.180
tacacs-server key gns3
 
aaa new-model
aaa authentication login default group tacacs+ local
 
 
2.4 외부에서 Cisco1 접속 확인
외부에서 telnet 으로 Cisco1(192.168.254.181) 접속 확인 : 접속계정(gns3/gns3)

 
Cisco1 Console 확인 : tacacs 디버그로 확인
debug tacacs authentication
 
tacacs 패킷 캡쳐 확인 : 메시지 내용은 암호화되어 볼 수 없음 (=맨 아래 Encrypted Request 부분)

 
2.5 Authorization 권한 설정 확인
Cisco1 장비에 AAA(TACACS+) 설정
aaa authorization exec default group tacacs+
aaa authorization commands 15 default group tacacs+
 
AAA_Srv Container tac_plus config 설정 오타 수정 필요
gns3 권한 실패 원인(debug tacacs authorizion) : 아래처럼 AV priv_lvl=15 가 아니라 priv-lvl=15 (admin group 부분) 수정 필요(nano)
수정 후 reload 및 stop/start 는 제대로 적용이 되지 않아서, gns3 를 close 후 다시 실행해서 확인
*Mar  1 00:35:51.191: TPLUS: Failed to decode AV priv_lvl=15

 
Cisco1 Console 확인 : 디버그로 확인
debug tacacs authorization
 
계정별 권한 확인 : gns3(admin 그룹), readonly(read-only 그릅, 특정 cmd만 실행됨)
각각 gns3, readonly 로그인 후 conf t 실행 시 readonly 계정은 실행 차단됨

 
 
2.6 Accounting 감사/로그 설정 확인
Cisco1 장비에 AAA(TACACS+) 설정
aaa accounting exec default start-stop group tacacs+
aaa accounting commands 15 default stop-only group tacacs+
 
외부에서 접속하여 cmd 등 실행
 
AAA_Srv 에서 log 확인 : tail -F /var/log/tac_plus.acct

 
 
2.7 AAA 전체 설정(참고용)
aaa new-model
aaa authentication login default group tacacs+ local
aaa authorization exec default group tacacs+
aaa authorization commands 15 default group tacacs+
aaa accounting exec default start-stop group tacacs+
aaa accounting commands 15 default stop-only group tacacs+
 
 
 
3. RADIUS
RADIUS(RemoteAuthenticationDial-InUserService)는 네트워크 서비스를 연결하고 사용하는 사용자에게
중앙 집중식 인증/인가/감사(AAA) 기능을 제공하는 프로토콜이다.
RADIUS는 1991년 LivingstonEnterprises에 의해 액세스 서버 인증 프로토콜로 개발되었고 이후에 IETF 표준으로 도입되었음.
 
 
3.1 구성도
TACACS+와 구성환경과 동일
 
 
3.2 AAA_Srv (RADIUS)
RADIUS 프로세스 확인
ps -ef | grep freeradius

 
freeradius 버전 확인
root@AAA_Srv:~# freeradius -v
radiusd: FreeRADIUS Version 3.0.16
 
freeradius 설정 파일 확인 : alice 와 bob 계정 확인
more /etc/freeradius/3.0/users
-------------------------------------------
root@AAA_Srv:/etc/freeradius/3.0# more users
alice    Cleartext-Password := "gns3"
         Reply-Message = "Hello, %{User-Name}"
 
bob      Cleartext-Password := "gns3"
         Reply-Message = "Hello, %{User-Name}"
 
 
3.3 Cisco2 장비에 AAA(RADIUS) 설정 - 인증 Authentication
local 계정(sola/soal99) , enable 암호(sola99), telnet 접속 허용
RADIUS 서버 설정 : IP(192.168.254.180), 서버와 통신 시 암호키(gns3)
AAA 설정 : 인증 시 RADIUS 사용하며, RADIUS 통신 fail 시 local 계정으로 인증
 
username sola password sola99
username sola privilege 15
enable password sola99
line vty 0 4
 transport input all
 
radius-server host 192.168.254.180 auth-port 1812 acct-port 1813 key gns3
 
aaa new-model
aaa authentication login default group radius local
 
 
3.4 외부에서 Cisco1 접속 확인
외부에서 telnet 으로 Cisco2(192.168.254.182) 접속 확인 : 접속계정(alice or bob / 암호 gns3)

 
Cisco2 Console 확인 : radius 디버그로 확인
debug radius authentication
 
radius 패킷 캡쳐 확인 : 계정암호 부분만 암호화되어서 전달됨

 
 
3.5 AAA 서버 - service freeradius start 실행 fail
관련 파일들의 권한 수정
chmod 644 /etc/freeradius/3.0/certs/dh
cd /etc/freeradius/3.0/mods-config/attr_filter/
chmod 644 *
cd /etc/freeradius/3.0/mods-config/files/
chmod 644 *
cd /etc/freeradius/3.0/mods-config/preprocess/
chmod 644 *
 
 
# 참고링크


Posted by 쏠라구구
# vyOS 기능을 알아보자
OSPF, Site-to-Site IPSec VPN, DMVPN(3가지 오픈기술 조합)
특히 DMVPN 의 경우 vyos 나 linux 로 구현을 하면 다수 지점의 vpn 접속 솔루션이 될 것으로 기대된다
 
 
1. OSPF
vyOS에 OSPF 라우팅 프로토콜을 설정해보자
 
1.1 구성도
vyOS 2대와 Cisco Router를 사용함

 
1.2 vyOS 설치
 
 
1.3 기본 설정
vyOS1)
configure
set interfaces ethernet eth0 address '192.168.254.61/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.10.1/24'
set interfaces ethernet eth1 description 'INSIDE'
commit
run show interfaces
 
vyOS2)
configure
set interfaces ethernet eth0 address '192.168.254.62/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.20.1/24'
set interfaces ethernet eth1 description 'INSIDE'
commit
run show interfaces
 
L3_SW)
en
conf t
 int f0/0
  ip add 192.168.254.63 255.255.255.0
  no shut
 int f1/0
  ip add 172.16.30.1 255.255.255.0
  no shut
 
 
1.4 OSPF 설정
vyOS1)
set protocols ospf area 0 network 192.168.254.0/24
set protocols ospf area 0 network 172.16.10.0/24
set protocols ospf log-adjacency-changes
set protocols ospf parameters router-id 172.16.10.1
commit
run show ip ospf neighbor
run show ip route
 
vyOS2)
set protocols ospf area 0 network 192.168.254.0/24
set protocols ospf area 0 network 172.16.20.0/24
set protocols ospf log-adjacency-changes
set protocols ospf parameters router-id 172.16.20.1
commit
run show ip ospf neighbor
run show ip route
 
L3_SW)
 ip routing
 router ospf 1
  router-id 172.16.30.1
  network 192.168.254.0 0.0.0.255 area 0
  network 172.16.30.0 0.0.0.255 area 0
  log-adjacency-changes
 
 
1.5 OSPF 확인 라우팅 확인
vyOS1)
2개의 OSPF 네이버가 정상 맺어 있음을 확인
라우팅 테이블 확인 시 각각 vyOS2 와 L3_SW의 내부 네트워크 정보가 보이는 것을 확인

 
L3_SW)
Cisco 장비에서도 정상적으로 OSPF 네이버 및 라우팅 테이블 확인

 
PC1)
vyOS1 내부에 PC1(172.16.10.100)에서 각각 PC2, PC3으로 통신 확인

 
참고링크
 
 
2. Site-to-Site IPSec VPN
 
2.1 구성도
2대의 vyOS와 내부 통신 확인을 위한 PC2대로 구성

 
 
2.2 vyOS Site-to-Site IPSec 설정
vyOS1)
IKE 정책설정 : 키교환프로토콜버전(ikev1), 라이프타임(3600초), 암호화 및 해시 수준
set vpn ipsec ike-group home-ike-group key-exchange 'ikev1'
set vpn ipsec ike-group home-ike-group lifetime '3600'
set vpn ipsec ike-group home-ike-group proposal 1 encryption 'aes256'
set vpn ipsec ike-group home-ike-group proposal 1 hash 'sha256'
set vpn ipsec ike-group home-ike-group ikev2-reauth 'no'
 
ESP 정책설정 : 모드(터널), 암호화 및 해시 수준, 압축(미사용), 라이프타임(1800초), PFS(미사용)
set vpn ipsec esp-group home-esp-group mode 'tunnel'
set vpn ipsec esp-group home-esp-group proposal 1 encryption 'aes256'
set vpn ipsec esp-group home-esp-group proposal 1 hash 'sha256'
set vpn ipsec esp-group office-srv-esp compression 'disable'
set vpn ipsec esp-group office-srv-esp lifetime '3600'
set vpn ipsec esp-group office-srv-esp pfs 'enable'
 
IPSec 연결에 사용할 인터페이스 지정 : 일반적으로 WAN연결된 인터페이스(eth0)
set vpn ipsec ipsec-interfaces interface 'eth0'
 
상대측 VPN Peer의 정책 설정 : 상대방 IP(192.168.254.62), 인증모드(공유암호), 공유암호(qwe123)
set vpn ipsec site-to-site peer 192.168.254.62 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 192.168.254.62 authentication pre-shared-secret 'qwe123'
 
상대측 VPN Peer의 정책 설정 : 위에서 생성한 IKE 정책을 적용
set vpn ipsec site-to-site peer 192.168.254.62 ike-group 'home-ike-group'
 
상대측 VPN Peer의 정책 설정 : 자신의 WAN 인터페이스 IP 설정
set vpn ipsec site-to-site peer 192.168.254.62 local-address '192.168.254.61'
 
상대측 VPN Peer의 정책 설정 : NAT 대역과 인터넷 대역은 VPN 사용을 차단
set vpn ipsec site-to-site peer 192.168.254.62 tunnel 0 allow-nat-networks 'disable'
set vpn ipsec site-to-site peer 192.168.254.62 tunnel 0 allow-public-networks 'disable'
 
상대측 VPN Peer의 정책 설정 : 위에서 생성한 ESP 정책을 적용
set vpn ipsec site-to-site peer 192.168.254.62 tunnel 0 esp-group 'home-esp-group'
 
상대측 VPN Peer의 정책 설정 : VPN을 통하여 암호화 처리할 트래픽을 지정(출발대역 and 목적지대역)
set vpn ipsec site-to-site peer 192.168.254.62 tunnel 0 local prefix '172.16.10.0/24'
set vpn ipsec site-to-site peer 192.168.254.62 tunnel 0 remote prefix '172.16.20.0/24'
 
vyOS2)
정책은 동일하게 설정, IP/네트워크대역은 자신과 상대측 확인하여 설정
set vpn ipsec ike-group home-ike-group key-exchange 'ikev1'
set vpn ipsec ike-group home-ike-group lifetime '3600'
set vpn ipsec ike-group home-ike-group proposal 1 encryption 'aes256'
set vpn ipsec ike-group home-ike-group proposal 1 hash 'sha256'
set vpn ipsec ike-group home-ike-group ikev2-reauth 'no'
 
set vpn ipsec esp-group home-esp-group mode 'tunnel'
set vpn ipsec esp-group home-esp-group proposal 1 encryption 'aes256'
set vpn ipsec esp-group home-esp-group proposal 1 hash 'sha256'
set vpn ipsec esp-group office-srv-esp compression 'disable'
set vpn ipsec esp-group office-srv-esp lifetime '3600'
set vpn ipsec esp-group office-srv-esp pfs 'enable'
 
set vpn ipsec ipsec-interfaces interface 'eth0'
 
set vpn ipsec site-to-site peer 192.168.254.61 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 192.168.254.61 authentication pre-shared-secret 'qwe123'
set vpn ipsec site-to-site peer 192.168.254.61 ike-group 'home-ike-group'
set vpn ipsec site-to-site peer 192.168.254.61 local-address '192.168.254.62'
set vpn ipsec site-to-site peer 192.168.254.61 tunnel 0 allow-nat-networks 'disable'
set vpn ipsec site-to-site peer 192.168.254.61 tunnel 0 allow-public-networks 'disable'
set vpn ipsec site-to-site peer 192.168.254.61 tunnel 0 esp-group 'home-esp-group'
set vpn ipsec site-to-site peer 192.168.254.61 tunnel 0 local prefix '172.16.20.0/24'
set vpn ipsec site-to-site peer 192.168.254.61 tunnel 0 remote prefix '172.16.10.0/24'
 
 
2.3 vyOS Site-to-Site IPSec 상태 확인
PC1) 에서 PC2로 ping 성공 : VPN 정상 연결 되었음을 확인

 
패킷캡쳐확인)
VPN 협상 프로토콜에 이어서 실제 데이터는 ESP헤더로 암호화되어 감싸있어서 내부헤더 및 데이터 정보가 보이지 않음

 
vyOS확인)
sh vpn ike sa
sh vpn ipsec sa
sh vpn ipsec sa detail
sh vpn ipsec sa statistics
sh vpn ipsec policy
sh vpn ipsec state
 
vyOS1)
sh ip route : VPN의 remote prefix 대역이 자동으로 라우팅 테이블에 추가 되어 있음
sh vpn ike sa , sh vpn ipsec sa : IKE와 IPSec 정책이 잘 협상되었음
sh vpn ipsec sa detail : 상세정보 및 VPN 터널을 통한 암호화 패킷의 tx/rx bytes 를 확인

 
# 참고링크
https://wiki.vyos.net/wiki/User_Guide 중 하단에 Site-to-Site VPN 부분 참고
 
 
 
3. DMVPN
Site-to-site IPSec 경우 VPN Peer가 추가 될 때마다 각각 peer 설정을 해줘야되어 확장 시 설정에 어려움이 있다
Cisco에서 DMVPN 기술을 개발하였고 peer 정보를 동적으로 학습하여 peer 연결이 된다.
아래 3가지의 표준 기술을 조합하여 DMVPN의 기능을 구현 할 수 있다
- NHRP : RFC2332, next hop 정보를 동적으로 알려줌
- mGRE : RFC1702. 멀티 gre 연결 가능
- IPSec : RFC4301등 다수, IPSec VPN
 
3.1 구성도
3대의 vyOS와 3대의 PC로 구성

 
 
3.2 기본설정
vyos1)
configure
set interfaces ethernet eth0 address '192.168.254.71/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.10.1/24'
set interfaces ethernet eth1 description 'INSIDE'
set system host-name vyOS1
set service ssh port '22'
commit
run show interfaces
 
vyos2)
configure
set interfaces ethernet eth0 address '192.168.254.72/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.20.1/24'
set interfaces ethernet eth1 description 'INSIDE'
set system host-name vyOS2
set service ssh port '22'
commit
run show interfaces
 
vyos3)
configure
set interfaces ethernet eth0 address '192.168.254.73/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.30.1/24'
set interfaces ethernet eth1 description 'INSIDE'
set system host-name vyOS3
set service ssh port '22'
commit
run show interfaces
 
 
3.3 터널 인터페이스(mGRE) NHRP 설정
vyos1)
터널 인터페이스 IP 설정, 터널의 key(=333)은 mGRE 모든 tun0 에 동일하게 설정
set interfaces tunnel tun0 address 10.0.0.1/24
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 local-ip 192.168.254.71
set interfaces tunnel tun0 multicast enable
set interfaces tunnel tun0 parameters ip key 333
 
NHRP 설정, 인증암호키(동일하게 설정), vyOS1는 HUB 역활 설정
set protocols nhrp tunnel tun0 cisco-authentication qwe123
set protocols nhrp tunnel tun0 holding-time  300
set protocols nhrp tunnel tun0 multicast dynamic
set protocols nhrp tunnel tun0 redirect
commit
 
vyos2)
set interfaces tunnel tun0 address 10.0.0.2/24
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 local-ip 192.168.254.72
set interfaces tunnel tun0 multicast enable
set interfaces tunnel tun0 parameters ip key 333
 
vyOS2는 Spoke 역활 설정으로 map/register 는 vyOS1의 WAN_IP/Tun0_IP 를 설정
set protocols nhrp tunnel tun0 cisco-authentication qwe123
set protocols nhrp tunnel tun0 map 10.0.0.1/24 nbma-address 192.168.254.71
set protocols nhrp tunnel tun0 map 10.0.0.1/24 'register'
set protocols nhrp tunnel tun0 multicast 'nhs'
set protocols nhrp tunnel tun0 'redirect'
set protocols nhrp tunnel tun0 'shortcut'
commit
 
vyos3)
set interfaces tunnel tun0 address 10.0.0.3/24
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 local-ip 192.168.254.73
set interfaces tunnel tun0 multicast enable
set interfaces tunnel tun0 parameters ip key 333
 
set protocols nhrp tunnel tun0 cisco-authentication qwe123
set protocols nhrp tunnel tun0 map 10.0.0.1/24 nbma-address 192.168.254.71
set protocols nhrp tunnel tun0 map 10.0.0.1/24 'register'
set protocols nhrp tunnel tun0 multicast 'nhs'
set protocols nhrp tunnel tun0 'redirect'
set protocols nhrp tunnel tun0 'shortcut'
commit
 
Tunnel 확인)
vyOS1 에서 tun0 인터페이스간 ping 성공 확인

 
NHRP 확인)
show nhrp tunnel
show nhrp interface
vyOS1(Hub)에서 아래 처럼 vyOS2/vyOS3의 tun0 IP와 WAN IP 정보를 확인

 
vyOS2(Spoke1)에서는 vyOS1(Hub)는 등록 설정으로 알고 있지만 vyOS3(Spoke2)는 현재는 모름

 
 
3.4 Site-to-Site IPSec 설정
Site-to-Site IPSEc은 위 2번 설정 참고
 
vyos1)
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec ike-group IKE-HUB proposal 1
set vpn ipsec ike-group IKE-HUB proposal 1 encryption aes256
set vpn ipsec ike-group IKE-HUB proposal 1 hash sha1
set vpn ipsec ike-group IKE-HUB proposal 2 encryption aes128
set vpn ipsec ike-group IKE-HUB proposal 2 hash sha1
set vpn ipsec ike-group IKE-HUB lifetime 3600
set vpn ipsec esp-group ESP-HUB proposal 1 encryption aes256
set vpn ipsec esp-group ESP-HUB proposal 1 hash sha1
set vpn ipsec esp-group ESP-HUB proposal 2 encryption 3des
set vpn ipsec esp-group ESP-HUB proposal 2 hash md5
set vpn ipsec esp-group ESP-HUB lifetime 1800
set vpn ipsec esp-group ESP-HUB pfs dh-group2
 
set vpn ipsec profile NHRPVPN
set vpn ipsec profile NHRPVPN authentication mode pre-shared-secret
set vpn ipsec profile NHRPVPN authentication pre-shared-secret qwe12345
set vpn ipsec profile NHRPVPN bind tunnel tun0
set vpn ipsec profile NHRPVPN esp-group ESP-HUB
set vpn ipsec profile NHRPVPN ike-group IKE-HUB
commit
 
vyos2)
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec ike-group IKE-SPOKE proposal 1
set vpn ipsec ike-group IKE-SPOKE proposal 1 encryption aes256
set vpn ipsec ike-group IKE-SPOKE proposal 1 hash sha1
set vpn ipsec ike-group IKE-SPOKE proposal 2 encryption aes128
set vpn ipsec ike-group IKE-SPOKE proposal 2 hash sha1
set vpn ipsec ike-group IKE-SPOKE lifetime 3600
set vpn ipsec esp-group ESP-SPOKE proposal 1 encryption aes256
set vpn ipsec esp-group ESP-SPOKE proposal 1 hash sha1
set vpn ipsec esp-group ESP-SPOKE proposal 2 encryption 3des
set vpn ipsec esp-group ESP-SPOKE proposal 2 hash md5
set vpn ipsec esp-group ESP-SPOKE lifetime 1800
set vpn ipsec esp-group ESP-SPOKE pfs dh-group2
 
set vpn ipsec profile NHRPVPN
set vpn ipsec profile NHRPVPN authentication mode pre-shared-secret
set vpn ipsec profile NHRPVPN authentication pre-shared-secret qwe12345
set vpn ipsec profile NHRPVPN bind tunnel tun0
set vpn ipsec profile NHRPVPN esp-group ESP-SPOKE
set vpn ipsec profile NHRPVPN ike-group IKE-SPOKE
commit
 
vyos3)
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec ike-group IKE-SPOKE proposal 1
set vpn ipsec ike-group IKE-SPOKE proposal 1 encryption aes256
set vpn ipsec ike-group IKE-SPOKE proposal 1 hash sha1
set vpn ipsec ike-group IKE-SPOKE proposal 2 encryption aes128
set vpn ipsec ike-group IKE-SPOKE proposal 2 hash sha1
set vpn ipsec ike-group IKE-SPOKE lifetime 3600
set vpn ipsec esp-group ESP-SPOKE proposal 1 encryption aes256
set vpn ipsec esp-group ESP-SPOKE proposal 1 hash sha1
set vpn ipsec esp-group ESP-SPOKE proposal 2 encryption 3des
set vpn ipsec esp-group ESP-SPOKE proposal 2 hash md5
set vpn ipsec esp-group ESP-SPOKE lifetime 1800
set vpn ipsec esp-group ESP-SPOKE pfs dh-group2
 
set vpn ipsec profile NHRPVPN
set vpn ipsec profile NHRPVPN authentication mode pre-shared-secret
set vpn ipsec profile NHRPVPN authentication pre-shared-secret qwe12345
set vpn ipsec profile NHRPVPN bind tunnel tun0
set vpn ipsec profile NHRPVPN esp-group ESP-SPOKE
set vpn ipsec profile NHRPVPN ike-group IKE-SPOKE
commit
 
 
VPN 상태 확인)
vyOS1(Hub)에서는 vyOS2/3(Spoke1/2)가 둘 다 보이는 것을 알 수 있음
하단에 0.0.0.0 정보는 pre-config 되어 있고 any ip가 연결되기를 위하여 listen 하는 것으로 보면됨

 
vyOS2(Spoke1)에서도 vyOS1(Hub)와 연결정보 확인됨
Spoke들 간에는 실제 vpn 데이터가 발생할때 nhrp로 ip 정보를 습득하고 vpn 협상 후 연결 정보가 확인 됨

3.5 (1) Static Routing 설정
현재 VPN 내부간 라우팅 정보가 없기 때문에 tun0 인터페이스를 통해서 static routing 설정 후 PC들간 통신하자
 
vyos1)
set protocols static route 172.16.20.0/24 next-hop 10.0.0.2
set protocols static route 172.16.30.0/24 next-hop 10.0.0.3
commit
 
vyos2)
set protocols static route 172.16.10.0/24 next-hop 10.0.0.1
set protocols static route 172.16.30.0/24 next-hop 10.0.0.3
commit
 
vyos3)
set protocols static route 172.16.10.0/24 next-hop 10.0.0.1
set protocols static route 172.16.20.0/24 next-hop 10.0.0.2
commit
 
PC2) 에서 PC3 ping 통신 성공
show ip route : Static routing 추가 확인
show nhrp tunnel : vyOS3의 tun0 과 wan IP 정보 자동 학습 확인
show vpn ipsec sa : vyOS3과 IPSec 협상 확인

 
 
3.5 (2) OSPF Routing 설정
현재 VPN 내부간 라우팅 정보가 없기 때문에 tun0 인터페이스를 통해서 ospf routing 설정 후 PC들간 통신하자
 
vyOS1)
delete protocols static route 172.16.20.0/24
delete protocols static route 172.16.30.0/24
 
set protocols ospf area 0 network 10.0.0.0/24
set protocols ospf area 0 network 172.16.10.0/24
set protocols ospf log-adjacency-changes
set protocols ospf parameters router-id 172.16.10.1
commit
 
vyOS2)
delete protocols static route 172.16.10.0/24
delete protocols static route 172.16.30.0/24
 
set protocols ospf area 0 network 10.0.0.0/24
set protocols ospf area 0 network 172.16.20.0/24
set protocols ospf log-adjacency-changes
set protocols ospf parameters router-id 172.16.20.1
commit
 
vyOS3)
delete protocols static route 172.16.10.0/24
delete protocols static route 172.16.20.0/24
 
set protocols ospf area 0 network 10.0.0.0/24
set protocols ospf area 0 network 172.16.30.0/24
set protocols ospf log-adjacency-changes
set protocols ospf parameters router-id 172.16.30.1
commit
 
확인)
sh ip ospf neighbor
sh ip route
 
vyOS1)
VPN Hub이며, OSPF 네이버가 Spoke 2대 잡혀있고, 각각 172.16.20.0/24, 172.16.30.0/24 정보를 OSPF로 학습함

 
vyOS2)
VPN Spoke 이며, OSPF 네이버가 Hub만 보임
10.0/24, 30.0/24 정보를 Hub(vyOS1)으로 부터 학습함.
하지만 30.0/24 정보의 next-hop 은 tun0 의 10.0.0.3 이므로,
실제 데이터(VPN 암호화) 통신시에는 hub를 경유하지 않고 Spoke3(vyOS3)으로 직접 통신함

 
vyOS3)
vyOS2와 설명은 상동

 
# 참고링크


Posted by 쏠라구구
# GNS3에서 제공하는 다양한 Appliance 를 사용해보자
0. GNS3 Appliance 사용하기
사용하고자 하는 appliance 를 선택 후 *.gns3a 다운로드 이후 GNS3에서 File - Import appliances 로 등록하자
 
 
1. vyOS v
리눅스(Debian) 기반에 라우팅, 방화벽, VPN 기능을 제공함, CLI는 주니퍼와 유사하며, Quagga 라우팅 엔진을 사용함

 
 
1.1 구성도
일반적인 방화벽 구성이며 웹서버 1대와 웹단말 1대를 구성함

 
 
1.2 vyos 설치
vyos)
기본 계정은 vyos/vyos 임
최초 로그인 시 vyos 설치 필요(install image)
기본 암호 변경 : qwe123
설치 완료 후 reboot - Yes

 
재부팅 이후 vyos 로그인하여 운영모드 접근 및 시스템정보 확인(show version)

 
 
1.3 기본설정
설정모드 진입
configure

 
인터페이스 IP 설정
set interfaces ethernet eth0 address '192.168.254.50/24'
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '172.16.0.1/24'
set interfaces ethernet eth1 description 'INSIDE'
set interfaces ethernet eth2 address '172.17.0.1/24'
set interfaces ethernet eth2 description 'DMZ
commit
 
인터페이스 IP 확인
run show interfaces
run show interfaces ethernet eth0
run show interfaces ethernet eth0

 
 
외부 디폴트 라우팅 설정
set protocols static route 0.0.0.0/0 next-hop 192.168.254.254
commit
run show ip route

 
 
vyos 접근을 위한 SSH 활성화
set service ssh port '22'
commit
 
 
INSIDE 사용자를 위한 DHCP 서버 설정
set service dhcp-server disabled 'false'
set service dhcp-server shared-network-name LAN subnet 172.16.0.0/24 default-router '172.16.0.1'
set service dhcp-server shared-network-name LAN subnet 172.16.0.0/24 dns-server '172.16.0.1'
set service dhcp-server shared-network-name LAN subnet 172.16.0.0/24 domain-name 'internal-network'
set service dhcp-server shared-network-name LAN subnet 172.16.0.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 172.16.0.0/24 start 172.16.0.11 stop '172.16.0.100'
commit
 
run show dhcp server leases

 
webterm 단말에서 dhcp 로 자동할당받은 IP 확인

 
 
vyos에 DNS forwarder 설정
set service dns forwarding cache-size '0'
set service dns forwarding listen-on 'eth1'
set service dns forwarding listen-on 'eth2'
set service dns forwarding name-server '168.126.63.1'
set service dns forwarding name-server '8.8.8.8'
commit
 
run show dns forwarding nameservers
run show dns forwarding statistics

 
webterm 단말의 dns 서버IP 주소 확인

 
 
1.4 NAT
INSIDE 사용자들의 외부 접속을 위한 NAT masquerading 설정(SNAT)
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '172.16.0.0/24'
set nat source rule 100 translation address masquerade
commit
 
run show nat source rules  
run show nat source translations detail : IP 변환 정보 확인

 
webterm 단말에서 외부 인터넷 접속 확인

 
 
DMZ에 172.17.0.100 웹서버(tcp80,443)에 접속을 위한 DNAT 설정
set nat destination rule 10 description 'Port Forward: HTTP to 172.17.0.100'
set nat destination rule 10 destination port '80,443'
set nat destination rule 10 inbound-interface 'eth0'
set nat destination rule 10 protocol 'tcp'
set nat destination rule 10 translation address '172.17.0.100'
commit
 
run show nat destination rules
run show nat destination translations detail

 
외부에서 vyos 의 eth0 IP에 tcp 80, 443 으로 접속하여 DMZ웹서버 접속 확인
내부에 wordpress 는 gns3의 wordpress appliance 를 사용함

 
 
1.5 Firewall 방화벽
vyos는 Linux Netfilter 를 패킷필터 기능으로 사용함 : 인터페이스에 정책 설정, zone 기반 정책 설정
방화벽 정책의 입력 방향 : in(패킷인 인입되어 지나갈때), out(패킷이 빠져나갈때), local(vyos 자신을 목적지로 향할때)
 
eth0에 인입 시 방화벽 정책 설정
기본정책은 차단, 내부에서 외부 접속 시 연결 및 관련 접속은 허용
set firewall name OUTSIDE-IN default-action 'drop'
set firewall name OUTSIDE-IN rule 10 action 'accept'
set firewall name OUTSIDE-IN rule 10 state established 'enable'
set firewall name OUTSIDE-IN rule 10 state related 'enable'
 
위(1.4) DMZ WebServer로 접속하기 위한 DNAT 트래픽 허용, 아래 IP는 web server의 ip를 직접 지정
set firewall name OUTSIDE-IN rule 20 action 'accept'
set firewall name OUTSIDE-IN rule 20 destination address '172.17.0.100'
set firewall name OUTSIDE-IN rule 20 destination port '80,443'
set firewall name OUTSIDE-IN rule 20 protocol 'tcp'
set firewall name OUTSIDE-IN rule 20 state new 'enable'
 
위에서 설정한 방화벽 정책을 eth0 인입에 적용하기
set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
commit
 
확인
run show firewall summary
run show firewall
run show firewall statistics
 
 
eth0(vyos)을 목적지로 하는 방화벽 정책 설정
기본정책은 차단, 관련 접속 허용, icmp/ssh 허용
set firewall name OUTSIDE-LOCAL default-action 'drop'
set firewall name OUTSIDE-LOCAL rule 10 action 'accept'
set firewall name OUTSIDE-LOCAL rule 10 state established 'enable'
set firewall name OUTSIDE-LOCAL rule 10 state related 'enable'
set firewall name OUTSIDE-LOCAL rule 20 action 'accept'
set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request'
set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp'
set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 30 action 'drop'
set firewall name OUTSIDE-LOCAL rule 30 destination port '22'
set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 30 recent count '4'
set firewall name OUTSIDE-LOCAL rule 30 recent time '60'
set firewall name OUTSIDE-LOCAL rule 30 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 31 action 'accept'
set firewall name OUTSIDE-LOCAL rule 31 destination port '22'
set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'
 
위에서 설정한 방화벽 정책을 eth0 으로 향할때 적용하기
set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'
commit
 
확인
run show firewall summary
run show firewall
run show firewall statistics

 

 
 
1.6 VPN
vyos는 openvpn 기능과 IPSec Site-to-Site 기능과 L2TP over IPSec 기능을 제공함.
여기에서는 L2TP over IPSec 테스트해봄 : 윈도우와 Mac 에서 내장된 VPN Client 로 접속 가능하여 간편함
 
eth0 IPSec 기본 설정
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec nat-traversal enable
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
 
L2TP VPN 설정 : VPN단말 할당 IP 대역 지정(101~150), 인증 공유키 설정(qwe123), 접속사용자계정 설정(user1/user1)
set vpn l2tp remote-access outside-address 192.168.254.50
set vpn l2tp remote-access client-ip-pool start 172.16.0.101
set vpn l2tp remote-access client-ip-pool stop 172.16.0.150
set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret qwe123
set vpn l2tp remote-access authentication mode local
set vpn l2tp remote-access authentication local-users username user1 password user1
 
eth0(vyos)을 목적지로 하는 방화벽 정책에 IPSec VPN 트래픽 허용 정책 설정
set firewall name OUTSIDE-LOCAL rule 40 action 'accept'
set firewall name OUTSIDE-LOCAL rule 40 protocol 'esp'
set firewall name OUTSIDE-LOCAL rule 41 action 'accept'
set firewall name OUTSIDE-LOCAL rule 41 destination port '500'
set firewall name OUTSIDE-LOCAL rule 41 protocol 'udp'
set firewall name OUTSIDE-LOCAL rule 42 action 'accept'
set firewall name OUTSIDE-LOCAL rule 42 destination port '4500'
set firewall name OUTSIDE-LOCAL rule 42 protocol 'udp'
set firewall name OUTSIDE-LOCAL rule 43 action 'accept'
set firewall name OUTSIDE-LOCAL rule 43 destination port '1701'
set firewall name OUTSIDE-LOCAL rule 43 ipsec 'match-ipsec'
set firewall name OUTSIDE-LOCAL rule 43 protocol 'udp'
 
확인
run show vpn remote-access

 
 
윈도우단말에서 L2TP VPN 접속 설정
신규접속 설정 : 목적지 IP 설정 - vyos의 외부인터페이스(eth0)의 IP 지정

 
보안 설정 : VPN종류(L2TP/IPSec), 고급설정(인증 공유키: qwe123)

 
윈도우단말에서 L2TP VPN 접속 접속
아래에 이름과 암호(user1/user1)를 입력 후 연결

 
연결 후 가상인터페이스가 생성되고 IP는 설정된 IP중에서 받아옴(=PPP 어댑터)

 
내부 IP들과 통신이되고 DMZ Web 서버 IP를 직접 입력해서 접속 가능함

 
설정을 저장 : 재부팅 이후에도 적용
save
 

1.8 모니터링
전체 인터페이스 혹은 지정된 인터페이스에 접속 flow 정보를 실시간으로 출력
monitor interfaces ethernet eth0 flow
 
지정된 인터페이스의 패킷을 캡쳐(=tshark)
monitor interfaces ethernet eth0 traffic
 
 
## 참고링크


Posted by 쏠라구구


티스토리 툴바