27 de febrero de 2008

Seguridad: Configuracion correcta de SU y SUDO


SU:

Seguramente conocerán el comando 'SU', el cual nos permite cambiar hacia la cuenta de root rapidamente. Los que tengan varios usuarios en la pc y/o tengan usuarios remotos con shells, corren el riesgo de que cualquiera que consiga su contraseña de root pueda loguearse con ella.

Hay una forma de evitar que 'SU' pueda ser usado por todos los usuarios del equipo, o sea, limitarlo a que solo los que queramos puedan usarlo, para ello, editamos este fichero:

/etc/pam.d/su


Y le agregamos estas dos lineas al principio (verificar que no esté ya):

auth sufficient /lib/security/pam_rootok.so debug


auth required /lib/security/Pam_wheel.so group=wheel


De esta forma, impedimos que cualquier usuario que no se encuentre en el grupo 'WHEEL', pueda hacer uso del comando 'SU'
Si queremos, podemos cambiar el grupo 'WHEEL' por otro que queramos, siempre que recordemos no equivocarnos aqui ya que estamos modificando un fichero importante del sistema.

Si usamos el servidor OpenSSH para shells remotas, recuerden modificar el siguiente fichero:

/etc/ssh/sshd_config


Y agreguen la siguiente linea, o modifiquenla si ya está, para que quede de la siguiente manera:

PermitRootLogin no


De esta forma, un usuario de nuestra shell no podrá de ninguna forma hacer uso del usuario 'ROOT' por mas que haya conseguido nuestra contraseña, ya sea 'accidentalmente'. No tiene 'SU', no puede conectarse como root, y ahp, su intento de kakeo no funcionó. :)

Recuerden siempre ponerle el atributo 'inalterable' con chattr a nuestros ficheros que acabamos de modificar, para evitar que pueda ser modificado de nuevo sin nuestro permiso.

# chattr +i /etc/pam.d/su


# chattr +i /etc/ssh/sshd_config


Ahora podemos quedarnos tranquilos, nadie obtendrá root por una mala configuración nuestra o por un accidente. :)


SUDO:

Tambien, muchos de los usuarios novatos suelen usar sudo para ejecutar comandos como root, y otros lo hacen por comodidad, esto puede causar problemas con varias sesiones en una misma pc o si solemos usar shells en nuestra pc, ya que una mala configuracion de sudo puede permitir a alguien no autorizado el uso de este, o puede aprovecharse de defectos en el sistema para conseguir acceso al uso de sudo.

Para evitar esto, tenemos que estar seguros de que nuestra configuracion de sudo es la correcta, para eso, abrimos el siguiente fichero:

/etc/sudoers


Y dentro, verificamos cuales son los usuarios que estan permitidos a usar sudo.

Una buena configuracion seria permitir sudo a todos los usuarios del grupo 'WHEEL' y 'ROOT', colocando unas lineas que contengan lo siguiente:

%wheel ALL=(ALL) ALL


root ALL=(ALL) ALL


Tambien, para mas comodidad nuestra, aunque arriesgando un poco la seguridad (local, por lo que si no hay nadie que pueda llegar a usar nuestras pcs mientras no estamos, se puede usar tranquilamente.) podemos usar esta linea en lugar de las anteriores:

%wheel ALL=(ALL) NOPASSWD: ALL


Esto nos permite usar sudo a los usuarios del grupo WHEEL sin la necesidad de poner password cada vez que se lo use.

Despues de haber hecho las modificaciones necesarias, le aplicamos la tecnica del chattr con el atributo 'inalterable' para que nadie pueda cambiar la configuracion de nuevo mas que nosotros:

# chattr +i /etc/sudoers


Y por ultimo, tambien podemos cambiarle los permisos y el owner al binario/ejecutable de 'sudo' (normalmente ubicado en /usr/bin/sudo) para evitar que sea usado en caso de que algo haya fallado.
Para eso, le podemos cambiar el grupo a 'WHEEL', y los permisos a 4110, y asi estaremos seguros de que nadie tocará sudo sin permiso:

# chown root:wheel /usr/bin/sudo


# chmod 4110 /usr/bin/sudo


Y hacemos lo mismo con /usr/bin/sudoedit:

# chown root:wheel /usr/bin/sudoedit


# chmod 4110 /usr/bin/sudoedit


Ahora si, para el que dijo que sudo no es seguro, tomá ;)

Saludos, Elidix.

25 de febrero de 2008

Seguridad: Uso del Inetd.conf

Una buena recomendación que agrega un cierto grado mas de tranquilidad a su servidor, es el correcto uso de los servicios de /etc/Inetd.conf

Primero, como root, modifique los permisos de /etc/inetd.conf haciendo:

# chmod 600 /etc/inetd.conf


Lo ideal (Aunque es como siempre digo, queda bajo decision de cada uno), es deshabilitar todos los servicios criticos que uno no use, como el ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger y auth, entre otros, agregando comentarios (#) antes de cada linea, para que quede asi:

#ftp-data 20/tcp # default ftp data port
#ftp 21/tcp # File Transfer Protocol
ssh 22/tcp # Secure Shell


Ahi vemos como hemos dejado los servicios del FTP deshabilitados, y el del SSH habilitado, suponiendo que en nuestro caso lo necesitamos. De esta forma, evita que puedan usarse servicios que usted no quiere en su servidor, y es menos riesgoso.

Despues, HUP'ee el proceso inetd:

# killall -HUP inetd


Y por ultimo, bloquee el fichero de configuración que antes usamos para que no pueda ser modificado, con el comando "chattr" (Gracias bb por este detalle ;), haciendo:

# chattr +i /etc/inetd.conf


De esta forma, no se podrá tocar el fichero (de ninguna manera) hasta que no se le quite el atributo 'inalterable', el cual solo el root puede hacerlo, haciendo lo siguiente:

# chattr -i /etc/inetd.conf


Con esto seguimos añadiendo algo de seguridad a vuestros servidores, espero que les haya servido ^^

Saludos, Elidix

24 de febrero de 2008

Seguridad: Uso de TCP_WRAPPERS

Desde hoy voy a postear una serie de consejos sobre seguridad en linux, para que puedan mantener su sistema 'seguro y estable', mas seguro aun, despues de hacer todo esto, ustedes tendrán mejor seguridad que la que ese hombre de la foto les puede dar :þ

http://tinyurl.com/395vzo

En este post veremos el uso de los TCP_WRAPPERS, que son una serie de reglas que nos permiten bloquear/negar y/o permitir el acceso hacia nuestros servidores desde ciertos equipos o direcciones de red.

Las reglas de los TCP_WRAPPERS estan controladas desde dos ficheros de configuración muy conocidos:


/etc/hosts.allow

/etc/hosts.deny


Lo ideal (aunque aqui va a gusto de cada admin.) es crear una regla en /etc/hosts.deny que contenga lo siguiente:

ALL: ALL@ALL, PARANOID


Con esto bloquearemos el completo acceso hacia el equipo desde el exterior. Por mas que tengamos un servicio o aplicación que este a la escucha, este no podrá transferir con un cliente que se conecte.

Una vez hecho esto, comenzamos a habilitar solo los accesos que queramos hacia nuestro servidor, agregando reglas en /etc/hosts.allow, que permitan los accesos deseados, por ejemplo:

FTP: 202.54.15.99 cosa.com

SSHD: ALL

Con estas reglas, permitimos el acceso de los clientes desde la ip mencionada (202.54.15.99), y el nombre de su sitio (cosa.com), solo hacia el FTP, y acceso completo hacia el SSHD.

Una vez hecho todo esto, podemos usar una pequeña aplicación que nos ayudará a comprobar si nuestros TCP_WRAPPERS estan bien, y nos reportará todos los problemas potenciales que puedan llegar a ocurrir y los reales: el tcpdchk

Para usarlo, simplemente lo ejecutamos tipeando su nombre en una consola como root, o instalandolo antes si no lo tenemos (buh :þ).

Con esto, tendremos bastante seguridad en nuestro equipo, aunque aun falta mucho mas :)

Saludos, Elidix.

Seguridad: Forkbombs



Ultimamente vi por los canales de IRC o por la web, muchos usuarios, que se aprovechan de los n00bs haciendolos ejecutar los conocidos 'forkbombs' (mstreet, este post va dedicado a vos :þ).

¿Que es un forkbomb?
Para el que no lo sabe, un forkbomb es una secuencia de comandos que normalmente ejecuta un proceso, y se empieza a llamar a si mismo infinitamente hasta lograr recargar al sistema, haciendo que este colapse.

Aca les hice unos ejemplos de los forkbombs que mas se conocen:

Esta es muy conocida, hecha en bash.

:(){ :|:& };:


Esta es igual a la anterior, salvo por ser mas larga (la he usado, y funciona).
hola () {
hola | hola &
}
hola


Asi mismo se pueden hacer en muchos lenguajes, como en perl:
perl -e "hola while hola"


¿Como nos podemos proteger de estas 'forkbombs'?
Hay varios metodos para evitar (en cierta parte) la mayoria de los forkbombs, una es agregando un limite de procesos al /etc/profile y al /etc/bash.bashrc, como por ejemplo..

ulimit -u 2048


De esta forma logramos que no se puedan ejecutar mas de 2048 procesos a la vez en el usuario, cosa que sobra para cualquiera, y no alcanza para tumbar al equipo (aunque 1024 seria mejor aún)

Los 1337s recomiendan usar otro metodo (supuestamente es el correcto), que es agregando el limite a /etc/security/limits.conf, por ejemplo..

* hard nproc 1024


Asi, todos los procesos que respeten el PAM, usarán el limite que este indica. :)

Ser precavido e inteligente, es la mejor seguridad que hay :]
Por que digo esto? Porque siempre hay casos en los que se puede evitar o 'bypassear' la seguridad, tambien hay forkbombs que 'evitan' esos limites que pusimos en los ficheros de conf. correspondientes, por ejemplo:

echo "\$0&\$0">_;chmod +x _;./_


En este caso, no hay mejor solucion para evitar problemas, que leer un poco sobre que esta uno ejecutando, aprender de eso, y sobre todo, usar mucho google, que para eso esta ;)

Saludos, Elidix.

22 de febrero de 2008

Una novia geek

Tener una novia geek tiene sus ventajas. Recorrerá las ferias informáticas con interés real, se emocionará con carcachos como el Atari, puedes aprender algo leyendo su blog e incluso te podría salvar la vida (el que no me crea que le pregunte a [Neo]).



Este listado lo encontré en SQL Insider (Me lo robé, da igual):

Tus rivales no estarán a tu altura
No tendrás que defender a tu chica del acoso de los buitres en playa o discoteca. No están a tu nivel y a tu chica no le interesarán lo más mínimo. No tendrás que mantener tus abdominales como una tabla de fregar para impresionarla y que te prefiera al resto del ganado. No es eso lo que a ella le interesa. Sin embargo ésto no significa que ella no pueda sentirse tentada por otros chicos, pero tú tendrás las armas necesarias para defenderte de ellos.

La chica geek viene con complementos
Es decir, ella tiene su propia colección geek de cosas. Ya sean gadgets, una colección completa de libros de ciencia ficción (ediciones en inglés, claro está), computadora propia (con Linux instalado y bien asegurado, si ya no es BSD) o su propio juego de mapas y dados. Será doblemente divertido, ya que podrás comparar lo que uno no tiene pero el otro sí ha conseguido, y además no temerás por la integridad de tus cosas. Ella es una chica bien equipada.

La chica geek te deja tu espacio
Ella no te va a pedir que la lleves al restaurante más caro cada fin de semana para que le demuestres cuánto te importa. Invítala a una pizza en tu casa y después a una partida al juego online de moda y ya la tienes contenta para el resto de la velada. Además, no tienes que gastarte demasiado dinero en SMS, seguro que ella usa Skype o la última versión del equivalente libre, que además seguramente, es gratis. Seguramente no tendrás que enseñarle cómo se configura la webcam en Linux porque ella se habrá encargado solita de recompilar los drivers en su Gentoo.

Puedes ser tú mismo en tus conversaciones con ella
No tendrás que estar al día de los temas top de las conversaciones sin sustancia que interesan al resto de las chicas. A ella le interesará que le cuentes la historia de aquel troll que tuviste que banear ayer en tu blog o cómo te cargaste al lammer aquél en el IRC tú solo (aunque es probable que ella estuviese ahi contigo).

Puedes compartir con ella tus actividades y aficiones favoritas
Puedes disfrazarte con ella para ir al último estreno geek del cine, o abrir un blog conjunto, o montar un dedicado entre los dos… Todo lo que era tan divertido hacerlo sólo, ahora puedes compartirlo con tu chica. ¡Dime ahora que no es un tesoro!

Puede que ella tenga un par de cosas que enseñarte
Esto puede sentarle mal a tu ego, pero como la quieres, te encantará. Es posible que sin su ayuda no seas capaz de salir de ese horrible cuello de botella en aquella aventura gráfica que tanto te gustaba, o puede ser que ella tenga algún libro que dejarte que aún no conozcas o que estabas deseando encontrar.

La chica geek habla tu idioma
Y además literalmente. Conozco casos de chicas que estudiaron Quenya, incluso puede que alguna haya que sepa Klingon o alguna lengua similar. Además, si es tu caso, seguramente tu chica sea de las pocas personas con las que puedas pasar una tarde completa viendo episodios de Padre de Familia en inglés sin subtítulos y arqueándose de la risa. ¡Qué bonito es el amor! Y en versión original… más!.

La chica friki te quiere de verdad

Ella es casi única (aunque por suerte el número de chicas geek aumenta cada día, aún la proporción de ellas es muy baja), mientras que geeks hay muchos. Si en una Campus Party hay 5000 personas y de ellas sólo hay 100-200 chicas y, en esa proporción, una de ellas te ha elegido a tí, querido amigo, eres un tipo con suerte, a esa chica le gustas de verdad. Agárrala y no la sueltes.

Sí!, Con ella podrás tener la boda geek de tus sueños! Si eres de los que quiere casarse vestido de elfo o de caballero Jedi, con ella podrás cumplir tu sueño. Y no sólo éste, sino muchos más. A ella no le extrañará que le digas que te pone que se vista como Leia en la escena con Jabba el Hut, y puede que te sorprenda sacando de su armario el sexy bikini dorado y se haga trenzas en el pelo. Sí, tus sueños onanistas pueden hacerse realidad teniendo una novia geek.

Behind Blue Eyes..

Esta canción se la dedico a 2 de las personas que mas amo en este mundo, que sienten que tienen a todo el mundo en su contra, sepan que nunca estan solos en esto, siempre tendran mi apoyo (y la de mucha gente mas), siempre.



No one knows what it's like
To be the bad man
To be the sad man
Behind blue eyes
And no one knows
What it's like to be hated
To be fated to telling only lies

[Coro]
But my dreams they aren't as empty
As my conscience seems to be
I have hours, only lonely
My love is vengeance
That's never free

No one knows what its like
To feel these feelings
Like i do, and i blame you!
No one bites back as hard
On their anger
None of my pain and woe
Can show through

[Coro]

Discover l.i.m.p. say it [x4]
No one knows what its like
To be mistreated, to be defeated
Behind blue eyes
No one knows how to say
That they're sorry and don't worry
I'm not telling lies

[Coro]

No one knows what its like
To be the bad man, to be the sad man
Behind blue eyes.