사이트 내 전체검색
[linux] 서비스 거부 공격과 대책
로빈아빠
https://cmd.kr/server/414 URL이 복사되었습니다.

본문

서비스 거부 공격과 대책

서론
최근 인터넷 등 가상공간(Cyber space)에서의 테러가 문제시 되고 있다. 최근 외신에 의하면 미국의 인터넷 제공업체인 패닉스는 1996년 9월에 무차별 전자우편 공격이 가해져 서비스에 차질뿐만 아니라, 도산 지경에 이르고 있다고 보도되고 있다. 전자우편 공격은 익명의 발신자 전자우편을 지속적으로 보내게 되면, 시스템이 전자우편 처리에 모든 프로세스를 소비하거나, 하드디스크를 사용할 수 없게 만든다. 이러한 공격을 하는 "유나메일러(Unamailer)"라는 별명의 폭탄테러 공격자로 말미암아 미국의 클린턴 대통령, 빌게이츠 등 유명 인사에 대한 테러가 이루어지기도 하였다. 우리나라에서도 1996년 초 포항공대에 메일공격( Mail Storm)이 일어났었다.
공식적으로는 서비스거부(Denial of Service) 공격이라고 하며, 시스템자원에 대한 정상서비스를 방해하는 것이다. 즉, 프로세스, 디스크, 프린터, 모뎀 등의 시스템자원에 대한 공격으로 결국 서비스를 저해하거나 잃어버리게 하는 것이다. 이 공격은 3가지 형태로 나눌 수 있는데, 자원의 파괴로 손상을 입히는 경우와 시스템이나 네트워크 서비스에 과부하를 걸어 장애를 유발하는 경우이다.

파괴 공격
먼저 파괴 공격의 종류와 대책은 다음과 같다.
파괴공격 형태 | 설명 및 대책
디스크 파티션/포멧팅 | 단일사용자로 접근하는 것을 방지
시스템 파일 삭제    | 관리자로서 "# rm -rf /"명령을 실행하며, 데이터내의 모든 데이터를 지우거나 특정 파일을 지울 수 있다.
컴퓨터 전원 차단    | 물리적인 침입 차단이 필요하다
네트워크 접속 끊기  | 선로의 노출 차단등

과부하 공격
시스템과부하 공격에는 먼저 프로세스과부하 공격이 있다.
[그림1]을 보면 프로세스를 생성하는 프로그램이 무한정 지속적으로 수행된다. 이에 대한 대책으로서 사용자가 만들 수 있는 최대 프로세스(MAXUPROC) 수를 제한하면 된다.

프로세스 무한 루프 프로그램
main() { while(1) fork(); }

어떤 사용자는 CPU 타임이 많이 요구되는 프로세스를 실행할 수 있다. 예를 들어 grep 을 이용하여 많은 디렉토리를 대상으로 find 명령을 실행하는 사용자는 시스템 CPU를 많이 사용하게 된다. 사용자들이 이러한 작업을 백그라운드(Background)작업 으로 실행하되 대신 nice 명령을 이용하여 우선순위를 낮추어 실행하도록 교육시킨다. 시스템의 디스크를 과다하게 사용하는 공 격이 있다. 디스크의 독점을 막기 위해서 각 사용자들이 어느정도의 디스크를 사용하고 있는지 quot 명령을 통해 알 수 있다.
# quot -f /dev/sd0a /dev/sd0a (/) : 79838 4452 root 4487 294 bin ....... #

가상메모리 개념에 의해 메모리의 프로세스가 디스크의 스왑(swap) 공간에 저장되는데, 이때 스왑공간이 모자라 문제가 발생할 수 있다. 이 경우에는 단순히 스왑공간을 남는 증가하면된다. "swap -a" 이나 "swapon" 명령을 이용할 수 있다.

네트워크 서비스거부 공격
네트워크 서비스 과부하 공격은 네트워크에 대한 서비스요청으로 서버대몬(Daemon)을 오버플로우 시킴으로서 가능하다. 최근 논의되고 있는 "TCP SYNC FLOOD" 라는 공격은 다음과 같은 동작에 의해 공격을 한다.

(1) 공격자는 목표시스템에 TCP 접속을 원하는 SYNC를 보낸다. 단 이때 자신이 아닌 타 시스템의 IP어드레스로 위장하여 보낸다.
(2) 목표시스템은 위장된 제 3 자 시스템으로 응답(ACK) 를 보내면서 접속 준비가 되었음을 알린다.
(3) (1)과정이 무한 반복됨으로서 (2)과정이 무한 되풀이되고 이때 목표 시스템이 접속을 위한 큐가 계속적으로 메모리버퍼에 저장되면서 이큐의 제한된 크기로 인해 오버플로우, 즉 "FLOODING" 된다.

이러한 공격은 시스템서비스가 더 이상 외부의 정당한 접속을 받아들이지 못하게되는 것이다. 유사한 공격으로 메일폭탄(Mail Bomb, Mail Storm, Mail Flooding) 공격이 있다. 익명의 발신자로 위장하여 메시지를 무한정 보내면, 서버의 시스템은 메일을 받아 하드디스크스풀(Spool)에 저장하며 디스크자원과, 서버의 전자우편 프로세스를 낭비하며 과부하를 주는 공격이다. 존재하지 않는 수신자에게 메일폭탄을 보낸다면 서버시스템은 익명의 수신자에게 응답하여 에러메세지를 무한정 발행하여 시스템이 과부하에 걸리게 하는 방법이 있다.
이러한 공격에 대해서는 외부에서 들어오는 패킷을 필터링하여
- 발신지 IP 어드레스가 위장되었는지 확인하여 거부하거나,
- 역 DNS 매핑으로 등록된 어드레스(공식 어드레스) 인지 확인 거부등으로 공격을 감소시킬 수 있다.
이러한 공격에 대해 현재의 인터넷프로토콜에서는 근본적으로 해결할 수 없으므로, 라우터 등에서 발신지 어드레스 필터링으로 감소시키는 방법을 사용하는 것이다.

마지막으로 ICMP 공격이 있다. ICMP(Internet Control Message Protocol)은 인터넷프로토콜에서 문제가 생기면 보고해주는 프로토콜로서 예를 들어 네트워크 접속문제인 "Echo Reply", "Destination Unreachable" 혹은 네트워크 라우팅 문제 인 "Redirect" 등을 보고한다. 여기에서 잘 접속되어 있는 시스템이 문제가 있는 양 ICMP 메시지를 만들어 접속을 거부할 수 있으며, ICMP Rediect 를 의도적으로 만들어 네트워크 라우팅 자체를 혼란에 빠지게 할 수 있는 것이다. 외부에서의 ICM P 공격 시도를 방화벽(Firewall) 개념에서 모니터하거나 막을 수 있다.

댓글목록

등록된 댓글이 없습니다.

1,139 (10/23P)

Search

Copyright © Cmd 명령어 18.223.158.132