레이블이 cisco인 게시물을 표시합니다. 모든 게시물 표시
레이블이 cisco인 게시물을 표시합니다. 모든 게시물 표시

2020-01-13

Ansible Backup Cisco IOS Switch Config

Ansible은 누구나 쉽게 인프라를 관리할 수 있는 자동화 도구로 Agent가 필요하지 않으며, 특히 네트워크 장비를 가장 완벽하게 관리할 수 있는 자동화 도구이다.

Ansible은 기타 다른 자동화 도구와는 다르게 Agent가 필요없으며, 기본적으로 SSH를 통한 암호화 통신을 통해 원격 접근 및 자동화 관리가 가능하다. 따라서 Cisco 스위치를 Ansible을 이용해서 관리하기 위해서는 SSH 통신이 되도록 우선 설정이 되어 있어야 한다.
  Cisco 장비 SSH 설정방법은 아래 블로그 내용을 확인해 보면 된다.

Cisco Switch SSH 접속 설정 하기



네트워크 엔지니어로 가장 중요한 스위치 Config 백업을 Ansible을 활용하여 구성하는 방법에 대해 설명해보도록 하겠다.  

1. Ansible host에 스위치 정보 입력.

 - vi /etc/ansible/hosts

## Host 그룹 및 host 지정
## []에 그룹명을 지정해 주고 하위에 hostname 및 host ip 정보등을 입력해 주면 그룹에 host가 등록이 된다.
[CiscoSW]
SW01 ansible_host=192.168.254.101

## 그룹에 대한 환경 변수 등록.
## [groupname:vars]형식으로 작성
[CiscoSW:vars]
ansible_network_os=ios
ansible_user=backup             ## User name 입력.
ansible_password=backupPW       ## User password 입력.
ansible_authorize=yes
ansible_connection=network_cli  
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=enablePW    ## enable passwd 입력. ansible-vault를 이용하여 패스워드 등 
                                ## 중요한 정보를 암호화 하여 처리할 수 있다. 
                                ## vault에 대해서는 나중에 별도 섹션으로 포스팅하도록 하겠다.
                                


2. Ansible 스위치 Config Backup Playbooks 작성.

   - vi /etc/ansible/playbooks/swbackup.yaml 

---
- hosts: CiscoSW
  gather_facts: no

  tasks:
    
    - name: Backup switch (ios)
      ios_config:
        backup: yes
      register: backup_ios_location
      when: ansible_network_os == 'ios'

    - name: Create backup dir    ## 백업 Directory 경로 설정(없을 경우 자동 생성)
      file:
        path: "/tmp/backups/{{ inventory_hostname }}"
        state: directory
        recurse: yes

    - name : copy switch config backup to backup directory
      copy:
       src: "{{ backup_ios_location.backup_path }}"
       dest: "/tmp/backups/{{ inventory_hostname }}/{{ inventory_hostname }}_running-config.txt"


3. ansible-playbooks 실행

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

4. 실행 결과

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

PLAY [CiscoSW] *************************************************************************************************
TASK [Backup switch (ios)] *************************************************************************************
changed: [SW01]

TASK [Create backup dir] ***************************************************************************************
changed: [SW01]

TASK [copy switch config backup to backup directory] *******************************************************
changed: [SW01]

PLAY RECAP ****************************************************************************************************
SW01                       : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible]#


5. 백업 파일 확인.

[root@ansible]# cd /tmp/backups/SW01/
[root@office_zabbix SW01]# ls -al
drwxr-xr-x 2 root root    37 1227 18:03 .
drwxr-xr-x 4 root root    31 1227 18:03 ..
-rw-r--r-- 1 root root 10506 1227 18:03 SW01_running-config.txt
[root@ansible]#


  /tmp/backups/SW01/ 경로에 SW01_running-config.txt 이름으로 스위치 Config가 백업 된 것을 확인할 수 있다.

위에서는 1대의 장비만 가지고 구성하였는데 수십대 및 수백대의 장비가 있다고 하더라고 Hosts 파일에 등록 해 놓으면 아주 편하게 스위치 장비를 백업 할 수 있다. 

DHCP Snooping - 비인가 DHCP 사용 차단.


사내 네트워크 운영하다보면 사용자 부주의 혹은 허용되지 않은 공유기등을 통해서 내부에 DHCP가 도는 경우가 종종 발생하게 된다.
  이를 방지할 수 있는 방법으로 Cisco 장비에서 지원하는 DHCP Snooping 기능이 있어서 소개하고자 한다. 
 1. DHCP Snooping
   - Snooping 은 '기웃거리다, 염탐하다' 라는 의미로, dhcp snooping은 dhcp 패킷의 내용을 중간에서 엿보는 것처럼 탐지 하여 DHCP 응답이 오면 차단을 하는 기능이다.
  - 각 인터페이스에 대해 신뢰여부를 판단하여 신뢰하지 않는 인터페이스에 대해서는 DHCP 응답 패킷을 모두 차단하여 불법 DHCP 서버등으로 부터의 공격을 차단할 수 있다.
2. 스위치 설정 방법
SW#conf t
SW(config)#ip dhcp snooping
SW(config)#ip dhcp snooping vlan [vlan id]
SW(config)#interface range gigabitEthernet 0/1 ~ 10  
SW(config)#ip dhcp snooping limit rate [num]
SW(config)#interface gigabitEthernet 0/24
SW(config)#ip dhcp snooping trust
- ip dhcp snooping
   : dhcp snooping 기능 활성화. 
- ip dhcp snooping vlan [vlan id]
   : dhcp snooping 기능을 사용할 Vlan을 정해준다. 기본적으로 모든 인터페이스는 신뢰할 수 없는 인터페이스가 된다. 
- interface range gigabitEthernet 0/1 ~ 10
- ip dhcp snooping limit rate [num]
   : 신뢰하지 않는 인터페이스에 들어가서 초당 dhcp 패킷 수를 조정한다. 혹시 내부에서 dos 공격이 있을 경우 차단하기위한
    옵션이다. 
- interface gigabitEthernet 0/24 
- ip dhcp snooping trust
   : 사용하는 dhcp 서버가 연결되어 있는 인터페이스가 있다면 신뢰 인터페이스로 변경해 준다. 
3. DHCP Snooping 상태 확인
SW#sh ip dhcp snooping  
Switch DHCP snooping is enabled
Switch DHCP gleaning is disabled
DHCP snooping is configured on following VLANs:
1
DHCP snooping is operational on following VLANs:
1
DHCP snooping is configured on the following L3 Interfaces:

Insertion of option 82 is enabled
   circuit-id default format: vlan-mod-port
   remote-id: 6c6c.d38d.c280 (MAC)
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Verification of giaddr field is enabled
DHCP snooping trust/rate is configured on the following Interfaces:
Interface                  Trusted    Allow option    Rate limit (pps)
-----------------------    -------    ------------    ----------------   
GigabitEthernet0/24        yes        yes             unlimited  
Custom circuit-ids:
SW#

SW#sh ip dhcp snooping statistic
  Packets Forwarded                                     = 106
 Packets Dropped                                         = 0
 Packets Dropped From untrusted ports       = 0
SW#

Cisco - Radius Active Directory Authentication




스위치를 여러대 혹은 수십대를 관리할 경우 접속 계정을 스위치마다 직접 등록을 한다면.. 
그리고 주기적으로 패스워드를 변경을 해 주어야 한다면.. 관리자로서 아주 골치아플 것이다..
스위치에서는 AAA(authentication, authorization, and accounting) 모드를 통해 Radius 서버나
Tacacs 서버를 통해서 외부에서 계정 인증을 받을 수 있는 방법이 있다. 
그리고 한가지 더 Windows 서버에서 Active Directory를 사용한다면 AD 도메인 계정을 통해서
사용자 인증을 할 수 있는 방법이 있다.
필자도 그동안 스위치에 직접 계정을 등록해서 사용하였는데 관리자가 변경되거나 퇴사등 
수정할 사항이 많아져 귀차니즘으로 인해 새로 구축했던 내용을 토대로 설명해 보도록 하겠다. 

1. AD 서버 네트워크 정책 및 액세스 서비스 역할 추가
● 서버 관리자에서 역할 추가
● 다음


● 
네트워크 정책 및 액세스 서비스 선택



● 
다음



● 네트워크 정책 서버 선택


● 
설치





● 
설치 완료


2. Radius Client 등록 및 NPS 정책 추가.
● 우선 NPS 서비스를 Active Directory에 등록한다.


● 
Raduis 클라이언트 새로 만들기를 선택하여 클라이언트를 등록.



● 
이름, IP주소, 공유 암호 설정


● 
아래와 같이 클라이언트 등록 완료.



● 네트워크 정책 - 새로만들기(N) 선택하여 정책 추가



● 네트워크 정책 이름 및 연결 형식 지정은 기본값(default)으로 하고 다음을 누른다.



● 조건 지정에서 추가를 선택.



● 사용자 그룹을 선택 후 추가버튼을 눌러서 Access 할 도메인 계정 그룹을 등록.



● 사용자 그룹 : 네트워크 엑세스할 특정 도메인 계정을 등록. 
    ex) domain\Domain Admins



● 엑세스 권한은 엑세스 허용으로 선택 후 다음.


● 인증 방법은 아래와 같이 암호와 안된 인증(PAP, SPAP)(S)를 선택.


● 제약조건은 기본값으로 사용하고 다음.


● 설정 구성 에서 기본 등록된 값을 제거하고 
    아래와 같이 표준 값으로 Service-Type, value : NAS Prompt 지정.


● 공급 업체는 Cisco를 선택하고 특정정보 값으로 Privileges Level 값을 지정해 준다.

 - shell:priv-lvl=15  :  로그인 시 privilege level 15 권한 획득.   - shell:priv-lvl=1    :  로그인 시 privilege level 1 권한 획득. enable password 입력 필요. 


● 등록 확인



● 정책 설정 완료 후 마침. 



● 등록한 정책이 처리 순서 1로 우선순위를 변경.




3. Cisco ISO Radius Configuration.

!
aaa new-model
!
!
aaa group server radius NPS
 server 192.168.0.100 auth-port 1812 acct-port 1813
! 
aaa authentication login default local enable
aaa authentication login radius_auth group NPS local
aaa authorization exec radius_auth group NPS local 
aaa authorization network radius_auth group NPS local 
aaa accounting exec default start-stop group NPS
aaa accounting system default start-stop group NPS
!
!
radius-server host 192.168.0.100 auth-port 1812 acct-port 1813 key sharesecretkey
radius-server host 192.168.0.100 auth-port 1645 acct-port 1646 key sharesecretkey
!  
line con 0
 login authenticacion default
!
line vty 0 4
 login authentication radius_auth
!

  Radius는 UDP 포트로 통신을 하며 1812/1813, 1645/1646 포트를 사용한다.(default)     NPS 서버와 switch config를 통해 포트를 변경하여 사용할 수도 있으니 내부 보안 정책
     에 맞게 수정해도 상관 없다.

 콘솔 접속시 로컬 계정 로그인 권한.   AAA 모드로 동작을 하게 되면 콘솔과 vty 세션 모두 AAA  인증이 자동 활성화가 된다.   만약 장애로 인해 radius 인증이 어려울 경우 아래와 같이 설정하여 콘솔 로그인시 로컬    계정으로 로그인 되도록 설정하면 된다.

!
aaa authentication login default local enable
!  
line con 0
 login authenticacion default
!

2019-12-20

EVE-NG #2. Use Cisco IOU (IOS on Linux) on EVE-NG

EVE-NG를 설치했다면 이번엔 Cisco IOU 이미지를 업로드 하여 EVE-NG 에서 Cisco 스위치를 사용하는 방법에 대해 작성해 보겠다.
  IOU는 IOS on Linux의 약자로 IOL이라고도 한다. Cisco 내부에서만 사용가능한 이미지로, i386 아키텍처로 컴파일된 리눅스 버전이다. 
EVE-NG에서 사용가능한 IOU 버전은 아래의 두가지이다.
 ( 참고 : https://www.eve-ng.net/index.php/documentation/howtos/howto-add-cisco-iol-ios-on-linux/ )




IOU 이미지는 반드시 .bin 확장자로 되어 있어야 하며, 라이선스 파일 또한 같은 경로에 있어야 한다.
1. IOU 이미지 업로드
 - 먼저 해당 이미지를 filezilla나 winscp 등을 통해 sftp 로 접속하여 파일을 업로드 한다. 



Winscp를 통한 EVE-NG 접속

 - /opt/unetlab/addons/iol/bin/ 경로 이동후 이미지 업로드




- 메시지 창이 나오면 확인 




2. Permission 수정.
 - EVE-NG SSH 접속 후 아래 Command 실행하여 Permission 수정.
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
 위 명령어 실행후 아래와 같이 permission_denied 오류가 발생할 경우 unl_wrapper 파일 권한을 수정해 주면 된다.
root@eve-ng:~# /opt/unetlab/wrappers/unl_wrapper -a fixpermissions 
  -bash: /opt/unetlab/wrappers/unl_wrapper: Permission denied
 root@eve-ng:~#chmod 755 /opt/unetlab/wrappers/unl_wrapper
3. 라이선스 파일 생성 및 등록.
 - IOUkeygen.py 키젠 파일을 같은 경로에 업로드한다. 



IOUkeygen.py 파일 업로드


- python IOUkeygen.py 실행하여 라이선스 생성.




 - iourc 파일 생성후 라이선스 생성
  생성된 라이선스 정보(노란색 표시)를 iourc 파일을 만든 후 입력하여 저장한다.  
 vi iourc 
 
 [license] 
 eve-ng = 972f30267ef51616;  
 
 :wq
4. EVE-NG에서 이미지 부팅 확인. - eve-ng 웹 접속후 신규 랩을 생성



원하는 이름 선택후 저장(Save)
Node Object 추가


 - Cisco IOL Template 에서 원하는 이미지 선택 후 , 이름, Icon, Ethernet portgroups 등 적절하게 설정 한 후 저장. 




  - 스위치 부팅 후 접속 확인



IOUkeygen.py

2019-11-11

EVE-NG #1. 네트워크 가상 에뮬레이터 EVE-NG 설치 및 소개 (Network Virtual Emulator - Introduce and Install)

네트워크 가상화 에뮬레이터중 대부분의 네트워크 실습이 가능한 EVE-NG를 설치해 보자.

필자는 패킷 트레이서, dynamips, gns3 등 네트워크 가상화 에뮬레이터를 여러종류를 사용해 본 경험이 있으며, 
그중 EVE-NG가 원하는 실습환경을 최대한 동일하게 구성할수 있었고, 주니퍼, 포티 등 방화벽 장비 지원 뿐만 아니라 리눅스 가상화 플랫폼도 지원하여 여러가지 시스템과 연동하여 구성할 수 있어서 에뮬레이터 중이 가장 강력한 도구라고 생각한다. 
EVE-NG는 VirtualBox 나 VMWare 등 가상 머신에 사용할 수 있는 OVA 이미지 와 ISO 설치 이미지를 제공하고 있으며, 원하는 방식으로 설치가 가능하다. 여기에서는 가상 머신에 설치할 수 있는 OVA 파일을 통해 설치해 본다. 
1. 설치 파일 다운로드 
   - EVE-NG 홈페이지(https://www.eve-ng.net/) 접속 후  - Downloads - EVE-NG Community 에서 EVE-NG OVA 파일 다운로드. 
     구글 다운로드 링크 :  구글 Mirror Download 





2. EVE-NG 설치 
   다운로드가 완료 되면  EVE Community VM.ova 라는 파일이 생성이 된다. 해당 파일은 가상머신에서 바로 사용이 가능한 VM 이미지 이다.  가상머신은 무료버전인 VMWare Workstation 15 Player를 사용하였다.

1) VMWare Player에서 가상 이미지 파일 열기 
    Player - File - Open => EVE Community VM.ova 파일 선택 후 열기.





2) VM 이름 및 저장 위치 변경 후 Import 





3) Virtual Machine Setting 에서 Processors의 Virtualize Intel VT-x/EPT or AMD-V/RVI 선택. 





4) Network Adapter 에서 Network Connetcion Nat 선택.





5) 부팅이 완료 되면 로그인 후 추가 세팅을 진행한다. 
   부팅이 되면 할당된 IP 정보 확인이 가능하며,  초기 로그인 정보는 ID : root  / PW : eve 이다. 세팅이 완료 되면 화면에 나와있는 IP URL로 접속하면 된다. 




Root 패스워드 설정 




Hostname 설정




도메인 이름 설정(옵션)




IP 주소 선택. Nat 모드로 구성하였으므로 DHCP 선택. 
( Bridge 모드사용시 PC의 인터페이스 설정과 동일하게 dhcp 나 Static 중 선택 후 사용하면 된다. )




NTP(시간동기화 프로토콜) 설정 ( 사용하는 NTP 서버가 있을경우 설정, 없으면 생략 가능)




프록시 서버 설정 ( 프록시 사용하지 않을 경우 direct connection 선택 ) 




설정이 완료 되면 다시 재부팅이 되며 부팅이 완료 되면 아래와 같이 로그인 창이 보이게 된다.




로그인창에 있는 URL(IP)로 접속하면 eve-ng 웹 UI 접속이 가능하다. ( id : admin / pw : eve )




다음에는 EVE-NG에 스위치 및 라우터 이미지 등록 및 토폴로지 구성하는 방법에 대한 포스팅을 하도록 하겠다. 

Elasticsearch Heap Size

  Elasticsearch는 Java 기반으로 동작을 합니다. Java는 가비시 컬렉터 (garbage-collected)에 의해서 관리가 되며, Java 객체는 힙(Heap) 이라고하는 메모리의 런타임 영역에 상주합니다.  Elasticsear...