Potrzebujemy nowego łańcucha IPTABLES ... iptables -t nat -N INFO Następnie dodajemy: iptables -t nat -A INFO -j RETURN I na koniec: iptables -t nat -(I lub A) FORWARD -j INFO
Oczywiście interesuje nas port 80, więc można to jeszcze bardziej dopracować... ale to już sobie każdy sam pokombinuje. Jeśli wpuścicie cały ruch, to i tak wszystko wyleci na końcu z łańcucha.
To jest część stała, która musi znaleźć się w naszym firewallu (ładowanym przed uruchomieniem LMSD).
A oto skrypt, wrzucamy to w LMSD, np. co dwie minuty:
--
{ /* usuwa wszystkie wpisy w łańcuchu INFO */ exec("/usr/local/sbin/iptables -t nat -F INFO")
/* Musimy utworzyć sobie grupę dla komputerów - BEZ_INFORMACJI; I teraz wszystkie komputery należące do grupy o ID = 1 (jeśli to była pierwsza nasza grupa) mają automatycznie wyłączane ostrzeżenia jeśli wpinacie np. urządzenia VoIP dla klientów, to się wam przyda, wykrzykniki są automatycznie wyłączane... */ UPDATE nodes nd RIGHT JOIN nodegroupassignments na ON nd.id = na.nodeid AND na.nodegroupid=1 AND nd.warning = 1 SET warning = 0
/* tu mamy dwie wersje - komunikat dla ludzi z ostrzeżeniem lub brakiem dostępu, lub komunikat tylko dla ludu z włączonymi ostrzeżeniami */ /* komputery = SELECT inet_ntoa(ipaddr) AS ip FROM nodes WHERE access = 0 OR warning = 1 */ komputery = SELECT inet_ntoa(ipaddr) AS ip FROM nodes WHERE warning = 1;
/* dodajemy regułki dla ludu, który został wyłowiony z bazy danych */ /* x.y.z.v to IP na którym słucha Apache */ if (number(komputery)) for (i=0; i<number(komputery); i++) exec("/usr/local/sbin/iptables -t nat -A INFO -p tcp --dport 80 -s " + komputery[i].ip + " -d! x.y.z.v -j DNAT --to x.y.z.v:100") /for /if
/* nie zapominamy o regule powrotu */ exec("/usr/local/sbin/iptables -t nat -A INFO -j RETURN")}
--
Teraz wystarczy przez "PHP exec" i "sudo" kasować reguły i przy użyciu MySQLa wpisywać zera do kolumny warning do bazy danych.
Sporo roboty ze stroną jest, ale u mnie działa. Przy użyciu PHP nawet info dla userów wyciągam z bazy danych :-)
!DSPAM:48076239196271163869485!