Skip to content

조회 수 8731 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
pam_abl 을 통한 SSH 무작위 공격 방어

- 출처 : http://www.sulinux.net/bbs/board.php?bo_table=success&wr_id=35&page=, su linux 사이트

1. 소개

  대부분의 유닉스, 리눅스서버를 관리하기 위해서 SSH 서비스를 사용하여 안전하게 원격지에서 서버로 접속을 합니다. 불행하게도, 악의적인 사용자가 무작위 SSH접속을 시도하여 비밀번호 획득을 시도합니다. 만약 쉬운 비밀번호 ( 예. 123456, aaaa, 계정과 같은 비밀번호)를 사용할 경우 공격자는 비밀번호를 획득하게 되고, 획득된 비밀번호로 서버에 접속하여 시스템을 파괴시키고는 합니다.

  이런 공격을 막기 위해서, 특정 계정만 ssh 접속 가능하게 하고, 특정 IP로 ssh 접속을 제한하는 등의 보안 조치를 하게 됩니다.
  하지만, 호스팅서버등에서는 불특정 가변 IP의 접속을 허용하여야 하기 때문에 불가능 한 일입니다. 호스팅사용자가 쉬운 비밀번호를 사용하는 경우가 허다하기 때문에 서버는 위험에 처할 수 밖에 없습니다.
 
  서버를 많이 운영하다 보면, 메시지로그(/var/log/messages)에 공격의 흔적을 목격하는 경우가 많을 것입니다. 그럼 이를 효과적으로 막을 수 있는 방법에 대해 알아보도록 하겠습니다.


  SSH 무작위 공격을 효과적으로 방어할 수 있는 pam_abl을 소개합니다. pam_abl은 동일한 원격지(IP)에서 여러번 인증에 실패(비밀번호오류)한 경우 또는 동일 한 사용자가 여러번 접속실패(비밀번호오류)한 경우에 아이피 및 사용자를 차단하여 더이상의 공격으로 부터 보호하는 역할을 합니다.
  pam_abl은 PAM(pluggable authentication modules)을 이용하여 연동됩니다.


*특징
 1. 무작위 접근 시도하는 IP를 차단
 2. 무작위 접근 시도하는 사용자를 차단
 3. SSH뿐만 아니라 다른 프로그램에도 연결
 4. 통계프로그램(pam_abl)을 제공


!!경고!!
  본 강좌는 ssh-서버의 pam 을 수정하여 무작위 접근을 막는 방법입니다.
 조금의 실수는 ssh 접속 불능의 상태가 되니, 리눅스 기본 명령어 및 편집기(nano,vi등)을 능숙히 다루며, sshd, pam 등의 이해를 필요합니다.
 원격지에서 작업해야 한다면, telnet 등의 다른 접속통로를 만들어 놓고 작업 하시기 바랍니다.




2. 설치
  소스파일을 다운로드 받아서 설치 합니다.

0) 사전준비
 -  소스를 받아서 설치하기 때문에 기본적인 컴파일러(gcc), 라이브러리 등이 필요합니다.
 -   Berkeley DB를 사용하기 때문에 이미 Berkeley DB가 설치되어 있어야 합니다.
     (SULinux 1.5에는 설치되어 있지만, 헤더파일이 없어 db.h 파일을 찾을 수 없다며 에러가 발생하며,  db4-devel 패키지를 추가로 설치하면 정상 설치 진행할 수 있습니다.)


1) 다운로드
   http://sourceforge.net/project/showfiles.php?group_id=148927
   위 URL에서 다운로드 받습니다.


2) 압축해제/컴파일 설치
    tar xvfpz pam_abl-0.2.3.tar.gz
    cd pam_abl
    make install
   (이 부분에서 db.h 파일을 찾을 수 없다고 나온다면, db4-devel 패키지를 설치하세요)


3) 설정파일을 특정 디렉토리에 복사
    cp conf/pam_abl.conf /etc/security


4) /etc/pam.d/sshd 파일의 아래에 다음 내용을 추가

  auth     required     /lib/security/pam_env.so
  auth     required     /lib/security/pam_abl.so config=/etc/security/pam_abl.conf
  auth     sufficient     /lib/security/pam_unix.so likeauth nullok
  auth     required     /lib/security/pam_deny.so




5) sshd 재 시작
  service sshd restart




3. 운영
  위와같이 설치하였다면, 특별히 해 줄일은 없습니다.
 기본적으로 시간당 10회, 하루 30회 비밀번호가 틀리게 되면, 접속이 차단됩니다. 이런 설정을 변경하려면, 아래의 설정파일 부분을 참조하여 설정파일을 수정하며, sshd 를 재시작합니다.


 1) 현재 상태 확인 (차단된 사용자, 아이피 확인)
    pam_abl


 2) 현재 상태 자세한 확인( 차단된 사용자, 아이피 등 차단된 시간정보등)
    pam_abl -rv


 3) 실패한 기록 삭제 (설정에 따라 2일이 지나면 자동 삭제)
    * 실패한 기록을 삭제하는 것이지, 차단된 아이피, 사용자를 해제하는 것은 아님.
    pam_abl -p
    

 4) 차단된 사용자 풀어줌.
    pam_abl --okuser=사용자


 5) 차단된 host(IP,도메인) 풀어줌
    pam_abl --okhost=호스트




4. 설정파일 (/etc/security/pam_abl.conf)
1) 기본 설정파일 설명
#debug
host_db=/var/lib/abl/hosts.db   ## 인증 실패한 IP를 보관할 DB파일
host_purge=2d                 ## 인증 실패한 IP를 초기화할 시간 (2일)
host_rule=*:10/1h,30/1d  ## 시간당 10회, 하루 30회 인증실패한 IP 차단
user_db=/var/lib/abl/users.db ## 인증 실패한 사용자를 보관할 DB파일
user_purge=2d        ## 인증 실패한 사용자를 초기화할 시간 (2일)
user_rule=!root:10/1h,30/1d  ## 시간당 10회, 하루 30회 인증실패한 사용자 차단

** 참고 : 실패 기록을 제거하는 것이지, 차단된 host, user를 풀어주지는 않는다.!!
날짜에 사용되는 형식은 다음과 같습니다.
  s : 초,  m:분, h:시간,  d:일


2) 참고사항
  *:10/1h : 모든 host또는 user에대해 10회/시간
  root|dba|admin:10/1h :  root, dba, admin 상요자에대해 10회/시간
  root/sshd|dba/*:3/1d : sshd 데몬에 sshd, dba는 모든 데몬에 해대 3회/일
  root:10/1h,20/1d : root사용자에 대해 10회/시간, 20회/하루
  *:10/1h root:5/1h,10/1d : 모든사용자는 10회/시간,    root는 5회/시간,10회/일
  !root:20/1d : root사용자외에 20회/일



5. 마치며
 본 강좌가 ssh 공격으로 부터 힘들어하는 사용자들에게 조금이라도 도움이 되었으면 좋겠습니다. 이 훌륭한 프로그램을 만들어주신 제작자에게 감사하는 마음으로 본 강좌를 마무리 합니다. 



* 참고 사이트
  자세한 설명 : http://www.hexten.net/assets/pam_abl_doc/index.html
  공식 사이트 : http://www.hexten.net/pam_abl/
 
* 테스트 환경 : SULinux 1.5 Server
 

List of Articles
번호 제목 글쓴이 날짜 조회 수
88 CentOS Portsentry 1.2 소스설치 오류 ADMINPLAY 2014.01.19 7052
87 PHP 보안의 약방의 감초 open_basedir ADMINPLAY 2014.01.02 7520
86 CentOS 5.2 32bit 에 2.6.27.4 커널 + iptables 1.4.2 + c... ADMIN 2008.11.10 7818
85 wowhacker.com ADMIN 2008.11.11 8065
84 파일 퍼미션 설정을 통한 로컬 공격 방지 l2zeo 2010.03.08 8168
83 lsof 활용 가이드 ADMINPLAY 2009.11.30 8313
82 서버종합점검[리눅스] ADMINPLAY 2009.05.28 8367
81 iptables 기본 ADMINPLAY 2009.05.22 8386
80 SSH 공격막아내기 방법 l2zeo 2010.03.08 8391
79 SSH(Security SHell) 보안쉘 ADMINPLAY 2009.10.20 8404
78 Tcpdump 용어 정리 ADMINPLAY 2010.01.30 8505
77 ZONE-H.KR ADMIN 2008.11.11 8542
» pam_abl 을 통한 SSH 무작위 공격 방어 ADMINPLAY 2009.06.04 8731
75 LINUX 해킹당했을 때 대처요령 l2zeo 2010.03.08 8731
74 시스템 로그를 메일로 - logcheck file ADMINPLAY 2009.09.08 8772
73 서버의 iptable 보안설정 일부분 ADMINPLAY 2009.05.28 8786
72 Kernel 2.4.23 버전 이하에 나온 ptrace 버그에 관한 사항 ADMINPLAY 2009.12.13 8797
71 iptables 옵션 및 상태 추적 테이블 및 rule ADMINPLAY 2009.11.30 8851
70 iptables 설정, centos64 설치 간단셋팅 ADMINPLAY 2009.05.28 8854
69 홈페이지 보안 강화 도구(CASTLE) 보급 안내 1 file ADMINPLAY 2010.01.22 8925
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234