Herramientas de seguridad

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech
en to es Georges Tarbouriech
es to es Javier Palacios

AboutTheAuthor:[A small biography about the author]

Georges es un usuario viejo de Unix (comercial y libre). Las herramientas de seguridad libres le interesan mucho y aprecia de verdad sus grandes cualidades.

Abstract:[Here you write a little summary]

Seguridad siempre fue de lo más importante para los administradores de sistemas. Sin embargo, con la "explosión" del Internet, el riesgo de intrusión se ha vuelto aún más alto. Según la estadística, si el número de usuarios conectados crece, el número de piratas sigue el mismo incremento. Por consecuencia, el desarrollo de software de seguridad ha crecido exponencialmente. Otra vez, gracias a la comunidad del software libre, puesto que nos han proporcionado las mejores herramientas nunca vistas y con mucha documentación.
Encontrarán muchos enlaces interesantes en la parte referencias al final del artículo. Claro que lo que vamos a mencionar aquí no puede ser exhaustivo. Las herramientas elegidas son las usadas diariamente o las que han sido probadas.
Este artículo se dedica tanto a los usuarios personales como a los administradores de sistemas, puesto que unas herramientas conciernen la protección de maquinas y otras sirven para mejorar la seguridad de redes.
La mayoría de éstas herramientas funcionan en muchos sabores de Unix (si no todos), ya sean comerciales o libres. Por último, éste artículo no es un "Cómo mejorar la seguridad de su red o de su máquina" sino una presentación de diferentes herramientas que pueden (tienen que) utilizar para mejorar la seguridad de dicha red o máquina.

ArticleIllustration:[This is the title picture for your article]

ArticleBody:[The article body]

Herramientas genericas

Podríamos llamar ésta parte "herramientas para whitehats (los administradores) para proteger redhat contra los blackhats (los piratas)" :-) Muchas distribuciones de Linux (no solo RedHat!) llegan con muchas buenas herramientas de seguridad. Pueden usarlas para mejorar la seguridad de su ordenador. Entre ellas, podemos mencionar TCPWrappers, PAM (Pluggable Authentication Modules), shadow utilities... Puesto que forman parte de las distribuciones encontrarán mucha documentación: HOWTO, man pages, ...; de modo que no vamos a pasar mucho tiempo con ellas.
Empezemos con los shadow utils. Brevemente, permiten la encrypción de passwords. El fichero /etc/shadow remplaza el fichero /etc/passwd.
Algo más elaborado es PAM. Como lo dice su nombre, es otro modo de autentificación. PAM permite de limitar el acceso de los usuarios a los servicios. Muchas restricciones pueden ser definidas a partir de ficheros de configuración, facilitando así la administración. Normalmente, estos ficheros se encuentran en el directorio /etc/pam.d.
Respecto a los TCPWrappers, basta con decir que permiten reducir el acceso a los servicios de unas máquinas. Pueden ser autorizados o rechazados desde dos ficheros: /etc/hosts.allow y /etc/hosts.deny. Los TCPWrappers pueden ser configurados de dos maneras: sea moviendo los "daemons" o modificando el fichero /etc/inetd.conf. Si TCPWrappers no forman parte de su sabor de Unix, pueden encontrarlos en ftp://ftp.porcupine.org/pub/security

Y ahora, van a entender por qué no hemos hablado mucho de esas herramientas: Hay una herramienta es capáz de manejar todo eso y al mismo tiempo enseñar al usuario. Bastille-Linux basta y sobra. Si sólo instalan una herramienta, ¡tiene que ser ésta! No forma parte (aún?) de las distribuciones pero pueden descargarlo desde http://bastille-linux.sourceforge.net
De hecho, ¡¡¡tampoco diremos nada de Bastille-Linux!!! Es inútil puesto que hay un excelente artículo sobre él de mi compadre Frédéric en el número de Septiembre de _LF_: lo dice todo. Si todavía no lo han leido, pueden echar un vistazo aquí.
¡Podemos añadir que Bastille-Linux es una herramienta sin la que no se puede vivir!

Otra herramienta para mejorar la seguridad se llama xinetd. Se puede descargar desde http://www.xinetd.org. Y, perdón, pero ¡¡¡tampoco vamos a hablar de éste!!! Otra vez, Frédéric ha hecho todo el trabajo en el número de Noviembre de _LF_. Pueden leerlo aquí.
Esto era la sección FredFocus (no te preocupes del dinero Fred, puedo esperar).

Ahora, vamos a ver algunas herramientas específicas.

Firewall

Los Unix libres llegan con herramientas que permiten transformar su máquina en un firewall. El kernel 2.2 provee ipchains. El anterior (2.0) usaba ipfwadm. Para que ipchains o ipfwadm funcionan, el kernel tiene que ser compilado con opciones particulares. Existe mucha documentación sobre el asunto (HOWTOs por ejemplo), y no vamos a decir mucho más.
Brevemente, un firewall es una herramienta para filtrar paquetes. Lo más importante concierne su configuración. Es decir, un firewall mal configurado se puede volver muy peligroso. Sin embargo, firewalls son herramientas muy importantes y hay muchos. Por ejemplo, Bastille-Linux provee un firewall basado también en ipchains.

Si visitan http://www.linuxapps.com y escriben "firewall" en el campo de búsqueda, obtendrán por lo menos 40 respuestas. Muchos son GUI para la administración de ipchains o ipfwadm. Otros son herramientas muy gordas con toneladas de opciones, tal como T.REX por ejemplo, disponible desde http://www.opensourcefirewall.com. Otra vez, no se dejen engañar: un firewall es una necesidad en una red, pero la seguridad de ésta red no puede SOLAMENTE depender de él. Un pirata puede romperlo en ¡alrededor de 15 minutos! Pueden darse por enterados.

Escanneres de puertos

Aquí entramos en el corazón del problema. La idea es: utilizar las herramientas de los piratas para controlar las vulnerabilidades de la red (o de la máquina). En éste área podemos beneficiar de dos herramientas muy buenas pero hay muchas otras.

La primera se llama nmap. Pueden descargarla desde http://www.insecure.org. Aún más, encontrarán allí mucha información, enlaces, etc. Con nmap, pueden controlar los puertos abiertos en una máquina de la red. Claro, pueden hacer eso con comandos tales como lsof o netstat pero solamente en su propia máquina. Y, también pueden controlar su propia máquina con nmap. nmap puede dar mucha información: por ejemplo, puede decir cual es el SO funcionando, cuales son los puertos abiertos y peligrosos... Por fin, nmap es muy fácil de utilizar. Se puede arrancar desde un shell o desde un interfaz gráfico llamado nmapfe. Este GUI se basa en la librería gtk. La versión actual de nmap es 2.53. Funciona bajo muchos sabores de Unix y se encuentra en código fuente, rpm, con GUI o sin él. ¡nmap es otra herramienta sin la que los administradores no pueden vivir!
Muchas gracias Sr. Fyodor y felicitaciones por éste gran trabajo.

La segunda se llama nessus. Se puede descargar desde http://www.nessus.org, con enlaces mandando hacia ftp en differentes países. Nessus funciona según la arquitectura cliente/servidor y el código fuente Posix se puede usar en muchos sabores de Unix. También existe un cliente para Win32 (para que lo sepan). Nessus depende de nmap (¡vean cómo no pueden hacer nada sin él!) y de la librería gtk por su GUI. La versión actual es 1.06 y con ella pueden controlar una red completa con un parámetro, es decir las señas de la red. Por ejemplo, teclar 192.168.1.0/24 en el campo "target" controlará las 255 máquinas de ésta red. Nessus es un poco más complejo que nmap, pero es fácil de usar y tiene muchas opciones. Por ejemplo, puede crear informes, puede hacer "diffs" entre informes... Otra característica es muy interesante: nessus propone soluciones a los problemas encontrados durante un "portscan". Si se trata de máquinas Unix, las sugerencias son buenas a menudo. Serán un poco menos adecuados para otros SO. De todo modos, no es eso lo importante. Aquí está el ejemplo de una máquina muy vulnerable:
nessus.jpg
Nessus tiene otra gran particularidad: trabaja con plugins, así permitiendo una puesta al día cada vez que un nuevo agujero de seguridad se encontró en algún sitio. ¡Otra herramienta necesitada por los administradores!
Muy buen trabajo Mr. Deraison y "Merci beaucoup".

Las dos herramientas han sido probadas desde una máquina Linux en una red con varios SO: Linux RH 6.2, Irix 6.5.7, Solaris 2.6, NeXTStep 3.3, QNX RT, BeOS 5.0, Amiga OS 3.5, No Terminado 4.0. Los resultados son impresionantes para la mayoría de las plataformas. Claro, el Amiga OS no se identifica muy bien (¡puesto que se ve como una impresora o un router!) pero ¿quién tiene todavía éste SO en una red (aparte de mí)?

En cualquier caso, éstas herramientas parecen inevitables con las redes de hoy. Y para acabar con ésta parte, tenemos que mencionar otras herramientas tales como SARA http://www-arc.com/sara/, o su "padre" SATAN http://www.porcupine.org/satan/, o SAINT http://www.wwdsi.com. No son solamente "portscanners" y pueden ser muy útiles para mejorar la seguridad de las redes.

Sistemas de detección

Algunas herramientas pueden detectar "portscans" o intrusiones. Un administrador "standard" (es decir, ¡paranoico!) NO puede trabajar sin ésta categoría de herramientas.

La primera serie de herramientas viene del Proyecto Abacus, y pueden obtenerlas desde http://www.psionic.com. Tres herramientas están disponibles: logcheck, portsentry y hostsentry. Logcheck está en versión 1.1.1, portsentry es 1.0 y hostsentry es la versión 0.0.2 alpha. Portsentry es una herramienta de detección de "portscan". Como dice su nombre, cuando un puerto es "scanned" desde alguna parte, portsentry bloquea el host en seguida, ya sea "cerrando" la ruta con el firewall (o una dirección IP no utilizada), ya sea escribiendo la dirección IP del atacante en el fichero /etc/hosts.deny si tienen TCPWrapper en su máquina. ¡El resultado es eficaz de verdad! Portsentry se basa en un fichero de configuración principal y en unos ficheros específicos. Estos últimos se usan para ignorar unos "hosts" (es decir para no bloquearlos) o para bloquear unos puertos de unos "hosts". Desde el fichero de configuración, pueden definir la manera de trabajar de portsentry. Tienen que elegir los puertos que quieren atar a portsentry, puertos TCP o UDP (o ambos). ¡Cuidado con atar el puerto 6000 si usan X11! Según el sistema Unix que usan, pueden tener dos modos de operación para vigilar los puertos. El modo avanzado sólo funciona en Linux (por el momento). Después tienen que decidir de la opción de bloqueo: no bloquean los "scans", los bloquean, o ejecutan un comando externo. Siguen eligiendo la manera de "echar" la ruta, sea redirigiendo el atacante hacia una dirección IP no utilizida en la red, sea hacia un filtro de paquetes (firewall). La etapa siguiente concierne TCPWrappers. Es decir, deciden (o no) escribir un texto DENY en el fichero /etc/hosts.deny. Por fin, pueden definir un comando externo para ejecutar y pueden elegir un valor por el scan (por defecto es 0; 1 o 2 permiten reducir alarmas falsas). ¡Es todo lo que tienen que hacer! Suponemos que ya saben todo sobre logging, puesto que, claro, todas las alarmas se escriban en los logs. Significa que pueden modificar el fichero syslog.conf si quieren que las alarmas sean dirigidas hacia otro lugar que /var/log/messages o /var/log/syslog o /var/adm/messages... Ahora pueden arrancar portsentry en tarea de fondo con la opción preferida. Las opciones disponibles depienden del sistema: podrán usar -tcp, -udp en la mayoría de los Unixes y -atcp, -audp bajo Linux ("a" por avanzado).
Echen un vistazo al resultado si escannen una máquina en la cual portsentry funciona.

Si eres un sysadmin que mira los logs una vez a la semana (mejor sería probar otro empleo) el proyecto Abacus te propone otra herramienta llamada logcheck. Se arranca desde una tarea cron y manda un correo al administrador si encuentra algo extraño en los logs.
La última herramienta de la serie se llama hostsentry y parece muy interesante pero no la he probado. Si quieren una herramienta buena, sencilla y eficaz, ¡usen portsentry!
Gracias Sr. Rowland: ¡un gran trabajo! A propósito, me gusta mucho su humor.

Otra herramienta sin la cual sysadmins no pueden trabajar se llama snort. snort es un IDS (sistema de detección de intrusión) y más concretamente, un IDS ligero (no una fábrica!). Pueden obtener snort versión 1.6.3 desde http://www.snort.org. Funciona en cualquier plataforma capáz de usar libpcap. Este último se requiere para utilizar snort. A propósito, también tienen una versión de snort para Win32. Snort es capáz de analizar el tráfico IP y provee un logging muy fuerte. Se basa en scripts de reglas, es decir que pueden vigilar lo que quieran. Aún más, el site de snort provee un base de datos de reglas. Aquí llega la decisión importante con snort: dónde poner los sensores, o si prefieren, qué clase de tráfico quieren vigilar. Llegando, saliendo, dentro del firewall, fuera del firewall... Podríamos sugerir ¡¡¡en todas partes!!! En serio, es como quieran, pero otra vez, según los sysadmins "standard", lo más lo mejor... Ahora que han decidido dónde querían escuchar, tienen que elegir las reglas que aplicar. Snort llega con muchas reglas basicas: backdoor, ddos, finger, ftp... Estas reglas se definen en los ficheros snort-lib. Otra vez, pueden obtener nuevas reglas y reglas puestas al día desde el site de snort. Desde aquí basta con arrancar snort en tarea de fondo (por ejemplo), con las opciones elegidas. En éste caso, para ejecutar snort como un daemon, la opción sería -D. También pueden definir a donde va el logging puesto que se puede redirigir, incluso hacia otra máquina. Es imposible mencionar todas las características de snort en éste artículo. La documentación les enseñara mucho. De todo modos, snort es otra herramienta que NO se puede trabajar sin ella. Es una gran, gran herramienta.
Muchas gracias Sr. Roesch.

Otras herramientas libres existen: podemos mencionar AIDE a http://www.cs.tut.fi/~rammer/aide.html por ejemplo.

Encriptación

Muchas herramientas forman parte del proceso de encriptación, funcionando en varias áreas. No podremos hablar de todas. Sin embargo, por lo menos, tenemos que decir unas palabras sobre SSH, particularmente la versión libre OpenSSH. Pueden obtenerla desde http://www.openssh.com. La versión actual es 2.3.0. Este producto fue desarrollado primero para funcionar bajo OpenBSD. Hoy, funciona bajo muchos sabores de Unix. OpenSSH reemplaza telnet y los "remote commands" tales como rsh, rlogin. Incluye scp que remplaza ftp y rcp. OpenSSH permite la encriptación de los datos circulando por la red. Telnet, rsh, etc. transfieren los datos en plano ¡y eso vale para los passwords! Es decir, no tendrían que usar más dichas herramientas esas, sino OpenSSH en vez de ellas. ¡Eso tendría que ser una obligación! (A veces, tenemos que ser un poco fascistas:-)

El problema con estas herramientas viene de las leyes sobre encriptación de los diferentes los paises. Las cosas están cambiando, pero en muchos países no se pueden usar libremente éstas herramientas. Por ejemplo, hace un rato, se consideraba como espía a aquel que usaba SSH en un país tal como Francia (¡¡¡país de los Derechos Humanos, decían!!!). Por suerte, no es verdad hoy. Sin embargo, recomendamos leer un documento importante sobre la situacón en los diferentes paises. Lo encontrarán en http://www2.epic.org/reports/crypto2000/countries.html.
No obstante, la encriptación es una cosa importante para la seguridad y muchas herramientas tienen que ser tomadas en cuenta. Podemos mencionar OpenSSL (Secure Sockets Layer) http://www.openssl.org, o Strong Crypto, un VPN (red privada virtual) de fuente abierta para Linux en http://www.strongcrypto.com. VPN es otra solución que merecería un artículo entero (como muchas de las herramientas mencionadas más arriba!), y por eso no hablaremos más en el asunto.
Claro, no podemos olvidar de mencionar OpenPGP (Pretty Good Privacy) disponible en http://www.ietf.org/html.charters/openpgp-charter.html o GNUpg desde http://www.gnupg.org.

Scripting

Aquí, no podemos hablar de herramientas. El scripting es una de las aptitudes más importantes para un sysadmin. Scripts Shell, Perl... hacen parte del trabajo diario para la gente que administra redes. Los scripts sirven para automatizar tareas pero también para vigilar la seguridad. Cada sysadmin tiene sus necesidades, entonces siempre trata de cumplir con ellas de la manera que le conviene. No es siempre tan fácil. Algo puede ayudar: ¡suscribanse a la revista Sysadmin! Esta revista esta hecha por sysadmins para sysadmins y proporciona muchos programas o scripts... Incluso, pueden obtener un CDRom conteniendo todos los números anteriores, y claro con los programas o scripts. Eso no es publicidad... es una manera de encontrar más soluciones para mejorar la seguridad. Echen un vistazo a http://www.samag.com.
Si eres un sysadmin, tendrías que probarlo. Bueno, sólo es una sugerencia.

¿Entonces qué?

Hay mucho que añadir sobre seguridad, pero como hemos dicho antes, éste artículo no es un "Cómo mejorar la seguridad de su red". No bastaría con un libro en el asunto. La seguridad no solo depende de herramientas, sino también es un comportamiento. Por ejemplo, con unos de estos comportamientos me vuelvo loco (claro, ¡ya lo estaba!). ¿Cuando entendrá la gente que los ficheros de M$ Office son peores que bombas? No solo tienen tamaños enormes, sino que están potencialmente llenos de macroviruses. Por favor usuarios Wintel, NO MANDEN documentos Word o Excel junto a sus correos. Aún más, si reciben algunos NO LOS ABRAN: sólo es una sugerencia, ¡pero han sido avisados! Son tan peligrosos (tendría que decir más!) como los ejecutables que reciben (o descargan). Y, a propósito, ficheros texto o HTML son mucho más pequeños que los documentos de Office, y NO son peligrosos. Claro, ya sé que el mundo Wintel trabaja de ésta manera: cuando bajan una demo, siempre es un ejecutable! Podemos suponer que se puede tener confianza en éstas empresas gordas... pero ¿saben lo que ha podido pasar con el arca que descargan? Claro que es una manera paranoica de pensar, pero ¿es esto tan loco? ¿Por qué piensan que muchos arcas tienen un checksum para averiguar autenticidad?

Lo que sigue puede "enfadar" mucha gente, pero es un hecho: JAVA es peligroso. Los applets no son seguros, los scripts Java no son seguros. Sin embargo, ¡sería interesante saber cuantos sites web no usan Java! Aún peor, Java es una fuente de problemas cuando visitan éstos sites: ¿cuantos entre ellos van a helar el navegador? ¿Es este el objetivo de un site web? Y no hablemos de ActiveX, del ejército de Redmond!
Sugerencia: usen Rebol en su lugar (http://www.rebol.com)

Puesto que hablamos del asunto: por favor, nuevos "profesionales" de Internet, ¡paren de crear sites web dedicados al mundo Wintel y IE5! Ya sé que estas cosas son muy generalizadas, no obstante mucha gente se conecta al Internet con muchos SO y navegadores diferentes. Trabajando como lo hacen, impiden que estos usuarios visitan sus sites web. El objetivo de Internet es compartir. Usar cosas propietarias es absurdo. En mi humilde opinión, cuando se crea un site web, la primera cosa que hacer es probarlo con varios SO y diferentes navegadores... pero solo es mi opinión. Una información: si se conectan sobre tal site con una máquina Unix y por ejemplo Netscape, ¡no pueden visualizar ni la página de indice!
Perdón por la digresión.

Otro punto importante es de recordar que la seguridad no alcanzará el 100%. Estamos muy lejos de eso. Pueden mejorarla, pero eso es todo. Por ejemplo, pueden usar todas las herramientas mencionadas aquí y dejar una puerta de atrás muy abierta! No se dejen burlar: los piratas no van a tratar primero de romper una clave de 128bit, sino que van a buscar un pequeño agujero en alguna parte. Así cuidado con programas SUID o SGID, con derechos de acceso, con servicios inútiles, con accounts cancelados, etc.
Si bien los sabores de Unix tienen muchas semejanzas, son muy diferentes por lo que concierne seguridad. ¡Unos parecen coladores! También tienen que saberlo. No hablemos de otros SO o asimilados. Por ejemplo, tener una conexión a Internet con el cable usando una máquina Winalgo standard es estupendo: es decir que pueden tener el icono de la máquina del pirata en la vecindad de red... y pronto M$ proveerá la foto del pirata! (Es broma...)
El camino hacia la seguridad de redes y ordenadores es muy largo. Si le interesa ése asunto, aprenderán cada día. Por suerte, tenemos muchas fuentes de información. Aquí tienen algunas.

Referencias

http://www.linuxsecurity.com es la primera mina de oro. ¡Allí encontrarán casi todo!
http://www.sans.org es un lugar dónde encontrar ayuda e información sobre seguridad. Un site que tendrían que consultar regularmente.
http://www.infosyssec.org es otro lugar para obtener toneladas de información sobre la seguridad.
http://www.securityfocus.com es la casa de Bugtraq, y proporciona mucha información sobre seguridad.
http://www.cs.purdue.edu/coast/hotlist/ ¡Este es EL site que hay que visitar!
Arriba de ésta página encontrarán un boton llamado "Enlaces": pínchenlo para obtener las señas de muchos distribuidores. Consultar sus sites es una obligación para saber todo sobre los parches de seguridad. ¡Eso vale para cada editor de Unix! Muchos de ellos proponen parches de seguridad o simplemente recomendados regularmente.
Algunos artículos anteriores de _LF_ merecen una lectura (aparte de los ya mencionados):
Añadir seguridad a las distribuciones Linux
TCPD y Firewalls usando IPFWADM
VXE, una herramienta de seguridad para Linux

Se puede encontrar mucha más documentación y no podemos dar todos los enlaces disponibles. Tampoco podemos mencionar todas las herramientas de seguridad como ya lo hemos dicho. En cada site mencionado aquí, encontrarán más enlaces hacia aún más enlaces, y así sucesivamente... como las muñecas Rusas.
El hecho que unas herramientas o unos sites no figuren en este artículo no significa que no tengann interés. Sólo significa que las herramientas no han sido probadas. Por supuesto, tienen que hacer una selección arbitraria entre la centena disponible.
El objetivo de éste artículo es de proporcionar a los lectores con lugares de donde empezar. Esperamos que podrá ayudarlos.

¿No vivimos una época estupenda?