┌─ 트래픽 필터링
├─ Established 필터링
├─ Dynamic ACL
├─ Reflexive ACL
├─ CBAC
├─ IP Fragments 공격 방지
└─ ICMP Flooding 공격 방지
[IP Fragments 공격 방지]
IP 프로토콜은 MTU크기(1500Byte)가 초과할 때, 데이터를 분할하여 전송한다. 예를 들어, 데이터 크기가 5000Byte면, 1500Byte, 1500Byte, 1500Byte, 500Byte로 나누어 전송하는 것이다.
그러나 이 특성을 이용하여 IP 헤더를 조작한 뒤 분할된 패킷을 특정 서버에 무한으로 전송시킨다. 지속적으로 분할된 패킷을 받는 서버는 서버 연결이 불안정해지고, 서버가 다운되는 문제가 발생한다.
이러한 문제는 라우터에서 분할된 패킷을 필터링하면 쉽게 해결할 수 있다.

R2는 외부에서 분할된 패킷이 들어오는 것을 막아야 한다.
설정을 하기 전, R1에서 R3로 분할 패킷 보내는 것을 디버깅해보자.
(디버깅은 아래의 명령어 참고)
R1(config)# access-list 110 permit icmp any any R1(config)# exit R1# debug ip packet 110

4000Byte를 보내면, 패킷을 분할 후 보내는 것을 확인할 수 있다.
[설정]
– R2에서 분할 패킷 필터링 설정.
R2(config)# ip access-list extended Fragments_Deny R2(config-ext-nacl)# deny ip any 6.6.6.0 0.0.0.3 fragments R2(config-ext-nacl)# deny ip any 192.168.20.0 0.0.0.255 fragments R2(config-ext-nacl)# permit ip any any R2(config-ext-nacl)# exit R2(config)# R2(config)# int fa0/0 R2(config-if)# ip access Fragments_Deny in
[확인]
– R1에서 R3로 분할 패킷 전송하면 응답이 없다.

– R2에서 패킷 4개가 차단된 것을 확인할 수 있다.

[ICMP Flooding 공격 방지]
트러블슈팅할 때, 기본적으로 확인해보는 것 중 하나가 PING 테스트다. 이 PING이 바로 ICMP를 이용한다. ‘ICMP Echo’ 요청 메세지를 전송하면, ‘ICMP Reply’ 응답 메세지를 전송한다. ICMP Flooding 공격은 이 동작 과정을 이용한다. ‘ICMP Echo’ 요청 메세지를 무한으로 전송해 목표 대상에게 서비스 거부, 서버 다운 문제를 야기시킨다. 앞전에 살펴본 트래픽 필터링으로 ICMP를 거부하거나 QoS Policing을 이용해 ICMP 용량을 제한하여 막을 수 있다.

R2는 외부로부터 오는 ICMP를 차단해야 한다.
[설정]
R2(config)# access-list 110 permit icmp any any echo R2(config)# access-list 110 permit icmp any any echo-reply R2(config)# R2(config)# int fa0/0 R2(config)# rate-limit input access-group 110 128000 8000 8000 conform-action transmit exceed-action drop
[확인]
– R1에서 R3로 8000Byte 패킷 전송

– R2에서 rate-limit 확인
