Blockera IP efter x ggr fel inlog

Trädvy Permalänk
Medlem
Plats
Uppland
Registrerad
Jul 2003

Blockera IP efter x ggr fel inlog

Hej

Går det att typ blockera ett IP nummer som försöker logga in via SSh efter ett visst antal felaktiga login försök?

Jag ha ri min pf.conf gjort en table badhosts som läser från en fil i /etc, går det att göra så att det IP nummer man loggar in från läggs in där typ efter 2 felaktiga försök? Skulle vara kanon hade för ett tag sedan någon som försökte komma in på min server, har nu lagt till hans IP i /etc/badhosts men skulle vilja att det gjordes automatiskt.

Mvh Dax

Server: HPE Gen8 / Ubuntu 17.04 Plex-server Lagrings-server
Brandvägg: Unifi USG Pro 4
Wifi: Unifi AP x 3

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

Antar att du kör OpenBSD.

Griffin har skrivit en liten guide om detta.

http://legonet.org/~griffin/openbsd/block_ssh_bruteforce.html

Trädvy Permalänk
Medlem
Plats
Karlstad
Registrerad
Mar 2004

Kanske BlockHosts (http://www.aczoom.com/cms/blockhosts/) kan fungera. Jag har dock inte hunnit prova det själv än.

Trädvy Permalänk
Medlem
Plats
Uppland
Registrerad
Jul 2003

Tackar.

http://legonet.org/~griffin/openbsd...bruteforce.html ser ut att vara vad jag letar efter men ska inte ta bort IP efter ett tag, dom kan lika bra vara bannade från mitt system för alltid.

Mvh Dax

Server: HPE Gen8 / Ubuntu 17.04 Plex-server Lagrings-server
Brandvägg: Unifi USG Pro 4
Wifi: Unifi AP x 3

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

Hmm, i linux använder jag pam_tally, där kan man sätta hur många försök användarna får osv innan de blir utlåsta, hur länge de är utlåsta...

Ganska trevlig.

Computer science is no more about computers than astronomy is about telescopes.

Trädvy Permalänk
Medlem
Registrerad
Jul 2001
Citat:

Ursprungligen inskrivet av Dax
Tackar.

http://legonet.org/~griffin/openbsd...bruteforce.html ser ut att vara vad jag letar efter men ska inte ta bort IP efter ett tag, dom kan lika bra vara bannade från mitt system för alltid.

Mvh Dax

Då hoppar du över den sista delen med expiretable. Annars kan du sätta tiden till ett halvår eller liknande, istället för en timme.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2002
Citat:

Ursprungligen inskrivet av monotux
Hmm, i linux använder jag pam_tally, där kan man sätta hur många försök användarna får osv innan de blir utlåsta, hur länge de är utlåsta...

Ganska trevlig.

pam_tally blockerar väl bara en viss användare när denne försökt för många gånger? Jag skulle vilja ha en spärr där en viss IP blockerats när den försökt får många gånger, oavsett användarnamn, och att användaren normalt sett inte spärras.

Min dator är tuffare än din.

Trädvy Permalänk
Medlem
Plats
Uddevalla
Registrerad
Okt 2001

Detta script använder jag på min openbsdbox

import os # Variable definition. pfctl = "/sbin/pfctl" pf_conf = "/etc/pf.conf" pf_table = "sshscan" authlog_path = "/var/log/sshd" infected_ips = [] # Read authlog, searching for infected ip addreses print 'Reading the log - ', authlog_path, '\n' authlog = file(authlog_path, 'r') authlog_line = '-' while authlog_line != '': if 'Failed password for invalid user' in authlog_line: ip = authlog_line.split('from')[1].split('port')[0].strip(' ') if ip not in infected_ips: print 'Infected host detected - ', ip infected_ips.append(ip) if 'Failed password for root from' in authlog_line: ip = authlog_line.split('from')[1].split('port')[0].strip(' ') if ip not in infected_ips: print 'Infected host detected - ', ip infected_ips.append(ip) authlog_line = authlog.readline() authlog.close() # Use pfctl to get the ip addreses already blocked print '\nReading the table of blocked hosts - %s -t %s -T show\n' % (pfctl, pf_table) pipe = os.popen('%s -t %s -T show' % (pfctl, pf_table)) blocked_ips = pipe.read().split('\n') pipe.close() # clean the list, removing unneeded blank spaces for i in range(len(blocked_ips)): blocked_ips[i] = blocked_ips[i].strip(' ') # go through the list of infected ips, checking if the ip address is already blocked # or not. If not, add the ip address to the table. for ip in infected_ips: if ip in blocked_ips: print ip,' - IP Address already blocked' else: print ip, ' - Adding IP Address to the blocked table' os.popen('%s -t%s -T add %s' % (pfctl, pf_table, ip))

Macbook Air 13" (2012)

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2002

Alternativt är att blockera efter x antal anslutningar på intervalet y med iptables.

Det finns en bra guide på:
http://www.debian-administration.org/articles/187

Trädvy Permalänk
Medlem
Plats
/dev/null
Registrerad
Apr 2004

Eller varför inte flytta sshd till en annan port än 22? Jag flyttade min och poff, antalet intrångsförsök den vägen upphörde helt.

Min andra dator är en IBM 709
If there was hope, it must lie in the proles, because only there, in those swarming disregarded masses, eighty-five percent of the population of Oceania, could the force to destroy the Party ever be generated.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Nov 2002

Kan man fixa så att man har sammma ssh på två portar? vill ha så att lokala nätverket ska ansluta till port 22 och alla utifrån ska ansluta till annan port.

Trädvy Permalänk
Medlem
Plats
Uppland
Registrerad
Jul 2003

Jag anväder OpenBSD med PF så att använda Tables är vad jag ser en smidig administrativ lösning, då dom adderas där automatiskt och jag kan kolal vilka IP numemr som kommit till med gämna mellanrum.

Mvh Dax

Server: HPE Gen8 / Ubuntu 17.04 Plex-server Lagrings-server
Brandvägg: Unifi USG Pro 4
Wifi: Unifi AP x 3