作者 主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)  (閱讀 44237 次)

0 會員 與 1 訪客 正在閱讀本文。

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
我一直在找一支程式,這個程式的功能,就是可以及時把使用 "暴力法" 入侵伺服器的人給封鎖掉。我找這樣的程式已經很久了,我也認為應該會有這樣的程式才對,可是就是找不著,所以就自己寫了...

程式是用 Perl 寫的,程式的原理,並不是每隔幾分鐘就去分析系統 Log,因為我覺得這樣對系統太操了。

這整個流程,首先藉由 TCP_Wrappers 的機制 (hosts.deny 及 hosts.allow) 在使用者登入時觸發我寫程式,然後程式會分析該使用者最近這一小時登入的狀況,對於不懷好意的使用者(登入失敗 10 次),直接以防火牆封鎖其 IP,然後程式會寄出一封電子郵件通知管理者。

程式及安裝步驟請至這裡:
http://www.vixual.net/blog/archives/67
« 上次編輯: 2008-07-11 17:42 由 achilles »
Vixual 網路視野
http://www.vixual.net/

Line

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
引述: "achilles"
我一直在找一支程式,這個程式的功能,就是可以及時把使用 "暴力法" 入侵伺服器的人給封鎖掉。我找這樣的程式已經很久了,我也認為應該會有這樣的程式才對,可是就是找不著,所以就自己寫了...

程式是用 Perl 寫的,程式的原理,並不是每隔幾分鐘就去分析系統 Log,因為我覺得這樣對系統太操了。

這整個流程,首先藉由 TCP_Wrappers 的機制 (hosts.deny 及 hosts.allow) 在使用者登入時觸發我寫程式,然後程式會分析該使用者最近這一小時登入的狀況,對於不懷好意的使用者,直接以防火牆封鎖其 IP,然後程式會寄出一封電子郵件通知管理者。

程式及安裝步驟請至這裡:
http://www.vixual.net/wikka/wikka.php?wakka=Archive2005030201


Sorry....
我好像找不到可以下載的地方啊?

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
引述: "Line"
Sorry....
我好像找不到可以下載的地方啊?


在安裝步驟的地方:
ftp://www.vixual.net/source/block_ip/block_ssh.pl
Vixual 網路視野
http://www.vixual.net/

Line

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
引述: "achilles"
引述: "Line"
Sorry....
我好像找不到可以下載的地方啊?


在安裝步驟的地方:
ftp://www.vixual.net/source/block_ip/block_ssh.pl


啊!抱歉!
在 wget .....
就有了說!
真是耍寶....

dean

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 1279
  • 性別: 男
  • 有些人,有些事,值得.
    • 檢視個人資料
~感謝分享~

請教一下,如果"同時"有數個IP來源對ssh做登入,會不會在短時間內造成更大的系統負荷??

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
引述: "dean"
~感謝分享~
請教一下,如果"同時"有數個IP來源對ssh做登入,會不會在短時間內造成更大的系統負荷??


理論上是有可能的,就像 DoS 的攻擊方式,但機率很小,因為:

1.每個 IP 只要失敗 10 次,就會被防火牆封鎖,不予回應了。
2.程式在判斷時,並不是針對 Log 檔的每一行逐一比對,而僅是取出該 IP 在這一小時內登入失敗的記錄做判斷,因此程式本身的執行很快。

另外,你可以編輯 /etc/ssh/sshd_config,加入
MaxStartups 10
這樣只允許最多 10 個連線同時進行登入 (不包括已登入完成的)
Vixual 網路視野
http://www.vixual.net/

洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
把密碼認證關掉也是個不錯的方法

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "Demonbane"
把密碼認證關掉也是個不錯的方法


請問把密碼認證關掉的話,是不是要用 KEY 的方式?

這樣是不是限制了只有管理者或特定的電腦可以不要打帳號跟密碼就直接連進主機了?

洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
對啊
密碼認證關掉的話一般猜密碼的"暴力法"完全沒有用。

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "achilles"
程式是用 Perl 寫的,程式的原理,並不是每隔幾分鐘就去分析系統 Log,因為我覺得這樣對系統太操了。

這整個流程,首先藉由 TCP_Wrappers 的機制 (hosts.deny 及 hosts.allow) 在使用者登入時觸發我寫程式,然後程式會分析該使用者最近這一小時登入的狀況,對於不懷好意的使用者(登入失敗 10 次),直接以防火牆封鎖其 IP,然後程式會寄出一封電子郵件通知管理者。



achilles 兄您好!

請問一下,如果小弟想改成一分鐘之內超過三次就封的話是不是只要改這邊?
$time_range = 1 * 60;
$drop_count = 3;
不知道小弟哪裏錯了?總是試不起來?
如果像是遇到這樣的狀況,兩分鐘內被Try300多次,那如果設定每一分鐘內有超過3次錯就封的話是不是會比較好?

Mar 20 06:57:42 test sshd(pam_unix)[16030]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw
Mar 20 06:59:57 test sshd(pam_unix)[16565]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw  user=root

如果要看有沒有成功的話,是不是去 iptables -L -n 看有沒有被封的 ip?

謝謝!

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
先確定你 log 檔的位置.

我的和他的不一樣...
我試過這個 script, it works... 不過, 會有同一 IP 被擋好多次的情況.

不過我也只是試試, 沒深入去看他的 script 並修改.
也許以後我會把密碼認證關掉.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "phantom"
先確定你 log 檔的位置.

我的和他的不一樣...
我試過這個 script, it works... 不過, 會有同一 IP 被擋好多次的情況.

不過我也只是試試, 沒深入去看他的 script 並修改.
也許以後我會把密碼認證關掉.


請問會擋好多次的話,會是怎麼的情形呢?

如果每秒try一次,
一分鐘內被Try了60次,
是說當到了設定的60秒的時間時
程式會判斷喔...錯誤超過3次...把你擋起來?

還是,以次數為前提
程式發現你三秒內連錯3次,好把你擋起來
到了第六秒發現你又不乖又來碰壁3次,好,再把你擋起來,
重複到了設定的60秒的設定時間總共被擋了20次?

還是說,我只管你這個ip
如果你一分鐘之內Try2次失敗了
沒關係
你再等這一分鐘過去你還有2次的機會可以Try?
如果你不小心在這一分鐘之內Try3次了那我就把你擋起來!
之後你再用這ip進來我也不理你也不會再擋你?



小弟不懂程式,請見諒了

小弟只改秒數和錯誤次數
"/var/log/secure";沒有動他

hosts.allow 也有加入
service sshd restart過
只是沒有reboot
不知道還有哪邊需要注意的?

謝謝!

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
不需要 reboot.

iptables -L 會秀... 擋好多次的話, 一堆同樣的.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
引用
achilles 兄您好!
請問一下,如果小弟想改成一分鐘之內超過三次就封的話是不是只要改這邊?
$time_range = 1 * 60;
$drop_count = 3;


是的,這樣沒錯。

引用
如果像是遇到這樣的狀況,兩分鐘內被Try300多次,那如果設定每一分鐘內有超過3次錯就封的話是不是會比較好?


不需要改成一分鐘 3 次,因為程式是使用者每次要登入時就會執行一次,雖然預設是一小時 10 次,但如果一分鐘之內就已經失敗 10 次,同樣也會馬上被擋掉(是以次數為前題的)。

而依你的狀況(每兩分鐘內被 try 300 多次),應該配合修改 sshd_config,加入
代碼: [選擇]
#最多可以同時有 10 個連線要求
MaxStartups 10


引用
Mar 20 06:57:42 test sshd(pam_unix)[16030]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw
Mar 20 06:59:57 test sshd(pam_unix)[16565]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw  user=root


以上你列出來的應該是 /var/log/messages 內的訊息,我的程式要判斷的是 /var/log/secure,請確認一次你的 log 檔的位置。
你可以輸入下列指令看有沒有訊息跑出來:
代碼: [選擇]
cat /var/log/secure | grep sshd.*Failed

引用
如果要看有沒有成功的話,是不是去 iptables -L -n 看有沒有被封的 ip?


是的,然後 root 會收到一封信,告訴你哪個 IP 被擋掉了。
Vixual 網路視野
http://www.vixual.net/

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "achilles"

引用
Mar 20 06:57:42 test sshd(pam_unix)[16030]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw
Mar 20 06:59:57 test sshd(pam_unix)[16565]: authentication failure; logname= uid=0         euid=0 tty=NODEVssh ruser= rhost=mail.ccps.tp.edu.tw  user=root


以上你列出來的應該是 /var/log/messages 內的訊息,我的程式要判斷的是 /var/log/secure,請確認一次你的 log 檔的位置。
你可以輸入下列指令看有沒有訊息跑出來:
代碼: [選擇]
cat /var/log/secure | grep sshd.*Failed

引用
如果要看有沒有成功的話,是不是去 iptables -L -n 看有沒有被封的 ip?


是的,然後 root 會收到一封信,告訴你哪個 IP 被擋掉了。



小弟對於您寫的程式只有把 #的部份刪掉 除了第一行之外
因為中文全變亂碼了
剩下的只有改 1*60*60 改為 1*60
次數改為3
其他都沒有改
那應該也是會去抓 /var/log/secure 的東西吧?

因為那個 /var/log/secure 只能顯示  ip 沒有顯示 domain name
所以小弟才用 /var/log/message 的畫面讓大家比較方便知道是誰在TRY


然後小弟照您的cat /var/log/secure | grep sshd.*Failed指令下
發現跑出大長串東西類似

Mar 22 00:57:43 test sshd[6236]: Failed password for root from ::ffff:155.230.181.110 port 1696 ssh2


只不過就是用 /sbin/iptables -L 怎麼看都看不到有被擋的ip產生?
不知道是哪裏錯了?


# vi /usr/bin/block_ssh.pl

前面是行號
      1 #!/usr/bin/perl
      2 $log_file = "/var/log/secure";
      3 $time_range = 1 * 60 * 60;
      4 $drop_count = 10;
      5 $mail = 'root@localhost';
      6 $sendmail = "/usr/sbin/sendmail";
      7 use Time::Local;
      8
      9 $ip = $ARGV[0];
     10 $daemon = $ARGV[1];
     11 $count = 0;
     12
     13 %month = (
     14         Jan     =>      0,
     15         Feb     =>      1,
     16         Mar     =>      2,
     17         Apr     =>      3,
     18         May     =>      4,
     19         Jun     =>      5,
     20         Jul     =>      6,
     21         Aug     =>      7,
     22         Sep     =>      8,
     23         Oct     =>      9,
     24         Nov     =>      10,

     25         Dec     =>      11
     26 );
     27
     28 $time = time();
     29 ($second,$minute,$hour,$day,$month,$year) = localtime($time);
     30
     31 @list = `cat $log_file | grep "sshd.*Failed password.* $ip "`;
     32 for(my $i = $#list; $i >= 0; $i--){
     33         my($log_month,$log_day,$log_time) = split(/ +/,$list[$i]);
     34         my($log_hour,$log_minute,$log_second) = split(/:/,$log_time);
     35         if($log_month > $month){
     36                 $log_year = $year - 1;
     37         }else{
     38                 $log_year = $year;
     39         }
     40         $log_time = timelocal($log_second,$log_minute,$log_hour,$log_day        ,$month{$log_month},$log_year);
     41         if($time < $log_time + $time_range ){
     42                 $count++;
     43         }else{
     44                 last;
     45         }
     46 }

     47
     48 if($count > $drop_count){
     49         `iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP`;
     50         if($mail){
     51                 $hostname = `hostname`;
     52                 $month++;
     53                 $year += 1900;
     54                 chomp($hostname);
     55                 open(MAIL, "| $sendmail -t") || die "Can't open $sendmai        l !\n";
     56                 print MAIL qq|To: $mail\n|;
     57                 print MAIL qq|Subject: [$hostname].. $ip\n|;
     58                 print MAIL qq|Content-Transfer-Encoding: 8bit\n|;
     59                 print MAIL qq|Content-type: text/plain\; charset=Big5\n\        n|;
     60                 print MAIL "\n..: $year-$month-$day $hour:$minute:$secon        d\n----\n... \"$ip\" ... SSH ......... $count .......... IP.\n\n";
     61                 print MAIL @list;
     62                 close(MAIL);
     63         }
     64 }
     65
     66 exit;



# ls -al /usr/bin/block_ssh.pl
-rwxr-xr-x  1 root root 1529 Mar 22 01:05 /usr/bin/block_ssh.pl

# vi /etc/hosts.allow
      7 sshd    :       ALL     :       spawn (/usr/bin/block_ssh.pl %c %d)

# vi /var/log/secure
還是發現被 211.219.11.22 連攻半個多小時 共 243次
333 Mar 22 12:05:32 test sshd[10163]: Did not receive identification strin        g from ::ffff:211.219.11.22
575 Mar 22 12:42:09 test sshd[11530]: Failed password for invalid user fot        ograf from ::ffff:211.219.11.22 port 3672 ssh2

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     ipv6-crypt--  anywhere             anywhere
ACCEPT     ipv6-auth--  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited


再用 iptables 去查還是沒有被擋起來?

不知道是哪裏沒設好呢?
會不會是跟 mail 沒設好有關係?

小弟亂try不知道 .pl的檔是不是要裝什麼才能正常使用?
還是預設就可以用了?
# sh /usr/bin/block_ssh.pl
/usr/bin/block_ssh.pl: line 2: =: command not found
/usr/bin/block_ssh.pl: line 3: =: command not found
/usr/bin/block_ssh.pl: line 4: =: command not found
/usr/bin/block_ssh.pl: line 5: =: command not found
/usr/bin/block_ssh.pl: line 6: =: command not found
/usr/bin/block_ssh.pl: line 7: use: command not found
/usr/bin/block_ssh.pl: line 9: =: command not found
/usr/bin/block_ssh.pl: line 10: =: command not found
/usr/bin/block_ssh.pl: line 11: =: command not found
/usr/bin/block_ssh.pl: line 13: syntax error near unexpected token `('
/usr/bin/block_ssh.pl: line 13: `%month = ('

謝謝!

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
你的設定應該都沒什麼問題,除了下面對於 block_ssh.pl 的語法測試。
請幫我測試下列指令:
perl -c /usr/bin/block_ssh.pl

引述: "robbie"

小弟亂try不知道 .pl的檔是不是要裝什麼才能正常使用?
還是預設就可以用了?
# sh /usr/bin/block_ssh.pl
/usr/bin/block_ssh.pl: line 2: =: command not found
/usr/bin/block_ssh.pl: line 3: =: command not found
/usr/bin/block_ssh.pl: line 4: =: command not found
/usr/bin/block_ssh.pl: line 5: =: command not found
/usr/bin/block_ssh.pl: line 6: =: command not found
/usr/bin/block_ssh.pl: line 7: use: command not found
/usr/bin/block_ssh.pl: line 9: =: command not found
/usr/bin/block_ssh.pl: line 10: =: command not found
/usr/bin/block_ssh.pl: line 11: =: command not found
/usr/bin/block_ssh.pl: line 13: syntax error near unexpected token `('
/usr/bin/block_ssh.pl: line 13: `%month = ('
Vixual 網路視野
http://www.vixual.net/

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "achilles"
你的設定應該都沒什麼問題,除了下面對於 block_ssh.pl 的語法測試。
請幫我測試下列指令:
perl -c /usr/bin/block_ssh.pl

引述: "robbie"

小弟亂try不知道 .pl的檔是不是要裝什麼才能正常使用?
還是預設就可以用了?
# sh /usr/bin/block_ssh.pl
/usr/bin/block_ssh.pl: line 2: =: command not found
/usr/bin/block_ssh.pl: line 3: =: command not found
/usr/bin/block_ssh.pl: line 4: =: command not found
/usr/bin/block_ssh.pl: line 5: =: command not found
/usr/bin/block_ssh.pl: line 6: =: command not found
/usr/bin/block_ssh.pl: line 7: use: command not found
/usr/bin/block_ssh.pl: line 9: =: command not found
/usr/bin/block_ssh.pl: line 10: =: command not found
/usr/bin/block_ssh.pl: line 11: =: command not found
/usr/bin/block_ssh.pl: line 13: syntax error near unexpected token `('
/usr/bin/block_ssh.pl: line 13: `%month = ('



# perl -c /usr/bin/block_ssh.pl
/usr/bin/block_ssh.pl syntax OK


小弟現在用兩台
一台 Fedora 有裝 redhat 的預設的防火牆
一台是 Lineox ES4 都沒裝防火牆

兩台都測不起來!
不知道是不是哪些應該啟動的服務沒有開?

小弟手動新增或是插入規則是可以成功


# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.1 -j ACCEPT
#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere
ACCEPT     tcp  --  192.168.0.1          anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     ipv6-crypt--  anywhere             anywhere
ACCEPT     ipv6-auth--  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibite

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "achilles"
你的設定應該都沒什麼問題,除了下面對於 block_ssh.pl 的語法測試。
請幫我測試下列指令:
perl -c /usr/bin/block_ssh.pl

引述: "robbie"

小弟亂try不知道 .pl的檔是不是要裝什麼才能正常使用?
還是預設就可以用了?
# sh /usr/bin/block_ssh.pl
/usr/bin/block_ssh.pl: line 2: =: command not found
/usr/bin/block_ssh.pl: line 3: =: command not found
/usr/bin/block_ssh.pl: line 4: =: command not found
/usr/bin/block_ssh.pl: line 5: =: command not found
/usr/bin/block_ssh.pl: line 6: =: command not found
/usr/bin/block_ssh.pl: line 7: use: command not found
/usr/bin/block_ssh.pl: line 9: =: command not found
/usr/bin/block_ssh.pl: line 10: =: command not found
/usr/bin/block_ssh.pl: line 11: =: command not found
/usr/bin/block_ssh.pl: line 13: syntax error near unexpected token `('
/usr/bin/block_ssh.pl: line 13: `%month = ('



achilles兄您好!

對於您的程式小弟很想拿來好好運用一下
小弟換了一台機器測試了一下
有正常的訊息產生!也就是有偵測並且有反應!
不過問題就是
小弟用 iptables -L 或是 iptables-save 都看不到被封鎖的 ip
不知道還有哪邊要注意的!?

謝謝!



時間: 2005-4-11 9:37:39
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 11 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2


時間: 2005-4-11 9:37:47
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 12 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2
Apr 11 09:37:46 test sshd[9146]: Failed password for illegal user cyrus from ::ffff:67.9.152.62 port 50668 ssh2



# iptables-save
# Generated by iptables-save v1.2.9 on Mon Apr 11 11:44:24 2005
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5776:672364]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Apr 11 11:44:24 2005

mimeory

  • 訪客
一些暴力破解程式都是一次平行開出數十數百個連線同時登入暴力破解..
有些則是慢慢跑...
小弟有個點子可以來亂搞....不過目前我手邊沒有機器可以測試
 
try it:
iptables -N SSH_FILTER
iptables -A INPUT -p tcp --syn -dport 22 -j SSH_FILTER
iptables -A SSH_FILTER -i $inet_face -p tcp --syn  -dport 22 \
-m connlimit --connlimit-above 2 -j DROP
iptables -A SSH_FILTER -i $inet_face -p tcp --syn -dport 22 \
-m iplimit --iplimit-above 4 -j DROP









很久沒用了 指令用法都忘光光了...

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
引述: "robbie"


時間: 2005-4-11 9:37:39
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 11 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2


時間: 2005-4-11 9:37:47
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 12 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2
Apr 11 09:37:46 test sshd[9146]: Failed password for illegal user cyrus from ::ffff:67.9.152.62 port 50668 ssh2



依你收的的訊息看來,程式是有跑完的,也有執行了防火牆的指令,但可能指令執行失敗了!!
防火牆的指令在程式的第 72 列:
代碼: [選擇]
`iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP`;
請先從終端機輸入下列指令執行看看是否有錯誤(記得將 $ip 換成某個封鎖的 ip):
代碼: [選擇]
iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP
如果有錯誤,則依你的防火牆實際可用的參數去修改。

對了,不知你的 Linux 是從什麼版本換成什麼版本?

因為我學 Linux 只是用來輔助我的「程式設計」而已,所以我一直都只有使用 Redhat Linux 7.3,因此我的網站也只能記錄 Redhat Linux 7.3 的使用心得。

而其它版本的 Linux 我並沒有認真去使用過,所以不知我的程式在別的平台的執行狀況,所以,程式如果不能執行,我也不一定能解決的了... :cry:
Vixual 網路視野
http://www.vixual.net/

robbie

  • 活潑的大學生
  • ***
  • 文章數: 307
    • 檢視個人資料
引述: "achilles"
引述: "robbie"


時間: 2005-4-11 9:37:39
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 11 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2


時間: 2005-4-11 9:37:47
----
使用者 "::ffff:67.9.152.62" 嘗試以 SSH 登入伺服器,共失敗 12 次,已於防火牆封鎖該 IP。

Apr 11 09:36:39 test sshd[9069]: Failed password for nobody from ::ffff:67.9.152.62 port 45571 ssh2
Apr 11 09:36:45 test sshd[9076]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 45586 ssh2
Apr 11 09:36:51 test sshd[9083]: Failed password for illegal user patrick from ::ffff:67.9.152.62 port 46012 ssh2
Apr 11 09:36:59 test sshd[9090]: Failed password for root from ::ffff:67.9.152.62 port 46826 ssh2
Apr 11 09:37:04 test sshd[9097]: Failed password for root from ::ffff:67.9.152.62 port 47282 ssh2
Apr 11 09:37:11 test sshd[9104]: Failed password for root from ::ffff:67.9.152.62 port 47713 ssh2
Apr 11 09:37:16 test sshd[9111]: Failed password for root from ::ffff:67.9.152.62 port 48543 ssh2
Apr 11 09:37:22 test sshd[9118]: Failed password for root from ::ffff:67.9.152.62 port 48987 ssh2
Apr 11 09:37:27 test sshd[9125]: Failed password for illegal user rolo from ::ffff:67.9.152.62 port 49417 ssh2
Apr 11 09:37:33 test sshd[9132]: Failed password for illegal user iceuser from ::ffff:67.9.152.62 port 49830 ssh2
Apr 11 09:37:38 test sshd[9139]: Failed password for illegal user horde from ::ffff:67.9.152.62 port 50255 ssh2
Apr 11 09:37:46 test sshd[9146]: Failed password for illegal user cyrus from ::ffff:67.9.152.62 port 50668 ssh2



依你收的的訊息看來,程式是有跑完的,也有執行了防火牆的指令,但可能指令執行失敗了!!
防火牆的指令在程式的第 72 列:
代碼: [選擇]
`iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP`;
請先從終端機輸入下列指令執行看看是否有錯誤(記得將 $ip 換成某個封鎖的 ip):
代碼: [選擇]
iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP
如果有錯誤,則依你的防火牆實際可用的參數去修改。

對了,不知你的 Linux 是從什麼版本換成什麼版本?

因為我學 Linux 只是用來輔助我的「程式設計」而已,所以我一直都只有使用 Redhat Linux 7.3,因此我的網站也只能記錄 Redhat Linux 7.3 的使用心得。

而其它版本的 Linux 我並沒有認真去使用過,所以不知我的程式在別的平台的執行狀況,所以,程式如果不能執行,我也不一定能解決的了... :cry:



謝謝上面兩位前輩解答
小弟剛好有機會除了8以前的版本(redhat有8嗎?)沒機會測!
弟從9開始玩玩了快一年
除了Fedora 1沒裝
其他包括FC2、FC3、SL3、CentOS4、ES3都有安裝過
再過幾天應該就有正式版的ES4可以玩了
不過真的好累!

今天沒力測了!
過幾天再來報告我的小心得囉!


現在這一台是FC2

sycross

  • 憂鬱的高中生
  • ***
  • 文章數: 104
    • 檢視個人資料
問一下
對方是用那一程式來try你的ssh
3q

cmd

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
小弟也有類似的問題,經過一個上午的測試,可能的原因在於hosts.allow傳給這個程式的ip是 "::ffff:67.9.152.62" ,注意看,比平常的ip多了 "::ffff:"這些東西。猜想是IPV6與IPV4的差異(不懂,也不是很確定)。
因為這個差異,導致iptables無法正確的把入侵者的ip封鎖,所以它就一直try你的電腦,你的電腦就一直寄信告訴你說我把它封鎖啦。但是實際上根本沒有封鎖,所以它就一直try,你的電腦就一直寄信,小弟一個晚上收了百封信……

不過既然是多了"::ffff:"這東西,就把它去掉就ok啦,去掉的方法就在程式裏取得ip的後面加上一行說:我要去掉"::ffff:",我要去掉"::ffff:"……語法如下:
代碼: [選擇]
$ip =~ s/::ffff://;
加在哪裏呢?加在這裏就行啦
代碼: [選擇]
$ip = $ARGV[0];
$daemon = $ARGV[1];
$count = 0;
$ip =~ s/::ffff://;          <--就是這一行

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
我的是 IPv4...

Apr 25 16:28:31 gateway sshd[653]: Failed password for illegal user patrick from 222.3.77.242 port 50477 ssh2
Apr 25 16:28:32 gateway sshd[667]: Failed password for illegal user patrick from 222.3.77.242 port 50531 ssh2

不過我的還是會收到很多封信...

它到底有沒有擋... 我還沒試. 不過, 我之後都會手動把這些 IP 加到 script 裡. 不然重 run 我的 IP script 就又清空了. 另外, 我比較狠一點. 不只擋 22 的 port. 從這些 IP 來的 packet 我全 drop 掉.

來 try 我機器的人想必也不是啥好東西, 根本不讓它連. 反正是我的機器. I can do whatever I like with it.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

dnl

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
如果會收到很多封信表示有可能還是沒有擋下來,
原作的 script 有一個問題是、
如果你也是像我使用的是 study-area 網中人提供的 ipt_service 之類的  firewall script。
那麼實際上阻擋登入的 iptables 指令 (第二行)
代碼: [選擇]
       `iptables -I services -p tcp -s $ip --dport 22 -j DROP`;
        #`iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP`;

會把阻斷 ssh 服務的規則插到 INPUT chain 裏,允許 services chain 裏面的規則【之後】
所以只要把 -A 改成 -I (實際上是不是加到 SERVICES chain 裏倒無所謂)才會把這行"禁止"的規則加在"開放ssh(22port)"的前面。

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
引述: "dnl"
如果會收到很多封信表示有可能還是沒有擋下來,
原作的 script 有一個問題是、
如果你也是像我使用的是 study-area 網中人提供的 ipt_service 之類的  firewall script。
那麼實際上阻擋登入的 iptables 指令 (第二行)
代碼: [選擇]
       `iptables -I services -p tcp -s $ip --dport 22 -j DROP`;
        #`iptables -A INPUT -p tcp -s $ip --dport 22 -j DROP`;

會把阻斷 ssh 服務的規則插到 INPUT chain 裏,允許 services chain 裏面的規則【之後】
所以只要把 -A 改成 -I (實際上是不是加到 SERVICES chain 裏倒無所謂)才會把這行"禁止"的規則加在"開放ssh(22port)"的前面。


今天傍晚比較有時間, 看了一下. 的確, 我的 script 是要用 insert 就 ok.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

HowardC

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
學長們好~~學弟在裝這套程式的時候遇到了一個問題, 可否請學長們幫忙解一下??
這個程式在RH9.0上RUN是OK的, 我最近裝在Core 2上時, 卻發生無法驗證的問題, 我查看/var/log/secure檔, 發覺只要有人有登入的動作就會產生下面的訊息.

May 27 09:43:17 ensim sshd[1524]: warning: /etc/hosts.allow, line 6: execl /bin/sh: Interrupted system call

然後就驗證登入了, 程式不會執行.

系統環境如後
hosts.allow內容如下:
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
sshd: ALL: spawn (/usr/bin/block_ssh.pl %c %d)
====>第六行
block_ssh.pl的權限是755, OWNER是ROOT
我RUN了 perl -c /usr/bin/block_ssh.pl 是回應OK.
RUN  iptables -L -n, INPUT的CHAIN未加入驗證失敗的IP.
我直在OS下RUN /usr/bin/block_ssh.pl X.X.X.X是可以正常被加入到防火牆的INPUT內.----程式是好的.
看起來像是SPWAN在呼叫block_ssh.pl時出問題, 中止系統執行的block_ssh.pl的程序, 請學長們幫幫忙.... :lol:  :lol:

tigershen

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
如果是用pf的人可以用下列方法 ( Openbsd or Freebsd )

#===openbsd 3.7 pf.conf===#
ext_if="fxp0"
int_if="fxp1"

table <intruder> persist

block in quick on $ext_if inet from <intruder> to $ext_if
pass in quick on $ext_if inet proto tcp from any to $ext_if port 22 flags S/SA modulate state (max-src-conn-rate 3/10, overload <intruder> flush)
#===

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
剛剛發現該 script 無法在我一台主機上運作...
檢視後發現...該主機有啟動 shorewell (Mandriva 的防火牆自動設定)
所以需要修改一下 script ...

將 iptables 部份改為
shorewell drop $ip
即可...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

yfchen

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
這些駭客是用哪一支程式來暴力攻擊SSH呢?

我想用來測我的伺服器經過上述的程式安裝後其變化為何