외부 ping(ICMP 프로토콜) 차단 설정하기

2022. 4. 19. 10:52[ 생각정리 ]

ICMP(Internet Control Message Protocol)

ICMP는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜로 네트워크 계층에 속한다. IP에는 오로지 패킷을 목적지에 도달시키기 위한 내용들로만 구성되어 있기 때문에 정상적으로 목적지 호스트에 도달하는 경우에는 IP에서 통신이 성공하고 종료되므로 아무런 문제가 없다. 만약 전달해야 할 호스트가 꺼져 있거나, 선이 단절된 경우와 같은 비정상적인 경우에 이 패킷 전달을 의뢰한 출발지 호스트에 이러한 사실을 알려야 하지만, IP에는 그러한 에러에 대한 처리 방법이 명시되어있지 않다.

 

이러한 IP의 부족한 점을 메꾸기 위하여 사용되는 것이 ICMP 프로토콜이다. ICMP는 해당 호스트가 없거나, 해당 포트에 대기중에 서버 프로그램이 없는 등의 에러 상황이 발생할 경우 IP헤더에 기록되어 있는 출발지 호스트로 이러한 에러에 대한 상황을 보내주는 역할을 수행하게 된다. 이러한 에러에 대한 상황(에러메시지, 코드)을 받게 된 출발지 호스트에서는 목적지 호스트에 대한 정보를 대충이나마 확인이 가능한 것이다.

 

 


 

PING 유틸리티

ping은 IP 네트워크의 문제를 해결하고자 등장한, ICMP 패킷을 활용하는 도구이다. 리눅스 서버를 구성할 때 보통은 핑(Ping)을 차단하지 않고 사용하는 경우가 많은데, 해킹 등의 목적으로 네트워크 침입이 발생한 경우 핑(Ping)을 통해 특정 서버가 살아있는지 확인하는 경우가 많기 때문에 특별히 이유가 없다면 서버에는 핑(Ping)을 차단하는 것이 좋다.

 

 

Linux에서 ICMP 패킷 차단 방법

1. proc 파일시스템을 직접 수정하는 방법 (Root 사용자가 조치 가능)

 

# Ping 차단
root@localhost:/# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Ping 허용
root@localhost:/# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

 

 

2. sysctl 커맨드를 사용하여 적용하는 방법 (Root 권한을 가진 사용자가 가능, sudo 이용 가능)

 

# Ping 차단
root@localhost:/# sysctl -w net.ipv4.icmp_echo_ignore_all=1

# Ping 허용
root@localhost:/# sysctl -w net.ipv4.icmp_echo_ignore_all=0

 

 

영구적으로 설정하기

 

위의 규칙을 영구적으로 만들려면 /etc/sysctl.conf 파일에 다음 줄을 추가한다.

net.piv4.icmp_echo_ignore_all = 1

 

 

 

 

Reference

https://m.blog.naver.com/rbdi3222/220602423771

- https://ko.linux-console.net/?p=2347

 

 

 

'[ 생각정리 ]' 카테고리의 다른 글

Project Offer Reference  (0) 2023.01.25