Am monitorizat IP-ul google care mi-a accesat serverul de câțiva ani și am identificat aceste măști: 66.249.64.0/19 66.102.0.0/20 64.233.160.0/19 34.64.0.0/10 216.58.192.0/19 216.58.01/19 .
Apoi am creat acest script în php pe care îl includ în toate site-urile mele.
include_once('function_global/cidr_match_function.php');
if(cidr_match($_SERVER['REMOTE_ADDR'], '66.249.64.0/19') === false && cidr_match($_SERVER['REMOTE_ADDR'], '66.102.0.0/20') === false && cidr_match $_SERVER['REMOTE_ADDR'], '64.233.160.0/19') === false && cidr_match($_SERVER['REMOTE_ADDR'], '34.64.0.0/10') === false && cidr_match($_SERVER[' REMOTE_ADDR'], '216.58.192.0/19') === false&& cidr_match($_SERVER['REMOTE_ADDR'], '74.125.0.0/16') === false){
$fake_google_ip_list = file_get_contents('function_global/ip_add_fwd.txt');
if(strpos($fake_google_ip_list, $_SERVER['REMOTE_ADDR']) === false){
file_put_contents('function_global/ip_add_fwd.txt', $_SERVER['REMOTE_ADDR'].PHP_EOL , FILE_APPEND | LOCK_EX);
}
}
}
Rezultatul este acest fișier care conține o listă de IP-uri care se prefac a fi Google și accesează serverul meu cu intenții de înșelătorie.
Apoi, mai mult sau mai puțin o dată pe zi, rulez această comandă de consolă care adaugă toate aceste ip la ufw:
în timp ce linia de citire; do sudo ufw insert 1 deny de la $line la oricare; terminat < /var/www/html/function_global/ip_add_fwd.txt
și încărcați un nou fișier gol pe server.
Aș dori să automatizez această ultimă parte și poate să folosesc fail2ban în loc să umple din ce în ce mai mult ip, care s-ar putea să nu revină niciodată, în ufw.
Și cred că am nevoie de un script .sh, sau ceva asemănător, dar habar n-am cum să-l scriu... (sunt programator php și folosesc ubuntu doar ca server web limitat la ceea ce este necesar pentru funcționarea site-urile mele).
Scriptul ar trebui să fie:
- apelabil cu un crontab
- adăugați lista de ip la ufw, sau mai degrabă la fail2ban
- goliți fișierul ip_add_fwd.txt
- poate trimite-mi un e-mail cu lista de IP-uri, doar ca să știu ce a făcut și să pot verifica dacă funcționează corect (ieșirile crontab ajung și prin e-mail, deci poate o ieșire ar fi suficientă?)
Mă poate ajuta cineva să scriu sau măcar să-mi dea câteva sfaturi pentru a începe? Habar n-am de unde să încep, am încercat să pun bucăți din alte fișiere împreună, dar nu a mers prea bine... :(