Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- javaJRE
- 항해15기
- 항해99후기
- java set 저장
- java set 출력
- 격파르타장점
- 프로그래머스
- 격파르타후기
- java 자료구조 활용
- java list 저장
- 격파르타합격후기
- java참조자료형
- 격파르타비전공자
- 작은수제거하기
- java알고리즘문제풀이
- java list 출력
- javaJVM
- java기본자료형
- java알고리즘
- 컴파일
- 비전공자sqld
- 코딩부트캠프후기
- 노베이스부트캠프
- java map
- 인터프린터언어
- java map 저장
- java최솟값구하기
- sqld자격증합격
- java map 출력
- 프로그래머스제일작은수
Archives
- Today
- Total
코딩과 결혼합니다
[CS] 보안(DOS) 본문
728x90
서비스 거부 공격(DOS)
다른 사람이 서비스를 받지 못하게 특정 네트워크 서비스나 시스템을 사용 불가능하게 만드는 보안 공격이다. 이 공격은 대량의 트래픽을 특정 서버에 보내고 그 서버의 성능을 저하시키거나 완전히 중단시키는 방식으로 이루어진다.
취약점 공격 DOS
- 기본적으로 1500byte 이상의 데이터를 보낼 때에는 데이터를 여러 번으로 나누어 전송을 한다. 이때 순서가 뒤바뀌어 목적지에 도착하는 것을 방지하여 데이터(패킷)를 보낼 때, 앞에 순서를 붙인다. 이때 공격자는 데이터를 보내는 순서를 조작하여 불완전하게 만든다.
- 패킷을 보낼 때, 패킷을 보낸 주소를 패킷의 도착 주소와 같게 조작하여 보내어 무한루프에 빠져 오류를 일으키게 한다. 이 과정에서 컴퓨터 자원은 소모되고, 결과적으로 서비스 거부가 이루어져 버린다.
해결방법
- 첫 번째 유형은 과부하가 예상되는 패킷은 따로 분리해 두었다 폐기한다.
- 두 번째 유형은 패킷을 처리하기 전에 먼저 패킷을 보낸 주소가 정상적인지 확인한다.
- 안정된 버전의 최신 운영체제(+보안 업데이트)를 쓰면 자동적으로 거의 완전한 방어가 가능하다. 오래된 운영체제는 이런 공격의 방어를 구현해주어야 하기 때문에 보안 측면에서는 최신 운영체제를 쓰는 게 좋다.
SYN Flooding
📌tcp 통신 과정
- a가 syn 패킷을 보낸다.
- b가 이것을 받고 syn + ack을 보낸다. (syn 패킷을 받았다는 ack 응답 패킷 + a도 통신 준비가 완료되었지를 확인하는 syn패킷)
- b는 a에게서 올 예정인 ack 패킷을 기다린다.
- 공격자는 ack 패킷을 보내지 않는다. 출발지 주소를 존재하지 않는 곳으로 위조하기 때문에 ack 패킷을 b가 받을 수 없는 것이다. b는 계속해서 ack 패킷을 기다리다가 timeout이 되면 통신 연결은 끝이 난다. 이때까지 컴퓨터 자원은 소모된다.
- 공격자는 syn 패킷을 동시에 공격 대상에게 보내고, 공격 대상은 이에 맞추어 하나하나 통신을 준비한다. 이 과정에서 많은 시스템 낭비가 발생하고, 서비스 거부 상태가 된다.
- timeout 되는 시간을 짧게 줄이는 것으로 최대한 공격 패킷이 무효화되기를 기대할 수 있으나, 너무 짧게 줄여버리면 데이터 전송이 느린 컴퓨터를 가진 일반 사용자도 접근이 거부될 수 있다. 보안 관점과 사용자 경험을 함께 고려하여 두 개를 동시에 잡을 수 있도록 해야 한다.
해결방법
- syn 쿠키라는 기술을 이용하여 방어할 수 있다. 공격 대상은 들어온 syn 패킷에서 연결이 정상적으로 되어 있을 때, 필요한 정보들을 쿠키 형태로 만들어 놓고 syn + ack 패킷을 보낼 때, 이 쿠키를 첨부하여 보냄으로 더 이상 syn 데이터를 메모리에 담아둘 필요가 없게 된다. 정상적인 사용자라면 ack 패킷을 보낼 때, 자신이 받은 이 쿠키를 다시 첨부하여 보내줄 것이고, 이를 이용해 정상적인 연결을 만들 수 있다.
- 일반적인 운영체제에서는 syn flooding이 의심되거나, 메모리 사용량이 크게 늘어날 경우 자동적으로 syn 쿠키가 적용된다.
Ping of Death
- ICMP를 이용한 공격이다. icmp는 인터넷 제어 메시지 프로토콜로, 네트워크가 잘 작동하는지 체크해 주는 기능을 수행한다. 아주 간단한 역할을 수행하여 신경을 써야 할 필요가 있나 싶지만, 이를 악용하면 강력한 DOS를 할 수 있다.
- 공격자는 icmp 패킷의 크기를 매우 크게 조작하여, 동시에 여러 개를 공격 대상자에게 보낸다. 네트워크 패킷의 크기는 매우 작기 때문에 공격자의 icmp 패킷은 이동을 하면서 여러 개의 패킷으로 갈라지게 되고, 공격 대상은 받은 여러 개의 패킷을 다시 합친다. 이 과정을 반복하다 보면 시스템에 과부하가 걸리게 되는 것이다.
해결방법
- 시스템 방화벽에서 icmp를 차단하면 된다.
- 또한 일반적인 패턴의 핑 공격은 최신 운영체제에서 자동적으로 방어할 수 있도록 되어있다.
스머프 공격
📌Broadcast 주소의 특징
어떤 네트워크의 ip 주소 중 가장 큰 값을 말한다. 이 브로드 캐스트의 역할은 연결된 모든 시스템에 패킷을 보낼 수 있다는 것이다.
- 공격자는 출발지가 공격 대상인 icmp 패킷을 만든다. 도착지는 어떤 네트워크의 브로트캐스트 주소로 하여 보낸다. 이 패킷은 브로드캐스트의 해당 네트워크 전체에 패킷이 퍼지 되고, 각 시스템은 icmp에 응답하고자, 출발지로 적혀있는 공격 대상에게 응답을 보낸다. 연결된 시스템이 많을수록 위력이 커지고, 공격 대상은 원하지 않은 너무 많은 icmp 응답을 받고 마비되어 버린다.
해결방법
- 브로드캐스트의 역할을 제한하는 것으로 방어한다. 라우터에서 브로드캐스트 주소로 된 응답을 내보내는 것을 막는 것이다. 공격자가 보낸 icmp 패킷은 라우터와 연결된 시스템으로 보내지지만, 시스템에서 응답한 각 패킷들은 라우터에 지나가지 못하도록 막는 것이다.
DDOS
- 이 공격은 인터넷 트래픽의 폭주로 공격 대상의 네트워크가 정상적으로 작동하지 않게 하는 것이다. DDOS는 1대 1이 아닌 1대 다수로 사우게 되고 일반적인 경우 공격자가 다수의 보안이 약한 일반 사용자를 먼저 공격한다. 다음 그들의 컴퓨터에서 원격으로 진짜 목표에 트래픽을 보내도록 한다.(좀비 pc) 진짜 공격 대상은 너무 많은 요청으로 인해 정상적인 서비스를 하지 못하게 된다.
- 갑자기 네트워크 처리량이 늘어나거나 cpu나 ram 사용량이 크게 늘어날 경우 DDOS로 의심해 볼 수 있다.
해결방안
- 좀비 pc가 되지 않기 위해 기본적인 보안 수칙을 지키고, 웹 서버도 조심해야 한다. 간단한 포트폴리오를 올려놓은 웹 서버도 약한 보안조치로 위험해질 수 있다.
- 웹 개발 과정에서 비정상적으로 빠르게 같은 요청을 보내는 사용자를 일시적으로 방화벽에서 차단하는 방법을 사용
- 로드 밸런서를 도입할 수 있다. 많은 사용자들이 몰릴 때를 대비해 많이 사용되지만 DDOS 완화에도 효과가 있다.
- 해결이라기보다는 완화에 가깝다.
[cs 스터디]
웹 어플리케이션을 제작할 때 고려해야 할 보안
웹 기술의 발전과 함께, 우리의 일상 생활은 더욱 온라인 중심으로 변화하고 있습니다. 은행 업무부터 쇼핑, 사회적 교류에 이르기까지 다양한 활동이 웹 어플리케이션을 통해 이루어지고 있죠.
velog.io
'2세 > Computer Science' 카테고리의 다른 글
[CS] Java 에러&예외 (1) | 2023.11.24 |
---|---|
[CS] RESTful API 를 작성하기 위하여 고려할 것 (1) | 2023.11.14 |
[CS] 모노레포(monorepo) (0) | 2023.11.13 |
[CS] 서버리스(Serverless) (0) | 2023.11.09 |
[CS] Docker (0) | 2023.11.08 |