ping 을 이용한 DOS 공격 막는 방법을 적어 보자. kernel 에서 ping의
응답 즉, ICMP ECHO 를 on을 시키느냐 off 를 시키느냐에 따라 ping이
되느냐 안 되느냐이다. 보통 ping 을 막는 방법으로 많이 나오는 방법
은 kernel의 icmp_echo_ignore_all 값을 1로 만들어 주는 방법이 주로
알려져 있다.
하지만 kernel document 에 들어 있는 문서를 자세히 보면 ping 을 이
용한 dos 공격은 broadcast와 multicast service 의 패킷을 넘치게 하
는 공격인 것이다.
즉 ping을 다 막을 필요는 없고 broadcast 와 multicast 쪽의 ping 만
막으면 되는 것이다. 아래는 kernel 문서의 원문이다.
icmp_echo_ignore_all and icmp_echo_ignore_broadcasts
Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO
requests, or just those to broadcast and multicast addresses.
Please note that if you accept ICMP echo requests with a
broadcast/multicast destination address your network may be used
as an exploder for denial of service packet flooding attacks to
other hosts.
만약 모든 ICMP ECHO 요청을 커널이 무시하게 하거나, ICMP ECHO 요청
중 broadcast 와 multicast 주소에만 무시하게 할때 1의 값은 무시, 0
의 값은 return 을 하게 된다. 만약 boardcast/multicast 주소의 ICMP
ECHO 요청을 수용하게 한다면, network 가 다른 호스트로 denial of
service(DOS) packet flooding 공격을 하는데 이용이 될수가 있다.
즉 icmp_echo_ignore_all 의 모든 값을 1로 할 필요는 없다는 것이다.
즉 ping 이라는 것은 내가 외부에서 나의 host 가 살아 있는지의 판단
여부도 되기 때문이다. 그러므로
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
을 이용하는 것 보다는
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
를 이용하는 것이 더욱 낳다. 부팅시 마다 적용을 시키고 싶다면
rc.local 에 위의 내용을 넣어 주도록 한다.
RedHat 6.2 버젼 이상의 사용자들은 sysctl 을 kernel 값을 관리 할수
있다. 일단 /etc/sysctl.conf 에 다음의 값을 넣는다.
net.ipv4.icmp_echo_ignore_broadcasts = 1
파일을 저장한 후에 sysctl -w 명령을 실행하고 나서
sysctl -a | grep ignore_boradcasts
명령을 실행하면 값이 변경이 되었는지 확인을 할수가 있다. 다음 부터
는 부팅시 /etc/sysctl.conf 의 값이 적용이 된다.
'Security' 카테고리의 다른 글
DES/3DES/AES (0) | 2017.01.08 |
---|---|
스푸핑 (0) | 2017.01.08 |
해킹, 바이러스 감염 시 대응 요령 (0) | 2017.01.08 |
암호학 (0) | 2017.01.08 |
사용자 인증 (0) | 2017.01.08 |