酷!學園

技術討論區 => 系統安全討論版 => 主題作者是: achilles 於 2005-03-03 15:22

主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-03-03 15:22
我一直在找一支程式,這個程式的功能,就是可以及時把使用 "暴力法" 入侵伺服器的人給封鎖掉。我找這樣的程式已經很久了,我也認為應該會有這樣的程式才對,可是就是找不著,所以就自己寫了...

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

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

程式及安裝步驟請至這裡:
http://www.vixual.net/blog/archives/67
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: Line2005-03-03 16:02
引述: "achilles"
我一直在找一支程式,這個程式的功能,就是可以及時把使用 "暴力法" 入侵伺服器的人給封鎖掉。我找這樣的程式已經很久了,我也認為應該會有這樣的程式才對,可是就是找不著,所以就自己寫了...

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

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

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


Sorry....
我好像找不到可以下載的地方啊?
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-03-03 16:12
引述: "Line"
Sorry....
我好像找不到可以下載的地方啊?


在安裝步驟的地方:
ftp://www.vixual.net/source/block_ip/block_ssh.pl
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: Line2005-03-03 16:15
引述: "achilles"
引述: "Line"
Sorry....
我好像找不到可以下載的地方啊?


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


啊!抱歉!
在 wget .....
就有了說!
真是耍寶....
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: dean2005-03-04 02:46
~感謝分享~

請教一下,如果"同時"有數個IP來源對ssh做登入,會不會在短時間內造成更大的系統負荷??
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-03-04 10:18
引述: "dean"
~感謝分享~
請教一下,如果"同時"有數個IP來源對ssh做登入,會不會在短時間內造成更大的系統負荷??


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

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

另外,你可以編輯 /etc/ssh/sshd_config,加入
MaxStartups 10
這樣只允許最多 10 個連線同時進行登入 (不包括已登入完成的)
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: 洋蔥叔叔2005-03-04 13:04
把密碼認證關掉也是個不錯的方法
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-03-21 16:23
引述: "Demonbane"
把密碼認證關掉也是個不錯的方法


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

這樣是不是限制了只有管理者或特定的電腦可以不要打帳號跟密碼就直接連進主機了?
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: 洋蔥叔叔2005-03-21 18:24
對啊
密碼認證關掉的話一般猜密碼的"暴力法"完全沒有用。
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-03-21 23:50
引述: "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?

謝謝!
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: phantom2005-03-22 00:02
先確定你 log 檔的位置.

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

不過我也只是試試, 沒深入去看他的 script 並修改.
也許以後我會把密碼認證關掉.
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-03-22 00:31
引述: "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
不知道還有哪邊需要注意的?

謝謝!
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: phantom2005-03-22 00:36
不需要 reboot.

iptables -L 會秀... 擋好多次的話, 一堆同樣的.
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-03-22 09:27
引用
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 被擋掉了。
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-03-22 13:21
引述: "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 = ('

謝謝!
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-03-23 09:16
你的設定應該都沒什麼問題,除了下面對於 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 = ('
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-03-23 10:25
引述: "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
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-04-11 11:56
引述: "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
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: mimeory2005-04-11 13:55
一些暴力破解程式都是一次平行開出數十數百個連線同時登入暴力破解..
有些則是慢慢跑...
小弟有個點子可以來亂搞....不過目前我手邊沒有機器可以測試
 
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









很久沒用了 指令用法都忘光光了...
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: achilles2005-04-11 23:40
引述: "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:
主題: Re: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: robbie2005-04-12 03:02
引述: "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
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: sycross2005-04-22 18:03
問一下
對方是用那一程式來try你的ssh
3q
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: cmd2005-04-25 16:36
小弟也有類似的問題,經過一個上午的測試,可能的原因在於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://;          <--就是這一行
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: phantom2005-04-25 16:53
我的是 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.
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: dnl2005-04-25 19:08
如果會收到很多封信表示有可能還是沒有擋下來,
原作的 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)"的前面。
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: phantom2005-04-25 22:58
引述: "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.
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: HowardC2005-05-27 09:55
學長們好~~學弟在裝這套程式的時候遇到了一個問題, 可否請學長們幫忙解一下??
這個程式在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:
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: tigershen2005-06-13 10:27
如果是用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)
#===
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: Darkhero2005-11-01 12:33
剛剛發現該 script 無法在我一台主機上運作...
檢視後發現...該主機有啟動 shorewell (Mandriva 的防火牆自動設定)
所以需要修改一下 script ...

將 iptables 部份改為
shorewell drop $ip
即可...
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: yfchen2006-05-30 16:21
這些駭客是用哪一支程式來暴力攻擊SSH呢?

我想用來測我的伺服器經過上述的程式安裝後其變化為何
主題: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: netman2006-05-30 23:17
這裡, 大家都在 ssh 全開的時候想辦法擋掉不想要的 IP.
為何不換個想法:
將 ssh 的連線擋掉, 只開給特定的 IP 呢?

我之前寫過一份 tips, 也可以給大家參考:
http://www.study-area.org/tips/ssh_tips.htm
主題: 回覆: 及時封鎖想要用 "暴力法" 入侵伺服器的使用者(SSH)
作者: tiebob2008-04-18 17:57
看了大家的秘技,收穫良多,回去再看看自己管理的機器,覺得還有很多改進空間,一直以來都是把所有的機器用tcp_wrapper 擋住外部 ip,開放內部 ip 來登入,然後開放一台機器供 外部連線,再連到其它機器,不過最近每次看到 log 檔,就覺得煩啊!

有學長分享利用 pam的方式,不過,小弟管理的機器大都是 freebsd ,發現 pam_listfile.so 找不到,上google好像都是講 linux相關的文章比較多(有學長知道的話,也可以告知小弟一下)。


於是,就進入 /usr/ports/security,找了 *ssh* 的 port,嘿!發現有好幾個項目,看到其中一個是 sshblock,感覺可能是我要的功能,就上 google 查了一下,還真的是我想要的套件!


照著網友(參考了二、三個,就不一個一個列出了)的說明,兩三下就裝好了,還蠻容易的,可以試試啊!

# cd /usr/ports/security/sshblock
# make
# make install
# vi /etc/rc.conf
#(加入下列指令)
# SSH Block
sshblock_enable="YES"
sshblock_flags="-t /usr/local/etc/sshblock.tragger"
# vi /usr/local/etc/sshblock.tragger

#(加入下列指令, 表示60秒內有3次嘗試登入)
60:3
# /usr/local/etc/rc.d/sshblock start

ps: 忘了提一下,不知是我的 freebsd 版本比較舊(freebsd 6.1),還是 ports 有問題,在安裝 sshblock 時,一直出現無法下載 sshblock檔案的訊息(檔案大小不符)。
fetch: ftp://freebsd.nsysu.edu.tw/pub/FreeBSD/distfiles/sshblock-1.0.pl: size of remote file is not known
所以我就直接用 ftp 連線到任一大學(我選義守 ftp.isu.edu.tw)的 ftp 站,到 freebsd 的 distfiles 下載 sshblock-1.0.pl,把它複製到 /usr/ports/distfiles,然後再重新 make 一次就沒問題了。

ps2: 可以開兩個視窗,一個用 tail -f /etc/hosts.allow,另一個直接到登入視窗,故意打錯二次密碼,出現第三次 login 提示時,果然在 hosts.allow 就出現該 ip 被 deny了。

ps3: 把 freebsd相關的內容放這邊,會不會被打啊!