1. 서 론
현재 네트워크 장비는 벤더들이 자사의 독점기술을 보유하고 있으며, 이에따라 타 벤더들간의 호환도 어려워 운영 자동화와 중앙 관리의 어려움, 효율과 비용문제, 개별처리로 인한 네트워크 복잡성 증가 등의 문제점을 가지고 있다. 이러한 문제점과 한계점을 극복하기 위해서 네트워킹 기술을 개방형 네트워킹 기술로 변화시키기 위해 OpenFlow라는 새로운 기술이 등장하였고, OpenFlow 기술을 기반으로 SDN (Software Defined Networking)이 빠르게 확장되고 있다. SDN은 기존 네트워크의 문제점을 해결하는 새로운 미래네트워크 솔루션으로 많은 연구가 진행되고 있다[1].
보안은 네트워크의 중요한 분야이다. 특히 DDoS (Distrubuted Denial of Service) 공격은 네트워크의 가용성에 대한 심각한 위협으로 대두되고 있다. [2]에서 조사된 DDoS 분석 보고서에 의하면 전세계 인터넷에 흐르는 공격을 3주 동안 탐지한 결과 68,000번 이상의 공격과 34,000개 이상의 공격대상이 있었음을 밝혀냈다. TCP의 3-way handshake 구조와 half-open 상태를 유지 하는데 있어 발생하는 취약점을 공격하는 SYN Flooding 공격은 대표적인 DDoS 공격 방법이다[3].
본 논문에서는 실시간 네트워크 모니터링 프로그램인 sFlow와 SDN의 구조적 장점을 이용하여 SYN Flooding 공격패킷의 방어기법을 제안한다. 공격 패킷 탐지를 위해 특정 서버의 Backlog queue가 70% 이상 점유되면 sFlow를 이용하여 전체 네트워크 스위치에서 서버의 주소로 이동하는 SYN 패킷을 샘플링 하여 분석한다. 정상적인 TCP 트래픽과 공격트래픽의 구분을 위해 공격자는 정상이용자 보다 많은 SYN 패킷을 발생 시킨다는 점을 이용한다. Backlog queue의 가용 가능한 크기가 허용할 수 있는 TCP 연결의 수를 이용하여 임계치를 결정하고, 특정 출발지 주소에서 임계치 이상의 패킷이 송신되면 이를 컨트롤러에게 알리고 공격자 주소를 출발지 주소로 가지는 패킷을 차단하도록 전체 네트워크 스위치의 플로우 테이블을 변경하여 공격 패킷을 차단한다.
본 논문의 순서는 다음과 같다. 2장에서는 관련연구에 대해 설명하고 3장에서는 제시하는 설계 및 구현에 관해서 설명하며, 4장에서는 테스트베드에서 실험한 결과를 분석한다. 5장에서 결론 및 향후연구에 대해서 기술한다.
2. 관련연구
[4]에서는 sFlow와 오픈소스 IDS인 Snort를 이용하여 네트워크 공격 탐지기법을 제안하였다. 각 스위치를 지나는 트래픽을 sFlow agent를 통해 샘플링하여 sFlow collector로 트래픽 정보를 보내고 sFlow collector에서는 sFlow Toolkit을 활용하여 수집된 데이터를 Snort가 처리할 수 있는 pcap 파일로 변환하여 Snort로 전송한다. Snort는 미리 저장된 룰을 이용해 트래픽을 분석하며, 공격을 탐지할 경우 알람을 발생시켜 공격을 인지한다. 이 논문은 SYN Flooding 공격을 탐지하는 실험을 수행하였고 Snort 구축을 위한 별도의 장비가 필요하지만 본 논문에서 제안한 기법은 SDN 구조를 이용하여 별도의 장비를 설치하지 않고 공격 탐지와 공격트래픽을 차단하는 방법에 대해 제시하였고 서버의 Backlog queue를 먼저 모니터링 하여 sFlow를 이용한 불필요한 모니터링 시간을 줄여 자원소모를 줄일 수 있다.
[5]에서는 DDoS 탐지를 위해 Self-Organizing Maps(SOM) 기계 학습을 사용한다. 이 방법으로 SOM은 OpenFlow 스위치로부터 수집된 플로우에 의해 학습된다. SOM 학습을 위해 필요한 파라미터는 평균 플로우당 패킷, 평균 플로우당 바이트, 평균 플로우당 지속시간, pair 플로우의 백분율, 단일 플로우의 증가, 단일 포트의 증가이다. 이를 이용해 학습 된 정보를 바탕으로 플로우를 분석하여 공격여부를 탐지하는 기법을 제안한다. 이 논문은 공격 패턴을 학습하는 단계의 과정이 필요하고 네트워크 환경의 변화에 따른 재학습 과정이 필요하다. 또한 플로우 기반의 파라미터 측정은 스위치의 많은 TCAM 자원을 소모하지만 본 논문에서 사용하는 sFlow는 스위치에서 소비되는 자원을 최소화 한다.
[6]는 OpenFlow와 sFlow를 활용하여 SYN Flooding 공격을 방어하는 방법을 제시하였다. 공격 패킷의 탐지범위를 전체 네트워크 스위치로 확대하고 임의로 정한 임계치를 초과하면 차단한다. 전체적인 방어 시스템을 제안하였으나 공격 패킷과 정상 패킷을 구분하는 방법에 대해 기술하지 않았고 임계치를 임의의 값으로 제시하였다. [4]과 마찬가지로 sFlow에 의한 모니터링을 항상 필요로 하여 자원소모가 심하고 공격 트래픽을 차단하기 위한 플로우 테이블 정책을 변경한다고 기술하였는데 정책에 대한 기준에 대해서 기술되어 있지 않다. 본 논문은 이를 보완하여 서버의 Backlog queue가 70%이상 점유되어 공격가능성이 있다고 판별되었을 때, sFlow를 이용하여 서버를 목적지 주소로 하는 패킷에 대한 모니터링이 시작되어 모니터링에 소모하는 자원을 줄일 수 있다. 또한 Backlog queue의 허용 가능한 SYN 연결을 기반으로 공격패킷의 임계치를 추정하고 방어하기 위한 방법으로 공격자의 출발지 주소를 파악하여 플로우 테이블을 변경하여 일반 이용자의 피해 없이 공격자만을 차단하는 방법을 제시하였다.
3. 시스템 기본 구조 및 동작
3.1 시스템 고려사항
서버의 원활한 동작을 위해서 SYN Flooding 공격에 의해 서버의 Backlog queue가 모두 점유되어 TCP 통신이 불가해지기 전까지 공격을 완화시켜야 한다. Fig. 1과 같이 Backlog queue의 점유 상태에 따른 시스템 동작을 가정하였다.
Fig. 1.System operation according to the Backlog queue state.
Backlog queue가 50%이상 점유되면 경고 단계이고, 70%이상 점유되었을 때, 모니터링이 시작된다. 모니터링이 시작된 후 차단 프로세스가 실행되는 시점을 결정하기 위해 초당 SYN 패킷 수와 Backlog queue의 공간을 고려해야 한다.
Fig. 2는 모니터링 시스템을 나타낸다. SYN Flooding 공격을 인지하고 이에 대한 차단을 수행하는 동안에도 공격이 진행된다. 이때의 소요시간, 초당 SYN 패킷 수와 남아있는 Backlog queue의 용량을 고려하여 차단시점을 결정하여야 Backlog queue 가 모두 점유되지 않고 정상적인 TCP 통신이 가능하다. (1), (2)의 수식에서 x는 차단 프로세스가 실행되고 완료될 때까지의 공격을 견딜 수 있는데 필요한 Backlog queue 공간의 비율이다. n은 서버와 TCP 연결을 수행하는 클라이언트의 수, Bi는 클라이언트 하나가 보내는 초당 SYN 패킷 수이고, t1은 sFlow collector에서 컨트롤러에게 명령을 전달하는데 걸리는 시간, t2는 컨트롤러가 각 스위치의 플로우 테이블을 변경하는데 걸리는 시간이다. S는 전체 Backlog queue의 공간, C는 SYN 패킷 하나가 차지하는 Backlog queue의 공간이다.
Fig. 2.Monitoring System.
(2)의 수식을 만족하는 x의 최소값을 구하면 SYN Flooding 공격을 인지하고 이에 대한 차단을 수행하는 동안 SYN 패킷이 점유하는 Backlog queue의 공간을 구할 수 있다. x의 값을 고려하여 차단시점을 결정하여야 서버가 차단 프로세스가 완료될 때까지 정상적인 TCP 통신을 수행할 수 있다.
3.2 제안된 시스템 구조
본 논문에서는 SDN 기술과 sFlow 기술을 이용하여 SYN Flooding 공격 방어 시스템을 제안한다. SDN 구조의 3계층은 통신을 위한 프로토콜이 필요하다. 이 프로토콜에는 어플리케이션과 컨트롤러 사이의 Northbound API, 컨트롤러와 디바이스 사이의 Southbound API가 있다. 제안한 시스템은 Northbound API로 Floodlight, OpenDaylight과 같은 오픈소스 컨트롤러에서 이용하는 REST API를 사용하였고 Southbound API로 OpenFlow 프로토콜을 사용하였다. Application layer에 SYN Flooding 방어 어플리케이션을 구현하였고, 어플리케이션과 Control layer의 OpenFlow 컨트롤러와 REST API를 통해 연결한다. Infrastructure layer의 네트워크 디바이스는 OpenFlow 프로토콜을 사용하여 컨트롤러와 연결한다. 네트워크 디바이스에 sFlow agent를 구성하고 sFlow collector와 sFlow 프로토콜을 이용하여 통신을 구성하고 sFlow collector는 어플리케이션과 REST API를 통해 통신한다. 시스템의 동작순서는 다음과 같다.
3.2.1 모니터링 시작
서버는 자신의 Backlog queue를 검사하고 70%이상 점유되면 이를 위험단계로 판단하고 서버를 목적지 주소로 가지는 패킷의 모니터링을 위해 sFlow를 동작시킨다.
3.2.2 샘플링 된 패킷 전송
네트워크 디바이스에 설치된 sFlow agent는 샘플링 된 패킷을 sFlow collector로 전송한다.
3.2.3 공격자 판별
sFlow collector는 특정 출발지 주소에서 Backlog queue를 점유하기 위해 다량의 SYN 패킷을 송신하는 것을 탐지하여 이를 공격자로 판단하고 어플리케이션에 알린다.
3.2.4 네트워크 디바이스의 플로우 테이블 변경
어플리케이션은 컨트롤러에게 공격자로 판별된 주소에서 오는 패킷을 차단하기 위한 플로우 테이블을 설정한다.
3.2.5 공격패킷 차단
컨트롤러는 전체 네트워크 디바이스의 공격자 주소에서 송신되는 패킷을 차단하라는 플로우엔트리를 설정하여 공격 패킷을 차단한다.
Fig. 3은 제안된 시스템 구조를 보여준다.
Fig. 3.Proposed system.
3.3 SYN Flooding 공격 탐지 및 차단 방법
모니터링 프로그램인 sFlow를 사용하고 각 스위치에 sFlow agent를 두어 부가적인 장비를 설치하지 않고 탐지 범위를 컨트롤러가 담당하는 네트워크 부분으로 확대하였다. 일반 이용자도 서버와 TCP 통신을 하기 위한 SYN 패킷을 보내기 때문에 일반 이용자와 공격자를 구별하여 공격자의 패킷만 차단하여야 일반 이용자의 정상적인 TCP 통신이 가능하다. 공격자를 탐지하기 위한 기준은 수식 (3)과 같다.
x는 (2)의 수식을 만족하는 Backlog queue 공간의 최소값, n은 서버와 TCP 연결을 수행하는 클라이언트 수, l은 sFlow agent가 설치된 스위치 수이고 Pi는 스위치에서 탐지된 특정 출발지 주소에서 전송된 초당 패킷 수, S는 전체 Backlog queue의 공간, C는 SYN 패킷 하나가 TCP 연결을 위해 대기하는데 필요한 Backlog queue의 공간이다. 모니터링은 Backlog queue가 70%이상 점유되었을 때 수행되므로 남아있는 30% 공간 중 차단 시 소요되는 x% 공간을 제외한 (30-x)% 만큼의 Backlog queue를 TCP 연결에 사용할 수 있다. 이를 Backlog queue가 허용할 수 있는 SYN 패킷의 수인 S/C와 곱하면 남아있는 공간에서 허용할 수 있는 SYN 패킷의 값을 구할 수 있고 이를 TCP 연결을 수행하는 클라이언트의 수인 n으로 나누면 클라이언트 하나당 할당할 수 있는 초당 SYN 패킷 수를 구할 수 있다. 봇넷은 Backlog queue를 점유하기 위해 일반 클라이언트보다 많은 수의 SYN 패킷을 송신한다. 따라서 이 값을 초과하면 이때의 출발지 주소를 봇넷의 주소로 판단하고 SYN Flood 방어 어플리케이션은 REST API를 통해 OpenFlow 컨트롤러가 각 스위치의 플로우 테이블에 공격자의 출발지 주소를 가진 패킷을 차단하도록 설정한다[7].
4. 실험 및 결과 분석
4.1 실험환경
본 논문에서는 제안된 시스템을 구현하기 위해 다음과 같은 테스트베드를 구성하였다. 시뮬레이션을 위한 데스크탑은 Ubuntu 12.04 LTS 운영체제가 설치되어 있고 테스트베드를 구성하기 위한 에뮬레이터로 Mininet을 이용하여 3개의 스위치와 6개의 호스트를 생성하였다. 4개의 호스트를 공격자로 설정하고 각각 1개의 호스트를 일반이용자와 공격타켓 서버로 설정하였다. 가상의 스위치는 OpenFlow와 sFlow를 지원하는 OpenvSwitch를 사용하였고 전체 스위치를 제어하는 컨트롤러로 OpenDaylight 컨트롤러를 사용하였다. 스위치에는 sFlow agent를 두고 sFlow collector로 sFlow-RT를 설치하여 실험하였다. 공격 호스트들은 패킷생성 툴인 hping3를 이용하여 SYN Flooding 공격을 행한다. Fig. 4는 생성한 실험 토폴로지 이다.
4.2 실험 및 평가
mininet을 이용해 생성한 스위치와 OpenDaylight 컨트롤러를 연결하였다. 동일한 시스템 상에 sFlow collector를 두었고 sFlow agent는 샘플링 데이터를 sFlow collector로 전송하였다. 공격자 호스트들은 hping3 패킷 생성기를 이용하여 SYN Flooding 공격 패킷을 생성하여 공격 타켓으로 송신하였다.
실험의 대조군으로 SYN Flood 방어 어플리케이션을 실행하지 않은 상태에서 SYN Flooding 공격을 수행하였다. Fig. 5에서 보듯이 초당 약 1000개의 SYN 패킷이 전달되는 것을 볼 수 있다.
Fig. 5.SYN Flooding attack without protection application.
이와 같은 SYN Flooding 공격을 방어하기 위한 시간당 패킷전송의 임계치를 결정하기 위해 (3)의 수식을 이용하였다. Backlog queue의 크기는 변경이 가능하지만 기본적으로 128KB로 설정되어 있다. SYN 패킷 하나당 80Byte를 소모하므로 전체적으로 Backlog queue는 약 1600개의 SYN 패킷을 수용할 수 있다. (3)의 수식의 x가 25%라고 계산하면 5%인 80개에서 클라이언트 수인 5개로 나누어 16을 임계치로 결정하였다.
특정 출발지 주소에서 전달된 SYN 패킷의 수가 16이 넘으면 SYN Flood 방어 어플리케이션이 Open-Daylight 컨트롤러에게 REST API를 통해 알리고 컨트롤러는 OpenFlow 프로토콜을 이용해 스위치의 플로우 테이블을 수정하여 공격 패킷을 차단한다. Fig. 6은 각 스위치의 플로우 테이블을 보여준다. 각 스위치에서 5개의 호스트 중, 정상적인 이용자를 제외한 4개의 공격자 IP만을 차단하는 것을 보여준다.
Fig. 6.Switch Flow Table.
Fig. 7은 방어 어플리케이션을 실행하였을 때의 패킷 흐름이다. 16을 임계치로 동작하였을 때, 5개 클라이언트의 SYN 패킷수인 80을 기준으로 정상적인 이용자의 패킷은 수신하고, 공격자의 패킷은 차단하는 것을 보여준다. 플로우 테이블의 엔트리는 한정되어 있기 때문에 차단 후 20초가 지나면 차단을 해제하고 다시 임계치 이상의 패킷이 전송되면 플로우테이블의 엔트리가 재작성 된다.
Fig. 7.Block the SYN Flooding attack packet.
5. 결론 및 향후 연구과제
본 논문에서는 SDN 특징을 이용한 신속한 패킷라우팅 처리기능과 sFlow의 트래픽 모니터링 기능을 이용하여 주소별 패킷 샘플링을 통해 DDoS SYN Flooding 공격에 대한 신속한 방어가 가능한 시스템을 제안하였다. 정상적인 이용자와 공격자를 구분하기 위해 Backlog queue의 점유율을 탐지 기준으로 하였고, 공간이 70%이상 점유되었을 때만 모니터링을 수행하여 불필요한 자원낭비를 줄였다. sFlow를 이용하여 부가적인 장비를 설치할 필요성을 없애고 별도의 탐지 장비 없이 SDN의 특성을 이용하여 탐지 범위와 차단 범위를 컨트롤러가 담당하는 네트워크 부분으로 확대하여 공격 패킷에 대한 신속한 처리가 가능함을 보였다. 향후 SYN Flooding에 관한 보다 정확한 탐지 메트릭을 위한 연구를 수행하고, DDoS외의 여러 비정상적인 상태에서의 컨트롤러를 이용한 빠른 장애복구를 위한 연구를 진행할 계획이다.
References
- J. Kim, S. Im, and H. Kim, "Technology Analysis of SDN/OpenFlow and Availability of Security Aspects," Review of Korea Institute of Information Security and Cryptology, Vol. 24, No. 1, pp. 65-74, 2014.
- D. Moore, G. Voelker, and S. Savage, "Inferring Internet Denial-of-Service Activity," ACM Transaction on Computer Systems, Vol. 24, No. 2, pp. 115-139, 2006. https://doi.org/10.1145/1132026.1132027
- H. Choi and M. Jun, "DDoS TCP Syn Flooding Backscatter Analysis Algorithm," Journal of the Korea Society of Computer and Information, Vol. 14, No. 9, pp. 55-66, 2009.
- T. Ha, C. Jeong, J. Narantuya, N. An, H. Lim, and J. Kim, "sFlow Based Network Attack Detection System," Proceeding of The Summer Conference of the Korean Institute of Communications and Information Sciences, pp. 4A-3, 2014.
- R. Braga, E. Mota, and A. Passito, "Lightweight DDoS Flooding Attack Detection using NOX/OpenFlow," Proceeding of 35th Annual IEEE Conference on Local Computer Networks, pp. 408-415, 2010.
- M. Nugraha, I. Paramita, A. Musa, D. Choi, and B. Cho, "Utilizing OpenFlow and sFlow to Detect and Mitigate SYN Flooding Attack," Journal of Korea Multimedia Society, Vol. 17, No. 8, pp. 988-994, 2014. https://doi.org/10.9717/kmms.2014.17.8.988
-
Performance aware software defined networking.
http://blog.sflow.com/2013/01/performanceaware-software-defined.html (accessed Aug., 23, 2014).
Cited by
- Real-Time Classification, Visualization, and QoS Control of Elephant Flows in SDN vol.42, pp.3, 2017, https://doi.org/10.7840/kics.2017.42.3.612
- Security in Network Virtualization: A Survey vol.17, pp.4, 2015, https://doi.org/10.3745/jips.04.0220