1. URL Filter 구현
- 내부 사용자들이 회사 정책에 위반되는 웹 사이트에 접근하는 것을 차단하기 위해서 URL 기반으로 Filtering 정책을 구현하는 것이 가능하다.
- Inside에서 Outside로 향하는 트래픽 중 URL이 peemangit.tistory.com인 트래픽을 차단하려고 한다.
parameter-map type urlfilter Deny_URL
Deny_URL이라는 이름의 urlfilter 파라미터 생성
exclusive-domain deny .peemangit.tistory.com
peemangit.tistory.com URL을 차단
다른 사이트도 추가하고 싶으면 exclusive-domain deny 명령어를 여러 번 쓰면 된다.
exclusive-domain permit .*
나머지 모든(*) URL은 허용한다.
1. URL Filtering 설정
<IOS_FW> conf t parameter-map type urlfilter Deny_URL exclusive-domain deny .peemangit.tistory.com exclusive-domain permit .* allow-mode on ! |
2. Inside → Outside로 URL Filtering 지정
- zone pair는 1개밖에 설정할 수 없으므로 기존 zone pair에 추가해 주어야 한다.
- zone pair에 Policy-map에 추가하므로 기존 Policy-map에 Class-map을 추가해 주면 된다.
<IOU_FW> class-map type inspect HTTP_Class match protocol http ! policy-map type inspect IN->OUT_Policy class type inspect HTTP_Class inspect urlfilter Deny_URL ! |
- show runningconfig | section policy-map type inspect IN->OUT_Policy 명령어를 통해 설정이 잘 적용되었는지 확인한다.
- Policy map도 ACL과 동일하게 하양식 검사를 수행하므로 앞서 설정한 IN->OUT_Class Class map에 의해서 모든 트래픽이 허용되고 아래 URL 필터 옵션은 무시된다.
- URL 필터를 적용한 후 모든 트래픽이 이동할 수 있도록 수정해야 한다.
- 모든 트래픽 허용 Class map을 아래로 이동시키기 위해서 삭제 후 재 생성한다.
<IOU_FW> conf t policy-map type inspect IN->OUT_Policy no class type inspect IN->OUT_Policy class type inspect IN->OUT_Policy !
|
URL Filter Confing 파일
새로운 정책을 추가하는 경우 주의사항
1. Zone-Pair에 적용될 수 있는 Policy-map은 하나만 가능하기 때문에 기존에 적용된 Policy-map에 정책을 추가해야 한다.
2. 하나의 Policy-map에 다수의 정책들이 설정되어 있는 경우 하향식으로 처리된다. 때문에 좁은 범위의 정책을 반드시 먼저 설정해야 한다.
2. Dos 공격 완화 기법
- 특정 Zone에서 다른 Zone에 위치한 서비스 접근 시 IOS_FW에서 해당 서비스에 대한 세션 숫자를 제한하는 것이 가능하다.
- Outside에서 DMZ에 위치한 웹 서버에 연결 시 접속이 가능한 최대 세션 숫자를 6개로 제한하려고 한다.
<IOS_FW> conf t parameter type inspect SESSION_CON session maximum 6 exit policy-map type inspect OUT->DMZ_Policy class type inspect WEB_SVR inspect SESSION_CON ! |
- inspect parameter-map의 경우 최대 세션의 숫자 / TCP, UDP, ICMP 등의 Idle-time / Log 발생 여부 등을 설정하는 것이 가능하다.
3. Throughput 제한 (QoS Policing 사용)
- QoS의 Policing 기법을 사용하여 특정 Zone에서 다른 Zone으로 전송되는 트래픽 양을 제한하는 것이 가능하다.
- Outside에서 DMZ로 전송되는 ICMP의 양을 초당 1000Byte로 제한하려고 한다.
1. ICMP 패킷 허용
<IOS_FW> conf t class-map type inspect ICMP_Class match protocol icmp ! policy-map type inspect OUT->DMZ_Policy class type inspect ICMP_Class inspect ! |
- Kali_Linux에서 DNS Server로 ICMP 패킷이 이동이 가능하다.
2. ICMP 8000bit 제한 설정
police rate 8000 burst 1500
초당 8000bit를 허용한다.
burst 값은 8000 * 1/8 * 1.5를 통해서 1500으로 지정한다.
policy-map type inspect OUT->DMZ_Policy class type inspect ICMP_Class inspect police rate 8000 burst 1500 ! |
- CE 라우터에서 빠른 속도로 ICMP 패킷을 보낼 경우 8개씩 보내고 중간에 끊기는 것을 확인할 수 있다.
- Kali Linux에서 hping3로 icmp flooding공격을 수행한다.
- IOS_FW 라우터를 확인하면 패킷들이 Drop 된 것을 확인할 수 있다.
DPI(Deep Packet Inseption)
- 전통적인 방화벽의 경우 L3(IP주소) / L4(포트번호) 정보를 기반으로 Filtering을 수행한다.
- 오늘날의 방화벽의 경우 일정 수준까지는 Application 계층 정보를 검사하는 것이 가능하다. 이러한 기능을 DPI라고 한다.
- 방화벽에 DPI 기능이 활성화되어 있지 않다면 공격자가 허용된 포트를 사용하여 포트를 우회하는 것이 가능하다.
<SW3> conf t
<CE> conf t
<IOS_FW> |
- 명령어 입력 후 Outside의 클라이언트 PC에서 telnet 1.1.100.5 80 명령어를 입력하면 포트 우회를 통해 허용되지 않은 DMZ 구간 Telnet 접근이 가능하다.
- 이와 같은 상황이 가능한 이유는 기본적으로 방화벽은 L3 / L4 정보만 확인하기 때문이다.
- 이를 방지하기 위해서는 DPI 기능을 구성하여 Application 계층 정보도 검사 대상에 포함시켜야 한다.
DPI 설정 방법
- Outside에서 DMZ로 전송되는 웹 트래픽 중 포트 우회를 시도하는 패킷들을 차단하고 peemangit.tistory.com으로 접속하려는 경우 Log 메시지를 발생시키려고 한다.
1. L7(DPI) Class map을 생성 후 트래픽을 분류
2. L7(DPI) Policy map을 생성 후 정책을 정의
3. L3/L4 Policy map에 위에서 생성한 L7 Policy map을 호출
4. Zone pair에 L3 / L4 Policy map을 적용
1. L7(DPI) Class map을 생성 후 트래픽을 분류
- Class map을 생성하기 전에 HTTP Request 정보를 확인해보면 정형화된 형식이 있는 것을 확인할 수 있다.
- policy-map type inspect 뒤에 프로토콜 이름이 있다면 L7 정책이다.
class-map type inspect http match-any L7_HTTP_Class
http(L7) Class map을 L7_HTTP_Class라는 이름으로 생성한다.
match request port-misuse any
이상한 포트 번호가 있을 경우
match req-resp protocol-violation
이상한 정보가 있을 경우 (패킷 형태 확인)
parameter-map type regex HTTP_URI
pattern .*peemang
정규식 파라미터에 peemang으로 시작하는 url이 있을 경우를 설정한다.
match request header host regex HTTP_URL
HTTP header의 host값이 HTTP_URL(peemang으로 시작) 일 경우
<IOS_FW> conf t class-map type inspect http match-any L7_HTTP_Class1 match request port-misuse any match req-resp protocol-violation ! parameter-map type regex HTTP_URI pattern .*peemang ! class-map type inspect http L7_HTTP_Class2 match request header host regex HTTP_URL ! |
2. L7(DPI) Policy map을 생성 후 정책을 정의
- HTTP_Class 1(이상한 포트와 구조) 일 경우 연결을 차단하고 로그를 생성한다.
- HTTP_Class2(peemangit.tistory.com에 접속) 일 경우 로그만 출력한다.
<IOU_FW> policy-map type inspect http L7_HTTP_Policy class type inspect http L7_HTTP_Class1 reset log exit class type inspect http L7_HTTP_Class2 log exit ! |
3. L3/L4 Policy map에 위에서 생성한 L7 Policy map을 호출
service-policy http L7_HTTP_Policy
L7_HTTP_Policy를 DPI로 설정한다.
<IOU_FW> policy-map type inspect OUT->DMZ_Policy no class type inspect WEB_SVR class type inspect HTTP_Class inspect service-policy http L7_HTTP_Policy |
4. Zone pair에 L3 / L4 Policy map을 적용
- Zone pair 설정은 이전에 설정했으므로 Policy map에 추가만 하면 된다.
5. 설정 확인
- Kali Linux에서 80번 포트로 접속하면 차단된다.
- IOS_FW 라우터를 확인해 보면 로그가 발생한다.
'Network > CIsco Router FW' 카테고리의 다른 글
[Firewall] ZFW(Zone-base Firewall) / ZPF (Zone-based Policy Firewall) 설정 (0) | 2019.11.22 |
---|---|
[Firewall] CBAC(Context-Based ACL) 설정 (0) | 2019.11.21 |
[Firewall] DACL(Dynamic ACL) 설정 (0) | 2019.11.21 |
[Firewall] Extended ACL 방화벽설정 추가기능들 (0) | 2019.11.20 |
[Firewall] ACL Established, RACL 설정 (0) | 2019.11.20 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊