GNU/Linux >> Znalost Linux >  >> Linux

Stovky neúspěšných přihlášení přes ssh

Řešení 1:

Pomocí iptables můžete rychlostně omezit nová příchozí připojení k portu SSH. Abych vám mohl poskytnout řešení na klíč, musel bych vidět celou vaši konfiguraci iptables, ale v podstatě mluvíte o přidávání pravidel jako:

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP 
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT 

Tato pravidla předpokládají, že přijímáte ESTABLISHED připojení dříve v tabulce (takže na tato pravidla budou zasahovat pouze nová připojení). Nová připojení SSH budou splňovat tato pravidla a budou označena. Za 60 sekund bude mít 5 pokusů z jedné IP adresy za následek přerušení nových příchozích připojení z této IP adresy.

To se mi osvědčilo.

Edit:Dávám přednost této metodě před "fail2ban", protože není třeba instalovat žádný další software a probíhá zcela v režimu jádra. Nezvládá analýzu souborů protokolu jako "fail2ban", ale pokud je váš problém pouze s SSH, nepoužil bych něco v uživatelském režimu, který vyžaduje instalaci softwaru a je složitější.

Řešení 2:

fail2ban s tím může pomoci blokováním IP adres s příliš velkým počtem neúspěšných pokusů o přihlášení.

Řešení 3:

Doporučil bych použít nestandardní port pro SSH, pokud můžete (tj. port 10222), ale protože jste zmínil, že to nemůžete udělat, doporučil bych použít něco jako DenyHosts.

http://denyhosts.sourceforge.net/

Skvělý balíček, snadná instalace a konfigurace.

Řešení 4:

I když může být hezké mít možnost ssh do vašeho systému z libovolných míst na internetu, existují automatizované systémy pro útoky heslem, které se uzamknou na otevřeném ssh portu a aplikují na váš systém různé útoky na účet Joe a slovník. Číst to v nočním shrnutí deníku může být přitěžující a je to plýtvání vaší šířkou pásma.

Pokud máte webový server na stejném systému, můžete použít php a tcp wrappery k omezení příchozího provozu ssh na známé systémy a navíc vám poskytne klíč zadních vrátek, který vám umožní přístup z libovolných systémů na internetu.

Zde je návod, jak to udělat:

zakázat všechna připojení ssh v /etc/hosts.deny:

# /etc/hosts.deny fragment
sshd:  all

Povolit známé systémy podle IP v /etc/hosts.allow a přidat soubor pro dočasný přístup:

# /etc/hosts.allow fragment
sshd:  10.0.10.2     # some system
sshd:  172.99.99.99  # some other system
sshd:  /etc/hosts.allow.temporary-sshd-access

Vytvořte soubor php na svém webovém serveru a dejte mu nesrozumitelný název jako my-sshd-access.php:

<?php
function get_ip()
{
    return getenv("REMOTE_ADDR"); 
}

?>

<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';

print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);

$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);

print "Wrote: ";
readfile($out);
?>

Promiňte ten php kód - stáhl jsem ho odjinud, takže by to pravděpodobně vydrželo vyčistit celou partu. Jediné, co dělá, je přidat IP adresu systému, který k němu přistupuje, do souboru /etc/hosts.allow.temporary-sshd-access, který čte sshd (kvůli jeho zahrnutí do /etc/hosts.allow) v době připojení. .

Nyní, když jste v libovolném systému na webu a chcete do tohoto systému použít ssh, nejprve použijte webový prohlížeč a klikněte na tento soubor (nebo použijte wget nebo ekvivalent):

$ wget http://your.system.name/my-sshd-access.php

Nyní byste měli být schopni se ssh připojit do vašeho systému. Pokud je to místo, odkud budete pravděpodobně často připojovat ssh, bylo by triviální přečíst si obsah souboru /etc/hosts.allow.temporary-sshd-access a trvale přidat IP adresu do /etc/hosts. povolit.

Řešení 5:

Můžete se také podívat na denyhosts.

FYI:OpenSSH 6.7 upouští podporu tcpwrappers, což znamená, že denyhosts pravděpodobně není řešením pro nové instalace.


Linux
  1. Jak zablokovat nebo zakázat normální přihlášení uživatele v Linuxu

  2. Povolit SSH na Ubuntu 20.04 – Průvodce krok za krokem?

  3. Ssh vrací zprávu „x11 Požadavek na předání selhal na kanálu 1“?

  1. Osm způsobů, jak chránit přístup SSH ve vašem systému

  2. Povolit SSH v systému Debian 9 – postup krok za krokem?

  3. Změňte port SSH v operačním systému Linux Ubuntu

  1. Ssh – Zkopírujte soubor zpět do místního systému pomocí Ssh?

  2. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  3. gnutls_handshake() se nezdařilo:GIT selhal handshake