From e1bbd3aad5cf5ab7ffd9e876269c815e21be062b Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Thu, 30 Jun 2011 12:42:06 -0400
Subject: [PATCH] start iptables plugin, just documenting now

---
 server/plugins-available/iptables_plugin.inc.php |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/server/plugins-available/iptables_plugin.inc.php b/server/plugins-available/iptables_plugin.inc.php
new file mode 100644
index 0000000..2aba144
--- /dev/null
+++ b/server/plugins-available/iptables_plugin.inc.php
@@ -0,0 +1,78 @@
+<?php
+
+class iptables_plugin
+{
+ var $plugin_name = 'iptables_plugin';
+ var $class_name  = 'iptables_plugin';
+
+ function onInstall()
+ {
+  global $conf;
+  if($conf['iptables']['installed'] = true) return true;
+  else return false;
+ }
+
+ function onLoad()
+ {
+  global $app;
+  $app->plugins->registerEvent('iptables_insert',$this->plugin_name,'insert');
+  $app->plugins->registerEvent('iptables_update',$this->plugin_name,'update');
+  $app->plugins->registerEvent('iptables_delete',$this->plugin_name,'delete');
+ }
+
+ function insert($event_name,$data)
+ {
+  global $app, $conf;
+  $this->update($event_name,$data);
+ }
+
+ function update($event_name,$data)
+ {
+  global $app, $conf;
+/*
+ok, here is where we do some fun stuff.  First off we need to see the currently
+running iptables (sans the fail2ban) and compare with the database.  This is
+the method that is good for multi servers and keeping the firewall read only so
+a comromised box will not corrupt the master server.
+
+If the running iptables and the new iptables don't match, lets send a note to 
+the monitoring data to say that there is a difference.  Maybe we can have the
+iptables gui inteface check the data field for changes and post a warning and
+or the changes as disabled rules.  If an admin adds a rule on the comand line
+we should make it easy to add to the database, but hard to overwrite the data.
+
+1.
+So first is a reading of the current rules by filter:table with our friend awk
+
+2.
+Compare with database
+
+3.
+Send notices or updates
+
+4.
+Apply rules from database
+
+5.
+Preform some type of sainity check like the apache restart script
+
+6.
+Profit
+
+# automate this with a loop, but here it is for santity sake.
+exec('iptables -S INPUT');
+exec('iptables -S OUTPUT');
+exec('iptables -S FORWARD');
+
+$data['new'] should have lots of fun stuff
+exec('iptables -I XYZ');
+*/
+ }
+	
+ function delete($event_name,$data)
+ {
+  global $app, $conf;
+  exec('iptables -D xyz');
+ }
+}
+?>
\ No newline at end of file

--
Gitblit v1.9.1