pC.NET

Welcome to oscc.kr



 iptables를 이용한 SSH brute force 공격방어
2010-04-22 15:00:02
Hit : 3727, Vote : 242

작성자 : 피시넷
- File #1 : SSH_과다_공격_방지용_iptables_룰셋.pdf(123.1 KB), Download : 4

작성자 : 넥스트라인 고객기술지원부 백철현
작성일 : 2009년 03월 19일
 

 

 
SSH brute force 공격은 사전적 계정이름과 단순한 패스워드의 문제를 이용한 대입공격 입니다.  
Ssh brute force 공격은 하나의 아이디에 여러 개의 패스워드를 대입시켜 보아서 일치되는 경우에 시스템의 사용자 계정을 획득하게 됩니다.
계정이 뚫렸다면, 시스템에 문제를 일으키는 일 뿐만 아니라, 다른 시스템을 해킹하는 또 다른 문제가 발생할 소지가 되기도 합니다. 심한 경우 한 아이피에서 몇 천번이 넘는 시도가 이루어지기도 합니다.

가장 훌륭한 방법은 각 계정의 패스워드를 매우 복잡하게 영문, 숫자, 특수문자를 골고루 썩어서 12자 이상으로 만들어 쓰시면 매우 좋습니다.
다른 방법으로는 아래의 iptables 룰셋을 이용해도 대입공격은 막아낼 수 있습니다. 이 룰셋은 아이디와 패스워드를 지속적으로 대입하지 못하도록 하는 룰셋입니다.
대입공격이 아이디와 패스워드를 변경해 가면서 대입하는 것이기 때문에 로긴이 실패했을 경우 다시 시도를 해야하는데 그 시간이 다음 대입시도를 할 때까지 시간을 늘려놓는 것이 이번 룰셋의 핵심입니다. 테스트 결과 과다한 접속시도가 거의 이루어지지 않았습니다.
룰셋은 iptables의 recent, LOG 모듈을 활용한 방법입니다. 

1. SSH 공격방어 Flow

22번 포트에 접속시도 한 모든 패킷을 SSH_BLACK 테이블의 리스트에 넣습니다.
1. 이 리스트에서 60초간 6번 이상의 시도가 이루어질 경우에 BLACK 리스트에 올립니다.
2. BLACK 리스트에 오르면 60초간 접속이 차단됩니다.
3. 60초가 지나면 SSH_BLACK 테이블이 갱신되면서 접속시도가 가능해집니다.
따라서, 자신이 6번 이상 실패했다면 60초 동안 기다렸다가 해야합니다.



2. SSH 공격방어를 위한 룰셋


첫줄은 iptables 를 짧게 IPT 변수로 만든 것입니다. Iptables 의 위치를 지정해주면 됩니다.
두번째 , 세번째 줄의
$IPT –A INPUT –p tcp –dport 22 –m state –state NEW –m recent -–set -–name SSH_BLACK
위 명령은 22번 SSH 포트로 오는 모든 “새로운 연결” 패킷은 SSH_BLACK 라는 이름으로  정의합니다.
네번째, 다섯째, 여섯번짼 줄의
$IPT –A INPUT –p tcp –dport 22 –m state –state NEW –m recent -–update -–seconds 60 -–hitcount 6 –rttl –name SSHSCAN –j LOG –log-prefix SSH_SCAN:
위 줄은 6번의 연결시도를 한 것을 로그로 기록한 것이고 60초 동안 6번의 접속 시도를 하는 아이피를 로그로 남기게 됩니다.
마지막 줄은
$IPT –A INPUT –p tcp –dport 22 –m state –state NEW –m recent –update –seconds 60 –hitcount 6 -–rttl -–name SSH_BLACK –j DROP
이 마지막줄은 6번 이상을 시도한 접속을 60초 동안 막았다가 60초 후에 다시 black 리스트를 갱신하여 접속이 가능하게 해줍니다.

로그에 기록된 화면입니다. 위치는 /var/log/messages 에서 볼수가 있습니다.
 


실시간으로 확인 가능한 화면을 보실수 있습니다. 위치는
/proc/net/ipt_recent/SSH_BLACK 파일입니다.

위 스크립트를 적용하실 경우 현재 서버의 IPTABLES의 룰셋에 적용시키는 방법을 소개합니다. 위의 스크립트의 경우는 단독으로 쓰실 경우를 위해서 만든 것 입니다.
만일 현재의 룰셋에 추가 하고 싶으시다면 아래와 같이 해주세요.

일단, -A 대신 –I 로 현재 룰셋에 삽입을 하였습니다. 그리고, 룰셋의 1,2,3 라인에 추가를 시키도록 $IPT –I INPUT 1 , $IPT –I INPUT 2, $IPT –I INPUT 3 로 설정하였습니다.
저부분은 자신의 사정에 맞게 고치시면 되지만 그냥 저렇게 넣어도 지장은 없습니다.

감사합니다.


출처 : http://nextline.net/

관련링크
  1. http://blog.pages.kr/624
  2. http://www.csc.liv.ac.uk/~greg/sshdfilter/

  피시넷
안녕하세요.
피시넷입니다.

 1240
 23



39
  리눅스에서 vino 설정시... 
 피시키드
833 82 2016/01/14
38
  프로텍 as 
 피시키드
2344 134 2014/04/07
37
  테스트 
 피시키드
2501 124 2014/01/28
36
  똠방각하 
 피시키드
2627 141 2013/08/30
35
  안철수 4월20일 보람사거리에서 녹음화일  
 피시넷
2293 114 2013/04/24
34
  pc1412.iptime.org 홈페이지 복구 완료했습니다. 
 피시넷
3173 123 2012/12/20
33
  내가왜 벤이여 피씨 !!! 
 짐배
2337 123 2011/09/26
32
  2번째컴터 정보 
 피시키드
3647 227 2011/03/05
31
   공중PC정보   1
 피시키드
4214 208 2011/03/05
30
  각국 장애인 판정제도  
 피시키드
3033 247 2010/12/04
29
  오호~~~ 
 지나가다
2652 250 2010/08/19
28
  B1L 리눅스 -> 윈도우 갈아타기(USB가상시디) 
 피시키드
4218 251 2010/08/18
27
  에어콘 자가설치 해봅시다.  
 피시키드
2818 296 2010/07/06
26
  수도권 지하철 1974년 8월 15일부터 현재까지. 
 피시키드
2631 248 2010/06/11
25
  확인용  
 검정비닐봉지
2629 236 2010/06/03
24
  확인용  
 검정비닐봉지
2560 208 2010/06/03
23
  2010년기준 장애인복지정책과 등급판정기준  
 피시키드
2881 238 2010/05/21
22
  CITY신문 10.05.14 일자 여행지 추천  
 피시키드
2748 236 2010/05/17
21
  [짤방] 참 쉽죠잉? 
 피시키드
3165 257 2010/05/17
20
  패킷상태를 키보드 LED으로 나타내게 해봅시다. 
 피시키드
2500 251 2010/05/10
19
  반딧불 LED 만들기 (송신LED) 
 피시키드
2775 257 2010/05/10
18
  브릿지 다이오드 
 피시넷
5183 270 2010/05/02
17
  교류, 반파, 정파 
 피시키드
2929 260 2010/05/02
16
  바코드의 종류 
 피시키드
5900 259 2010/04/25
15
  [자료/번역/옮김] Optimizing MySQL  
 피시키드
2996 247 2010/04/22
14
  mysql db이전 euc-kr -> utf-8 
 피시키드
3049 265 2010/04/22
  iptables를 이용한 SSH brute force 공격방어  
 피시넷
3727 242 2010/04/22
12
  http/ftp 오류코드 
 피시넷
3059 259 2010/04/22
11
  벽돌깨기 
 피시키드
3310 265 2010/04/22
10
  화학식에서 쓰이는 수사 
 피시키드
3180 254 2010/03/23

1 [2]



Copyright (C) 1997-2018 All Rights Reserved.
Seasons 2