무작위로 ssh 로 들어오려고 하는 로그땜시 신경쓰이네요

doodoo의 이미지

Oct 24 12:58:12 doodoo sshd[19006]: Invalid user unix from 222.90.65.251
Oct 24 12:58:12 doodoo sshd[19006]: pam_unix(sshd:auth): check pass; user unknown
Oct 24 12:58:13 doodoo sshd[19006]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.90.65.251
Oct 24 12:58:14 doodoo sshd[19006]: Failed password for invalid user unix from 222.90.65.251 port 10176 ssh2
Oct 24 12:58:20 doodoo sshd[19009]: Invalid user webadmin from 222.90.65.251
Oct 24 12:58:20 doodoo sshd[19009]: pam_unix(sshd:auth): check pass; user unknown
Oct 24 12:58:20 doodoo sshd[19009]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.90.65.251
Oct 24 12:58:22 doodoo sshd[19009]: Failed password for invalid user webadmin from 222.90.65.251 port 11987 ssh2
Oct 24 12:58:28 doodoo sshd[19013]: Invalid user ftp from 222.90.65.251
Oct 24 12:58:28 doodoo sshd[19013]: pam_unix(sshd:auth): check pass; user unknown
Oct 24 12:58:28 doodoo sshd[19013]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.90.65.251
Oct 24 12:58:30 doodoo sshd[19013]: Failed password for invalid user ftp from 222.90.65.251 port 13886 ssh2
Oct 24 12:58:36 doodoo sshd[19017]: Invalid user test from 222.90.65.251
Oct 24 12:58:36 doodoo sshd[19017]: pam_unix(sshd:auth): check pass; user unknown
Oct 24 12:58:36 doodoo sshd[19017]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.90.65.251
Oct 24 12:58:38 doodoo sshd[19017]: Failed password for invalid user test from 222.90.65.251 port 15711 ssh2

지금도 이렇게 자꾸 들어오려고 하는데....
같은 아이피에 대해 5번 이상 실패하면 1시간 동안 아이피 블럭!
이런식으로 막을수 있는 방법이 있을까요?
iptable 을 이용하면 될것 같기는 한데 ... 이쪽으로는 무지하므로 질문을 올립니다.

ExSuperstar의 이미지

denyhosts를 사용하세요
------
이것은 시그너쳐입니다.

USE="어리고 착하고 돈많고 이쁘고" emerge girl

------
이것은 시그너쳐입니다.

USE="어리고 착하고 돈많고 이쁘고" emerge girl

다콘의 이미지

fail2ban도 좋습니다.
http://www.fail2ban.org/wiki/index.php/Main_Page

서버라면 특정 IP를 제외하고 전부 막는게 속편합니다.
그럴 상황이 못되면 ssh 포트를 22번 말고 다른걸로 변경하면
무작위 접속은 피할 수 있습니다.

doodoo의 이미지

감사합니다. 우분투 페키지 안에 있군요.... 컴파일 하기 직전 확인했습니다.

김정균의 이미지

같은 아이피에 대해 5번 이상 실패하면 1시간 동안 아이피 블럭!
이런식으로 막을수 있는 방법이 있을까요?

http://my.oops.org/56

송효진의 이미지

예전에 이거 했었는데, 풀어버렸습니다.
이유는 '실패시'를 카운트 할 수 없기 때문입니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

김정균의 이미지

실패시를 카운트 할 필요는 없죠. 몇초 안에 몇번의 접속이 들어오냐를 측정하면 되는 것이니까요.

저의 경우에는 60초 동안 10번의 접속이 들어올 경우를 막습니다. 보통 이렇게 들어올 이유는 없으니까요. broute force attack 의 좀 관대하게 설정 하자면, 60초 동안 20번의 접속을 막는 것도 잘 막아지기는 할 겁니다.

송효진의 이미지

ssh 의 port 22 는 sftp 나 scp 도 해당됩니다.
모니터링을 위해 ssh 한 5개 열고 scp 몇번 하면 막힙니다.
message 로그를 보면 60초 5번의 실패 정도를 막아야 효과적일거라 생각됩니다.

Nov  4 19:27:05 server sshd[21470]: Invalid user <!-- from 88.32.233.142
Nov  4 19:27:15 server sshd[22078]: Invalid user admin from 88.32.233.142
Nov  4 19:27:26 server sshd[22589]: Invalid user guest from 88.32.233.142
Nov  4 19:27:31 server sshd[22963]: Invalid user webmaster from 88.32.233.142
Nov  4 19:27:41 server sshd[23679]: Invalid user oracle from 88.32.233.142
Nov  4 19:27:47 server sshd[23905]: Invalid user library from 88.32.233.142
Nov  4 19:27:52 server sshd[24179]: Invalid user info from 88.32.233.142
Nov  4 19:27:56 server sshd[24411]: Invalid user shell from 88.32.233.142
Nov  4 19:27:59 server sshd[24581]: Invalid user linux from 88.32.233.142
Nov  4 19:28:03 server sshd[24785]: Invalid user unix from 88.32.233.142
Nov  4 19:28:07 server sshd[24935]: Invalid user webadmin from 88.32.233.142
Nov  4 19:28:23 server sshd[25629]: Invalid user admin from 88.32.233.142
Nov  4 19:28:28 server sshd[25959]: Invalid user guest from 88.32.233.142
Nov  4 19:28:32 server sshd[26200]: Invalid user master from 88.32.233.142
Nov  4 19:29:09 server sshd[28467]: Invalid user admin from 88.32.233.142

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

doodoo의 이미지

블로그에 가서 보니깐

# ssh buste attack rule 
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHSCAN 
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 8 --rttl --name SSHSCAN -j LOG --log-prefix SSH_Scan: 
%-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 8 --rttl --name SSHSCAN -j DROP 

잘 이해가 안가서 (워낙...iptables 쪽은 문외한이라서...ㅠ)

우분투에서는 자동으로 시작하는 /etc/initrd/iptables 등이 없는데....

http://kldp.org/node/90468#comment-427005
여기 보니깐 resent 모듈을 써서 하는것도 있군요..
근데 내용이 조금 다릅니다.

ssh로 자꾸
Submitted by academic on 금, 2008/01/25 - 2:36pm.
1
point
 
ssh로 자꾸 접속시도하는 IP가 있는 경우엔 recent 모듈을 이용하는 것도 한 방법이라고 생각합니다.
 
# recent 모듈을 이용해 22번 포트로 접속하는 IP를 기록
-A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource
# 60초 동안 4번 이상 접속을 시도한 IP가 아니라면 접속을 허가. 즉, 1분에 4번 이상 접속을 시도하면 접속 차단.
-A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
 
seconds랑 hitcount를 적절히 조정해 주시면, 정상적인 용도로 접근하는 사람은 아무런 불편없이 사용할 수 있을 겁니다.

아...근데...두개다 몇번의 로그인 실패시 Drop 하는 룰은 아닌것 같네요..
제가 잘 모르는건지도 .........

bushi의 이미지

1분에 4번 이상 접속을 시도했다면, 1분에 '4번 이상 로그인 실패' 를 한 거죠.
암호를 까먹은 나머지 닥치는대로 이것저것 시도하는 사람일 가능성도 있고,
세션 여러 개를 단시간 내에 연결해서 뭔가를 하려는 사람일 가능성도 있지만,
공격을 감행하는 bot 일 가능성이 절대적으로 높습니다.

몇 번 이상 실패한 '계정' 에 대해 '계정블럭'을 하는 것은 아마도 PAM 모듈 중에 구현된 것이 있을 것도 같은데,
아시겠지만 굉장히 위험합니다. 누군가가 다른 사람의 계정을 의도적으로 혹은 실수로 블록시키는 것이 가능하니까요.
그리고, 공격패턴을 보면 특정id 에 대해 특정한 passwd 로 딱 한번만 시도하고는 다음 계정으로 재시도하니... 이건 뭐...

몇 번 이상 실패한 '접속지 주소'에 대해 deny 하는 것도 PAM 모듈들을 잘 조합하면 가능할 것 같습니다.
없으면 만드는 것도 불가능한 것은 아닌데,
이건 계정단위가 아니라 접속지 주소로 카운팅을 해야하니 로그파일이 엄청나게 커지고 관리도 힘들겠네요.
이런 삽질을 하느니 위의 iptables rule에 맡기고 말겠습니다.
영원히 금지하는 것도 아니기 때문에 사유가 있는 정상적인 사용자라면 1분 후에 다시 재시도 하면 될테고요.

사실, 저렇게 iptables 로 막는 이유는 저런 공격으로 뚫릴까봐 걱정되서라기 보단
log 파일에 계속 쓰레기가 쌓이는 바람에 의미 있는 뭔가를 놓치는 게 두려워서...일 수도.

OTL

송효진의 이미지

scp 를 즐겨쓰는 (특히 bash-completion 까지 이용하는) 저는 분당 수십번의 접속을 합니다.

scp myserver:/home/my [tab]
scp myserver:/home/mydir/pub[tab]
scp myserver:/home/mydir/public_html/

bot 은 오히려 과부하 공격이 될 정도의 공격은 잘 안합니다.
로그인 실패 정보를 이용하는 솔루션이 훨씬 좋다고 생각합니다.
확실한 실패인 경우 5번 실패시 '영원히' 막아버리면 로그도 깔끔하겠죠.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

bushi의 이미지

sshfs 가 필요한 것 같으신데요.
로그인실패정보를 이용하는 솔루션이 훨씬 더 좋은 것은 의심의 여지 없는 사실이지만,
위에 적었듯 '누가' 실패했는가가 아니라 '어디서' 실패했는지를 기록해야하고,
그 자체로 DoS 를 허용하는 게 됩니다.

OTL

Necromancer의 이미지

포트 바꾸고 인증방식을 publickey로 바꾸세요. publickey는 키파일 도난 안당한다면 그리 쉽게 못뚫을걸요.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

오호라의 이미지

1년에 한두번정도 port 바꿔주면 확~ 사라지는 듯합니다.

Hello World.

doodoo의 이미지

doodoo@doodoo:/etc/init.d$ sudo ./fail2ban status
[sudo] password for doodoo:
 * Status of authentication failure monitor
 *  fail2ban is not running
doodoo@doodoo:/etc/init.d$

우분투 에서 수동으로 doodoo@doodoo:/etc/init.d$ sudo ./fail2ban start 하고서
한참 뒤에 봤더니 이렇게 나오네요..먼가 문제가 있어서 동작하지 않는것 같은데...

doodoo의 이미지

https://bugs.launchpad.net/ubuntu/+source/fail2ban/+bug/223706
여기에 보면 /var/run/fail2ban 디렉토리를 수동으로 만들어 주어야 하네요..ㅎㅎㅎ
이제 로그보면서 쾌감(?)을 느껴야지..ㅎㅎㅎㅎ

dl3zp3의 이미지

혼자서만 쓰려고 설치한 SSH서버이거나 SSH서버로 접속할 사람들의 수가 적고 그 사람들의 IP가 일정하다면....

hosts.allow와 hosts.deny를 통해서 특정 아이피만 허용하고 나머지는 다 불허용하면 됩니다.
예를 들어서 /etc/hosts.allow에는

sshd: 123.456.123.456, 999.999.999.999, 127.0.0.1

라는 한 줄이 있고 /etc/hosts.deny 에는

sshd: ALL

라는 한 줄이 있으면 아이피가 123.456.123.456, 999.999.999.999, 127.0.0.1중 하나인 컴퓨터만 SSH서버에 접속할 수 있습니다.

만약 SSH서버가 윈도우즈XP이상에서 가동되는 경우는 hosts.allow와 hosts.deny를 쓰는 대신 윈도우즈자체방화벽을 이용해서 아이피제한을 걸 수 있습니다.

i++의 이미지

특정 국가쪽에서만 들어온다면 (이를테면 동쪽의 큰 나라)
iptable + geoip 를 써서 차단해 보시는것도 나쁘진 않을듯 하군요.

over the rainbow...

over the rainbow...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.