접속해킹에 대비하는 방법!

changkhan의 이미지

제가 운용중인 서버가 가끔씩 해킹을 당하네요;;
해킹하는 방법은 무한 커넥트인데요.
해킹클라이언트가 한꺼번에 엄청난 횟수의 커넥트를 시도하면, 서버가 묵묵히 accept해 주다가 accept에러(EMFILE)를 띄우면서, 더이상 accept기능을 하지 못하는 것입니다.

accept다음에 ip검사를 하고, 같은 ip가 많이 접속 해 있으면, 곧바로 해당소켓을 shutdown해 버리는 형태로 막아보려고 했는데, 효과가 없네요.
accept후에 곧바로 소켓을 닫아버려도, EMFILE에러가 나는것을 보면, 방법이 잘못된 것 같습니다.

어떻게 하면 이런 종류의 해킹에 방어할 수 있을까요?

지리즈의 이미지

iptables와 netfilter쪽에 해결방안이 있을 것 같은데...

아마도 요즘에는 커널 소스에 포함된 것으로 보이는데...
확실하지는 않구요... 없으면 패치를 받으면 될 것 같습니다.

http://wiki.kldp.org/wiki.php/DocbookSgml/Netfilter-extensions-TRANS#AEN106

There is no spoon. Neo from the Matrix 1999.

changkhan의 이미지

답변 감사합니다. 첨부하신대로 하면 될 것 같은데, BSD라서 그런지 iptables명령이 없네요;

pyrasis의 이미지

iptables를 이용하시는게 가장 좋겠습니다.

www.netfilter.org 에서 커널 패치와 iptables를 배포하고 있습니다.

같은 IP가 계속 접속을 시도한다면 iptables를 이용해 수동으로라도

명령을 내려서 접속 패킷을 DROP시킬 수 있습니다.

iptables는 리눅스 커널 2.4에 해당하는 커널 패치와 유틸리티 입니다.

BSD는 ipfw 인가.. 비슷한게 있을 겁니다.

changkhan의 이미지

답변 감사합니다^^

ai의 이미지

pyrasis wrote:
iptables를 이용하시는게 가장 좋겠습니다.

www.netfilter.org 에서 커널 패치와 iptables를 배포하고 있습니다.

같은 IP가 계속 접속을 시도한다면 iptables를 이용해 수동으로라도

명령을 내려서 접속 패킷을 DROP시킬 수 있습니다.

iptables는 리눅스 커널 2.4에 해당하는 커널 패치와 유틸리티 입니다.

BSD는 ipfw 인가.. 비슷한게 있을 겁니다.


bsd 에서는 iptables 사용이 되지 않을테니 도움은 안되겠습니다만, 일단 위에서 언급된 부분에 대해서만큼은 자동으로 처리할 수도 있습니다. pom 에 보면 recent match 가 포함되어 있는데,
http://netfilter.org/documentation/HOWTO//netfilter-extensions-HOWTO-3.html#ss3.16
# iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP
# iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name badguy --set -j DROP

139 포트를 접근하는 호스트에 대해 1 분 동안 모든 패킷을 차단하는 것입니다. 비슷한 방법으로 이런 구성을 해주면
# iptables -A INPUT -m recent --name badclients --rcheck --seconds 10 -j DROP
# iptables -A INPUT -p tcp --dport 3128 -m limit --limit 10/s --limit-burst 100 -j ACCEPT
# iptables -A INPUT -p tcp --dport 3128 -m recent --name badclients --set -j ACCEPT

초기값 100 과 초당 10 의 credit 을 가지고 3128 포트를 허용해주고, 그보다 빈번하게 패킷이 도착하면 10 초 동안 접근을 차단할 수 있습니다. 하지만 http 와 같이 매우 많은 요청을 처리해야 하는 포트를 이런 방법으로 감싸려면 좀 무리가 아닌가 하네요. 각 수치를 세심하게 조정해 준다고 하더라도 정상적인 요청을 drop 시킬 가능성이 언제나 있는 셈이니..

War doesnt determine whos right, just whos left.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.