Cada
computadora conectada a internet (y, hablando más genéricamente, a cualquier
red informática) es susceptible a ser víctima de un ataque de un pirata informático. La metodología empleada generalmente por el pirata
informático consiste en barrer la red (enviando paquetes de datos de manera
aleatoria) en busca de una máquina conectada, y luego buscar un
"agujero" de seguridad, el cual utilizará para acceder a los datos
que allí se encuentren.
Esta amenaza es todavía mayor si la computadora está permanentemente conectada a Internet. Las razones son varias:
- La Computadora puede estar
conectada sin ser supervisada permanentemente.
- La computadora está conectada generalmente
utilizando banda ancha.
- La computadora no cambia (o
muy poco) la dirección IP.
Por lo tanto, es necesario que las redes de empresas y los usuarios de
internet que posean una conexión con cable o ADSL, protegerse de las intrusiones instalando un dispositivo de protección. En
ese momento es que entra en acción el Firewall.
Funcionamiento de un sistema Firewall
* Autorizar una conexión
(allow);
* Bloquear una conexión (deny);
* Redireccionar un pedido de
conexión sin avisar al emisor (drop).
El conjunto de estas reglas permite instalar un método
de filtración dependiente de la política de seguridad adoptada por la
organización. Se distinguen habitualmente dos tipos de políticas de seguridad que permiten:
- Permitir únicamente las comunicaciones
autorizadas explícitamente: "Todo lo que no es autorizado
explícitamente está prohibido".
- Impedir cualquier comunicación que fue explícitamente
prohibida.
El primer método es el más
seguro, pero requiere de una definición precisa de las necesidades de
comunicación de toda la red.
Puerto
de red
Un puerto de red es una interfaz para comunicarse con un programa a través de una red. En el modelo OSI quien se preocupa de la administración de los puertos y los establece en el encabezado de los segmentos es la capa de transporte o capa 4, administrando así el envío y re-ensamblaje de cada segmento enviado a la red haciendo uso del puerto especificado. Un puerto suele estar numerado para de esta forma poder identificar la aplicación que lo usa. Decidir a qué programa entregará los datos recibidos. Esta asignación de puertos permite a una máquina establecer simultáneamente diversas conexiones con máquinas distintas, ya que todos los segmentos que se reciben tienen la misma dirección, pero van dirigidos a puertos diferentes.
Los números de puerto se
indican mediante una palabra de un
procesador de 16 bits, o sea, de 2 bytes (16 bits), por lo que existen 65536
(del 0 al 65535). Aunque podemos usar cualquiera de ellos para cualquier
protocolo, existe una entidad, la IANA, encargada de su asignación, la cual creó tres categorías:
- Puertos
conocidos: Los puertos inferiores
al 1024 son puertos reservados para el sistema operativo y usados por
"protocolos bien conocidos" como por ejemplo HTTP (servidor
Web), POP3/SMTP (servidor de e-mail) y Telnet. Si queremos usar uno de
estos puertos tendremos que arrancar el servicio que los use teniendo
permisos de administrador.
- Puertos
registrados: Los comprendidos entre
1024 (0400 en hexadecimal) y 49151 (BFFF en hexadecimal) son denominados
"registrados" y pueden ser usados por cualquier aplicación.
Existe una lista pública en la web del IANA donde se puede ver qué protocolo usa cada uno de ellos.
- Puertos
dinámicos o privados: Los
comprendidos entre los números 49152 (C000 en hexadecimal) y 65535 (FFFF
en hexadecimal) son denominados dinámicos o privados, normalmente se
asignan en forma dinámica a las aplicaciones de clientes al iniciarse la
conexión. Son usados en conexiones peer to peer (P2P).
Protocolo TCP
Protocolo de Control de Transmisión) es de los protocolos fundamentales en Internet. Fue creado entre los años 1973 - 1974 por Vint Cerf y Robert Kahn.
Muchos programas dentro de una
red de datos compuesta por computadoras pueden usar TCP para crear conexiones
entre ellos a través de las cuales puede enviarse un flujo de datos. El
protocolo garantiza que los datos serán entregados en su destino sin errores y
en el mismo orden en que se transmitieron. También proporciona un mecanismo
para distinguir distintas aplicaciones dentro de una misma máquina, a través
del concepto de puerto.
TCP da soporte a muchas de las
aplicaciones más populares de Internet, incluidas HTTP, SMTP, SSH y FTP.
TCP es un protocolo de
comunicación orientado a conexión y fiable del nivel de transporte, actualmente
documentado por IETF en el RFC 793. Es un protocolo de capa 4 según el modelo OSI.
Funciones de TCP
En la pila de protocolos
TCP/IP, TCP es la capa intermedia entre el protocolo de internet (IP) y la
aplicación. Habitualmente, las aplicaciones necesitan que la comunicación sea
fiable y, dado que la capa IP aporta un servicio de datagramas no fiable (sin
confirmación), TCP añade las funciones necesarias para prestar un servicio que
permita que la comunicación entre dos sistemas se efectúe libre de errores, sin
pérdidas y con seguridad.
Los servicios provistos por
TCP corren en el anfitrión (host) de cualquiera de los extremos de una
conexión, no en la red. Por lo tanto, TCP es un protocolo para manejar
conexiones de extremo a extremo. Tales conexiones pueden existir a través de
una serie de conexiones punto a punto, por lo que estas conexiones
extremo-extremo son llamadas circuitos virtuales. Las características del TCP
son:
- Orientado a la conexión:
dos computadoras establecen una conexión para intercambiar datos. Los
sistemas de los extremos se sincronizan con el otro para manejar el flujo
de paquetes y adaptarse a la congestión de la red.
- Operación Full-Duplex:
una conexión TCP es un par de circuitos virtuales, cada uno en una
dirección. Sólo los dos sistemas finales sincronizados pueden usar la
conexión.
- Error Checking: una
técnica de checksum es usada para verificar que los paquetes no estén
corruptos.
- Acknowledgements: sobre
recibo de uno o más paquetes, el receptor regresa un acknowledgement
(reconocimiento) al transmisor indicando que recibió los paquetes. Si los
paquetes no son notificados, el transmisor puede reenviar los paquetes o
terminar la conexión si el transmisor cree que el receptor no está más en
la conexión.
- Flow Control: si el
transmisor está desbordando el buffer del receptor por transmitir
demasiado rápido, el receptor descarta paquetes. Los acknowledgement
fallidos que llegan al transmisor le alertan para bajar la tasa de
transferencia o dejar de transmitir.
- Servicio
de recuperación de Paquetes: el receptor puede pedir la retransmisión de
un paquete. Si el paquete no es notificado como recibido (ACK), el
transmisor envía de nuevo el paquete.
Protocolo UDP
User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de datagramas. Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. Tampoco tiene confirmación ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado correctamente, ya que no hay confirmación de entrega o recepción. Su uso principal es para protocolos como DHCP, BOOTP, DNS y demás protocolos en los que el intercambio de paquetes de la conexión/desconexión son mayores, o no son rentables con respecto a la información transmitida, así como para la transmisión de audio y vídeo en tiempo real, donde no es posible realizar retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos.
Descripción
User Datagram Protocol (UDP)
es un protocolo mínimo de nivel de transporte orientado a mensajes documentado
en el RFC 768 de la IETF.
En la familia de protocolos de
Internet UDP proporciona una sencilla interfaz entre la capa de red y la capa
de aplicación. UDP no otorga garantías para la entrega de sus mensajes y el
origen UDP no retiene estados de los mensajes UDP que han sido enviados a la
red. UDP sólo añade multiplexado de aplicación y suma de verificación de la
cabecera y la carga útil. Cualquier tipo de garantías para la transmisión de la
información deben ser implementadas en capas superiores.
La cabecera UDP consta de 4
campos de los cuales 2 son opcionales (con fondo rojo en la tabla). Los campos
de los puertos fuente y destino son campos de 16 bits que identifican el
proceso de origen y recepción. Ya que UDP carece de un servidor de estado y el
origen UDP no solicita respuestas, el puerto origen es opcional. En caso de no
ser utilizado, el puerto origen debe ser puesto a cero. A los campos del puerto
destino le sigue un campo obligatorio que indica el tamaño en bytes del datagrama
UDP incluidos los datos. El valor mínimo es de 8 bytes. El campo de la cabecera
restante es una suma de comprobación de 16 bits que abarca la cabecera, los
datos y una pseudo-cabecera con las IP origen y destino, el protocolo, la
longitud del datagrama y 0's hasta completar un múltiplo de 16. pero no los
datos. El checksum también es opcional, aunque generalmente se utiliza en la
práctica.
El protocolo UDP se utiliza
por ejemplo cuando se necesita transmitir voz o vídeo y resulta más importante
transmitir con velocidad que garantizar el hecho de que lleguen absolutamente
todos los bytes.
Puertos
UDP utiliza puertos para
permitir la comunicación entre aplicaciones. El campo de puerto tiene una
longitud de 16 bits, por lo que el rango de valores válidos va de 0 a 65.535.
El puerto 0 está reservado, pero es un valor permitido como puerto origen si el
proceso emisor no espera recibir mensajes como respuesta.
Los puertos 1 a 1023 se llaman
puertos "bien conocidos" y en sistemas operativos tipo Unix enlazar con
uno de estos puertos requiere acceso como superusuario.
Los puertos 1024 a 49.151 son
puertos registrados.
Los puertos 49.152 a 65.535
son puertos efímeros y son utilizados como puertos temporales, sobre todo por
los clientes al comunicarse con los servidores.