Ci sono vari modi per bannare un ip che sta effettuando un attacco di bruteforce al server SSH sul nostro server. Vediamo come fare con Iptables.
Il modo è molto semplice, anche se non è utilizzato da molti, in quanto anche il software fail2ban offre questa feature insieme alle altre. Le regole da inserire sono tre ed utilizzeremo un modulo di Iptables chiamato RECENT, che offre la possibilità di marcare i pacchetti a seconda della frequenza con il quale vengono mandati.
Vediamo l’esempio, e consideriamo che l’interfaccia utilizzata sia eth0
Inizialmente dico ad Iptables di creare un database chiamato SSH degli IP che tentano di connettersi alla porta 22 (server SSH):
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
Dopodiché loggo tutti gli IP che effettuano 3 nuove connessioni in meno di 300 secondi:
iptables -A INPUT -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG --log-level info --log-prefix "SSH SCAN blocked: "
Infine blocco gli IP
iptables -A INPUT -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
Una volta che saranno passati i 300 secondi dovrò rimuovere il ban dagli IP:
iptables -A INPUT -m recent --name SSH --remove
Quello che ho ottenuto è un ban automatico di 300 secondi di un IP che sbaglia 2 volte la password. Se si utilizzano le chiavi SSH è perfetto. Per vedere gli IP che vengono bloccati, essi saranno loggati in /var/log/syslog. Il database degli ip creato da Iptables si trova in /proc/net/ipt_recent/.
Ecco il mio in questo momento:
maradona:/home/luca# cat /proc/net/ipt_recent/SSH src=66.96.207.19 ttl: 53 last_seen: 1574688771 oldest_pkt: 17 1574675627, 1574676051, 1574676051, 1574676070, 1574676070, 1574676070, 1574676899, 1574676899, 1574677663, 1574677663, 1574677663, 1574678595, 1574678595, 1574681987, 1574681987, 1574688771, 1574688771, 1574675452, 1574675452, 1574675627 src=121.184.33.56 ttl: 45 last_seen: 1523900419 oldest_pkt: 1 1523900419 src=59.30.218.148 ttl: 46 last_seen: 1550603547 oldest_pkt: 1 1550603547 src=122.70.150.106 ttl: 112 last_seen: 1561734410 oldest_pkt: 1 1561734410 src=218.108.0.91 ttl: 112 last_seen: 1580437381 oldest_pkt: 1 1580437381 src=61.236.182.11 ttl: 52 last_seen: 1584381984 oldest_pkt: 4 1584379536, 1584379536, 1584381984, 1584381984, 1584377172, 1584377172, 1584377242, 1584377242, 1584377394, 1584377394, 1584377700, 1584377700, 1584377922, 1584377922, 1584377922, 1584378312, 1584378312, 1584379421, 1584379421, 1584379421 src=195.228.135.138 ttl: 112 last_seen: 1525774504 oldest_pkt: 1 1525774504 src=64.120.26.34 ttl: 52 last_seen: 1548030041 oldest_pkt: 10 1548007267, 1548007267, 1548007583, 1548007583, 1548014434, 1548014434, 1548015069, 1548015069, 1548030041, 1548030041, 1548001891, 1548001968, 1548001968, 1548002398, 1548002398, 1548002398, 1548003683, 1548003683, 1548003840, 1548003840 src=38.108.125.101 ttl: 55 last_seen: 1551424865 oldest_pkt: 1 1551424865 src=85.114.140.73 ttl: 118 last_seen: 1594716674 oldest_pkt: 1 1594716674 src=59.1.90.140 ttl: 46 last_seen: 1550619212 oldest_pkt: 1 1550619212 src=174.36.85.36 ttl: 119 last_seen: 1551527977 oldest_pkt: 1 1551527977 src=211.202.2.107 ttl: 49 last_seen: 1552508574 oldest_pkt: 10 1552476845, 1552476845, 1552478775, 1552478775, 1552483035, 1552483035, 1552491546, 1552491546, 1552508574, 1552508574, 1552475052, 1552475052, 1552475346, 1552475346, 1552475346, 1552475586, 1552475586, 1552476649, 1552476649, 1552476845 src=64.120.26.58 ttl: 52 last_seen: 1589438178 oldest_pkt: 10 1589425634, 1589426141, 1589426141, 1589426141, 1589427426, 1589427426, 1589431010, 1589431010, 1589438178, 1589438178, 1589424066, 1589424066, 1589424290, 1589424290, 1589424641, 1589424641, 1589424641, 1589424738, 1589424738, 1589425634 src=93.93.129.125 ttl: 54 last_seen: 1601942176 oldest_pkt: 19 1601925043, 1601925313, 1601925313, 1601925572, 1601925572, 1601925572, 1601925857, 1601925857, 1601926945, 1601926945, 1601927078, 1601927078, 1601927078, 1601929122, 1601929122, 1601933473, 1601933473, 1601942176, 1601942176, 1601925043 src=112.161.94.145 ttl: 46 last_seen: 1577293804 oldest_pkt: 1 1577293804 src=62.128.149.44 ttl: 50 last_seen: 1562069800 oldest_pkt: 2 1562069208, 1562069800 src=125.138.59.232 ttl: 46 last_seen: 1586717876 oldest_pkt: 1 1586717876 src=14.37.84.210 ttl: 46 last_seen: 1549261247 oldest_pkt: 1 1549261247 src=178.162.239.192 ttl: 54 last_seen: 1593634277 oldest_pkt: 10 1593616610, 1593616610, 1593616805, 1593616805, 1593619302, 1593619302, 1593624293, 1593624293, 1593634277, 1593634277, 1593614621, 1593614621, 1593614934, 1593614934, 1593615110, 1593615110, 1593615110, 1593615557, 1593615557, 1593616610 src=60.190.216.90 ttl: 50 last_seen: 1549489599 oldest_pkt: 0 1549486840, 1549486840, 1549487023, 1549487023, 1549487392, 1549487392, 1549487510, 1549487510, 1549487510, 1549488127, 1549488127, 1549489010, 1549489010, 1549489010, 1549489599, 1549489599, 1549492543, 1549492543, 1549498431, 1549498431 src=112.220.100.226 ttl: 43 last_seen: 1563702466 oldest_pkt: 10 1563673299, 1563673299, 1563674914, 1563674914, 1563678850, 1563678850, 1563686722, 1563686722, 1563702466, 1563702466, 1563671471, 1563671471, 1563671799, 1563671799, 1563671799, 1563671963, 1563671963, 1563672946, 1563672946, 1563673299 src=109.168.123.134 ttl: 120 last_seen: 1571008152 oldest_pkt: 1 1571008152 src=31.210.72.73 ttl: 50 last_seen: 1590914007 oldest_pkt: 9 1590893785, 1590894295, 1590894295, 1590897111, 1590897111, 1590902743, 1590902743, 1590914007, 1590914007, 1590891831, 1590891831, 1590892183, 1590892183, 1590892285, 1590892285, 1590892285, 1590892887, 1590892887, 1590893785, 1590893785 src=109.230.232.145 ttl: 55 last_seen: 1592528351 oldest_pkt: 1 1592528351 src=58.68.174.76 ttl: 54 last_seen: 1520319496 oldest_pkt: 10 1520303368, 1520303369, 1520303369, 1520303369, 1520305672, 1520305672, 1520310280, 1520310280, 1520319496, 1520319496, 1520301352, 1520301352, 1520301640, 1520301640, 1520301869, 1520301869, 1520301869, 1520302216, 1520302216, 1520303368 src=218.108.85.240 ttl: 112 last_seen: 1578974064 oldest_pkt: 1 1578974064 src=95.250.59.247 ttl: 49 last_seen: 1515911697 oldest_pkt: 1 1515911697 src=81.56.117.225 ttl: 47 last_seen: 1562139443 oldest_pkt: 15 1562137225, 1562137303, 1562137303, 1562137303, 1562137911, 1562137911, 1562137955, 1562137955, 1562138784, 1562138784, 1562138784, 1562139351, 1562139351, 1562139443, 1562139443, 1562136857, 1562136857, 1562137199, 1562137199, 1562137225 src=41.139.66.52 ttl: 50 last_seen: 1573686109 oldest_pkt: 1 1573686109 src=109.70.149.42 ttl: 55 last_seen: 1558340790 oldest_pkt: 10 1558325333, 1558325425, 1558325425, 1558325425, 1558327542, 1558327542, 1558331958, 1558331958, 1558340790, 1558340790, 1558323402, 1558323402, 1558323678, 1558323678, 1558323926, 1558323926, 1558323926, 1558324230, 1558324230, 1558325333 src=61.232.11.146 ttl: 115 last_seen: 1590588858 oldest_pkt: 1 1590588858
Devo dire che il tuo sito è veramente ben fatto,argomenti validi e molto interessanti,soprattutto per chi come me ha intenzione di diventare un sistemista linux.
Continua così che vai alla grande!
Un ringraziamento di cuore da un piccolo sistemista linux in erba!!
@Massimo
Grazie 1000!