◆정보보안/네트워크

[12일차-0507] 네트워크

쿠키린 2023. 5. 7. 21:21

  서버를 안정적으로 두기 위해서 이중화와 더불어 
가상의 게이트웨이를 설정해주는 HSRP(Active/Standby)와 게이트웨이 이중화인 VRRP(Master/Backup)로 네트워크를 구성해서 서버를 두면 외부에서 공격에 감당할 수 있게된다. 

  라우터와 스위치의 패스워드는 
평문장 패스워드 : enable password dokdo
암호화 패스워드 : enable secret korea <=type 5: md5 알고리즘
virtual password : line vty 0 4/line con 0/line aux 0 & login local & username paul                         password paul <=login만 해주면 사용자 없이 password paul만                         입력하면 된다.
type 7(sha1 알고리즘) : service password-encryption 하면 기존의 평문장 암호나 새        롭게 생성되는 평문장 암호가 모두 암호화 된다.
=>Linux에서는 디폴트가 sha512 알고리즘이다. 

==>line vty 0 4는 외부에서 텔넷으로 들어오게 하는데 사용자 모드 >로 연결된다.
      여기서 관리자 모드 #으로 들어가려면 enable password/enable secret 패스워드      가 필요한다.

  ACL(Access Control List)의 기본 개념
  라우터의 접근통제목록(ACL)은 통과(permit)시키기 위한 것이라고 생각하기 쉽지만 막기(deny) 위해서 작성한다. 별도로 ACL을 만들지 않으면 패킷은 원래 모든 인터페이스로 자유롭게 드나들게 되어 있다. 그리고 접근통제목록 맨 끝에는 암묵적으로 deny any(출발지) any(목적지) all(서비스)가 숨어있기 때문에 일단 접근목록을 생성해서 라우터의 어느 인터페이스에 적용시키면 그냥 놔둬도 원래 모두 거부되게 된다. 따라서 접근통제목록을 생성할 때에는 반드시 맨 마지막 엔트리에 permit any any service식으로 설정해서 막을 것 이외에는 모두 풀어주어야 한다. 

  ACL의 통과 여부는 패킷의 내용과 목록의 엔트리(목록의 한 줄 한 줄) 설정과의 일치 여부를 보고 일치하면 끝까지 내려가면서 진행하지 않고 바로 ACL을 벗어난다. 이 접근목록에 별도로 지정하지 않은 엔트리는 맨 마지막 엔트리인 암묵적인 거부로 인해서 모두 거부되는 것이 기본이다. 

  ACL을 수행하려면 대략 다음과 같은 세 단계를 따라야 하는데 
① 먼저 하나 이상의 엔트리를 갖는 접근목록을 작성하고, 
② 그 접근목록이 적용될 인터페이스를 지정해서 설정한 뒤, 
③ 들어오거나 나가는 패킷에 적용하는 IN/OUT를 지정하면 된다. 

  접근목록에는 몇 가지 규칙이 있는데
① 접근목록에 있는 엔트리는 윗줄부터 순서대로 적용되며, 적용되면 바로 접근목록을 빠져나간다. 
② 나중에 추가하는 엔트리는 자동으로 맨 끝 줄에 위치하므로 중간의 엔트리를 조정하려면 전체 엔트리를 재작성해야 하므로 주의해야 한다. 
③ 또 접근목록은 필터링할 대상 노드가 위치한 라우터의 인터페이스에 두는 것이 좋다. 
④ 인터페이스에 접근목록을 적용할 때 IN과 OUT이 혼란스러울 때가 있는데 접근목록은 라우터에 설정하는 것이므로 로컬 노드 쪽으로 나가는(FastEthernet) 경우엔 주로 OUT가 많고 인터넷 등으로 들어오는(Serial) 경우엔 주로 IN이 된다. 항상 라우터 쪽에서 보면 IN/OUT의 이해하기 쉽다. 
⑤ 그리고 접근목록 맨 끝에는 묵시적으로 deny any (any)가 있으므로 그 직전(접근목록  엔트리의 맨 마지막)에 permit any (any)를 명시해주는 것이 좋다. 
⑥ 여러 가지 프로토콜이 사용되고 있는 네트워크에서는 프로토콜별로 접근목록을 따로 작성해서 적용시킬 수 있고, 프로토콜별로 여러 접근목록을 작성해서 한 인터페이스에 모두 적용시킬 수도 있다. 따라서 하나의 인터페이스에 프로토콜별, 서비스별로 여러 접근목록이 적용되어 있을 수 있다. 

ACL에서는 wildmask를 사용해서 ACL이 적용되는 호스트 수를 지정할 수 있다. 
ACL에는 두 가지가 있는데 
▸표준 접근목록
  표준접근 목록은 
'access-list [1~99 OR standard] deny/permit 출발지_ip 출발지_와일드마스크' 형식인데 접근목록 번호는 1~99중에서 하나를 쓴다. 출발지 노드의 IP 주소만 가지고 규제하기 때문에 예상치 못한 일들이 생겨서 특별한 경우를 제외하고 널리 사용하지는 않고 있다.
▸확장접근목록
  확장 접근목록은 
'access-list [100~199 OR extended] deny/permit protocol 출발지_ip 출발지_와일드마스크 목적지_ip 목적지_와일드마스크 eq 서비스(OR 포트)' 형식인데 접근목록 번호는 100~199 중에서 하나를 쓴다. 출발지, 목적지, 프로토콜과 서비스 등을 정밀하게 설정할 수 있기 때문에 대부분 이 방식을 사용한다. protocol에서는 뒤에 ftp, www와 같은 서비스가 있으면 tcp, ping과 같은 경우는 icmp, 호스트나 네트워크가 있으면 ip를 사용하면 된다. 

  확장 ACL 설정에서 다음의 것들을 알아두면 편리하다. 
① 주소를 처리할 때 다음과 같은 기법도 있으므로 주의한다.
▪ 출발지나 목적지 주소에 any를 써주면 와일드마스크를 써주지 않아도 되는데 any는 네트워크 내의 모든 호스트들을 의미한다.
Router(config)#access 100 permit ip any any ~ 는 와일드마스크로 표시해서
Router(config)#access 100 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 ~ 와 같다. =>any는 일반적으로는 0.0.0.0 0.0.0.0이지만 wildmask에서는 0.0.0.0 255.255.255.255를 의미한다.
▪ 그리고 하나의 호스트만 지정할 때에는 'host IP_주소‘로 해주면 되는데 
Router(config)#access 100 permit ip host 192.168.2.10 host 192.168.3.30 ~는 
Router(config)#access 100 permit ip 192.168.2.30 0.0.0.0 192.168.3.30 0.0.0.0 ~과 같다. 
=>‘host IP_주소’를 사용하면 와일드마스크를 써주지 않아도 된다.
▪ any와 host IP_주소를 섞어서 써도 되는데
Router(config)#access 100 permit ip host 192.168.2.29 any ~도 가능하다. 
Router(config)#access 100 permit ip 192.168.2.29 0.0.0.0 0.0.0.0 255.255.255.255 ~과 같다.
② 서비스나 포트 지정에서 
a. 서비스는 eq(equivalence) 뒤에 www, ftp, ...식으로 지정하고, 
b. 포트는 eq 뒤에 23식으로도 하지만 gt(greater than), lt(less than), range를 사용해서 gt 20, lt 20, range 21-100이나 range 20,23,80식으로 지정해도 된다. 
Router(config)#access-list 100 deny tcp 192.168.2.10 0.0.0.0(OR host 192.168.2.10) any eq ? 하면 사용할 수 있는 서비스 목록과 포트번호 지정을 보인다. 
c. 또 어느 서비스에 대해서 디폴트 포트 이외에 다른 포트를 사용한다면, 예를 들어 웹 서버에 디폴트 80번 포트 외에 8080을 사용한다면 
Router(config)#access-list 100 permit tcp 192.168.2.0 0.0.0.255 192.168.1.20 0.0.0.0 eq 8080식으로 해주면 192.168.2.0 네트워크상의 모든 노드들은 192.168.1.20 웹 서버 호스트에 8080 포트로 접속할 수 있게 된다.
③ 프로토콜 지정에서 www는 TCP 프로토콜이고 DNS는 TCP/UDP를 사용한다는 것 등도 알고 있어야 한다. 필터링하고 싶은 것이 무엇인지 그리고 그 서비스를 지원하는 프로토콜이 무엇인지 정확히 지정해 주어야 한다. 프로토콜 설정은 
▪ IP 주소나 네트워크를 규제할 때에는 ip를 쓰고, 
▪ www, ftp, telnet, ...식의 서비스에서는 tcp를 쓰고, 
▪ ping, tracert, ... 식의 서비스에서는 icmp를 쓰면 된다.
④ 그리고 모든 접근목록 끝에 암묵적으로 deny any any가 있는 것을 꼭 풀어줘야 한다는 것을 다시 한 번 기억하자. 괜히 다른 호스트들의 서비스까지 막힐 수 있다. 맨 아래에  
Router(config)#access-list 100 permit tcp any any식으로 추가해주면 된다. 
⑤ ACL 설정에서 맨 뒤에 established를 써주면 입력되는 TCP 패킷에 ACK나 RST 비트(ACKnowledge와 ReSeT)가 설정되어져 들어올 때만 매치되어 적용된다는 뜻이다. 예를 들어 
Router(config)#access 100 permit tcp any 192.168.0.0 0.0.255.255 established 하면 출발지 누구라도(any) 목적지 192.168.0.0 네트워크로 들어오는 패킷에 위협이 되는 ACK나 RST 플래그 비트가 설정되어져 있으면, 먼저 Request를 이 네트워크에 보내서 허용한다는 Reply를 받아야만 연결시킨다는 의미이다. 대부분 이런 ACK나 RST 플래그가 설정되어 들어오는 패킷은 타겟 시스템을 다운 시킬 수도 있으므로 패킷에 이들 플래그가 있으면 거부하는 것이 보안에 유용하다. 쉽게 말하면 established는 연결요청을 확인받은 뒤 연결시키겠다는 의미이다.

  Telnet 접근목록
  텔넷 접근목록(line vty 0 4)은 표준 ACL(출발지 주소나 네트워크로 규제)로 지정한다.