{"id":5444,"date":"2017-09-01T22:14:58","date_gmt":"2017-09-01T20:14:58","guid":{"rendered":"https:\/\/blog.hostinger.io\/co-tutoriales\/?p=5444"},"modified":"2025-02-13T12:48:11","modified_gmt":"2025-02-13T11:48:11","slug":"como-asegurar-linux-con-iptables-firewall","status":"publish","type":"post","link":"\/co\/tutoriales\/como-asegurar-linux-con-iptables-firewall","title":{"rendered":"C\u00f3mo asegurar tu VPS Ubuntu con el firewall de Linux Iptables"},"content":{"rendered":"<p>Iptables es el firewall de Linux que se utiliza para supervisar el tr&aacute;fico entrante y saliente a un servidor y filtrarlo basado en reglas definidas por el usuario para evitar que cualquier persona acceda al sistema. Utilizando Iptables puede definir reglas que s&oacute;lo permitir&aacute;n tr&aacute;fico selectivo en su servidor. <\/p><p>En este tutorial de Iptables, aprender&aacute;s a proteger tu aplicaci&oacute;n web mediante Iptables.<\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Linux-Commands-Cheatsheet-ES.pdf\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/blog.hostinger.io\/co-tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES-1024x283.png\" alt=\"\" class=\"wp-image-26004\" srcset=\"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES.png 1024w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES-300x83.png 300w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES-150x41.png 150w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES-768x212.png 768w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2022\/12\/Linux-cheat-sheet-ES-1536x425.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-que-necesitas\">&iquest;Qu&eacute; necesitas?<\/h2><p>Antes de comenzar con el tutorial de Iptables, necesitar&aacute; lo siguiente:<\/p><ul class=\"wp-block-list\">\n<li>Una m&aacute;quina local con el cliente SSH instalado (revisa el tutorial <a href=\"\/co\/tutoriales\/crear-tunel-ssh-putty\/\">sobre c&oacute;mo usar el cliente de putty ssh<\/a>)<\/li>\n\n\n\n<li><a href=\"\/co\/servidor-vps\">Servidores<\/a> corriendo Ubuntu 22.04 o superior<\/li>\n<\/ul><p>Si desesa obtener m&aacute;s informaci&oacute;n sobre los comandos SSH y SSH, sigue este tutorial.<\/p><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante!<\/strong> Para los usuarios de RHEL \/ CentOS hay un servicio denominado firewallD que ya est&aacute; instalado en estos sistemas operativos. Si desea utilizar Iptables, primero debes desactivarlo.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-fundamentos-de-iptables\">Fundamentos de Iptables<\/h2><p>Todos los datos se env&iacute;an en forma de paquetes a trav&eacute;s de Internet. El kernel de Linux proporciona una interfaz que filtra los paquetes de tr&aacute;fico entrante y saliente usando tablas de filtros de paquetes. Iptables es una aplicaci&oacute;n de l&iacute;nea de comandos y un firewall de Linux que puedes configurar, mantener e inspeccionar estas tablas. <\/p><p>Pueden definirse varias tablas. Cada tabla puede contener m&uacute;ltiples cadenas. Una cadena no es m&aacute;s que un conjunto de reglas. Cada regla define qu&eacute; hacer con el paquete si coincide con ese paquete. Cuando el paquete es emparejado, se le da un <strong>TARGET<\/strong>. Un objetivo puede ser otra cadena que coincida con o uno de los siguientes valores especiales:<\/p><ul class=\"wp-block-list\">\n<li><strong>ACCEPT<\/strong>: Significa que el paquete podr&aacute; pasar.<\/li>\n\n\n\n<li><strong>DROP<\/strong>: Significa que no se permitir&aacute; que el paquete pase.<\/li>\n\n\n\n<li><strong>RETURN<\/strong>: Significa omitir la cadena actual y volver a la siguiente regla de la cadena en la que fue llamado.<\/li>\n<\/ul><p>Para el alcance de este tutorial de iptables, vamos a trabajar con una de las tablas por defecto llamada filtro (filter). La tabla de filtros tiene tres cadenas (conjuntos de reglas).<\/p><ul class=\"wp-block-list\">\n<li><strong>INPUT<\/strong>&nbsp;&ndash; Esta cadena se utiliza para controlar los paquetes entrantes al servidor. Puede bloquear \/ permitir conexiones basadas en puerto, protocolo o direcci&oacute;n IP de origen.<\/li>\n\n\n\n<li><strong>FORWARD<\/strong>&nbsp;&ndash; Esta cadena se utiliza para filtrar los paquetes que entran al servidor pero que deben ser reenviados en otro lugar.<\/li>\n\n\n\n<li><strong>OUTPUT<\/strong> &ndash; Esta cadena se utiliza para filtrar los paquetes que salen del servidor.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-paso-1-instalacion-de-iptables-firewall-de-linux\">Paso 1 &ndash; Instalaci&oacute;n de Iptables Firewall de Linux<\/h2><h3 class=\"wp-block-heading\" id=\"h-1-instalacion-de-iptables\">1. Instalaci&oacute;n de Iptables<\/h3><p>Iptables viene preinstalado en casi todas las distribuciones de Linux. Pero si no lo tienes instalado en el sistema Ubuntu \/ Debian, usa:<\/p><pre class=\"wp-block-preformatted\">sudo apt-get update\nsudo apt-get install iptables\n<\/pre><h3 class=\"wp-block-heading\" id=\"h-2-comprobacion-del-estado-actual-de-los-iptables\">2. Comprobaci&oacute;n del estado actual de los iptables<\/h3><p>Con este comando, puede comprobar el estado de su configuraci&oacute;n actual de Iptables. Aqu&iacute; se utiliza la opci&oacute;n <b>-L<\/b> para listar todas las reglas y la opci&oacute;n <b>-v<\/b> es para una lista m&aacute;s tediosa. Tenga en cuenta que estas opciones <b>distinguen entre may&uacute;sculas y min&uacute;sculas<\/b>.<\/p><pre class=\"wp-block-preformatted\">\t\nsudo iptables -L -v<\/pre><p>Ejemplo:<\/p><pre class=\"wp-block-preformatted\">Chain INPUT (policy ACCEPT 0 packets, 0 bytes)\npkts bytes target     prot opt in     out     source             destination         \n \nChain FORWARD (policy ACCEPT 0 packets, 0 bytes)\npkts bytes target     prot opt in     out     source             destination         \n \nChain OUTPUT (policy ACCEPT 0 packets, 0 bytes)\npkts bytes target     prot opt in     out     source             destination<\/pre><p>Esta es la salida del comando anterior. Aqu&iacute;, las tres cadenas se establecen en la pol&iacute;tica <b>ACCEPT<\/b> predeterminada. Actualmente no hay reglas para ninguna de las cadenas.<\/p><p>Para hacer m&aacute;s pr&aacute;ctico este tutorial de Iptables, modificaremos la cadena <b>INPUT<\/b> para filtrar el tr&aacute;fico entrante.<\/p><h2 class=\"wp-block-heading\" id=\"h-paso-2-definicion-de-reglas-de-cadena\">Paso 2 &ndash; Definici&oacute;n de reglas de cadena<\/h2><p>Definir una regla significa a&ntilde;adirla a la lista (cadena). Aqu&iacute; est&aacute; el comando Iptables formateado con opciones regulares. No tenemos que especificar todos ellos.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A  -i  -p  -s  --dport   -j<\/pre><p>Aqu&iacute; <b>-A<\/b> significa a&ntilde;adir. La cadena se refiere a la cadena en la que queremos a&ntilde;adir nuestras reglas. <strong>Interface<\/strong> es la interfaz de red en la que se desea filtrar el tr&aacute;fico. <strong>Protocol<\/strong> se refiere al protocolo de la red de los paquetes que desea filtrar. Tambi&eacute;n puede especificar el puerto, no el del puerto en el que desea filtrar el tr&aacute;fico.<\/p><p>Para obtener informaci&oacute;n m&aacute;s detallada sobre el comando Iptables y sus opciones, puede consultar <a href=\"http:\/\/ipset.netfilter.org\/iptables.man.html\" target=\"_blank\" rel=\"noopener\">la p&aacute;gina principal de Iptables<\/a>.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-habilitar-el-trafico-en-localhost\">1. Habilitar el tr&aacute;fico en localhost<\/h3><p>Queremos que todas las comunicaciones entre aplicaciones y bases de datos en el servidor contin&uacute;en como de costumbre.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -i lo -j ACCEPT<\/pre><p>Ejemplo:<\/p><pre class=\"wp-block-preformatted\">Chain INPUT (policy ACCEPT 7 packets, 488 bytes)\npkts bytes target     prot opt in     out     source               destination         \n0     0 ACCEPT     all  --  lo     any     anywhere             anywhere<\/pre><p><b>-A<\/b> se utiliza una opci&oacute;n para a&ntilde;adir la regla a la cadena <b>INPUT<\/b>, aceptar todas las conexiones en la interfaz <b>lo<\/b>. lo significa la interfaz de loopback. Se utiliza para todas las comunicaciones en el localhost, como las comunicaciones entre una base de datos y una aplicaci&oacute;n web en la misma m&aacute;quina.<\/p><h3 class=\"wp-block-heading\" id=\"h-2-habilitacion-de-conexiones-en-el-puerto-http-ssh-y-ssl\">2. Habilitaci&oacute;n de conexiones en el puerto HTTP, SSH y SSL<\/h3><p>Si queremos que nuestras conexiones regulares HTTP (puerto 80), https (puerto 443), ssh (puerto 22) contin&uacute;en como de costumbre. Introduce los siguientes comandos para habilitarlos. En los comandos siguientes, hemos especificado el protocolo con la opci&oacute;n <b>-p<\/b> y el puerto correspondiente para cada protocolo con la opci&oacute;n -dport (puerto de destino).<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT<\/pre><p>Ahora se aceptar&aacute;n todas las conexiones de <a href=\"\/co\/tutoriales\/protocolo-tcp\">protocolo TCP<\/a> con puertos especificados.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-filtrado-de-paquetes-basados-en-la-fuente\">3. Filtrado de paquetes basados en la fuente<\/h3><p>Si desea aceptar o rechazar paquetes basados en la direcci&oacute;n IP de origen o en el intervalo de direcciones IP, puede especificarlo con la opci&oacute;n <b>-s<\/b>. Por ejemplo, para aceptar paquetes desde la direcci&oacute;n 192.168.1.3 &ndash;<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT<\/pre><p>Puede eliminar paquetes de una direcci&oacute;n IP con un comando similar con la opci&oacute;n <b>DROP<\/b>.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -s 192.168.1.3 -j DROP<\/pre><p>Si desea eliminar paquetes de un rango de direcciones IP, debe utilizar el m&oacute;dulo <b>Iprange<\/b> con la opci&oacute;n <b>-m<\/b> y especificar el intervalo de direcciones IP con <b>-src-range.<\/b><\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP<\/pre><h3 class=\"wp-block-heading\" id=\"h-4-eliminar-el-resto-del-trafico\">4. Eliminar el resto del tr&aacute;fico<\/h3><p>Nota: Es importante eliminar el resto del tr&aacute;fico despu&eacute;s de definir las reglas, ya que impide el acceso no autorizado a un servidor desde otros puertos abiertos.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -A INPUT -j DROP<\/pre><p>Este comando descarta todo el tr&aacute;fico entrante distinto de los puertos mencionados en los comandos anteriores. Puede comprobar su conjunto de reglas ahora con:<\/p><pre class=\"wp-block-preformatted\">sudo iptables -L -v<\/pre><h3 class=\"wp-block-heading\" id=\"h-5-eliminacion-de-reglas\">5. Eliminaci&oacute;n de reglas<\/h3><p>Si desea eliminar todas las reglas y comenzar con una pizarra limpia, puede utilizar el comando flush.<\/p><pre class=\"wp-block-preformatted\">\t\nsudo iptables -F<\/pre><p>Este comando borra todas las reglas actuales. Si deseas eliminar una regla espec&iacute;fica, puede hacerlo con la opci&oacute;n <b>-D<\/b>. En primer lugar, liste todas las reglas con n&uacute;meros introduciendo el comando siguiente:<\/p><pre class=\"wp-block-preformatted\">sudo iptables -L --line-numbers<\/pre><p>A continuaci&oacute;n, obtendr&aacute; una lista de reglas con n&uacute;meros.<\/p><pre class=\"wp-block-preformatted\">Chain INPUT (policy ACCEPT)\nnum  target     prot opt source               destination         \n1    ACCEPT     all  --  192.168.0.4          anywhere            \n2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https\n3    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http\n4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh<\/pre><p>Para eliminar una regla, especifique el n&uacute;mero en la lista y la cadena de la regla. En nuestro caso, la cadena <b>INPUT<\/b> y el n&uacute;mero <b>3<\/b>.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -D INPUT 3<\/pre><h3 class=\"wp-block-heading\" id=\"h-paso-3-cambios-persistentes\">Paso 3 &ndash; Cambios persistentes<\/h3><p>Las reglas de Iptables que hemos creado se guardan en la memoria. Eso significa que tenemos que redefinirlos en el reinicio. Para que estos cambios sean persistentes despu&eacute;s del reinicio, utilice el siguiente comando en los sistemas Ubuntu \/ Debian:<\/p><pre class=\"wp-block-preformatted\">sudo \/sbin\/iptables-save<\/pre><p>Este comando guarda las reglas actuales en el archivo de configuraci&oacute;n del sistema que se utiliza para reconfigurar las tablas en el momento del reinicio. Debe ejecutar este comando cada vez que realice cambios en las reglas. Para desactivar este cortafuegos, simplemente limpie todas las reglas y haga que los cambios sean persistentes.<\/p><pre class=\"wp-block-preformatted\">sudo iptables -F\nsudo \/sbin\/iptables-save<\/pre><h3 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h3><p>En este tutorial de Iptables, hemos utilizado el firewall de Iptables Linux para permitir solamente tr&aacute;fico en puertos espec&iacute;ficos. Tambi&eacute;n nos hemos asegurado de que nuestras reglas se guardar&aacute;n despu&eacute;s del reinicio. Este firewall de Linux eliminar&aacute; los paquetes no deseados, pero hay una advertencia aqu&iacute; que Iptables puede gobernar solo el tr&aacute;fico de ipv4. Si tu casilla de <a href=\"\/co\/servidor-vps\">servidor virtual VPS<\/a> ha habilitado la red ipv6, debe establecer diferentes reglas para ese tr&aacute;fico con ip6tables.<\/p><p>Te recomendamos leer nuestro post sobre <a href=\"\/co\/tutoriales\/que-es-un-vps\">qu&eacute; es un VPS<\/a>. <\/p><figure class=\"wp-block-image size-large\"><a href=\"\/co\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/blog.hostinger.io\/co-tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner.png 1024w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/co\/tutoriales\/wp-content\/uploads\/sites\/40\/2023\/02\/ES-VPS-hosting_in-text-banner-1536x450.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Iptables es el firewall de Linux que se utiliza para supervisar el tr&aacute;fico entrante y saliente a un servidor y filtrarlo basado en reglas definidas por el usuario para evitar que cualquier persona acceda al sistema. Utilizando Iptables puede definir reglas que s&oacute;lo permitir&aacute;n tr&aacute;fico selectivo en su servidor. En este tutorial de Iptables, aprender&aacute;s [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/co\/tutoriales\/como-asegurar-linux-con-iptables-firewall\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":85,"featured_media":17247,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"C\u00f3mo asegurar tu VPS Ubuntu con el firewall de Linux Iptables","rank_math_description":"Aprende a filtrar el tr\u00e1fico entrante y saliente en un servidor mediante el firewall de Linux iptables en nuestro tutorial.","rank_math_focus_keyword":"iptables","footnotes":""},"categories":[5700],"tags":[5368],"class_list":["post-5444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps","tag-aprender-linux"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/iptables-tutorial","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/tutorial-iptables","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/iptables","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/como-asegurar-linux-con-iptables-firewall","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/iptables-tutorial","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/iptables-tutorial","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/iptables-tutorial","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/iptables-tutorial","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/como-asegurar-linux-con-iptables-firewall","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/como-asegurar-linux-con-iptables-firewall","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/como-asegurar-linux-con-iptables-firewall","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/tutorial-iptables","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/iptables-tutorial","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/iptables-tutorial","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/iptables-tutorial","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/iptables-tutorial","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/posts\/5444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/comments?post=5444"}],"version-history":[{"count":15,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/posts\/5444\/revisions"}],"predecessor-version":[{"id":45380,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/posts\/5444\/revisions\/45380"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/media\/17247"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/media?parent=5444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/categories?post=5444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/co\/tutoriales\/wp-json\/wp\/v2\/tags?post=5444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}