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들을 의미함
flags: qr rd ra;
=> | | └ 지금 응답을 준 네임서버는 recursive Query가 가능하다
| └ recursive 질의
└ 이 응답이 response 1
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
server "dns 서버주소"
set type=ns
자주 쓰는 설정이라고 함
whois 명령어 설치 ( yum install jwhois -y )
- whois서버를 통해 도메인의 등록정보, 네트워크 할당 정보 등을 조회
- 다른 사람에 의해 사용중인지 여부를 체크하는 용도로 많이 사용
2 END --
'(실기) 정보보안기사&산업기사' 카테고리의 다른 글
어플리케이션 기본학습 7~9, 웹 어플리케이션 취약점 1,2 (0) | 2024.03.27 |
---|---|
어플리케이션 기본학습 3~6 (0) | 2024.03.26 |
네트워크 보안 프로토콜 2~6 (0) | 2024.03.24 |
네트워크 기본학습 25~28, 네트워크 보안 프로토콜1 (0) | 2024.03.23 |
네트워크 기본학습 19~24 (0) | 2024.03.21 |