IT 그리고 정보보안/Knowledge base

iptables 을 이용한 SSH Brute force 방어

plummmm 2021. 4. 19. 07:34
반응형

1. 사전지식

SSH Brute force 란?

무차별적인 아이디와 패스워드 대입으로 SSH에 접근을 시도하는 공격이다.

키를 찾을때 까지 가능한 키를 모두 시도하는 방법으로, 1차원적이고 단순 대입 공격이지만 실질적으로

아주 강력하고 직관적인 침투 방법이라 할 수 있다.

유사한 방법으로 dictionary 파일에 있는 단어들을 사전식으로 대입하여 맞춰보는 Dictionary attack과

dictionary attack에서 단어에 숫자나 특수문자를 추가하여 대입하는 Hybrid attack이 있다.

 

2. 모의 시나리오 

공격자 A는 피해자 B의 SSH서버에 원격으로 접속을 하려한다. 

그리고 SSH서버에 로그인하기 위해 Brute force attack 방법으로 패스워드 크랙을 시도한다.

그러자 B는 SSH 22번 포트로 비정상적으로 많은 로그인 시도를 확인하고

iptables 방화벽을 이용하여 정책을 수립하여 Brute force를 막아낸다.

 

 

3. 방화벽 정책 흐름 

1. SSH 22번 포트로 접속을 시도한 패킷을 사용자가 정의한 SSH 체인으로 넘긴다.

2. 1분동안 15번 이상 로그인 시도가 나타났을 때 DROP 시킨다.

 

 

4. 정책 수립

 

-$IPTABLES -N SSH : SSH 체인 생성 

-$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH :

22번 포트로 접속하는 패킷을 SSH체인으로 보낸다.

-$IPTABLES -A SSH -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP  : 1분동안 같은 사용자가 15번 이상 SSH 접속 시도를 하였다면 DROP 시킨다.

(혹자는 DROP시킨 후 60초 대기후에 다시도하게끔 정책을 세우는데.. 크래커에게 침투할 여지를 남긴다고 판단하여 여기선 그냥 DROP 시켰다.)

-$IPTABLES -A SSH -j LOG --log-prefix "SSH Crack!" : SSH에 들어온 패킷의 로그를 남긴다.

 

 

5. 추가적인 보안 대책 

패스워드 크래킹에 가장 효과적인 대처법은 복잡한 비밀번호를 사용하는 것이다.

대부분 사람들이 외우기 어렵고 귀찮아서 "어차피 *표시 되서 아무도 모를거야" 라는 생각으로

숫자만 혹은 문자로만 이루어진 쉽고 간편한 비밀번호를 많이 사용한다.

http://howsecureismypassword.net/

사이트에 접속하여 자신의 비밀번호 혹은 체크하고 싶은 비밀번호를 입력하면 어느 정도 안전한지 알 수 있다.

 

123을 입력하였을 때, 0.00000025초 만에 크랙이 된다고 나타났다.

반응형