network
index
/home/ispadmin/bin/network.py

ispadmin - Suite Administración Correo/Web/DNS
hector@bith.net
---
administración de la red
 

 
gestión de las reglas de filtrado del firewall
se hace mediante dos cadenas en IPTABLES:
    
   ISPADMIN - todo paquete forwardeado pasará por aquí
              todo cerrado excepto aquellos hosts que se permiten
              
    - esta tabla se gestiona mediante add|del|list
    - el firewall primero de todo comprobará que existen los hosts
        que se quieren bloquear en esta tabla para luego restringir
        más aún en su tabla los permisos
        
forma de restringir el acceso a nuestra red: todo el tráfico que
pasa por la tabla forward (sea cual sea el origen y el destino):
    
    iptables -N ISPADMIN
    iptables -I FORWARD  -j ISPADMIN
    iptables -I ISPADMIN -j DROP 
 
tras esta última regla, nada excepto lo que se autorice luego POR ENCIMA
(con iptables -I ISPADMIN -j ACCEPT ...) de esa última regla estará
permitido.
 
las redes se añaden permitiendo -s red/mascara -j ACCEPT
los hosts se añaden con         -d host/32     -j ACCEPT
 
de esa manera sólo con una red NO estará permitido el tráfico, y si se 
añade un host sin estar previamente su red, aunque eso se supone que lo
controlamos, por si acaso con este formato TAMPOCO funcionaría ya que sólo
el host iptables seguiría sin permitir el tráfico de salida desde dicho
host hacia Internet.

 
Modules
            
commands
ispadmin
ispadmin
os
ispadmin
sys
 
Functions
            
add(lista, host)
añade un host o una red (eso nos lo dice su máscara, ya que
el formato con que llega es [255.255.255.0,192.168.1.1]
 
primero verifica que no esté en la lista que le antecede y todas
estas cosas (la lista tiene el mismo formato)
cmpfunc(x, y)
dadas dos ips, devuelve -1,0,1 para que se puedan ordenar
de manera efectiva
coloca_recursivo(dic, elem)
mete el elemento en una determinada posición
delete(lista, host)
elimina un host o una red (eso nos lo dice su máscara, ya que
el formato con que llega es [255.255.255.0,192.168.1.1]
 
primero verifica que no esté en la lista que le antecede y todas
estas cosas (la lista tiene el mismo formato)
ejecutar(orden)
get()
recupera todas las entradas actuales: sólo habremos dejar añadir 
cosas en función de lo que aquí le pongamos
get_elem(argum)
de un argumento extrae si lo que se quiere es añadir un host o una
red y el elemento a añadir, comprobando que sea realmente un host 
o una red:
    
      host,192.168.1.5
      network,195.235.96.0/24
init()
siempre hemos de comprobar que está creada la tabla que usamos
para permitir/denegar el acceso a la máquina:
    
      iptables -N ISPADMIN
 
-devolvemos 1 si ha ocurrido algún error (no pudimos crear
 tampoco la tabla)
-cuando se crea la tabla además se hace un iptables-restore
 que asegura que en reinicio de la máquina todo se hace como toca
main(argv, env)
gestión de quién puede o no acceder a esta máquina mediante
inserción de reglas en la cadena FORWARD de IPTABLES
muestra_recursivo(dic, nivel, formato, anidamiento=None, conf_proxy=None)
muestra el arbol recursivo generado con coloca_recursivo
reescribe_ip(x)
dada una ip le pone ceros: 195.5.1.6 --> 195.005.001.006
save()
guarda en la copia de seguridad los cambios que hayamos podido hacer
sobre las tablas
show(hosts, separador, conf_proxy)
mostrar la actual configuración en uso
de manera jerárquica si no se indica nada, y de manera lineal
si se solicitan solo los hosts o solo las redes
stop()
borra la configuración del iptables (no se emplea realmente nunca)
 
Data
             __ayuda__ = '\n\n Gestiona el uso de esta m\xe1quina como router ...po que sea) dentro del listado generado (3\xaa col)\n'
__file__ = './network.pyc'
__name__ = 'network'
sin_salida = '2>/dev/null >/dev/null'
todo = '0.0.0.0/0'