네트워크

스머프(smurf) 공격에 대해 알아보겠습니다.

forward error correction Circle 2024. 2. 23. 08:15
반응형

Ⅰ. 스머프 공격(Smurf attack) 이란?

스머프 공격(Smurf attack) 또는 스머핑이라고 불리며, 네트워크 공격의 한 형태로 분산 서비스 거부 공격을 합니다. 스머프공격은 ICMP (Internet Control Message Protocol)를 이용하여 수행됩니다. 이 공격은  "ICMP Echo Request" 메시지를 피해자의 네트워크 브로드캐스트 주소로 보내는 것으로 이루어집니다. 이때 공격자는 보통 스푸핑된 소스 IP 주소를 사용하여 대량의 ICMP Echo Request 메시지를 보냅니다. 이 패킷에 응답하고 패킷을 수신하는 네트워크의 기계 수가 매우 많다면 희생자의 컴퓨터는 트래픽으로 넘쳐나게 되고, 이로 인해 희생자의 컴퓨터는 동작이 불가능해질 정도로 느려지게 될 수 있습니다.

 

Ⅱ. Smurf 공격 단계
ⅰ) 공격자는 피해자의 네트워크 브로드캐스트 주소로 ICMP Echo Request 메시지를 보냅니다.
ⅱ) 이 ICMP Echo Request 메시지를 받은 모든 호스트는 이에 대한 ICMP Echo Reply 메시지를 보내려고 시도합니다.
ⅲ) 이에 대한 대량의 응답이 피해자의 네트워크로 돌아오게 됩니다.

이 과정에서 공격자는 공격 대상의 네트워크 대역대의 모든 호스트를 공격할 수 있으며, 이는 대량의 ICMP Echo Reply 메시지로 인해 대역폭 소모와 네트워크 리소스 고갈을 초래할 수 있습니다. 결과적으로 피해자의 네트워크는 서비스 거부 (DoS) 상태에 놓이게 됩니다.

 

Ⅲ. Smurf 공격 대응

 Smurf 공격은 ICMP 프로토콜을 이용한 공격이기 때문에 Direct Broadcast를 설정하여 차단에 대응 할 수 있습니다.

ⅰ) 라우터에서 Direct Broadcast 설정 방법

  (Config -id)# no ip dirceted-broadcast

 

ⅱ) 리눅스에서 ICMP 프로토콜 차단

[root@feccle ~]# cd /proc/sys/net/ipv4
[root@feccle ipv4]# ls *icmp*
icmp_echo_ignore_all               icmp_msgs_burst
icmp_echo_ignore_broadcasts        icmp_msgs_per_sec
icmp_errors_use_inbound_ifaddr     icmp_ratelimit
icmp_ignore_bogus_error_responses  icmp_ratemask
[root@feccle ipv4]# sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 // ICMP 에코 요청 메시지를 브로드캐스트 주소로 보낼 때 시스템이 해당 요청을 무시
net.ipv4.icmp_echo_ignore_broadcasts = 1
[root@feccle ipv4]# sysctl -w net.ipv4.icmp_echo_ignore_all=1 // 시스템이 수신된 모든 ICMP 에코 요청을 무시
net.ipv4.icmp_echo_ignore_all = 1
[root@feccle ipv4]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
^C
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3084ms

 

ⅲ) 리눅스 firewalld를 사용하여  ICMP차단
 ICMP를 차단하려면 다음 명령을 사용하여 ICMP 규칙을 추가하면 됩니다

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" protocol="icmp" reject'
sudo firewall-cmd --reload

 이렇게 하면 모든 ICMP 패킷이 차단됩니다. 필요에 따라 protocol="icmp" 부분을 변경하여 특정 유형의 ICMP 패킷만 차단할 수도 있습니다.

 

ⅳ) 리눅스 iptables를 사용하여 ICMP 차단
ICMP를 차단하려면 다음 명령을 사용하여 ICMP 규칙을 추가하면 됩니다

sudo iptables -A INPUT -p icmp -j DROP
sudo iptables-save

이렇게 하면 들어오는 모든 ICMP 패킷이 차단됩니다.

 

 

 

반응형