본문 바로가기
(실기) 정보보안기사&산업기사

라우터 보안 1,2 어플리케이션 기본학습 1,2

by IT매니절 2024. 3. 25.

1. 라우터 자체 보안
개요
1) 처음 접속시 사용자 모드로 접속을 하게 되며, 관련정보의 조회가 가능하다. Enable 명령어를 사용해 privileged 모드로 레벨을 변경하면 설정 변경 등의 작업을 할 수 있다.
라우터 사용모드
- User EXEC 모드 : 사용자모드. 한정된 명령어만 사용 가능. Router> 로 표기 
- Privileged EXEC 모드 : en 또는 enable 명령어로 전환. 모든 명령어 수행 가능. Router# 표기
- Global Configuration 모드 : 전반적인 설정을 변경하고자 할 때. Router(config)# 표기
- Other Configuration 모드 : 복잡하고 세부적인 설정을 하는 메뉴. Router(config-mode)# 표기 종료는 end, Ctrl+z 또는 exit

(end는 어디서든 Privileged(#) 모드로 돌아가고, exit는 한 단계 뒤로 돌아간다)
2) enable 명령어의 패스워드를 설정하려면 enable password 또는 enable secret (권장) 사용
3) enable password 패스워드
- type0 평문으로 저장됨. service password-encryption으로 암호화가 가능하지만, type 7 역함수가 존재하는 방식임
4) enable secret 패스워드
- type5 일방향 함수 MD5로 암호화 (복호화가 안됨)
- enable password와 enable secret가 둘 다 설정된 경우 secret가 우선된다

 

2. 라우터와 접근제어ACL
1) 개요
- access-list 명령어로 특정 패킷에 대한 접근제어 설정
- standard표준 extended확장

2) standard access-list
- 소스 IP만으로 패킷을 허용/차단
- access-list(acl) number로 1~99
   ex access-list acl번호 [permit 또는 deny] [소스주소 wildcard 또는 any]
   ex access-list 5 permit host 192.168.1.1
- 특정 ip를 지정할 때는 host를 명시
- ip대역을 지정할 때는 wildcard 명시

(만약 소스 IP가 192.168.11.0 이라면 wildcard mask는 0.0.0.255
permit 192.168.11.0 0.0.0.255
=> 192.168.11 로 시작하는 모든 ip주소(대역))
- 모든 주소 : any

3) extended access-list
- 패킷의 소스 IP, 목적지 IP, 포트, 프로토콜 등을 이용해 차단 가능
- access-list(acl) number로 100~199
- 형식 : access-list acl번호 [permit 또는 deny] 프로토콜 소스 소스 -wildcard 목적지 목적지-wildcard
   ex      access-list 150 deny ip host 192.168.11.1 100.100.100.0 0.0.0.255
 => 192.168.11.1이 출발지이고 목적지가 100.100.100.0/24 대역인 ip 패킷에 대해 모두 차단/필터링 (0.0.0.255가 대역을 의미)
   ex      access-list 150 deny tcp 192.168.1.0. 0.0.0.255 host 100.100.100.1 eq 80
 => 192.168.1.0/24 대역이 출발지이고 목적지가 100.100.100.1인 80포트 tcp 패킷에 대해 모두 차단/필터링
   ex      accessl=list 150 deny udp host 192.168.2.5 100.100.100.0 0.0.0.255 ragne 100 200
 => 192.168.2.5가 출발지이고 목적지가 100.100.100.0/24대역인 100~200포트 udp 패킷에 대해 모두 차단/필터링

(패킷 트레이서 : 시스코 장비 시뮬레이터. 라우터 보안 테스트 가능. CLI 에서 명령어 입력 가능)

 

 

4) Filtering 유형
가) Ingress Flitering
외부에서 내부로 들어오는 패킷 필터링
- 인터넷상에서 사용되지 않는 ip 대역 = 비정상 패킷을 사전에 차단하는 효과
(사설 IP(A 클래스 10.0.0.0 ~ 10.255.255.255, B클래스 172.16.0.0~172.31.255.255, C클래스: 192.168.0.0~192.168.255.255), 루프백(127.0.0.0/8) 등)

나) Egress Filtering
내부에서 외부로 나가는 패킷 필터링
- 외부로 나가는 패킷의 Source IP가 내부 네트워크 대역인 것이 정상

다) Blackhole Filtering(Null routing)
- 특정 ip 또는 대역에 대하여 비정상적인 시도가 감지되면 가상의 쓰레기 인터페이스로 보내 패킷 통신이 되지 않도록 한다

라) Unicast RPF(Reverse-Path Forwarding) Filtering
- 일일이 ip나 ip 대역을 지정하지 않아도 비정상 트래픽을 효율적으로 필터링
- 패킷의 소스 ip에 대해 라우팅 테이블을 확인해, 들어온 인터페이스로 다시 나가는지 확인하는 원리


외부와 연결된 구간 : serial 구간 / serial 인터페이스
내부와 연결된 구간 : ethernet 구간 / ethernet 인터페이스

 

 

 

라우터를 통한 네트워크 보안
1) 콘솔, AUX, VTY 포트 패스워드 보안
- 콘솔 포트는 케이블을 이용하여 직접 터미널에 연결하여 라우터를 조작할 수 있도록 하며 장애 처리시 많이 사용된다
- 콘솔 패스워드를 반드시 설정하여야 한다
콘솔 예시
conf t
(config )# line console 0
(config-line)# login
(config-line)# password test
(config-line)# end
- VTY 포트는 원격지에서 텔넷을 통해 접속 시 사용되는 패스워드를 설정한다
VTY 포트 예시
conf t
(config )# line vty 0 4                                 (0부터 4의 의미. 5 user 접속 가능)
(config-line)# login
(config-line)# password test
(config-line)# end

 

 

1 END --

 

 

텔넷 접근 제한

- 특정 ip host만 허용한 후, 나머지는 전부 차단


conf t
access-list 10 permit host 192.168.0.1
access-list 10 permit host 192.168.0.2
access-list 10 deny any
line vyt 0 4                                                           #line모드
access-class 10 in                                              #line모드에서 acl 설정 들어오는 패킷에 대해 10번으로 설정.
(인터페이스 설정 : access-group)

 

 

가) SNMP 설정
1) 읽기 권한은 기본적으로 설정되어 있음
2) community string값은 기본적으로 public 또는 private이며 이를 변경해야한다

3) SNMP 서비스를 사용하지 않는다면 no snmp-server 로 제거
4) SNMP version 1, 2는 평문. version 3은 암호화가 지원됨
예시
conf t
snmp-server community otherVal ro 11             #기본값 대신 otherVal를 사용하겠다. ro 읽기온리모드, acl은 11로 지정
snmp-server contact antihong@test.co.kr
access-list 11 permit host 192.168.0.1
access-list 11 deny any
interface FastEthernet 0/0                                 #인터페이스 설정
ip access-group 11 in                                        #인터페이스 설정
end

 

 

나) ICMP
1) ICMP MTU Discovery
- MTU Discovery를 담당하는 ICMP type3, code4 패킷만 허용하고 나머지는 차단
예시
conf t
access-list 103 permit icmp any any 3 4                #모든 목적지, 모든 출발지의 t3 c4 허용
access-list 103 deny icmp any any                        #icmp 모든 패킷 차단
access-list 103 permit ip any any                          #ip는 다 허용
interface FastEthernet 0/0
ip access-group 103 in                                         #이 설정들을 103번 인터페이스에 지정
end

(Path MTU Discovery
- 특정 경로의 최적의 MTU값을 찾아 계산하는 것
- IP패킷의 플래그에 두 번째 비트(단편화x)를 1로 설정하여 패킷을 보내보고 ICMP Destination (Type 3, Code 4)이 발생하면 MTU 값을 줄여 다시 패킷을 보내면서 적절한 MTU값을 찾는다)

2) ICMP Redirects
- 인터페이스로 ICMP Redirect 패킷 차단
conf t
interface FastEthernet 0/0
no ip redirects
end

 

3) ICMP Directed Broadcasts
- 네트워크 전체에 echo reply 되므로 차단 권장
no ip directed-broadcast

4) ICMP Mask Reply
no ip mask-reply

5) ICMP Unreachable
- 공격자가 라우터 혹은 호스트의 특정포트가 열려있는지 판단할수있으므로 차단 권장
no ip unreachables

6) ICMP Timestamp and Information Requests

 

다) Source Route
- 패킷이 전송되는 경로를 시스템/네트워크에 설정된 라우팅 경로를 통하지 않고 발송자가 설정할 수 있는 기능
- 악용의 소지가 있으므로 차단 권장
no ip source-route

 

라) Small Service
- tcp-small이나 udp-small 등 차단

마) Finger 서비스
- 라우터에 접속해있는 사용자 정보를 제공
- no service finger

바) HTTP Server 서비스
- no ip http server

사) CDP 서비스

아) proxy-arp 서비스

자) 기타 불필요한 서비스
- BootP, DNS, IP Classless 등
- 사용하지 않는 interface는 shutdown 권장

 

 

입출력 IP 보안 설정
Ingress 필터링 예시 (외부->내부)
conf t
access-list 15 deny 192.168.0.0 0.0.255.255               #내부ip 대역이 192.168~로 시작하는 경우 대역 차단
access-list 15 permit any
interface FastEthernet 0/0
ip access-group 15 in
end
(+ 내부 ip 대역, 127.0.0.0/8 이라거나 172.16.0.0/12, 224.0.0.0/4 같은 예약된 주소들. 외부에서 사용불가능한 주소들.)

- Egress 필터링 예시 (내부->외부)
conf t
access-list 15 deny 192.168.0.0 0.0.255.255               #192.168~로 시작하는 내부 ip 대역에 대하여
access-list 15 permit any
interface FastEthernet 0/0
ip access-group 15 out                                                #이 대역ip에서 나가는 패킷만 허용하고 나머지 나가는 패킷은 전부 차단
end

 

 

주소 위변조 방지

가) Unicast RPF

- 들어오는 패킷의 출발지 ip주소의 reverse-path (역경로)가 존재할 경우만 허용

conf t
interface FastEthernet 0/0
ip verify unicast reverse-path
end

 

 

*Blackhole 보안 설정
- DDoS에 대한 대응 방법. 네트워크 트래픽이 과도하게 발생시 차단

conf t
interface null 0
no ip unreachables                                              #ICMP Unreachable 메시지 차단.
exit
ip route 211.1.1.1 255.255.255.255 null 0           #라우팅 테이블에 211.1.1.1에 대한 라우팅 경로를 null로 설정 (다 폐기)
end
=> ICMP Unreachable 메시지 차단하는 이유 : 현재 211.1.1.1 ip로 대량의 트래픽이 발생하고 있다. ICMP Unreachable를 차단하지 않으면, IP를 차단해도 ICMP Destination Unreachable 메시지 응답이 대량으로 발생하며 부하를 주기 때문에, 응답 메시지도 나가지 않도록 미연에 방지하는 것

 

 

 

 

라우터 보안 2 END --

 

 

(상식 레벨의 선수지식

도메인 : 숫자 기반 IP를 기억하기 쉽도록 만든 문자 기반의 이름체계
도메인 네임 시스템 DNS : 도메인 네임을 관리하기 위한 시스템. hosts파일 기반으로 관리하던 것을 보다 체계적으로 관리하기 위한 일종의 분산 데이터베이스 시스템
도메인 각 계층별로 네임서버를 두고 분산하여 도메인 정보를 관리함

도메인 체계
. (루트)                                                                 => root 네임서버 (1차 레벨 도메인의 네임서버 주소를 가짐)
1차 레벨 도메인(=Top level Domain=TLD)          => 1차 레벨 도메인 네임서버 (2차 레벨 도메인의 ... )
 └ 국가코드최상위도메인NTLD
 └ 일반최상위도메인 GTLD
2차 레벨 도메인
3차 레벨 도메인 )

 

 

http://www.test.com 
=> Forward DNS lookup
    - 로컬DNS Cache 검색
    -> hosts 파일 검색(hosts.ics > hosts 파일)
    -> DNS 서버 질의

 

 

실습
window cmd 환경

ipconfig /displaydns

: ( ping www.google.com 명령어를 써보면,

http://www.google.com 의 dns 정보가 displaydns 정보에 담긴다) 

 

TTL(Time To Live) => 초단위

 

ipconfig /flushdns

: dns 정보들을 전부 지울 수 있다

 

hosts 파일 위치 : C:\Windows\System32\drivers\etc

 

192.168.56.100          http://www.naver.com

이런식으로 hosts 파일에 도메인을 다른 ip에 등록해 놓으면,
http://www.naver.com에 접속했을때 192.168.56.100 으로 연결된다

(dnsCache 파일 참조 -> hosts 파일 참조 순이지만, 사실은 hosts파일이 변경되면 로컬 dnscache파일도 자동으로 동기화된다)

 

 

공격자는 Fake site / Pharming site로 희생자를 유도하고 싶어함

1. 로컬 DNS Cache 는 DNS 서버 질의를 할 때 생성된다.
공격자는 스니핑을 하고 있다가, DNS 서버 질의를 할 때 조작된 응답을 돌려준다
Sniffing 스니핑 기반의 DNS Spoofing 스푸핑

2. hosts.ics (윈도우) 또는 hosts 파일 변조
악성코드 등을 이용

 

용어 정리
1. Authoritative 어쏠리테이티브 DNS 서버
- root DNS 서버. 관리하는/위임받은 도메인을 가지고 있는 DNS 서버
- 관리중인 도메인에 대해서만 응답함

2. Recursive 리컬시브 DNS 서버 (=Cache / resolving)
- com DNS 서버. 관리하는/위임받은 도메인이 없음. 모든 도메인 질의에 대해 응답함
- ISP 업체에서 제공하는 DNS 서버

(Cache에 보관하고, 아무 정보가 없을 경우 먼저 최상위 root DNS 서버에 질의(1차 레벨 도메인->2차 레벨 도메인... 식으로 내려가면 질의) 후 보관. TTL(Time to live) 있음)

 

Recursive Query : 사용자가 Recursive DNS 서버에 하는 질의 
Iterative Query : Recursive DNS 서버가 반복적으로 최상위 root DNS 서버 -> com DNS 서버 -> 목적하는 DNS 서버를 찾을때까지 질의하는 것

 

공격자가 Recursive DNS 서버가 갖고 있는 Cache 정보를 위조할 수 있다면?
=> DNS Cache Poisoning

 

 

1 END --

 

 

 

DNS(Domain Name System)
1) 용어정리
1. Recursive/Cache 네임서버/DNS 서버
-  Recursive 재귀적. 사용자로부터 질의가 들어오면, 자신의 캐시에 저장된 정보 또는 반복적 질의Iterative Query를 통해 그 결과를 사용자 호스트에 응답해주는 네임서버
- 일반적으로 ISP 업체가 제공해주는 DNS 서버

2. Authoritative 네임서버/DNS 서버
- 관리하는/위임받은 도메인을 가지고 있는 네임서버
관리하는 도메인 영역을 존(ZONE)이라 하고, 관리 도메인에 대한 정보를 담고 있는 파일을 존 파일(Zone File)이라 한다
- 바인드 DNS일 경우 named.conf 설정파일

- 관리하는 도메인에 대한 질의에만 응답

3. 재귀적 질의 Recursive

- 사용자가 Recursive 네임서버로 질의할 때 사용되는 방식

- 캐시 데이터를 조회하고 없으면 최상위 root 네임서버부터 질의 대상 도메인 네임서버까지 반복적 질의를 통해 결과를 사용자에게 반환한다

 

4. 반복적 질의 Iterative Query

- Recursive 네임서버가 도메인을 관리하는 각 네임서버Authoritative 로 질의할 때 사용하는 방식

- 최상위 root 네임서버부터, 계층구조에 따라 각 네임서버가 응답하는 위임된 네임서버 정보에 따라 순차적으로 반복하는 질의

 

동작방식
1) DNS 질의 (로컬 DNS 캐시, hosts.ics, hosts 파일 순 검색)
(리눅스 : /etc/resolv.conf, /etc/hosts, /etc/hosts.conf)

2) 질의를 받은 네임서버는 캐시에 저장된 정보는 바로 응답하고, 없으면 반복적 질의를 통해 응답

3) 도메인에 대한 ip 주소를 획득한 네임서버가 응답하는 것을 DNS 응답이라고 함

4) 사용자는 네임서버로부터 받은 IP주소를 일정시간동안 로컬 DNS 캐시에 저장한다

 

 

(

이해를 위한 DNS 프로토콜 지식
- 헤더부 : Identification(=Tranaction ID), Flags(16bit)

Flags 상세
QR(1) | Opcode(4) | AA(1) | TC(1) | RD(1) | RA(1) | Reserved(3) | rCode(4)
req 0     질의유형         |         |           |           |              |                 └ 오류표시 0 1 2 3
res 1      0 1 2 4 5        |         |           |           |            000 (예약)
                                    |         |           |      Recursive Available 재귀적 질의요청이 가능한가? 1 (root DNS 서버0는 불가능)
                                    |         |     Recursion Desired 재귀 질의를 원하면 1
                                    |         512byte초과. TCP로 다시 질의하라는 뜻
                              Authritative Answer일 경우 1

 

)

 

(centos 설치 : yum install bind-utils )

dig 명령어

dig [@네임서버] 도메인 [쿼리유형] [쿼리옵션]
# dig                                                     : 현재 클라이언트의 name server 정보 출력
# dig @168.126.63.1 google.com ns   : google.com에 ns 네임서버를 질의함
=> 출력결과 ANSWER SECTION은 구글이 관리하는 Authoritative server들을 의미함

 

테스트 해봤는데 vm웨어 환경에서 질의해서 그런가? dig 의 결과

 

구글서버로 질의


flags: qr rd ra;
=>       |   |  └ 지금 응답을 준 네임서버는 recursive Query가 가능하다
           |  └ recursive 질의
          └ 이 응답이 response 1 

 

구글의 Authoritative 서버에 www.google.com을 질의.

 

flags: qr aa;

              └ 지금 응답을 준 네임서버는 recursive Query가 불가능하다

 

질의(쿼리)옵션
+norecurse    : 반복적 질의를 수행하여 정상 응답 여부를 점검할 수 있다
+tcp                : 53/tcp 허용 여부 점검
+trace             : 계층적 위임설정 상태 점검 (계층구조에 따른 질의 수행)

 

ex dig @168.126.63.1 google.com +trace

 

 

네임서버 질의/응답 패킷
- 응답 데이터가 512 바이트 이하 : 53번 UDP 포트 사용
(단 응답이 512 바이트 초과 또는 Zone Transfer 할 때는 53번 TCP 포트 사용(TC 플래그))

User Datagram Protocol = UDP
비신뢰적, 비연결형 프로토콜.
데이터가 커지면 손실 우려가 있으므로 TCP로 재요청

 

 

DNS Lookup 명령어
forward DNS lookup : 도메인명을 통해 IP주소 알아내는 질의 (nslookup, dig 명령어)
- Reverse DNS lookup : IP주소를 통해 도메인명을 알아내는 질의

질의유형

A (Address) 도메인에 대한 IP 주소 질의 (IPv4) AAAA이면 IPv6
ANY 도메인에 대한 모든 레코드 질의
요청대비 응답이 커서 DNS 증폭 DRDoS 공격에 악용됨
MX
(Mail Exchanger)
메일서버 질의
NS
(Name server)
네임서버 질의
SOA
(Start of authority)
Zone의 기본 속성 정보(버전serial, 전송주기refresh 등)
TXT
(text)
도메인에 대한 텍스트 정보 질의
대표적으로 발송자 메일서버 인증SPF
요청 대비 응답이 크기 때문에 DNS 증폭 DRDoS 공격에 악용

출력 ex dig로 txt 요청
google.com.    3600    IN      TXT     "google-site-verification=TV9-DBe4R80X4v0M4U_bd_J9cpOJM0nikft0jAgjmsQ"
PTR
(Pointer)
IP에 대한 도메인 정보 질의
Reverse Zone 파일에 설정된 PTR 레코드 질의
* AXFR
(Authoritative
Zone Transfer)
존 버전에 상관없이 무조건 존 전송 요청 (Full Zone Transfer)
dig @192.168.56.1   test.com   axtr
* IXFR
(Incremental
Zone Transfer)
존 버전을 비교하여 상위 버전일 경우 존 전송 요청 (Incremental Zone Transfer)
dig @192.168.56.1   test.com   xtr=20240201

 

실습 : dig naver.com @168.126.63.1 ptr
(168.126.63.1 은 kt 소유임)

 

실습2 nslookup

 

리눅스

nslookup google.com

nslookup 168.126.63.1

 

윈도우에서 nslookup 사용

server "dns 서버주소"

set type=ns

자주 쓰는 설정이라고 함

 

 

whois 명령어 설치 ( yum install jwhois -y )
- whois서버를 통해 도메인의 등록정보, 네트워크 할당 정보 등을 조회
- 다른 사람에 의해 사용중인지 여부를 체크하는 용도로 많이 사용

 

 

 

2 END --