COMANDOS A EJECUTAR EN CONSOLA PARA INSTALAR LOS PAQUETES ?SQUID? E ?IPTABLES?
QUE IMPLEMENTAN EL PROXY Y EL FIREWALL RESPECTIVAMENTE:
PASO 1: aptitude install squid iptables (se puede usar apt-get install squid iptables ) 1. Posiblemente muestre un error al intentar iniciar el servicio con squid: Restarting Squid HTTP proxy: squiddpkg: error al procesar squid (--configure): el subproceso post-installation script devolvi el cdigo de salida de error 255 Se encontraron errores al procesar: squid E: Sub-process /usr/bin/dpkg returned an error code (1) Un paquete no se pudo instalar. Intentado recuperarse: Configurando squid (2.6.5-6) ... Restarting Squid HTTP proxy: squid. failed! SI NO GENERA ESTE ERROR SEGUIR CON EL PASO 3, SOLO EN CASO DE QUE EXISTA ESTE ERROR SE DEBEN SEGUIR CON EL PASO 2: PASO 2: aptitude install libfontconfig1 fontconfig fontconfig-config 1. aptitude reinstall squid iptables 2. AL OBSERVAR LA SIGUIENTE SALIDA EN LA CONSOLA SE SABE QUE LA INSTALACIN TUVO EXITO: Configurando squid (2.6.5-6) ... Restarting Squid HTTP proxy: squid. Configurando iptables (1.3.6.0debian1-5) ... DE ESTA FORMA SE TIENE INSTALADO SQUID E IPTABLES. PASO 3: SE PROCEDE ENTONCES CON LA CONFIGURACIN DE SQUID: nano /etc/squid/squid.conf 1. EL COMANDO ANTERIOR EDITA EL ARCHIVO DE CONFIGURACIN DE SQUID. BSICAMENTE SON MUY POCAS LNEAS LAS QUE SE TIENEN QUE MODIFICAR. EL SQUID.CONF ES UN ARCHIVO MUY LARGO (MS DE 3000 LNEAS) AS QUE SE DEBE UTILIZAR ALGUNA HERRAMIENTA DE BSQUEDA DEL EDITOR DE TEXTO UTILIZADO (EN ESTE CASO ES NANO, PERO PUEDE SER CUALQUIER OTRO EDITOR DE TEXTO). Servodor_Proxy-Firewall 1 ENTONCES... ... SE DEBE BUSCAR LA LINEA QUE DICE: http_port 3128 Y AGREGARLE LA PALABRA TRANSPARENT QUEDANDO DE LA SIGUIENTE MANERA: http_port IP_DEL_SERVIDOR:3128 transparent DONDE DICE ?IP_DEL_SERVIDOR? SE DEBE COLOCAR LA DIRECCION IP DONDE EL PROXY ESCUCHARA PETICIONES WEB DE LOS CLIENTES. EN NUENTRO CASO SERIA: http_port 172.16.16.1:3128 transparent ESTO ACTIVA EL SOPORTE PARA QUE EL EL PROXY FUNCIONE EN MODO TRANSPARENTE. BUSCAMOS LAS LINEAS QUE DICEN: Recommended minimum configuration: 1. acl all src 0.0.0.0/0.0.0.0 JUSTO DEBAJO DE ESTAS LINEAS APARECEN LAS LISTAS DE CONTROL DE ACCESO DEFINIDAS POR DEFECTO. SE DEBE MODIFICAR EN FUNCION DE NUESTRA NECESIDAD: LO MAS ESCENCIAL ES DEFINIR LO REFERENTE A NUESTRA RED LOCAL, EL LOCALHOST Y SE PODRIA GENERAR ALGUNA LISTA DE CLIENTES A LOS QUE NO SE LE PERMITE UTILIZAR EL PROXY. EN ESTE CASO SOLO SE AGREGARAN LAS SIGUIENTES LISTAS DE CONTROL DE ACCESO (ACL POR SUS SIGLAS EN INGLES): acl localhost src 127.0.0.1/255.255.255.255 acl nuestraredlocal src 172.16.16.0/255.255.255.0 acl nopermitidos src "/etc/squid/nopermitidos" LOCALHOST: INTERFAZ LOCAL DEL SISTEMA NUESTRAREDLOCAL: SEGMENTO DE RED EN DONDE SE ENCUENTRAN NUESTROS CLIENTES NOPERMITIDOS: ARCHIVO QUE DEBEMOS CREAR CON LA RUTA /ETC/SQUID/NOPERMITIDOS EN CASO QUE SE DESEE , EN EL CUAL INCLUIREMOS LAS IP'S DE LOS CLIENTES A LOS QUE LES QUEREMOS DENEGAR PETICIONES (SE HACE POR COMODIDAD, DE MANERA DE NO COLOCAR UNA LINEA EN EL SQUID.CONF POR CADA CLIENTE NO DESEADO DENTRO DE NUESTRA RED LOCAL). ESTA SECCION DEBERIA VERSE ASI: Recommended minimum configuration: 1. Servodor_Proxy-Firewall 2 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl nuestraredlocal src 172.16.16.0/255.255.255.0 acl nopermitidos src "/etc/squid/nopermitidos" acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT ES IPORTANTE RECORDAR QUE SE DEBEN HACER LAS MODIFICACIONES EN FUNCION DE LAS DIRECCIONES IP Y MASCARAS DE RED QUE SE MANEJAN EN LA RED DONDE PONDRA A FUNCIONAR EL SERVIDOR. LUEGO DE DEFINIR LAS LISTA DE CONTROL DE ACCESO SE DEBEN DEFINIR LAS REGLAS DE CONTROL DE ACCESO: BUSCAMOS LA LINEA QUE DICE: Only allow cachemgr access from localhost 1. Y AGREGAMOS LA SIGUIENTE LINEA: http_access allow nuestraredlocal !nopermitidos EL SIMBOLO ?!? COLOCADO AL INICIO DE ?NOPERMITIDOS? EN LA LINEA ANTERIOR INDICA SE PERMITE EL ACCESO A TODO LO DEFINIDO EN ?NUESTRAREDLOCAL? EXCEPTO LO DEFINIDO EN ?NOPERMITIDOS?, SIN EMBARGO TAMBIN ES POSIBLE AGREGAR LA LINEA ?http_access deny nopermitidos?. ESTA SECCION DEBERIA VERSE ASI: Only allow cachemgr access from localhost 1. http_access allow manager localhost http_access allow nuestraredlocal !nopermitidos http_access deny manager Only allow purge requests from localhost 1. http_access allow purge localhost http_access deny purge Deny requests to unknown ports 1. http_access deny !Safe_ports Deny CONNECT to other than SSL ports 1. http_access deny CONNECT !SSL_ports 1. Servodor_Proxy-Firewall 3 We strongly recommend the following be uncommented to protect innocent 2. web applications running on the proxy server who think the only 3. one who can access services on "localhost" is a local user 4. http_access deny to_localhost 5. 6. INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 7. Example rule allowing access from your local networks. Adapt 1. to list your (internal) IP networks from where browsing should 2. be allowed 3. acl our_networks src 192.168.1.0/24 192.168.2.0/24 4. http_access allow our_networks 5. http_access allow localhost And finally deny all other access to this proxy 1. http_access deny all LUEGO AL FINAL DEL ARCHIVO DEBEMOS AGREGAR LA LINEA: visible_hostname www.servidor.proxy.algo SOLO EN EL CASO QUE SE QUIERA MOSTRAR EN LOS MENSAJES DEL EXPLORADOR UN NOMBRE DISTINTO AL NOMBRE DE LA MAQUINA DONDE ESTA INSTALADO EL SERVIDOR, YA QUE ESTE NOMBRE ES EL QUE MUESTRA POR DEFECTO. AHORA SE GUARDAN LOS CAMBIOS Y SE CIERRA EL ARCHIVO SQUID.CONF. PASO 4: CREAR EL ARCHIVO ?NOPERMITIDOS? touch /etc/squid/nopermitidos ESTO CREA UN ARCHIVO VACION LLAMADO ?nopermitidos? EN LA CARPETA ?/etc/squid/? . LO QUE QUEDA ES AGREGAR LAS DIRECCIONES IP DE LAS MAQUINAS CLIENTES QUE NO QUEREMOS QUE TENGAN ACCESO WEB DESDE NUESTRA RED LOCAL. SI EDITAMOS EL ARCHIVO ?nopermitidos? CON EL COMANDO ?nano /etc/squid/nopermitidos? DEBERIAMOS VER ALGO PARECIDO A ESTO: 172.16.16.45 172.16.16.233 172.16.16.4 . . . . . 172.16.16.N PASO 5: SE DEBEN CREAR LAS REGLAS DE IPTABLES QUE SON NECESARIAS PARA QUE EL PROXY FUNCIONE EN MODO TRANSPARENTE: Servodor_Proxy-Firewall 4 La mejor Practica consiste en crear un script de modo que podamos Detener o reiniciar las reglas de IPTABLES en caso de que deseemos efectuar alguna modificacin de manera rpida y practica. A SU VEZ, CON ESTA PRACTICA GARANTIZAMOS QUE EN CASO DE REINICIARSE EL SERVIDOR, CONSERVEMOS LAS REGLAS INTACTAS. SE CREA EL UN ARCHIVO LLAMADO ?IPTABLES? (O EL NOMBRE QUE SE DESEE) EN LA CARPETA /ETC/INIT.D CON EL SIGUIENTE COMANDO: touch /etc/init.d/iptables 1. ESTO GENERARA UN ARCHIVO VACIO CON EL NOMBRE iptables EN LA CARPETA /etc/init.d/ . LE DAMOS PERMISOS DE EJECUCIN: chmod +x /etc/init.d/iptables 1. CREAMOS LOS ENLACES SIMBOLICOS A LOS RC DEL SISTEMA: cd /etc/init.d 1. update-rc.d iptables defaults 1. EDITAMOS EL ARCHIVO: nano /etc/init.d/iptables 1. Y AGREGAMOS LAS SIGUIENTES REGLAS DE IPTABLES: !/bin/sh 1. /sbin/iptables -F /sbin/iptables -Z /sbin/iptables -X /sbin/iptables -t nat -F /sbin/iptables -t nat -A POSTROUTING -s 172.16.16.0/24 -o eth1 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 SE GUARDAN LOS CAMBIOS Y SE CIERRA EL ARCHIVO. NOTA: LO SIGUIENTE DEBE SER TOMADO EN CUENTA: 172.16.16.0/24: CORRESPONDE A LOS DATOS DE NUESTRA RED LOCAL. eth1: CORRESPONDE A LA INTERFAZ QUE NOS DA SALIDA A INTERNET (INTERFAZ WAN). eth0: CORRESPONDE A LA INTERFAZ QUE COMUNICA NUESTRA RED LOCAL CON EL SERVIDOR PROXY. LISTO YA SE TIENE PROXY TRANSPARENTE INSTALADO Y CONFIGURADO PARA UN FUNCIONAMIENTO BSICO. PARA MAYOR INFORMACIN DE COMO AGREGAR FUNCIONALIDADES A AL SERVIDOR Servodor_Proxy-Firewall 5 PROXY CON SQUID, REFERIRSE A SU PAGINA OFICIAL: http://www.squid-cache.org CONFIGURACION DE FIREWALL CON IPTABLES. LA ADECUADA CONSTRUCCION DE LAS REGLAS (CADENAS) DE UN FIREWALL IPTABLES DEPENDERAN DE MULTIPLES FACTORES QUE SE DEBERAN CONSIDERAR DURANTE EL DISEO DEL SCRIPT. EL MISMO DEBERA SER PENSADO EN FUNCION DE LA TOPOLOGIA EXISTENTE EN LA RED, EL ROL DEL FIREWALL DENTRO DE LA MISMA (EN CASO DE EXISTIR MULTIPLES FIREWALLS SI LA TOPOLOGIA ASI LO AMERITA), Y DE LOS SERVICIOS IMPLEMENTADOS. ASI MISMO LAS POLITICAS DE SEGURIDAD EXISTENTES EN LA ORGANIZACION DETERMINARAN EL CONJUNTO DE REGLAS A IMPLEMENTAR. EMPEZEMOS POR ANALIZAR LAS CARACTERISTICAS GENERALES QUE COMPRONDRAN EL SCRIPT: Vaciado de reglas 1. 1. iptables -F iptables -X iptables -Z iptables -t nat -F CUANDO NOS VEAMOS EN LA NECESIDAD DE DETENER Y REINICIAR LAS REGLAS DE IPTABLES, ES MUY PROBLABLE QUE SEA PORQUE HEMOS MODIFICADO DE ALGUNA MANERA LA ESTRUCTURA DE LAS MISMAS, POR LO TANTO ES IMPORTANTE QUE INCLUYAMOS AL INICIO DEL SCRIPT ESTAS SENTENCIAS QUE NOS PERMITEN INICIALIZAR LOS CONTADORES Y ELIMINAR DE LA MEMORIA LAS CADENAS (INSTRUCCIONES, REGLAS) QUE HAYAN SIDO PREVIAMENTE CARGADAS. EL SIGNIFICADO DE CADA UNA DE ESTAS INSTRUCCIONES ES EL SIGUIENTE: iptables -F (flush): VACIADO DE TODAS AQUELLAS CADENAS QUE HAYAN SIDO DECLARADAS PREVIAMENTE. iptables -X (delete-Chain): BORRA DEFINITIVAMENTE DE LA MEMORIA TODAS AQUELLAS CADENAS QUE HAYAN SIDO PREVIAMENTE VACIADAS, DEJANDO SOLAMENTE LAS REGLAS POR DEFECTO DE IPTABLES. iptables -Z (Zero): INICIALIZA TODOS LOS CONTADORES EN CERO, DE MANERA QUE PODAMOS LLEVAR UN SEGUIMIENTO PRECISO DE LAS COINCIDENCIAS QUE PRODUZCAN CON LAS REGLAS DEFINIDAS. iptables -t nat -F (Nat-Flush): VACIADO DE LA TABLA DE TRADUCCIONES, NAT. Politicas por defecto 1. 1. iptables -P INPUT (ACCEPT|DROP|REJECT) iptables -P OUTPUT (ACCEPT|DROP|REJECT) iptables -P FORWARD (ACCEPT|DROP|REJECT) iptables -t nat -P PREROUTING (ACCEPT|DROP|REJECT) iptables -t nat -P POSTROUTING (ACCEPT|DROP|REJECT) LAS POLITICAS POR DEFECTO SON AQUELLAS DE CARACTER GLOBAL QUE SE APLICAN EN EL CASO DE QUE LA VERIFICACION DE UN PAQUETE NO COINCIDA CON NINGUNA DE LAS REGLAS (CADENAS) DEFINIDAS. EXISTEN 3 TIPOS DE POLITICAS DE FILTRADO DE PAQUETES POR DEFECTO GENERALES QUE DEBEMOS CONOCER: Servodor_Proxy-Firewall 6 INPUT: SE REFIERE A TODOS AQUELLOS PAQUETES QUE TENGAN COMO DESTINO EL FIREWALL PROPIAMENTE. OUTPUT: SE REFIERE A TODOS AQUELLOS PAQUETES QUE SE HAYAN ORIGINADO PROPIAMENTE DESDE EL FIREWALL. FORWARD: SE REFIERE A TODOS AQUELLOS PAQUETES QUE ATRAVIESAN EL FIREWALL (NI ORIGINADOS EN EL MISMO NI TENIENDO EL MISMO COMO DESTINO. SE REFIERE A AQUELLOS PAQUETES QUE EL FIREWALL ENRUTA ENTRE REDES. EXISTEN 2 TIPOS DE POLITICAS DE NAT POR DEFECTO GENERALES QUE DEBEMOS CONOCER: PREROUTING Y POSTROUTING, QUE HACEN REFERENCIA AL PROCESO DE TRADUCCION DE DIRECCIONES APLICADO A LOS PAQUETES AL ENTRAR Y SALIR DEL FIREWALL. PARA ESTAS POLITICAS EXISTEN 3 OPCIONES: ACCEPT: ACEPTAR. DROP: DESCARTAR SIN NOTIFICAR. REJECT: DESCARTAR CON NOTIFICACION. EXISTEN DOS APROXIMACIONES COMUNES A LA HORA DE ESTABLECER POLITICAS POR DEFECTO: ACEPTAR TODO O DENEGAR TODO. OTRA REGLA POR DEFECTO CUYO USO DEBEMOS CONSIDERAR ES LA SIGUIENTE: Localhost 1. /sbin/iptables -A INPUT -i lo -j ACCEPT DE MANERA QUE ACEPTEMOS EN EL FIREWALL TODO AQUEL TRAFICO QUE SE ORIGINE EN EL MISMO, CON EL FIN DE PERMITIR EL NORMAL FUNCIONAMIENTO DEL SISTEMA OPERATIVO Y SUS TECNOLOGIAS DE RED IMPLEMENTADAS. POR OTRO LADO ES IMPORTANTE QUE ACTIVEMOS LA OPCION DE ENRUTAR EN EL FIREWALL SI VAMOS A UTILIZAR INSTRUCCIONES FORWARD, ESTO ES BASICO PARA TODO TIPO DE FIREWALL SALVO LOS FIREWALLS PERSONALES (QUE SOLO POSEEN INSTRUCCIONES INPUT Y OUTPUT). Activacion del Forwarding de packetes a traves del firewall 1. echo 1 > /proc/sys/net/ipv4/ip_forward UNA VEZ CONSIDERADAS ESTAS INSTRUCCIONES GENERALES, EL ARCHIVO DE SCRIPT MAS BASICO QUE TENDRIAMOS SERIA EL SIGUIENTE: !/bin/sh SCRIPT de IPTABLES - Version -0 1. Firewall Clasico con politicas por defecto 2. 3. Jorge Cabrera/Carlos Linares/Ivan Lander 4. jcabrerac@cnti.gob.ve clinares@cnti.gob.ve ilander@cnti.gob.ve 5. 1. Servodor_Proxy-Firewall 7 Vaciado de reglas 1. 1. iptables -F iptables -X iptables -Z iptables -t nat -F Politicas por defecto 1. 1. iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT Activacion del Forwarding de packetes a traves del firewall 1. echo 1 > /proc/sys/net/ipv4/ip_forward Localhost 1. /sbin/iptables -A INPUT -i lo -j ACCEPT Fin del script 1. UNA VEZ ESTABLECIDAS LAS CARACTERISTICAS GENERALES QUE DEBE POSEER UN FIREWALL CLASICO, Y ANTES DE PROCEDER A CONSIDERAR LAS REGLAS ESPECIFICAS DEBEMOS CONSIDERAR EL TIPO DE FIREWALL QUE SE DESEA IMPLEMENTAR EN FUNCION DE LA TOPOLOGIA DE RED: FIREWALL PERSONAL O DE HOST: ES EL TIPO MAS SENCILLO DE FIREWALL QUE SE PUEDE IMPLEMENTAR, BASICAMENTE SE BASA EN LOS MECANISMOS DE PROTECCION IMPLEMENTADOS DIRECTAMENTE SOBRE UN HOST DE RED (ESTACION DE TRABAJO O SERVIDOR), ESTE TIPO DE FIREWALL UTILIZA SOLO POLITICAS DE TIPO INPUT Y OUTPUT, DEBIDO A QUE EL TRAFICO SIEMPRE SERA ORIGINADO EN EL MISMO DISPOSITIVO, O LO TENDRA COMO DESTINO. FIREWALL PARA UNA RED LAN CON ACCESO A INTERNET: ESTE TIPO DE FIREWALL NORMALMENTE TIENE DOS INTERFACES, UNA QUE ESTA CONECTADA A LA RED O REDES INTERNAS Y UNA CONFIGURADA CONTRA LA CONECCION DE ACCESO A INTERNET, EN ESTE TIPO DE FIREWALL TIENEN PREPONDERANCIA LAS REGLAS ASOCIADAS A FORWARD. EN CASO DE QUE EL DISPOSITIVO DE RED SOLO TENGA UNA INTERFAZ, SE DEBERAN SEGUIR LAS INSTRUCCIONES QUE APARECEN MAS ADELANTE EN EL APARTADO IPTABLES CON VLANS. FIREWALLS PARA UNA TOPOLOGIA CON DMZ: ESTE TIPO DE FIREWALL POSEE UNA INTERFAZ ADICIONAL DONDE SE UBICAN LOS SERVIDORES PUBLICOS (WWW, EMAIL), ENTONCES ESTE TIPO DE FIREWALL POSEE UNA INTERFAZ O CONJUNTO DE INTERFACES LOCALES, UNA INTERFAZ O CONJUNTO DE INTERFACES QUE COLINDA CON LOS SERVICIOS DE INTERNET Y UNA INTERFAZ DE SERVICIOS PUBLICOS O DMZ. IMPLEMENTACION DE FIREWALL IPTABLES CON VLANS: CON REGULARIDAD SUCEDE QUE LAS NECESIDADES DE INTERFACES EXCEDEN EL NUMERO DE INTERFACES QUE FISICAMENTE POSEE O PUEDE POSEER UN DISPOSITIVO, EN ESOS CASOS SE DEBEN CONFIGURAR SUBINTERFACES LOGICAS EN LAS TARJETAS, Y TAMBIEN ES BASTANTE HABITUAL QUE ESTA MEDIDA SEA ACOMPAADA CON LA IMPLEMENTACION DE INTERFACES TRONCALES CON SWITCHES QUE MANEJAN VLANS. Servodor_Proxy-Firewall 8 EN ESTE CASO SE DEBEN SEGUIR LOS SIGUIENTES PASOS: PASO 1: aptitude install vlan (se puede usar apt-get install vlan) ESTE PASO INSTALA EL MDULO DE CONTROL DE VLAN. PASO 2: vconfig add interfaz-fisica numero-de-vlan CON ESTE PASO SE CREARAN TANTAS VLANS ASOCIADAS A UNA INTERFAZ FISICA COMO NECESITEMOS. EN CASO DE QUE SE DEBA ELIMINAR ALGUNA VLAN SE PUEDE USAR LA SIGUIENTE SINTAXIS: vconfig rem interfaz-fisica numero de vlan 1. PASO 3: ifconfig interfaz-fisica.numero-de-vlan SE DEBERAN CONFIGURAR LAS INTERFACES EN EL ARCHIVO DE CONFIGURACION EN /ETC/INTERFACES/NETWORK ESTABLECIMIENTO DE REGLAS ENTRE INTERFACES O VLANS: UNA VEZ EFECTUADA LA CONFIGURACION BASICA DEL FIREWALL RESTA DETERMINAR CUALES SON LAS POLITICAS QUE SE DESEA IMPLEMENTAR EN EL FIREWALL, Y PARA ELLO SE DEBEN CONSIDERAR MUCHOS ASPECTOS: POLITICAS DE SEGURIDAD DE LA ORGANIZACION EN CASO DE EXISTIR, SERVICIOS IMPLEMENTADOS, DISPOSITIVOS Y REDES EXISTENTES. UNA VEZ RECOPILADA LA INFORMACION FUNDAMENTAL (POLITICAS, SERVICIOS IMPLEMENTADOS, DIRECCIONAMIENTO Y NUMEROS DE PUERTO ASOCIADOS A LOS SERVICIOS) SE PUEDE PROCEDER CON LA CREACION DE LAS REGLAS: SINTAXIS GENERAL: iptables -A (INPUT|OUTPUT|FORWARD) -i (INTERFAZ DE ENTRADA O ORIGEN) -s (RED O HOST ORIGEN CON EL FORMATO XXX.XXX.XXX.XXX/XX, DIRECCION IP BARRA MASCARA DE SUBRED) -o (INTERFAZ DE SALIDA O DESTINO) -p (TCP|UDP) -sport (#PUERTO ORIGEN) -dport (#puerto destino) -j (ACCEPT|DROP|REJECT) ESTA SINTAXIS A PESAR DE PARECER COMPLEJA ES DE LAS MAS SIMPLES QUE PUEDE IMPLEMENTARSE CON IPTABLES, A CONTINUACION PRESENTAMOS UN ARCHIVO DE CONFIGURACION DE EJEMPLO COMENTADO DONDE PUEDE OBSERVARSE LA Servodor_Proxy-Firewall 9 CONSTRUCCION DE UN SCRIPT CON REGLAS EN UNA TOPOLOGIA DMZ QUE TIENE LAS SIGUIENTES CARACTERISTICAS: UN FIREWALL CON DOS INTERFACES eth0 (QUE REPRESENTA LAS REDES LOCALES Y DMZ) Y UNA eth0 QUE REPRESENTA LA INTERFAZ CONECTADA A INTERNET, LA INTERFAZ eth0 SE HA SUBDIDIVIDO EN VARIAS INTERFACES CON VLANS IMPLEMENTADAS, a saber: eth0.50 ES LA RED LOCAL CON LA RED IP 172.16.16.0/24 eth0.100 ES LA DMZ CON LA RED IP 192.168.31.8/29 eth1 ES LA INTERFAZ CONECTADA A INTERNET. !/bin/sh SCRIPT de IPTABLES - Version 1.0 1. Firewall Clasico Basico con Interfaz Outside, Inside y DMZ 2. 3. Jorge Cabrera/Carlos Linares/Ivan Lander 4. jcabrerac@cnti.gob.ve clinares@cnti.gob.ve ilander@cnti.gob.ve 5. 1. Vaciado de reglas 1. iptables -F iptables -X iptables -Z iptables -t nat -F Politicas por defecto 1. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -t nat -P PREROUTING DROP iptables -t nat -P POSTROUTING DROP Activacion del Forwarding de packetes a traves del firewall 1. echo 1 > /proc/sys/net/ipv4/ip_forward Localhost 1. /sbin/iptables -A INPUT -i lo -j ACCEPT Acceso al Firewall desde la red local 1. iptables -A INPUT -s 172.16.16.0/24 -i eth0.50 -j ACCEPT Acceso desde la red local a cualquier destino 1. iptables -A FORWARD -i eth0.50 -o eth1 -s 172.16.16.0/24 -j ACCEPT Acceso entre DMZ y Red Local para los servicios DNS POP y SMTP 1. iptables -A FORWARD -i eth0.100 -o eth0.50 -p udp -s 192.168.31.8/29 --sport 53 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -i eth0.100 -o eth0.50 -p udp -s 192.168.31.8/29 --sport 110 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -i eth0.100 -o eth0.50 -p udp -s 192.168.31.8/29 --sport 25 --dport 1024:65535 -j ACCEPT Servodor_Proxy-Firewall 10 Restriccion del acceso de la DMZ a la LAN 1. iptables -A FORWARD -s 192.168.31.8/29 -d 172.16.16.0/24 -j DROP iptables -A FORWARD -s 172.16.16.0/24 -d 192.168.31.8/29 -j DROP Restriccion del acceso de la DMZ al propio firewall 1. iptables -A INPUT -s 192.168.31.8/29 -i eth0.100 -j DROP Fin del script 1. PARA VERIFICAR QUE LAS REGLAS DEFINIDAS SE ESTEN IMPLEMENTANDO SE PUEDE UTILIZAR EL COMANDO iptables -L -n y la variante iptables -L -v permite visualizar el numero de coincidencias encontradas con cada una de las reglas. PARA MAYOR INFORMACION SON MUY UTILES LAS SIGUIENTES FUENTES DE INFORMACION: MANUAL DE IPTABLES EN LINUX, QUE SE INVOCA CON EL COMANDO man iptables O iptables -h PAGINA WEB DEL PROYECTO NETFILTER QUE DESARROLLA IPTABLES: www.netfilter.org Servodor_Proxy-Firewall 11