보안을 위한 SSH 접속 및 22번 포트가 아닌 타 포트로 변경하는 방법입니다.
여기에 ACL 까지 설정해주면 완벽하게 관리할 수 있습니다.
대상장비 : CISCO C9300-24P
소프트웨어 버전 : CAT9K_ISOXE 17.05.01
1. HOST명 설정
SWITCH> enable
SWITCH#
SWITCH(config)# hostname ITGOIT
ITGOIT(config)#
2. 도메인 네임 설정
RSA 키 생성 전 도메인 네임을 설정해야 RSA키를 설정할 수 있습니다.
ITGOIT(config)# ip domain name itgoit.com // 도메인 네임으로 사용할 도메인 지정
ITGOIT(config)#
3. RSA 키 생성하기
※ Privilege, Global 모두 가능
ITGOIT# crypto ket generate rsa // SSH의 RSA 키 생
The name for the keys will be : ITGOIT.itgoit.com // 호스트네임.도메인
(기 설정 시) % You already have RSA keys defined named ITGOIT.itgoit.com
(기 설정분이 있을 시) % Do you really want to replace them? [yes/no]: y // yes를 눌러 설정 변경
Choose the sizq of the key modulus in the range of 512 to 4096 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [1024]: 1024 // CISCO 권고사항인 RSA 키값을 1024비트로 설
# Generating crypto RSA keys in background ...
ITGOIT#
암호 설정 방법
4. 계정 생성
장비에 콘솔 및 원격 접속을 위한 계정을 생성합니다.
혹시 모를 사태를 대비하여 저는 항상 2개의 계정을 생성합니다.
계정 생성 시 password-encryption을 하지 않는다면 secret을 사용하여 암호를 만들어줍니다.
password를 사용하여 show run 시 비밀번호가 그대로 노출되니 꼭 secret으로 생성 혹은 password 사용 후 encryption 해주시기 바랍니다.
※ enable password 와 enable secret를 동시에 설정할 경우 secret가 우선 적용됨
ITGOIT(config)# username user1 secret itgo!t00 // ID : user1 P/W : itgo!t00 계정 생성
ITGOIT(config)# username user2 secret itgo!t00 // ID : user2 P/W : itgo!t00 계정 생성
ITGOIT(config)# enable secret itgo!t00 // 관리자 모드 (Privilege mode) 진입 비밀번호 설정
ITGOIT(config)#
5. ACL 설정 및 포트 설정
ITGOIT(config)# ip ssh port 2200 rotary 1 // ssh 포트번호를 rotary 그룹 1에 설정
ITGOIT(config)# ip access-list extended ssh // 확장형 ACL 생성 ssh (이름은 원하는 이름 가능)
ITGOIT(config-ext-nacl)# permit tcp host 10.10.10.20 any eq 2200 // 10.10.10.20 host에서 2200번 포트만 접속 허용
ITGOIT(config-ext-nacl)# deny ip any any // 위 허용된 정보 외 모든 IP 차단
ITGOIT(config-ext-nacl)# exit
ITGOIT(config)#
6. 추가 보안설정
ITGOIT(config)# ip ssh version 2 // SSH 버전 설정 (CISCO 권고사항인 V2 설정)
ITGOIT(config)# ip ssh time-out 120 // SSH 접속 후 120초 동안 움직임이 없으면 접속 종료. 30초~120초 설정 가능
ITGOIT(config)# ip ssh authentication-retries 5
ITGOIT(config)#
7. 장비 접속 설정
line은 장비와 PC 혹은 노트북이 연결된 선이라고 생각하면 됩니다.
콘솔의 경우 콘솔 케이블로 직접 연결되며, vty의 경우 Virtual Teminal로 주로 외부에서 많이 접속합니다.
항상 host의 경로를 잘 확인해야 한다. interface, line 등 host 상세경로가 표시되지 않으니 유의하며 설정하세요.
1) 콘솔 접속 설정
ITGOIT(config)# line console 0 // 콘솔 0번 설정
ITGOIT(config-line)# login local // 내부 계정으로 접속. 이 부분이 누락되면 위 계정으로 로그인 안됩니다.
ITGOIT(config-line)# exec-timeout 5 // SSH 접속 후 120초 동안 움직임이 없으면 접속 종료. 0-35791분
ITGOIT(config-line)#
2) 터미널 접속 설정
ITGOIT(config)# line vty 0 4 // 원격접속용 터미널 0~4번 설정
ITGOIT(config-line)# rotary 1 // 위에 설정해놓은 2200번 포트 rotary 1 적용 (누락 시 2200번 포트 접속 안됨)
ITGOIT(config-line)# access-class ssh in // 생성된 확장형 ACL 이름 ssh의 정책을 적용
ITGOIT(config-line)# exec-timeout 5 // SSH 접속 후 120초 동안 움직임이 없으면 접속 종료. 0-35791분
ITGOIT(config-line)# login local // 내부 계정으로 접속. 이 부분이 누락되면 위 계정으로 로그인 안됩니다.
ITGOIT(config-line)# transport input ssh // 장비 접속 시 SSH로만 접속 허용
다중 설정 가능 - all: All, none: No, ssh: TCP/IP SSH, telnet: TCP/IP telnet
ITGOIT(config)#
3) 접속 테스트 진행
22번 포트 접속 시도
PuTTY
Network error: Connection refused // PuTTY를 이용하여 22번 포트로 접속 시 접속거부
SecureCRT
The remote system refused the connection. // SecureCRT를 이용하여 22번 포트로 접속 시 접속거부
변경한 2200번 포트 접속 시도 // ssh 2200번 포트를 사용하여 접속
Username: user1
Password: itgo!t00
ITGOIT> enable
Password: itgo!t00
ITGOIT#
특정 호스트만 접속 부분을 제거하려면 ACL 설정에서 특정 host를 any로 변경하면 됨
ITGOIT(config-ext-nacl)# permit any any eq 2200 // 2200번 포트만 접속 허용
WR. 잊지 말자 저장
ITGOIT(config)# exit
ITGOIT# write memory
Building configuration...
[OK]
ITGOIT#