Cómo monté mi servidor - Empiezan los problemas serios: esto se cuelga

16 - Empiezan los problemas serios: esto se cuelga

[editar]
Tutorial creado por Daniel Clemente. Extraido de: http://www.mononeurona.org/index.php?idp=230
27 de Octubre de 2005

Ahora me tocaba hacer un cortafuegos y probar la seguridad, así que le hice varios nmap como de costumbre. Lo curioso fue que al cabo de varios nmaps empezó a tener los puertos cerrados. Me extrañó, porque aún no había puesto ningún IDS, pero luego descubrí -levantándome y sacándole de su sitio- que se había quedado colgado. (Quizás es un nuevo sistema de seguridad; lo he visto en acción en las últimas versiones de Windows).

No me costó mucho descubrir cuál era el problema, ya que al pasar archivos grandes por FTP pasaba lo mismo. Curiosamente, el ping -f lo aguantaba, pero los escaneos rápidos de nmap no. Usando las opciones de velocidad de nmap, vi que se colgaba sólo con -T3 para arriba, el -T2 ya iba bien. Lo característico del -T2 es que manda los paquetes en serie, o sea uno detrás del otro. -T3 ya empieza a mandar varios a la vez, y eso es lo que hacía que se colgara la tarjeta de red PCMCIA.


Comparar distancias entre ordenadores

Haciendo pruebas con el ping -f y otros descubrí el 'ping adaptativo', estaba en la primera página del man ping. La sintaxis es ping -A host y consiste en mandar pings lo más rápido que pueda sin perder paquetes. Eso no quiere decir 'muy muy rápido', sinó lo más rápido posible. Si ve que se pierden paquetes manda más despacio.

Mandamos un ping, que viaja a través del cable, llega a su destino y vuelve en forma de respuesta. Nada más llegar mandamos otro, y así todo el rato. Por el tiempo que tardan en volver podemos adivinar cómo de lejos está el destino. Naturalmente, depende de muchas condiciones, por eso no he hablado de medir distancias sinó de comparar. Las pruebas que he hecho en mi casa son creíbles y se corresponden con la topología de mi red.

Supongo que si se llaman ICMP echo request y reply es por esto; también podemos saber cómo de lejos está una pared por el tiempo que tarda en llegar el eco.


No pierdo el honor; arreglo lo del cuelgue

La verdad es que no tenía ni idea de por qué fallaba la tarjeta de red, sólo sabía que no era normal. Probé muchas cosas sin parar, porque no puedo ir diciendo por ahí que 'mi Linux se cuelga y no sé cómo arreglarlo'. Después de tocar muchas cosas y de compilar muchos kernels, descubrí la opción mágica que lo solucionaba:

Dentro de la sección de dispositivos de red, en la del 8139too, "RealTek RTL-8139 PCI Fast Ethernet Adapter support", hay una que pone "Use PIO instead of MMIO". Hay que activarla.

Ahora aguanta sin problemas un while :; do nmap -vv -P0 -T5 -p1-65535 -r amarok; done


iptables

Nada complicado; el servidor usará FTP y HTTP desde fuera y SSH desde mi ordenador 'grande' (cuya dirección MAC es estática y por tanto siempre corresponderá a la misma IP).

Además sólo analizo las conexiones nuevas (las que sólo tienen el bit SYN activado), acepto las de loopback, no acepto UDP, y sí que dejo ICMP request y reply. Todo lo demás lo ignoro (DROP). Las conexiones salientes las acepto (para que funcione el FTP) pero el forwarding no.

Me queda este script para ejecutar al inicio:


#!/bin/sh
# Mi cortafuegos; 13/2/2004 1:49 AM, Daniel Clemente

iptables -F INPUT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT

iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -m state --state NEW -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -m state --state NEW -i eth0 -s 172.26.0.2 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT

iptables -P INPUT DROP


iptables -F FORWARD
iptables -P FORWARD DROP


iptables -F OUTPUT
iptables -P OUTPUT ACCEPT


Cambios en el router

El ordenador destino por defecto es el grande, de nombre pc. Para el servidor sólo tuve que redirigirle los puertos 20, 21 y 80; el resto de puertos se refieren al ordenador grande.

Normalmente el router (OCR 812) tiene una página web de configuración en el puerto 80; la cambié al puerto 8000 de esta forma:


disable network service httpd
set network service httpd socket 8000
enable network service httpd
save all

Cómo probé el virtual hosting yo solito

Ahora necesitaba probarlo todo un poco: pedí que me hicieran unos escaneos de puertos, pero aún me quedaba mucho por probar sobre lo de servir páginas distintas dependiendo de la página pedida.

Puse dos páginas diferentes: una para cuando se entrara por 172.26.0.11 y otro para cuando se entrara por 217.126.10.173. ¿Cuál es el problema? Pues que si yo, desde el host pc (172.26.0.2), intento conectar a 217.126.10.173, la petición llega al router, y éste debería redirigirla al servidor (172.26.0.11) aplicando el NAT, pero no lo hace. No lo hace porque está configurado para aplicar estas reglas de redirección de puertos sólo a las conexiones que vienen de la red ATM que tiene configurada, o sea de fuera.

Para simular conexiones desde fuera lo más cómodo es tener una shell en algún ordenador y conectar desde ahí, pero en ese momento no tenía ningún login y password preparados para eso. Lo que hice fue buscarme unos proxys de Telefónica, configurar mi navegador, y acceder a mi IP (pública). Entonces la petición sí que venía de fuera, y el router la redirigía al puerto 80 del servidor. Le dije al Mozilla que no usara proxy para acceder a los 172.26.0.*, y así ya podía entrar al mismo ordenador de dos formas distintas, y cada una recibiendo una respuesta distinta.

[editar]

26 opiniones

Buen tutorial.

Está guay. Yo estoy buscando una idea también sobre el hardware apropiado y creo que lo mejor de lo mejor es esa maravilla que comentas más arriba. Ese mini ordenador que consume poquísimo y no hace nada de ruido. Es cierto que el precio es un poco elevado, pero creo que vale la pena porque se amortizará y es extremadamente cómodo. Creo que optaré por uno de esos.

Está muy bueno lo que hiciste, muy buen trabajo. Pero que servidor usas? por lo que mencionas del flujo de usuarios parece que podrías aprovechar mucho más el rendimiento de la compu. Windows server 2008 te deja controlar muchas de esas opciones de accesibilidad, deberías probarlo a ver como te funciona.
Atencion !!!!.

Hola ! tengo una empresa de arquitectura web y necesito algún proveedor de servidor web para trabajar... Por favor ! tengo mucho trabajo. Al que le interese escríbame al correo. Gracias !!!!!!!!!!!!!.
Gracias!!!.

Sr daniel clemente:

muchas gracias por este excelente trabajo. Saluda atte maximiliano.
Excelente.

Actualmente acabo de adquirir 2 servidores ibm rs6000 me estoy iniciando en esto y van para el mismo proposito si alguien tiene mas conocimiento sobre esto me interesa platicar con el para resolver mis dudas ;) gracias.
1 2 3 4 5 6 | siguiente >

Tutoriales relacionados con 'Cómo monté mi servidor'

Las páginas que estás viendo están alojadas en mi propio servidor (IP 217. 126.10.173), que... Más »
¿Qué es una imagen ISO? Las imágenes ISO son archivos que siguen los estándares ISO-9660... Más »
Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... Más »
Manual para Slackware 10. 0 en el que prescindiremos de usar las X. Esto puede... Más »
Este es un curso sin ninguna relevancia. Pretende ser una pequeña introducción para todos mis... Más »

Autor y licencia de 'Cómo monté mi servidor'


Tutorial de Daniel Clemente. Extraido de: http://www.mononeurona.org/index.php?idp=230 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.