Concepto de Puertos y Servicios

Un puerto es una palabra técnica que puede referirse a dos conceptos, en primer lugar tenemos los puertos físicos referentes a la conexión de dispositivos de hardware como el PS2, USB, Serial, etc. y por otro lado encontramos los puertos lógicos que en programación se denominan Sockets. Podemos hacer una analogía con una casa (que seria el computador) en la cual necesitamos formas para acceder y allí colocaríamos una puerta con ventanas, chimeneas y cualquier orificio que tenga dicha casa como por ejemplo huecos hechos por ratones que para efectos prácticos vendría a ser una violación de seguridad. A estas entradas les asignamos un numero para tener control sobre todas las entradas y tener mas seguridad en general ya que entre mas entradas tenga la casa, mas formas de protegerla serian necesarias, otra forma seria crear un “perímetro” con una cerca aislada y electrificada que para este ejemplo vendría a ser un Firewall.

En el entorno de informática necesitamos una forma de conexión entre computadores que verifique la lista de puertos en los computadores ya que es necesario saber si en el equipo que es destino de nuestra información, esta escuchando lo que le enviamos, para esto hay un comando muy útil el cual es “netstat –a”, nos aparecerá una ventana similar a la siguiente:

C:\>netstat -an

Conexiones activas

Proto Dirección local Dirección remota Estado
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:912 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:2869 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1035 127.0.0.1:1036 ESTABLISHED
TCP 127.0.0.1:1036 127.0.0.1:1035 ESTABLISHED
TCP 127.0.0.1:1042 127.0.0.1:1043 ESTABLISHED
TCP 127.0.0.1:1043 127.0.0.1:1042 ESTABLISHED
TCP 192.168.101.79:139 0.0.0.0:0 LISTENING
TCP 192.168.101.245:139 0.0.0.0:0 LISTENING

La primera columna nos indica el protocolo que esta haciendo uso del puerto, la segunda muestra la “dirección local” que publica la IP que esta escuchando el servicio de red.

Supongamos que tenemos un computador con 3 tarjetas de red y necesitamos que las tres tarjetas escuchen, aparecerá 0.0.0.0 lo que significa que se esta escuchando por todas las interfaces. Y lo que hay después del “:XX”, XX es el numero del puerto que esta usando.

Nota: si no conocemos el funcionamiento de los puertos no sabremos por que medio podría darse una violación de seguridad ya que si no sabemos porque esta abierto cada puerto, no podremos prevenir los ataques de intrusos, un buen ejercicio practico es mirar en nuestras casas la lista de puertos que tenemos abiertos y aprender para que sirve cada uno para luego proceder a cerrar los que no necesitemos. Para bajar un puerto lo que debemos de hacer es terminar el servicio activo. Aquí intervendría lo que veíamos el día de ayer de forzar la terminación de un proceso, es muy importante que lo tengamos en cuenta.

La diferencia entre servicio y proceso es que la aplicación es la que ejecutamos y vemos en pantalla, mientras que un servicio es una aplicación que corre en segundo plano y esta preparado para atender usuarios, por ejemplo un navegador como Firefox (aplicación) solo lo atiende a uno mientras que hacemos uso de el, mientras que un servidor Web (proceso), esta preparado para recibir operaciones de varios usuarios que hacen solicitudes cuando visitan la pagina.

La columna “Dirección Remota” muestra lo mismo que dirección local pero con la diferencia que aquí se indican las direcciones que están conectadas a nosotros, cuando se muestra una conexión establecida con nuestra propia dirección (lo que aparece con dirección 127.0.0.1 que también se conoce como loopback) quiere decir que el equipo esta haciendo pruebas de los servicios en el mismo PC para garantizar la conectividad de los mismos. Debemos tener presente de que tengamos siempre la loopback en Up ya que en caso contrario no podremos hacer ninguna operación con nuestra interfaz de red.

Por ultimo en el apartado “Estado” se muestra como se encuentra cada ítem en el momento. Established para Establecido, Listen que quiere decir que esta escuchando y Sim_Sent que es el primer paquete del protocolo TCP que se envía para establecer la conexión.

Los puertos del 0 al 1024 se denominan Well Known Ports o Puertos Bien Conocidos que son los que están estandarizados para el uso de las aplicaciones y del 1024 en adelante son puertos no muy conocidos los cuales podemos utilizar de manera aleatoria.

Recomendaciones sobre montaje de los servicios

1. Tener la teoría sobre como funciona el servicio y de que es.
2. Manual de la instalación del servicio en sistema operativo donde se va a instalar.
3. Ejemplo del servicio ya configurado
4. Configuración del servicio, en lo que antes debemos de hacer un backup del servicio como viene para prevenir perdida de información en caso de daño.
5. Verificar que el servicio corra (netstat –an, como lo vimos con anterioridad en esta entrada.
6. Verificar los logs en los que debe aparecer que no hubo ningún error en el proceso de instalación y/o funcionamiento. En Linux los encontramos en /var/log/daemon, var/log/sysmon u otros, dependiendo de la distribución de Linux donde nos encontramos.

7. Un Log es un registro que se hace de cada programa donde se hace un seguimiento minucioso a cada servicio, aplicación, proceso o componente del sistema.

En Windows podemos encontrar los logs en el Visor de sucesos dentro de Herramientas administrativas.

8. Hacer pruebas del servicio para validar de manera correcta el funcionamiento del servicio con base a las recomendaciones anteriores.

Los problemas más comunes son:

• De que no corra el servicio: lo que puede ser que el servicio o las interfaces estén mal configuradas o que el mismo servicio ya este corriendo. (Error común y tonto, pero se puede dar).

• Que los logs se encuentren mal: hay que identificar la línea dentro del archivo en la que se este donde el error, por lo que hay que ir allí y verificar que sucede.

• Que todo este bien configurado y nada funcione: Verificar la capa física en la cual todo debe estar bien conectado y sin errores, para resumir tiempo en verificación lo mejor es seguir el modelo OSI para descartar los errores que se pueden presentar en cada capa, si llegamos a la ultima capa y notemos identificado el error, lo mejor que podemos hacer es instalar un sniffer (tanto en el cliente y servidor) y examinar los logs que arroje para ver que es lo que esta causando el inconveniente.

Después de que todo se verifique y este funcionalmente bien, hay que documentarlo (hacer una documentación final) en la que se publique cada uno de los pasos en la cual se llego a la consecución de los objetivos propuestos al inicio del montaje del servicio. Y al finalizar, hacer un backup del servicio y manual, para en caso de perdida tener un respaldo. Lo mas recomendable es buscar mecanismos para hacer las tareas de backups como por ejemplo el Cobian en Windows para los archivos u otro que permita grabar las configuraciones.

Una anotación positiva seria ver nuestro trabajo, evaluarlo y estar felices por ello, ya que nos servirá de motivación mas adelante para luego llegar al mismo punto.

Ejercicio practico

Montar los servicios básicos de red en Windows y Linux en base a un manual, tal cual aparezca allí pero ejercer como revisores de este en los que a medida que vamos leyendo el documento, vamos haciendo una documentación paralela en la que especifiquemos los errores que tiene el manual.


About this entry