In uw server logging ziet u de melding “SASL LOGIN authentication failed: authentication failure” regelmatig terug komen, en u vraagt zich af wat er aan de hand kan zijn. En daar doet u goed aan. Indien dit soort meldingen regelmatig terugkomen van eenzelfde IP-adres, dan kan het zomaar zijn dat er iemand is die uw server probeert binnen te komen die er niets te zoeken heeft.
NOTE: de in dit artikel getoonde voorbeelden en gekozen log files zijn gemaakt op Ubuntu 12.04 met Plesk software voor webhosting en mail. De meldingen kunnen in uw omgeving dus mogelijk afwijken.
Symptoom
In /var/log/syslog en/of in /var/log/mail.log ziet u volgende meldingen regelmatig terugkomen :
# cat /var/log/syslog | grep SASL
Jan 27 18:24:53 hostname postfix/smtpd[4123]: warning: host31-52-81-118.range31-52.btcentralplus.com[31.52.81.118]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:24:53 hostname postfix/smtpd[4123]: warning: host31-52-81-118.range31-52.btcentralplus.com[31.52.81.118]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:24:53 hostname postfix/smtpd[4123]: warning: host31-52-81-118.range31-52.btcentralplus.com[31.52.81.118]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:24:53 hostname postfix/smtpd[4123]: warning: host31-52-81-118.range31-52.btcentralplus.com[31.52.81.118]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:24:53 hostname postfix/smtpd[4123]: warning: host31-52-81-118.range31-52.btcentralplus.com[31.52.81.118]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:40:08 hostname postfix/smtpd[7507]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:40:08 hostname postfix/smtpd[7507]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:40:08 hostname postfix/smtpd[7507]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:40:09 hostname postfix/smtpd[7507]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 18:40:09 hostname postfix/smtpd[7507]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 19:59:07 hostname postfix/smtpd[23298]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 19:59:07 hostname postfix/smtpd[23298]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 19:59:08 hostname postfix/smtpd[23298]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 19:59:08 hostname postfix/smtpd[23298]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 19:59:08 hostname postfix/smtpd[23298]: warning: 157.pool85-52-165.static.orange.es[85.52.165.157]: SASL LOGIN authentication failed: authentication failure
Jan 27 20:52:54 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
Jan 27 20:52:54 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
Jan 27 20:52:54 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
Jan 27 20:52:54 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
Jan 27 20:52:55 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
In dit specifieke geval kwamen dit soort meldingen in een tijdsbestek van 15 uur maar liefst 287 keer voor. Reden dus voor verder bekijken van de logs. Daarvoor spitten we de informatie rondom door.
NOTE: Ook andere meldingen kunnen dezelfde oplossing volgen !! :
“SASL PLAIN authentication failed: authentication failure”
“SASL CRAM-MD5 authentication failed: One time use of a plaintext password will enable requested mechanism for user”
Daarbij valt de volgende informatie op, voorafgaande aan de foutmelding :
….
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: new client (fd=10) registered
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: main cycle iteration
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: activity on 1 channel(s)
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: some read activity on client 10
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 2)=2
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=0]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 7)=7
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=1]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 2)=2
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=2]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 7)=7
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=3]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 2)=2
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=4]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 4)=4
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=5]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: read(10, &buf, 2)=2
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=6]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: processing client data chunk [state=7]
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: Invalid mail address 'armando@'
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: main cycle iteration
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: activity on 1 channel(s)
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: some write activity on client 10
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: attempt to write(10, &buf, 4)
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: client 10 processed
Jan 27 20:52:54 hostname plesk_saslauthd[1863]: main cycle iteration
Jan 27 20:52:54 hostname postfix/smtpd[1860]: warning: unknown[109.202.9.80]: SASL LOGIN authentication failed: authentication failure
….
Hieruit valt op te maken dat er iemand is die probeert in te loggen met 'armando@', maar dat dus duidelijk niet mag.
Analyse
Op basis van bovenstaande output kunnen we dus vast stellen dat er inlog pogingen gedaan worden vanaf verschillende ip-adressen die niet gerechtigd zijn. En daarbij proberen ze dat niet 1x, maar regelmatig en dat duidt op een potentiële hack poging om toegang te krijgen tot de server en in dit geval specifiek email. Waarschijnlijk wil men gebruik maken van de mailserver voor het uitsturen van spam !!
U kunt zich voorstellen dat dergelijke aanvallen een grote impact kunnen hebben op het resource gebruik van uw server. Zeker als dit continue plaats zou vinden.
Oplossing(en)
Een echte oplossing is er in dit geval niet, want we kunnen dit probleem niet bij de bron aanpakken. Dus zullen we moeten zorgen dat de betreffende hackers in een zo vroeg mogelijk stadium worden afgevangen en niet verder komen.
Geen mailserver gebruiken
De meest eenvoudige methode is natuurlijk om geen mailserver te gebruiken en deze volledig uit te zetten. Maar dat zal waarschijnlijk de hele insteek van uw systeem zijn, en is dus waarschijnlijk iets te rigoureus als oplossing.
Mailserver op een andere poort laten luisteren
Indien u voor een beperkte groep gebruikers als mailserver fungeert, dan kan een oplossing zijn om uw mailserver op een andere poort te laten luisteren en uw gebruikers dus ook dusdanige instructies mee geven waarmee ze wel connectie met de mailserver kunnen krijgen. Maar als de gebruikersgroep groot is, en potentieel niet erg bedreven is in computer gebruik, dan zou dit inhouden dat u veel tijd kwijt bent om de gebruikers online te krijgen. En ook in de toekomst zal het waarschijnlijk veel tijd in beslag nemen om dit iedere keer weer duidelijk te maken.
Blokkeren van het systeem van de hacker
Meest logische stap is dan dus het blokkeren van de hacker, en wel door deze middels een firewall tegen te houden.
Op linux systemen wordt standaard gebruik gemaakt van iptables als firewall. En als u een goede systeembeheerder bent of heeft, dan is deze ook al geconfigureerd voor de meest voor de hand liggende zaken.
Zoals al in de logs te zien is, gebeuren dit soort aanvallen vanuit verschillende ip-adressen, en waarschijnlijk zullen ze ook nooit echt stoppen. Dus is het zaak om regelmatig de logs door te nemen en de betreffende ip-adressen te blokkeren.
Hieronder volgen een aantal stappen die gevolgd kunnen worden. Eventueel is een en ander ook in een script te vatten, zodat u dit hele proces kunt automatiseren. Maar let daarbij wel op dat u uzelf niet buiten sluit.
1) Bepalen welke ip-adres er meer dan 5x een foutieve poging heeft ondernomen. De keuze van 5 is gebaseerd op het feit dat de meldingen vaak in groepjes van 5 binnen 1 minuut voorbij komen. Als dat meer dan 1x gebeurd, dan is er duidelijk iemand aan het hacken en willen we dat adres blokkeren.
a) eerst bepalen welke ip-adressen het betreft :
# cat syslog | grep "SASL LOGIN authentication failed" | awk {' print $1" "$2" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13 '} | sort -u | awk -F [ {' print $2 '} | awk -F ] {' print $1 '}
109.190.67.128
85.52.165.157
46.201.243.159
62.219.139.39
88.44.103.177
31.52.81.118
81.149.56.18
109.202.9.80
196.203.89.134
41.224.253.236
5.56.133.221
58.137.224.102
58.137.224.98
82.20.76.41
89.137.17.19
b) bepalen welke van deze ip-adressen meer dan 5x in de log file voor komen :
# for i in 109.190.67.128 85.52.165.157 46.201.243.159 62.219.139.39 88.44.103.177 31.52.81.118 81.149.56.18 109.202.9.80 196.203.89.134 41.224.253.236 5.56.133.221 58.137.224.102 58.137.224.98 82.20.76.41 89.137.17.19
> do
> COUNT=`cat syslog | grep $i | wc -l`
> if (( $COUNT > 5 ))
> then
> echo $i
> fi
> done
109.190.67.128
85.52.165.157
46.201.243.159
62.219.139.39
88.44.103.177
31.52.81.118
81.149.56.18
109.202.9.80
196.203.89.134
41.224.253.236
5.56.133.221
58.137.224.102
58.137.224.98
82.20.76.41
89.137.17.19
(In dit geval dus allemaal)
2) Blokkeer de genoemde ip-adressen via iptables.
# for i in 109.190.67.128 85.52.165.157 46.201.243.159 62.219.139.39 88.44.103.177 31.52.81.118 81.149.56.18 109.202.9.80 196.203.89.134 41.224.253.236 5.56.133.221 58.137.224.102 58.137.224.98 82.20.76.41 89.137.17.19
> do
> iptables -I INPUT -s $i -j DROP
> done
LET OP : Gebruik niet iptables -A, want dat zal de regel toevoegen aan uw firewall en dat heeft geen effect. De regel komt dan aan het einde van uw iptables regels en omdat de hacker al toegang heeft gekregen omdat poort 25 open staat, wordt de blokkade niet meer uitgevoerd !!! Met de iptables-I doet u een insert, en dan komen de regels bovenin de iptables regels.
Server herstart
Met bovenstaande methode voegt u handmatig en direct regels toe aan de iptables regels. Deze zullen echter verdwenen zijn op het moment dat u uw server herstart, of iptables herstart.
Op zichzelf is hier niets mis mee als u deze methode regelmatig (en misschien wel automatisch) herhaald, maar als u per se de gegevens wilt bewaren in uw firewall configuratie zodat deze ook na een herstart weer actief worden, dan zult u dat ook moeten inregelen. (Gebruik hiervoor bijvoorbeeld iptables-save en iptables-restore)
Samenvatting
Wat u dus doet bij een melding “SASL LOGIN authentication failed: authentication failure” is het achterhalen van de regelmaat van de melding, het ip-adres van de hacker, en dat ip-adres toegang tot uw server ontzegt via de firewall regels middels iptables.
Script
Deze hele werkwijze is te automatiseren via scripts, of het gebruik van tools van derden welke eventueel op internet terug te vinden zijn. Storeitonline maakt graag gebruik van scripts om dit soort problematiek aan te pakken en de oplossing te automatiseren. Maar veelal zullen de scripts op maat gemaakt moeten worden omdat veel inrichtingen uniek zijn en iedere automatiseerder zijn/haar eigen wensen en eisen heeft ten aanzien van de scripts. (Denk bijvoorbeeld ook aan logging van de acties, en/of bv. Mail versturen bij een wijziging e.d.).
Komt u er zelf niet uit om dit te automatiseren, of heeft u andere vragen, neem dat geheel vrijblijvend contact met ons op.