2023. 12. 11. 10:11ㆍ개발
현 회사에서 KT 클라우드 서비스를 사용중이고 내가 임시로 구성하던 테스트 서버에서 대량의 네트워크 트래픽이 발생하여 모니터링을 위해서 Nethogs를 설치하고 모니터링을 진행하고 했었다.
KT클라우드에서 보여주는 트래픽의 경우 발생한 양에 대해서 1일 단위로 갱신해주는 화면만 제공중이라 별도로 분석이 필요했고, 기존서비스에 세팅이 잘못된것인지 파악하고 싶어서 Nethogs 를 설치하여 확인하려고 했었다.
(프로세스별로 나눠서 확인을 시켜주기 때문에!!)
이후 부장님이 KT 클라우드 관리 업체 및 트래픽 발생관련해서 분석 요청을 하고 받은 답변은 다음과 같았다.
난 요청 로그만 확인하고 그냥 대략적인 SQL 인젝션 공격이나 웹취약점 공격만 온 줄 알았던게... 지속적인 공격이 계속 이뤄지고 있었다.
트래픽 모습(13테라 그 이상..)
공격 유형으로 확인된 것은 UDP Flooding Attack 이였다.
UDP Flooding Attack 이란 DoS(Denial of Service) 공격의 일종으로 대량의 UDP 패킷을 이용하여 대상 호스트의 네트워크 자원을 소모시키는 공격을 말한다.
UDP Flooding 공격의 경우 SYN Flooding 공격과는 달리 네트워크 bandwidth 를 소모시키는 것이 목적이다.
비슷한 개념인 Syn Flooding 공격 모습
그리고 그와는 조금 다른 ICMP Flooding도 있다.
관리업체에서는 다음과 같이 추천을 했다.
아웃바운드 트래픽에서 탐지되는 공격 유형 중 문제가 되는 것이 UDP Flooding 입니다.
웹서버를 삭제 후 재생성 하신 것으로 확인 되어 새로 구축중이신 것으로 보입니다.보안 강화를 위해 iptables 및 firewalld을 사용하고 규칙을 설정하는것을 권장 드립니다.
- 특정 시간 동안의 연결 요청 수 제한(60초 동안 동일한 소스 IP 주소로부터 20개 이상의 UDP 패킷이 포트 53(DNS)으로 들어오는 경우 해당 소스 IP 주소의 트래픽을 차단)
iptables -A INPUT -p udp --dport 53 -m recent --set --name DNSQUERY --rsource iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 20 --name DNSQUERY --rsource -j DROP
- 특정 데이터량 이상의 트래픽 제한(초당 10개 이상의 UDP 패킷이 들어올 경우, 초과하는 패킷을 차단)
iptables -A INPUT -p udp -m limit --limit 10/sec --limit-burst 20 -j ACCEPT iptables -A INPUT -p udp -j DROP
- 접속 시도 횟수 제한(UDP 프로토콜을 사용하는 트래픽에 대해 분당 10개 이상의 패킷이 들어오는 경우 제한)
firewall-cmd --permanent --add-rich-rule='rule protocol value=udp limit value=10/m accept' firewall-cmd --reload
- 특정 IP 주소 또는 범위 차단
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" drop' firewall-cmd --reload
개인심정은..... ㅠ
내가 네트워크쪽 패킷분석이나 이런부분을 알았으면 좀 더 잘 파악 할 수 있었을것 같은데 너무 무지했다.
그리고 프로세스 자체에서 이상 트래픽이 발생할 거라고 가정하고 확인하는 부분에서 시간을 많이 낭비했던거 같기도 하다. 조금 더 다양하게 분석 하고 접근 할 수 있어야 겠다
wireshark나 기타 툴을 사용해서 나중에 패킷분석이나 이런부분들에 대해서 한번 해봐야겠다. (아니면 tshark)
tshark는 CLI 환경에서 wireshark를 이용하는 패키지라고 한다.
패킷분석
참고주소
UDP Flood 공격을 iptables로 방어하는 모습(블로그)
'개발' 카테고리의 다른 글
MariaDB에서 Oracle로 DBLINK 적용 및 기타(unixODBC, jdbc)_2 (0) | 2024.02.13 |
---|---|
MariaDB에서 Oracle로 DBLINK 적용 및 기타(unixODBC, jdbc)_1 (0) | 2024.02.13 |
Nethogs 설치 그리고 클라우드 네트워크 트래픽 체크... (1) | 2023.12.07 |
템플릿 메서드 패턴, 전략패턴(스프링 핵심원리 고급편) (0) | 2023.04.25 |
세션에 있는 로그인정보 쉽게 사용하기(Spring, ArgumentResolver) (0) | 2023.03.29 |