Puncte:0

Ajutor pentru a finaliza un script (IP-uri Google false, poate fail2ban)

drapel mx

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... :(

jpbrain avatar
drapel ca
Buna ziua. Ce software de server web folosești?
alebal avatar
drapel mx
server web apache
Puncte:1
drapel ca

Puteți încerca această abordare.

Pentru Apache, pentru a configura un server web „închisoare” în configurația fail2ban, există un ghid: fail2ban cu Apache

Aici puteți configura interdicții temporare pentru IP-uri și, de asemenea, există un client fail2ban-client pe care îl puteți apela direct din scriptul dvs. php (trebuie să verificați permisiunile) pentru a interzice manual IP-urile.

Cred că aceasta va funcționa mai bine decât abordarea cron, dar dacă tot doriți să mergeți prin shell:

#!/bin/bash
#presupunând un IP pe linie
input="/var/www/html/function_global/ip_add_fwd.txt"
în timp ce IFS= citește linia -r
do
    sudo ufw deny de la $line la orice;
terminat < "$input"

#Această linie va goli fișierul
echo "">"$input"

script cu fail2ban

#!/bin/bash
#presupunând un IP pe linie
input="/var/www/html/function_global/ip_add_fwd.txt"
în timp ce IFS= citește linia -r
do
    #sudo ufw deny de la $line la orice;
    sudo fail2ban-client set apache-badbots banip $line;
terminat < "$input"

#Această linie va goli fișierul
echo "">"$input"  

#added by JP - Va lista toate IP-urile interzise pentru apache-badbots
sudo fail2ban-client get apache-badbots banip --with-time;
alebal avatar
drapel mx
Bună, îmi place soluția fail2ban, e mai rapidă, mai ușoară, minunată, dar este greu să găsești ceva despre ea... Practic am găsit doar acest https://stackoverflow.com/questions/36101796/fail2ban-add-manually-ip- from-php-script-using-exec-or-shell-exec și se opresc la fișierul de configurare. Pentru mine problema este că există o mulțime de fișiere în /etc/fail2ban, care este cel corect? ce fișier .conf vrea fail2ban-client. Dacă îmi pot da seama ce folosește fișierul .conf, mă gândeam la un link simbolic, într-un director pe care îl pot accesa prin php... ar fi posibil?
alebal avatar
drapel mx
Mă puteți ajuta să înțeleg ce fișier folosește și dacă este posibil să folosesc un link simbolic?
jpbrain avatar
drapel ca
Buna ziua. Nu înțeleg ideea ta despre un link simbolic. poti explica ce vrei sa spui?
alebal avatar
drapel mx
Se pare că php nu poate accesa fișierul de configurare director al fail2ban... (în /etc) poate cu un link simbolic?
jpbrain avatar
drapel ca
în ambele cazuri trebuie să fii root. deci, o abordare va fi să folosiți cron pentru a executa shell-ul, a în shell folosiți fail2ban sau ufw. Apelarea din php ca root necesită verificări de securitate. Poate că nu este o idee bună.
alebal avatar
drapel mx
Exec prin php nu ar trebui să aibă nevoie de root pentru a utiliza fail2ban-client, nu? Problema pare să fie fișierul de configurare pe care fail2ban trebuie să-l citească și se află în directorul /etc pe care www-data nu îl poate accesa. In ultimul comentariu se spune chiar sa il copiem intr-un director accesibil, dar nu stiu cat de bine este sa copiezi un fisier de configurare, tot pentru ca nu am inteles ce este acest fisier. Din păcate, discuția pare să s-a încheiat, dar părea că era doar la mică distanță...
jpbrain avatar
drapel ca
Fail2ban are nevoie de root pentru a lua și acțiuni peste firewall-ul ufw. Deci abordarea symilnk nu este o opțiune. Cei doi pași pe care îi descriu funcționează. php scrie fișierul cu ips. Cron execută shell-ul ca root la fiecare 10 minute sau ceva de genul acesta și curăță fișierul.
alebal avatar
drapel mx
Deci... fac câteva mici modificări pentru a lucra cu fail2ban în modul cron...#!bin/bash #presupunând un IP pe linie input="/var/www/html/function_global/ip_add_fwd.txt" în timp ce IFS= citește linia -r do #sudo ufw deny de la $line la orice; sudo fail2ban-client set apache-badbots banip $line; terminat "$input"
alebal avatar
drapel mx
dar, când încerc asta: sudo /var/www/html/function_global/google_ip_list_ban_cron sudo: incapabil să execute /var/www/html/function_global/google_ip_list_ban_cron: Nu există un astfel de fișier sau director... ce nu înțelege? unde este ip_add_fwd.txt? salvez noul fișier în același director... https://ibb.co/chVmwCn
jpbrain avatar
drapel ca
scuze.. este o greșeală de tipar. corectați „#!/bin/bash” și încercați din nou. De asemenea, fișierul trebuie rulat de la root cron.
alebal avatar
drapel mx
Mulțumesc, se pare că funcționează... Creez acest crontab 5 0 * * * root /var/www/html/function_global/google_ip_list_ban_cron pe sudo nano /etc/crontab, ar trebui să funcționeze crontab?
jpbrain avatar
drapel ca
Da. Ar trebui să funcționeze.
alebal avatar
drapel mx
Bine, dar astăzi mi-ar fi plăcut să primesc un email cu IP-urile pe care le-a adăugat la fail2ban, dar nu a venit nimic. Rezultatele crontab-urilor ajung prin poștă, este posibil să adăugați o ieșire cu ip-ul procesat?
jpbrain avatar
drapel ca
Două lucruri de văzut: Există o directivă MAIL în fișierul crontab? Se generează vreo ieșire?
alebal avatar
drapel mx
da, e-mailul este în partea de sus a fișierului crontab, astăzi îmi trimite un e-mail, e-mailul spune: 0 1 1 1 1 1 1 1 1 1 1 ... ar trebui să fie rezultatul fail2ban, dar ar fi bine să ai IP-uri blocate...
jpbrain avatar
drapel ca
Poate că este mai bine să trimiteți un statut fail2ban la sfârșitul scriptului.
alebal avatar
drapel mx
Cum ??? habar nu cum sa fac...
jpbrain avatar
drapel ca
Poți să postezi scenariul tău real? dacă utilizați „fail2ban-client” există o opțiune care listează ip-urile interzise pentru o închisoare.
alebal avatar
drapel mx
adăugat la prima ta postare... dar seamănă foarte mult cu al tău...
alebal avatar
drapel mx
Putem imprima în e-mail conținutul fișierului ip_add_fwd.txt?
jpbrain avatar
drapel ca
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/129411/discussion-between-jpbrain-and-alebal).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.