Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

layer 3

[CISCO Network Security] 4장 트래픽 필터링 본문

CISCO Networks/Security

[CISCO Network Security] 4장 트래픽 필터링

뿅뿅뽁 2018. 7. 1. 13:37

안녕하세요 뿅뿅뽁입니다.


1,2장에서는 보안 개요를 보았고 3장에서부터는 장비 및 실제로 보안기법을 적용하는법을 배우고 있습니다.


네트워크에 허가받지 않고 접근하는 것을 막는 가장 쉽고, 효과적인 방법은 바로 진입로에서 트래픽을 필터링하는 것입니다. 


오늘은 시스코 라우터에서 여러 필터랑 방법을 포스팅 해보겠습니다.


우리는 필터링을 어떻게 하는지 알고 있습니다. 출발지, 목적지 IP 주소와 포트를 이용합니다. 그러나 이것들만 가지고는 세밀한 제어가 힘듭니다. 좀 더 자세히 조사하고 연결상태를 유지해야 하고, 이러한 고급 기능들을 지원하려면 라우터 또는 방화벽이 프로토콜의 내부를 깊숙히 이해해야 합니다.


1. 접근목록(ACL)


위에서 말했듯이 데이터 흐름을 제어하는 것은 보안에 있어서 매우 중요합니다. ACL은 라우터에서 정의한 필터들로 구성되고, 각 필터는 비교 검사를 수행하여 인터페이스를 지나가는 패킷을 허용하거나 거부합니다. 이러한 패킷을 허용하거나 금지하는 과정을 패킷 필터링이라고 합니다. 필터링하는 데 필요한 정보는 출발지,목적지 IP, 프로토콜 종류, 포트, 서비스 등이 있으며 이 정보는 일반적으로 3계층 4계층에 포함돼 있습니다.


ACL을 정의했으면 접근 제어를 할 인터페이스에 적용해야 합니다. 그리고 트래픽은 나가기도 하고 들어오기도 하니 인바운드 규칙과 아웃바운드 규칙을  지정해줘야 합니다. ACL은 라우터만 있는것이 아니라 윈도우 방화벽에도 비슷하게 있습니다. 


Routing and Switching에서 해본 ACL이 어떻게 동작하는지 다시 보겠습니다.


access-list 1 permit 192.168.10.15

access-list 1 permit 192.168.10.16

access-list 1 deny 192.168.10.17


이것을 serial 0에 인바운드 규칙을 적용했다고 가정해보겠습니다.


serial 0에 192.168.10.15와 192.168.10.16에서 온 패킷이 들어오면 허용하고 192.168.10.17에서 온 패킷이 들어오면 거부할 것입니다.

이 줄 끝에 access-list 1 deny any 를 적으면 맨 위에 2개를 제외한 나머지 패킷들은 거부될 것입니다.


ACL 동작은 여기까지만 하겠습니다.


만약 CCNA, CCNP까지 취득하셨다면 access-list를 0~199번 까지밖에 만들지 않으셨을 겁니다. (대부분 그렇습니다 ^^;)


그 이유가 아래 표에 있습니다.


표준 IP는 IP주소만 있는것, 확장 IP는 포트 등이 있는 것입니다. 그래서 R&S에서 ACL을 설정할때 1,10,101 이렇게 만들었던 것입니다.


몇가지 유형만 조금 알아보겠습니다.


1.1 표준 IP ACL ( 1~99 )


표준 IP는 출발지 주소만을 검색하는 기본적인 ACL입니다.


문법은 이렇습니다.


access-list 리스트번호 permit/deny [와일드카드마스크] [log]


여기서 와일드카드마스크는 중요하니 잠시 집고 넘어가겠습니다.


와일드카드 마스크는 사람들이 서브넷 마스크와 혼동하는 경우가 많습니다.


와일드카드마스크의 목적은 IP 주소의 얼마나 많은 비트가 서브넷 부분에 속하는지를 나타내는데 있습니다.


잘 이해가 안가실거 같아서 책에 있는 예를 적어 보겠습니다.


출발지 주소    10101100.0001000.10000010.01000110  = 172.16.130.77

서브넷 마스크 11111111.11111111.1111111.00000000 = 255.255.255.0

서브넷          10101100.00010000.10000010.00000000 = 172.16.130.0


여기서 와일드카드 마스크를 포함하면


출발지 주소    10101100.0001000.10000010.01000110  = 172.16.130.77

서브넷 마스크 11111111.11111111.1111111.00000000 = 255.255.255.0

서브넷          10101100.00010000.10000010.00000000 = 172.16.130.0

Wildcard       00000000.00000000.00000000.11111111 = 0.0.0.255


서브넷과 반대입니다. 


access-list 5 deny 172.16.130.0 0.0.0.255는 172.16.130.0~172.16.130.255 범위의 IP를 deny 하겠다는 뜻입니다.


이번에는 log를 보겠습니다.


log 키워드를 ACL에 포함시키면 일치하는 트래픽을 로그로 기록합니다.


로그 메시지는 콘솔, 메모리, syslog 서버로 전송됩니다.


인터페이스에 적용하는 법은 인터페이스에 들어가서 ip access-group 리스트번호 in/out 입니다.


1.2 확장 IP ACL (100~199)


확장 ACL은 좀더 복잡합니다.


access-list 리스트번호 permit/deny protocol source source-wildcard [operator source-port] destination destination-wildcard [operator destination-port] [precedence precedence-number] [tos tos] [established] [log/log-input]


여기서 []은 생략하셔도 됩니다.


쉽게말해 출발지 목적지 IP, permit/deny는 필수고

포트번호, 우선순위, 서비스 종류, 로그는 선택입니다.


1.3 이름 접근 목록


access list를 만들수있는 번호는 0~99, 100~199. 즉 100개입니다. 소규모에서는 사용하기에 충분한 양이지만 대규모 네트워크에서는 사용하는데 부족할 수 있습니다. 이 때 사용할 수 있는 것이 이름 접근 목록입니다. 이름 접근 목록은 일반 ACL보다 관리하기 편하다는 장점이 있습니다.


바로 사용법을 예로 들어보겠습니다.


ip access-list extended filter_tx

permit tcp any 172.16.0.0 0.0.255.255 established

permit tcp any host 172.17.11.19 eq smtp

exit


적용은 숫자 ACL과 동일합니다.


1.4 ACL 편집


이름 접근 목록은 수정이 편하지만 숫자 접근 목록은 중간에 있는 하나를 수정할려면 전체를 삭제하고 다시 해야합니다. 하지만 TFTP 프로토콜을 이용하면 그럴 필요가 없습니다. TFTP를 사용하면 저희가 만든 설정 내용을 서버에 텍스트 파일로 저장 할 수있습니다. 이 텍스트 파일을 수정하셔도 되고, 새로운 설정을 TFTP로 복사하여 병합하셔도 됩니다.


TFTP 서버에서 설정내용을 불러오기는 간단합니다. copy tftp running-config 를 치시면 됩니다.

이 명령을 치시기 전에 반드시 이전 ACL를 삭제하셔야 이전과의 병합을 피할 수 있습니다.



지금까지 ACL을 알아보았습니다. 편하고 유용하지만 기능이 제한되있어 취약점이 많습니다. ACL에 있는 문제점들과 해결하는 방법을 살펴보겠습니다.


2. 자물쇠-열쇠 접근 목록 (100~199)


자물쇠-열쇠 접근 목록은 동적 접근 목록이라 부르기도 합니다. 동적 접근 목록이 무엇이냐면 쉽게 말해 도어락으로 예를 들어보겠습니다. 


집에 공사를 하게 되어 인부들이 자주 왔다갔다 해야 하는데 매번 주인에게 허락받고 열어 달라고 할 수 없습니다. 그래서 주인에게 인부라는 인증을 받고 임시 도어락 번호를 얻어 그 기간 동안 자유롭게 왔다갔다 할 수 있게 해줍니다.


기존 ACL은 관리자가 변경하지 않는한 바뀌지 않지만 동적 접근 목록은 라우터에 인증을 한 후 일정 기간동안 permit 되고 수명이 다 되면 라우터 인터페이스는 원래대로 회복되는 형식입니다. 인증은 TACACS+나 RADIUS, AAA같은 서버를 사용 할 수도 있습니다.


문법은 아래와 같습니다.


access-list access-list-number [dynamic dynamic-name[timeout minutes]] deny/permit protocol source source-wildcard destination destination-wildcard[precedence precedence] [tos tos] [established] [log/log-input] 입니다


적용 방법은 동일합니다.


이 방법의 위험은 클라이언트가 NAT 뒤에 있을 때 입니다. 외부 주소를 사용하는 클라이언트 사이트의 다른 여러 사용자도 한번 인증된 ACL을 통과할 수 있기 때문에 이것은 심각한 보안 문제를 초래합니다. 그리고 만료 시간을 지정하지 않을 경우는 라우터를 재부팅할 떄 까지 열려있기 떄문에 보안에 구멍이 생기지 않도록 예방 조치를 취해야 합니다.


3. 재귀 접근 목록


재귀 접근 목록은 IP 상위 계층 세션이 내부 네트워크로부터 시작되어 외부 네트워크로 전송될 때 사용된다. 


쉽게 말씀드리면 내부에서 나가는 트래픽은 다시 돌아올 때 IP 상위계층 세션을 비교하여 일치하면 동적으로 트래픽을 허용하는 것입니다. 동적 접근 목록과 비슷한 방법입니다. 재귀 접근 목록은 암시적으로 deny all을 포함하지 않습니다. 왜냐하면 재귀 ACL를 처리하면 다른 ACL을 처리하기 떄문입니다.


문법은 다음과 같습니다.


permit protocol source source-wildcard destination destination-wildcard reflect name [timeout seconds]


적용 방법은 동일합니다.


하지만 재귀 접근 목록은 다수의 채널 애플리케이션을 다룰 수 없습니다. 이러한 제약은 기업에서 문제가 될 수 있는데요


그래서 나온 것이 CBAC입니다.


4. CBAC : 컨텍스트 기반 접근 제어(Context-based Access Control)


CBAC는 외부로 나가는 세션을 검사하여 그 태리팩에 대한 응답 트래픽을 위한 임시 항목을 만듭니다. 이는 재귀 접근 목록과 일치합니다. 그러나 CBAC는 다양한 애플리케이션 계층 정보를 검사하고 안전하게 다룬다는 차이가 있습니다. 


CBAC가 사용하는 검사법은 상태 감시 검사법이라하고 각 연결의 상태를 끊임없이 모니터링 해줍니다.


CBAC는 네트워크와 전송 계층, 애플리케이션 계층 프로토콜까지 검사하여 TCP 또는 UDP의 세션 정보를 얻습니다.


그러나 CBAC는 몇가지 제한이 있습니다.


첫번째. 출발지/목적지 주소가 라우터의 주소로 설정된 패킷은 검사하지 않습니다. TCP,UDP패킷만을 검사하기 때문에 라우터가 주고 받는 패킷은 검사하지 못합니다.

두번째. IPSec트래픽을 검사할 수 없습니다. IPSec 트래픽을 검사해야 한다면 라우터를 IPSec 터널 종단으로 설정해야 합니다.


4.1 CBAC 절차


CBAC에 절차에 대해 간략하게 설명하겠습니다.


첫번째. 외부로 나가는 패킷이 라우터에 도착하면 라우터는 아웃바운드 접근 목록을 이용해 패킷을 검사하고, 허용하면 CBAC가 트래픽을 검사합니다.


두번째. CBAC 검사 과정동안, 출발지와 목적지 IP주소와 포트 번호를 포함한 정보가 기록됩니다. 이 정보는 새 연결을 위해 생성된 상태 테이블 항목에 기록됩니다.


세번째. 상태 정보를 기반한 임시 접근 목록 항목이 생성됩니다. 이 접근 목록 항목은 인바운드 트래픽을 필터링 하도록 설정되어 있는 확장 접근 목록의 맨 앞에 위치합니다.


네번째. 이 임시 접근 항목은 앞에서 감사한 아웃바운드 패킷과 같은 연결에 속한 인바운드 패킷을 허용하도록 되어 있습니다. 이제 아웃바운드 패킷이 인터페이스 밖으로 빠져나갑니다.


다섯번째. 응답 패킷이 돌아오면 인바운드 접근 목록의 검사를 받게 되는데 CBAC가 만든 임시 접근 항목이 있기 때문에 접근이 허용됩니다. CBAC가 필요할 경우 상태 테이블과 인바운드 접근 목록을 수정합니다.


여섯번째. 이후 전송되는 모든 인바운드와 아웃바운드 트래픽은 이 접근 항목과 비교되고 필요할 경우 계속 수정됩니다.


일곱번째. 연결이 닫히면 상태 테이블 항목과 임시 접근 항목이 삭제됩니다.


4.2 CBAC 설정


자세한 설정은 다루지 않을거라 세세하게는 적지 않겠습니다.


설정과정은 인터페이스 선택 -> 접근 목록 설정 -> 전역 만료 시간값과 임계값 설정 -> 검사 규칙


4.3 검사 규칙과 적용


문법은 다음과 같습니다.


ip inspect name inspection-name protocol [alert on/off] [audit-trail on/off] [timeout seconds]


적용하는 방법은 예를 들어 설명하겠습니다.


Java 블로킹을 예를 들면 다음과 같습니다.


access-list list-number permit/deny source-address [wildcard-mask] [log]


ip inspect name inspection-name http [java-list access-list] [alert on/off] [audit-trail on/off] [timeout seconds]


구성 내용을 보는 명령어는 다음과 같습니다.


전체 : show ip inspect config      인터페이스 : show ip inspect interfaces


5. 포트 애플리케이션 매핑 설정


CBCA는 좋은 프로토콜이지만 표준포트에서만 동작하는 서비스만을 제어할 수 있다는 단점이 있습니다.


예를 들어 HTTP 포트(80)가 아닌 포트에서 동작하는 웹 서버로 가는 트래픽을 검사하거나 보호하는 것이 불가능합니다.


그래서 나온 것이 포트 애플리케이션 매핑입니다. 매핑은 네트워크 서비스 또는 애플리케이션이 사용하는 TCP나 UDP 포트를 커스터마이징 할 수 있도록 해줍니다.


포트 애플리케이션 매핑(PAM)은 지금까지 배운 트래픽 필터링 기법과 같이 사용하거나 따로 사용해서 사설 네트워크, 인터넷에 연결된 네트워크 보호하는데 사용 할 수 있습니다. 


4장은 트래픽 필터링에 대해서 배웠고 5장에서는 NAT/PAT에 대해서 배워보겠습니다.