Vraag Honderden mislukte ssh-aanmeldingen


Elke nacht krijg ik honderden, soms duizenden, mislukte ssh-logins op mijn RedHat 4-server. Om firewallredenen van externe sites moet ik de standaardpoort gebruiken. Is er iets dat ik zou moeten doen om dit te blokkeren. Ik merk dat veel van hetzelfde IP-adres komen. Moet het niet stoppen na een tijdje?


76
2018-06-02 16:18


oorsprong




antwoorden:


U kunt iptables gebruiken om nieuwe binnenkomende verbindingen met de SSH-poort te beoordelen. Ik zou je hele iptables-configuratie moeten zien om je een kant-en-klare oplossing te geven, maar je hebt het eigenlijk over het toevoegen van regels zoals:

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 

Deze regels gaan ervan uit dat je ESTABLISHED-verbindingen eerder in de tabel accepteert (zodat alleen nieuwe verbindingen deze regels raken). Nieuwe SSH-verbindingen raken deze regels en worden gemarkeerd. In 60 seconden resulteren 5 pogingen van een enkel IP-adres erin dat nieuwe inkomende verbindingen van dat IP-adres worden verwijderd.

Dit heeft goed gewerkt voor mij.

Bewerken: Ik geef de voorkeur aan deze methode om "fail2ban" te gebruiken omdat er geen aanvullende software wordt geïnstalleerd en dit gebeurt volledig in de kernelmodus. Het lost geen logboekbestanden zoals "fail2ban" op, maar als uw probleem alleen met SSH is, zou ik geen gebruikersmodus gebruiken die software-installatie vereist en complexer is.


63
2018-06-02 16:25



Ik vind deze oplossing leuk en ben van plan het vanavond op zijn plek te zetten, zodra ik het vuur van vandaag eruit haal. - MattMcKnight
Het vertraagt ​​aanvallen en ik raad het wel aan, maar omdat er gedistribueerde scanning botnets zijn, is het geen wondermiddel. Er zullen nog steeds ongeldige aanmeldingen zijn van botnets die verspreide scans tegen u uitvoeren. Daar kun je niet echt veel aan doen, in plaats van een soort 'poort kloppend' schema om de SSH-poort op afstand te gebruiken als je erin wilt komen. - Evan Anderson
+1 voor @ 'Evan's' port knocking'-suggestie. Wat info: linux.die.net/man/1/knockd . Maar doe het niet op de manier van de manpagine (dat wil zeggen, het toevoegen / verwijderen van iptables regels), maar gebruik in plaats daarvan -m condition iptables komen overeen. - pepoluan
heb je --dport 22 niet nodig in deze regels zodat ze alleen worden toegepast voor ssh-verkeer? - clime
@clime - Yep. Moeilijk te geloven dat dit hier 2 1/2 jaar geleden is en niemand heeft het opgemerkt! Goede vangst. - Evan Anderson


fail2ban kan hierbij helpen door IP-adressen te blokkeren met te veel mislukte inlogpogingen.


38
2018-06-02 16:20



ik hou niet van tools / scripts die logs lezen en opdrachten uitgeven namens de gebruiker sysadmin - asdmin
@asdmin, ja, vooral wanneer ze heb zo'n mooie staat van dienst ... - maxschlepzig


Ik zou aanraden om een ​​niet-standaard poort voor SSH te gebruiken als dat mogelijk is (dat wil zeggen poort 10222) maar aangezien je hebt gezegd dat je dat niet kunt doen, raad ik aan om iets te gebruiken zoals DenyHosts.

http://denyhosts.sourceforge.net/

Geweldig pakket, eenvoudig te installeren en configureren.


25
2018-06-02 17:16



Ik weet niet waarom mensen dit overhalen; SSH bevindt zich op een standaard poort 22. Dit betekent dat wanneer u zich op een buitenlands netwerk bevindt, u er niet op vertrouwt dat ze een niet-standaard poort hebben geopend via de uitgaande firewall. De echte oplossing voor dit probleem is hierboven beschreven, of beperk het aantal herhaalde verbindingen via uw inkomende firewall, of schakel logins voor het uitschakelen van het wachtwoord uit. - Andrew Taylor
OpenSSH 6,7 daalt tcpwrappers ondersteunen, dat is wat denyhosts gebruikt. - Zoredache


Hoewel het misschien leuk is om vanuit willekeurige locaties op het internet in je systeem te kunnen sshutsen, zijn er geautomatiseerde wachtwoordaanvalsystemen die zich op een open ssh-poort zullen vergrendelen en verschillende joe-account- en woordenboekaanvallen tegen je systeem zullen toepassen. Dit kan vervelend zijn om te lezen in je nachtelijke logsamenvatting en is een verspilling van je bandbreedte.

Als u een webserver op hetzelfde systeem hebt, kunt u php- en tcp-wrappers gebruiken om ssh-inkomend verkeer naar bekende systemen te beperken, plus een sleutel voor de achterdeur om uzelf toegang te verschaffen vanaf willekeurige systemen op internet.

Hier is hoe je het doet:

ontken alle ssh-verbindingen in /etc/hosts.deny:

# /etc/hosts.deny fragment
sshd:  all

Sta bekende systemen toe door IP in /etc/hosts.allow, plus voeg een bestand toe voor tijdelijke toegang:

# /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

Maak een php-bestand op uw webserver en geef het een niet-voor de hand liggende naam zoals 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);
?>

Vergeef de php-code - ik heb het van ergens anders weggevaagd, dus het zou waarschijnlijk kunnen staan ​​om een ​​hele hoop schoongemaakt te worden. Het enige dat het doet is het IP-adres toevoegen van het systeem dat toegang heeft tot het bestand /etc/hosts.allow.temporary-sshd-access, dat wordt gelezen door sshd (vanwege de opname door /etc/hosts.allow) tijdens de verbinding .

Als je nu op een willekeurig systeem op het web zit en dit systeem wilt gebruiken, gebruik dan eerst een webbrowser en klik op dit bestand (of gebruik wget of equivilent):

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

Nu zou je in staat moeten zijn om je systeem te gebruiken. Als dit ergens is waar je waarschijnlijk vaak naartoe gaat, zou het triviaal zijn om de inhoud van het bestand /etc/hosts.allow.temporary-sshd-access te lezen en het IP-adres permanent aan / etc / hosts toe te voegen. toestaan.


15
2018-06-02 17:07



Om dit veiliger te maken, voer deze pagina uit op https. - Robert Munteanu
Als u het script zodanig wijzigt dat het de inhoud van het "toegestane tijdelijke IP-adres" -bestand niet uitvoert, zal er niets zijn dat een snuffelaar zou kunnen snuiven. Vervolgens kunt u het uitvoeren op http in plaats van https. - Barry Brown
Het "toegestane tijdelijke IP-adres" is altijd dat van de aanvrager (dwz de uwe). Ik denk niet dat het er op een of andere manier toe doet. Https betekent echter wel dat de gevraagde URL versleuteld is, wat betekent dat het niet triviaal is om het van de draad te snuiven. - David Mackintosh
Dit werkt niet als u zich op een netwerk bevindt dat HTTP-verbindingen proxyt, maar uw directe route naar internet verloopt via een andere uitgang. - Andrew Taylor
OpenSSH 6,7 daalt tcpwrappers ondersteunen, dat is wat wordt gebruikt in uw antwoord. - Zoredache


Misschien wilt u ernaar kijken denyhosts ook.

Ter info: OpenSSH 6,7 druppels tcpwrappers ondersteunen, wat betekent dat denyhosts waarschijnlijk niet de oplossing is voor nieuwe installaties.


9
2018-06-02 16:23





Doe jezelf een plezier en schakel de wachtwoordinlog uit. Gebruik uitsluitend authenticatiesleutels (google ssh-keygen bijvoorbeeld - Voorbeeld: http://www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/document/html/SSH-with-Keys-HOWTO-4.html ) Uw server zal veiliger zijn, u zult er comfortabeler op aansluiten (controleer ssh-agent, ssh-add, sleutelhanger) en u zult niet langer het slachtoffer zijn van ssh brute force attacks.


8
2017-08-17 22:08





een andere oplossing is gewoon ssh naar een andere poort verplaatsen. deze wormen zijn behoorlijk dom.


2
2018-06-02 16:28



De oorspronkelijke poster zei dat hij op de standaardpoort moest werken. - kbyrd
sorry, ik moet de vragen aandachtiger lezen :) - disserman
Ik ben het ermee eens ... Ik laat mijn SSH draaien op "alternatieve" poorten en het maakt een WERELD van verschil in de logs. De wormen zijn ongeveer net zo slim als een baksteen, dus het werkt goed tegen domme automatiseringsscripts; niet zo goed tegen menselijke aanvallers. Toch hebben de logs het gezegende geluid van stilte in hen... - Avery Payne