ssh attack 의 해결책이 되려나?

김정균의 이미지

흠 geoip iptables extension 으로 KR 외의 지역에서의 ssh 를 막아 보았는데.. 어떨까요? 요즘은 도가 좀 지나친 것 같아서.. --;

9월 24일자 logwatch

   Service ssh:
      61.145.163.205  :      965 Time(s)
      164.164.149.13  :        1 Time(s)
      200.232.63.178  :      216 Time(s)
      202.213.223.114 :     2678 Time(s)
      210.14.93.60    :     5109 Time(s)
      210.82.83.196   :      138 Time(s)
      210.118.94.74   :        1 Time(s)
      211.43.215.181  :        1 Time(s)
      219.254.21.254  :        5 Time(s)
      220.230.37.151  :        9 Time(s)

iptables -A INPUT -p tcp -i eth0 --dport 22 -m geoip ! --src-cc KR -j DROP

명령으로 싸그리 막아 버렸는데 ^^;

김정균의 이미지

흠 야동꿀벌님이 이 링크를 걸어주실 줄이야..

해당 스크립트의 방법은 무의미하다고 봅니다. 로그를 분석하는 방식은, 이미 거쳐간, 즉, "패스워드가 맞는 것이 있다면 이미 뚫려버린" 라는 공식이 성립 되기 때문입니다.

또, worm 의 형태로 공격을 하기 때문에 특정 호스트를 막는 것은 의미가 없고.. (로그 분석을 해 보면 알겠지만, 이미 거쳐간 호스트가 또 오는 경우는 드뭅니다.)

즉, 제 견해로는 위와 같이 로그를 파싱하는 방법은 "소 잃고 외양간 고치는" 식의 방법으로 생각 합니다만.. :-)

제 서버는 계정도 없고, 있는 계정도 엄한 패스워드만 사용해서, 애써 무시해 오고는 있었는데 (실은 커널 컴파일 하기가 귀찮았어요 T.T) 요즘 추세가 너무 심한 것 같아 인증 시도를 하기 전에 막는 방법 중에 제일 덜 귀찮을 것 같은 것이 geoip 입니다. 물론 한국의 서버에서 attack 이 들어오는 것은 어쩔 수 없지만, 원천적으로 해결을 하려면 22번 포트 자체를 특정 ip 에서만 들어올 수 있도록 하는 것이 최선이겠죠. :-)

ed.netdiver의 이미지

전 얼마전에 아예 ssh port #를 바꿔버렸습니다.
이정도로도 어느정도는 방지가 될것같습니다만...
id/pw인증에서 key인증으로 전환하고, ip block/allow하고 등등...의 해결책이 있다지만, 다 제법 신경써야 될 일들이 좀 되다보니...
정말이지 80port열어두는것도 겁나네요.>,.<;;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

kirrie의 이미지

ed군 wrote:
전 얼마전에 아예 ssh port #를 바꿔버렸습니다.
이정도로도 어느정도는 방지가 될것같습니다만...
id/pw인증에서 key인증으로 전환하고, ip block/allow하고 등등...의 해결책이 있다지만, 다 제법 신경써야 될 일들이 좀 되다보니...
정말이지 80port열어두는것도 겁나네요.>,.<;;

아 저도저도.. 저도 포트 바꿔봤습니다. 매일 수천건에 달하던 접속시도가 수백건으로 뚝 떨어졌습니다. (그 수백건은 물론 제 접속 흔적;;)

열린 포트는 가급적 줄이는게 좋죠.. 제 서버는 80이랑 ssh랑 smtp/pop 포트만 열어놨습니다.

근데 왠지 이 글 보니까 불안이 소록소록 쌓이는건.. -_-;;

--->
데비안 & 우분투로 대동단결!

다즐링의 이미지

포트 노킹을 걸면 될꺼 같습니다.

하지만 제써버는 유저가 많아서 힘들군요 =3

------------------------------------------------------------------------------------------------
Life is in 다즐링

김정균의 이미지

하루를 보내본 결과 대략적으로 만족 스럽군요.

한건의 attack 도 로깅되지 않네요. 이때껏 가끔 한국의 IP (특히 초등학교에 있는 서버들) 에서 시도한 경우는 한달에 한 두건 정도라서..

^_^의 이미지

모 상용sshd를 써보니깐 아쉽게도 정식은 아님

수많은 어택에 =ㅅ= 문제 없더군요

데몬 자체가 죽는 경우도 없고

뚤리지도 않았습니다.

바빠서 잠시 본거지만 데몬수가 5천개 이상 떠있엇고

로그 보니 순간 엄청 들어 왓더군요

커낵션만 보니 몇만 접속 햇더군요

무결성검사를 하고 로그서버 점검하고 모든거 점검햇지만..

다행하게도 관리하는 고객사가 몇곳 그런 공격을 당했는데도...

불법적이지만... 그래두...

그 서버가 너무 비싸서
내년에 한개 정도는 살라고 합니다. 774달라 비싸긴 합니다.

32비트만 지원하지만.. 그래두 전 꼬옥 구매를 해볼 생각입니다.

----------------------------------------------------------------------
웃는 얼굴 헤죽 헤죽

김정균의 이미지

요즘의 ssh 사전 공격은 상용 sshd 냐 open source 냐와는 관계가 없습니다. 말 그대로 user/passwd 리스트를 가지고 계속 로그인을 시도하는 것이니까요. 즉, 취약한 암호를 가지고 있는 계정이 존재를 하면 뚫리게 되는 겁니다.

^_^ wrote:
모 상용sshd를 써보니깐 아쉽게도 정식은 아님

수많은 어택에 =ㅅ= 문제 없더군요

데몬 자체가 죽는 경우도 없고

뚤리지도 않았습니다.

바빠서 잠시 본거지만 데몬수가 5천개 이상 떠있엇고

로그 보니 순간 엄청 들어 왓더군요

커낵션만 보니 몇만 접속 햇더군요

무결성검사를 하고 로그서버 점검하고 모든거 점검햇지만..

다행하게도 관리하는 고객사가 몇곳 그런 공격을 당했는데도...

불법적이지만... 그래두...

그 서버가 너무 비싸서
내년에 한개 정도는 살라고 합니다. 774달라 비싸긴 합니다.

32비트만 지원하지만.. 그래두 전 꼬옥 구매를 해볼 생각입니다.

foo의 이미지

저도 몇일전에 일반사용자가 뚤린 적이 있습니다만, 그 계정은 거의 휴면상태였고, 할일 없어 ^^;; 그냥 나간것으로 확인되었습니다.

일반 사용자가 뚤린다고 하더라도 시스템 관리만 잘 하고 있었다면 크게 문제되는 것이 없는것 아닌가요? 그런거 무서웠으면 sf.net도 이미 예전에 프로젝트 계정 모두를 로그인 못하도록 막아버렸겠지요.

그러고보니, sf.net처럼 일반 사용자를 모두 로그인 계정 사용할 수 있게 하는 개발자 사이트는 거의 전무한 것 같군요.

"들어와 봐라 들어와도 깨질것 없다"가 "들어오지 못하도록 원천 봉쇄하는"것 보다 나은 것 아닐까요? 물론, 원천봉쇄하는 것이 유지보수 비용면에서 유리하겠지만요.

foo의 이미지

김정균 wrote:

흠 야동꿀벌님이 이 링크를 걸어주실 줄이야..

해당 스크립트의 방법은 무의미하다고 봅니다. 로그를 분석하는 방식은, 이미 거쳐간, 즉, "패스워드가 맞는 것이 있다면 이미 뚫려버린" 라는 공식이 성립 되기 때문입니다.


확률적으로 *이미 뚫렸을* 가능성은 거의 0입니다.

왜냐하면, 유저/패스워드 매칭은 수백번 이상의 시도를 해도 겨우 성공할까 말까한 경우가 대부분이고, 위 스크립트가 한시간 주기로 실행되므로, 여기에 pam을 써서 몇번 이상 접속 시도후 실패하면 1시간을 막아버린다던가 하는 방법이 병행이되면 매우 합리적인 방법이라고 생각됩니다.

물론 geoip를 쓴 것도 탁월한 선택으로 생각됩니다만 ^^

^_^의 이미지

한국에서만 접속할 경우라면 geoip가 좋다고는 생각되어집니다.

하지만 geoip에서두 한국이지만 한국이 아니라 타국으로 나오는 경우가 있으니

요즘은 갱신이 많이 되어서 예전보다는 잘되긴 합니다.

전 사전공격이 아니라 DOS또는 익스플로잇 인줄 알았습니다.

사전공격은 예전에도 많앗는데 요즘 특히 많이 뚤리는 것 같습니다.

래드햇9를 사용하는 곳두 흔하고 업데이트 안된곳두 많고
비밀번호를 너무 허술하게 사용하는 곳이 많습니다.

잼난것은 사전공격으로 설치 하자 마자 뚤린곳두 있다는 것입니다.

잼있더군요 무슨 웜 같아요 ㅋㅋ

----------------------------------------------------------------------
웃는 얼굴 헤죽 헤죽

김정균의 이미지

foo wrote:

확률적으로 *이미 뚫렸을* 가능성은 거의 0입니다.

왜냐하면, 유저/패스워드 매칭은 수백번 이상의 시도를 해도 겨우 성공할까 말까한 경우가 대부분이고, 위 스크립트가 한시간 주기로 실행되므로,

뚫릴 확률이 0 라는 것은 foo 님의 관점일 뿐입니다. 실제로 해당 공격을 실행하는데 걸리는 시간은 10분 내외이며, 만약 뚫렸을 경우에는 뚫은 계정으로 사람이 들어오는 것이 아니라, worm 의 형태이기 때문에 뚫은 expliot 이 해당 계정에 복사본을 만들어 다른 host 를 공격하는 숙주 노릇을 하는 것이 문제입니다.

즉, 방어하는 스크립트를 작동하더라도, 뚫은 곳에서 못들어오는 것이지, 이미 뚫렸을 경우에는 다른 호스트를 공격하는 숙주가 된 것이니까요.

그래서 요즘 유행하는 ssh 사전 공격은.. exploit 이라기 보다는 worm 의 형태를 가진다고 전 봅니다. (스스로 영역을 넓혀 나가니까요.)

Quote:

여기에 pam을 써서 몇번 이상 접속 시도후 실패하면 1시간을 막아버린다던가 하는 방법이 병행이되면 매우 합리적인 방법이라고 생각됩니다.

물론 geoip를 쓴 것도 탁월한 선택으로 생각됩니다만 ^^

pam 을 사용하는 방법도 괜찮지만, pam 의 경우 의외로 까다로운 구석이 많기 때문에 선뜻 사용해 지지는 않더군요 :-)

정태영의 이미지

http://denyhosts.sourceforge.net/

이런 것도 있군요 :)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

warpdory의 이미지

Quote:
xxxxxx:x:525:2001::/home/popusrs/xxxxxxxx:/dev/null

이런 식으로 메일 정도만 사용하는 일반 유저일 경우에는 저렇게 셸을 /dev/null 로 놓는 것도 어느 정도는 효과가 있더군요.

실제로는 chroot 등등으로 자신의 디렉터리 이상으로는 못 올라오게 합니다. 설사 패쓰워드가 유출되어서 나온다고 하더라도 자기 자신의 디렉터리 이상은 구경도 못하죠. 물론, 관리자는 제외...


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

다즐링의 이미지

메일은 vpopmail 로!! qmail 만세 =3

------------------------------------------------------------------------------------------------
Life is in 다즐링

hiseob의 이미지

사전공격 그래서 어떤 뜻깊은 의미가 있다고 생각하실분들을 위해서:

사전 = Dictionary

미리 준비된 "사전" 을 가지고 계속 접속을 시도하는겁니다.

예를들면 ID / PASS 가 tom / tom 이거나 web / web 이렇게 설정되있는 경우를 뚫는겁니다

뭐 당할확률이 낮긴 하지만, 그래도 조심하는게 좋다고 봅니다