Über Webseite iptables Regeln anlegen/löschen



Garog

New Member
Hallo zusammen,

ich möchte das nur bestimmte Leute einen entsprechenden Port auf dem Server erreichen können. Dazu sollen sie sich auf einer Webseite einloggen, nach erfolgreichem Login soll ihre IP Adresse zur iptables hinzugefügt werden.
Dabei "sollte" die IPAdresse irgendwie an den Loginnamen gebunden sein, das kann ich zur Not auch über eine Datenbank machen, oder wenn möglich, er Regel einen Namen geben.

Wie ich das ganze mit dem Login mache ist kein Problem, auch das mit der IPAdresse und dem Port in der IPTables, nur beides zu verbinden, das mein php Skript mir einen Eintrag in die IPTables macht, macht mir etwas Schwierigkeiten.

Mag mir da jemand einen Hinweis oder Tipp geben wie ich nach dem einloggen den Befehl
"iptables -A INPUT -p tcp --dport 0000 -s 1.2.3.4 -j ACCEPT"
ausführen kann.

Danach muss ich noch einen save und einen restart von iptables machen richtig ?
EDIT: @restart -> son quatsch, ist doch nen Kernelmodul..., erst denken dann schreiben ;)
 
Last edited by a moderator:
erste Idee die ich gerade dazu im www gefunden habe

Hi,

ja du musst nur eine Datei (firewall) erstellen, in der die Firewall-Richtlinien stehen und diese dann ausführbar machen (chmod 755 firewall). Solche Änderungen am System dürfen allerdings nur priviligierte Benutzer durchführen. Ruf in der .php-Datei das Script über

system("sudo /.../firewall");
auf. Damit der Benutzer des Webservers (meistens www-data) das Script auch ausführen darf, muss es einen Eintrag in der sudo-datei geben. Ruf dafür als Root "visudo" auf und füg die folgende Zeile ein:

www-data ALL = NOPASSWD: /.../firewall

ist das so brauchbar ?
die Datei firewall kann ich ja jedes mal per php dann neu erstellen mit den gewünschten befehlen
 
Ich würde niemals dem Webserver das Recht geben, irgendwas direkt auf der Shell auszuführen.

Eher würde ich sowas machen wie, dass das Skript einen Eintrag in einer Datenbank erstellt mit der IP und per Cronjob dann die IPs aus der Datenbank freigeben.
 
dass das Skript einen Eintrag in einer Datenbank erstellt mit der IP und per Cronjob dann die IPs aus der Datenbank freigeben.

Zum Pollen per Cron aus Datenbanken gibt es inzwischen wesentlich schönere Alternativen, wie z.B, Message Queues.

Sieh dir mal http://zeromq.org/ an. Du baust dir einen Dienst, der per zeromq IP-Adressen entgegen nimmt und die IPTables Regelns setzt. Auf der PHP-Seite lässt du einfach per zeromq IP-Adressen an den Dienst fallen. Saubere Trennung der Benutzerrechte, saubere Schnittstellen + "Echtzeit" ohne Pollen.
 
Das klingt gut, das mit dem Recht für den Webnutzer möchte ich auch nicht gerne machen, da sieht mir die Idee von PapaBaer schon ganz gut aus.
 
Back
Top