Ja, ja, ist es.
Ich habe Python-Code, der mit Linux iptables interagiert, um Firewall-Aufgaben mit nfqueue auszuführen. Ich kann eine Regel in iptables verwenden, die wie folgt aussieht:
%Vor%Und dann etwas Python-Code, der wie folgt aussieht:
%Vor%Hier ist eine nette Zusammenfassung, auf der der obige Code basiert:
Python-iptables bietet Python-Bindungen zu iptables unter Linux. Die Interoperabilität mit iptables wird durch die Verwendung der iptables-C-Bibliotheken (libiptc, libxtables und iptables-Erweiterungen) erreicht, die das iptables-Binary nicht aufrufen und seine Ausgabe nicht analysieren.
Ich bin mir sicher, theoretisch könntest du erreichen, was du willst, aber in der Praxis ist deine Idee nicht machbar (wenn du dich fragst, warum es so schwierig ist, eine High-Level-Sprache mit dem Low-Level-Kernel zu verbinden) ).
Was Sie stattdessen tun könnten, ist ein Python-Tool, das die Firewall des Betriebssystems steuert, so dass Sie Regeln hinzufügen, löschen usw. können (ähnlich wie bei iptables unter Linux).
Ich bin sicher, es ist wahrscheinlich möglich, aber schlecht beraten. Wie mcandre erwähnt, koppeln die meisten Betriebssysteme die Low-Level-Netzwerkfähigkeiten, die Sie für eine Firewall benötigen, eng in den Kernel ein. Daher wird diese Aufgabe normalerweise in C / C ++ ausgeführt und eng in den Kernel integriert. Die Mikrokernel-Betriebssysteme (Mach et al.) Sind möglicherweise zugänglicher als Linux. Vielleicht können Sie etwas Python und C mischen, aber ich denke, die interessantere Diskussion hier wird um "warum sollte ich" / "warum sollte ich nicht" eine Firewall in Python implementieren im Gegensatz zu nur ist es technisch möglich .
Interessanter Thread. Ich stolperte darüber nach Python NFQUEUE Beispielen suchen.
Ich nehme an, Sie könnten eine großartige Firewall in Python erstellen und den Kernel verwenden.
z. Fügen Sie eine linux fw-Regel über IP-Tabellen hinzu, die sys-Pakete (das erste) an NFQUEUE für python FW weiterleiten, um zu entscheiden, was zu tun ist.
Wenn Sie möchten, markieren Sie den tcp stream / flow mit einer FW-Markierung, indem Sie NFQUEUE verwenden, und weisen Sie dann eine iptables-Regel zu, die nur alle Verkehrsströme mit der Markierung zulässt.
Auf diese Weise können Sie ein leistungsstarkes Python-Programm auf hoher Ebene haben, das entscheidet, ob Datenverkehr zugelassen oder abgelehnt werden soll, sowie die Geschwindigkeit, mit der der Kernel alle anderen Pakete im selben Ablauf weiterleitet.
"Ja" - das ist normalerweise die Antwort auf "ist es möglich ...?" Fragen.
Wie schwierig und spezifisch Implementierungen sind etwas ganz anderes. Ich nehme an, technisch gesehen sollte man das nicht so machen. Wenn man in Python eine schnelle Firewall bauen wollte, konnte man die Socket-Bibliotheken verwenden und Verbindungen zu und von sich selbst an jedem Port öffnen. Ich habe keine Ahnung, wie effektiv das wäre, obwohl es so aussieht, als ob es nicht wäre. Natürlich, wenn Sie nur daran interessiert sind, Ihre eigenen zu rollen, und dies als Lernerfahrung zu machen, dann ist es cool, Sie haben einen langen Weg vor sich und viel Bildung.
OTOH, wenn Sie sich Sorgen um die Netzwerksicherheit machen, gibt es Tonnen anderer Produkte, die Sie verwenden können, von iptables auf * nix bis zu ZoneAlarm unter Windows. Viele von ihnen sind beide frei und sicher, so gibt es wirklich keinen Grund, Ihre eigenen außer auf einer "Ich möchte lernen" -Basis rollen.