Wikipeando

Auditar Linux con Lynis

Posteado en Linux, Seguridad por situ el 1 de July de 2008

Lynis tiene como objetivo darnos un informe de auditoria sobre nuestro servidor, en forma sensilla y con una vista muy amigable.

1. Descomprimimos la utlidad:

# wget http://www.rootkit.nl/files/lynis-1.1.7.tar.gz
# tar zxfv lynis-1.1.7.tar.gz

2. Ejecutamos la aplicacion:

# cd lynis-1.1.7

# ./lynis –check-all

Con esto comenzamos la auditora de nuestro sistema, acontinuacion vamos a dar algunos titulos de los analisis:

[+] Boot and services
[+] Kernel
[+] Memory and processes
[+] Users, Groups and Authentication
[+] Shells
[+] File systems
[+] Ports and packages
[+] Networking
[+] Printers and Spools
[+] Software: e-mail
[+] Software: firewalls
[+] Software: webserver
[+] Databases
[+] LDAP Services
[+] Software: PHP
[+] Software: Malware scanners
[+] System Tools
[+] Home directories
[+] Logging and files
[+] Banners and identification
[+] Scheduled tasks
[+] Accounting
[+] Time and Synchronization
[+] Cryptography
[+] Virtualization
Veamos una captura de pantalla de la utilidad:

lynis-screenshot.png

Aqui vemos el reporte que nos entrego al analizar uno de los equipos del staff:

k2k.png

Saludos :D

Como recuperar la contraseña del Usuario Anonimo(IUSR) en el IIS

Posteado en Windows, IIS por situ el 1 de July de 2008

Si perdiste las PASS del usuario anonimo y no te funciona tu sitio, podes obtener las misma con el siguiente script.

Dim IIsObject, SiteObject
Set IIsObject = GetObject ("IIS://localhost/w3svc")

Wscript.Echo Get_IUSR_Password(IIsObject)
Wscript.Echo Get_IWAM_Password(IIsObject)

Function Get_IUSR_Password(IIsObject)
on error resume Next
Dim Out
Out = Out & vbCrLf & "
AnonymousUserName = "
& IIsObject.Get("AnonymousUserName")
Out = Out & vbCrLf & "
AnonymousUserPass = "
& IIsObject.Get("AnonymousUserPass")
If err=0 Then Out =  vbCrLf & "
Path:"
& IIsObject.AdsPath & Out
Get_IUSR_Password = Out
End Function

Function Get_IWAM_Password(IIsObject)
on error resume Next
Dim Out
Out = Out & vbCrLf & "
WAMUserName = "
& IIsObject.Get("WAMUserName")
Out = Out & vbCrLf & "
WAMUserPass = "
& IIsObject.Get("WAMUserPass")
If err=0 Then Out =  vbCrLf & "
Path:"
& IIsObject.AdsPath & Out

Get_IWAM_Password = Out
End Function

Resultado:

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Path:IIS://localhost/w3svc

AnonymousUserName = IUSR_sarasa

AnonymousUserPass = O2SOgx7JPZ-4Ph

Path:IIS://localhost/w3svc

WAMUserName = IWAM_sarasa

WAMUserPass = JLgR8BZg8_&7Ki

Fuente: http://labloguera.net/blogs/gcarreras/

TrueCrypt 5 en Debian Etch

Posteado en Linux, Seguridad por tux el 25 de June de 2008

Les dejamos un tutorial realizado por la gente de Kriptopolis, donde nos explican como instalar la herramienta de encriptacion truecrypt en debian etch.

http://www.kriptopolis.org/truecrypt5-debian

Tres correcciones para WordPress

Posteado en Seguridad, WordPress por Killer2k el 24 de June de 2008

Los primeros dos parches solucionan un error a la hora de reiniciar la contraseña (por olvido/pérdida) y un fallo en filtro image_send_to_editor.
La primer alternativa es descargar los 2 archivos y sobrescribir por los que estan en el host.

La segunda cambiar manualmente las líneas correspondiente en cada archivo.

1. Editar wp-includes/pluggable.php con el notepad o algún programa similar
2. Buscar la siguiente cadena:

function wp_generate_password($length = 12) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()";

3) Cambiamos por la siguiente cadena:

function wp_generate_password($length = 12, $special_chars = true) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
if ( $special_chars )
$chars .= '!@#$%^&*()';

1. Editar wp-login.php (esta en el raíz) con el notepad o algún programa similar
2. Buscar la siguiente cadena:

$key = wp_generate_password();

3. Cambiamos por la siguiente cadena

$key = wp_generate_password(20, false);

Y el tercer parche soluciona un bug en los comentarios. El problema reside en que cualquier usuario podía hacerse pasar por el autor del blog. La solución es muy parecida a las otras dos.

1. Editamos wp-comments-post.php (esta en el raíz) con el notepad o algún programa similar
2. Buscamos la siguiente cadena:

$comment_author = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url = trim($_POST['url']);
$comment_content = trim($_POST['comment']);

3. A continuación ponen este código:

// get list of user (display) names for blog
global $wpdb;
$valid_users = (array)$wpdb->get_results("
SELECT display_name, user_email FROM " . $wpdb->prefix . "users");

// get ID of logged in user (if there is one)
global $userdata;
get_currentuserinfo();
$logged_in_name = $userdata->ID;
$logged_in_email = $userdata->user_email;

// see if the comment author matches an existing author
$found_match = FALSE;
foreach ($valid_users as $va) {
if (trim($va->display_name) != '') {
if (strtolower($va->display_name) == strtolower($comment_author)) {
$found_match = TRUE;
break;
}
}
if (trim($va->user_email) != '') {
if (strtolower($va->user_email) == strtolower($comment_author_email)) {
$found_match = TRUE;
break;
}
}
}

// if commenter is not logged in, but match was found, block the comment
if (trim($logged_in_name) == '') {
if ($found_match == TRUE) {
wp_die( __('You cannot post using the name or email of a registered author.') );
}
}

Para personalizar el mensaje que le aparece a los que quieren hacerse pasar por los autores del blog editar la siguiente línea

wp_die( __('You cannot post using the name or email of a registered author.') );

Fuentes:
WordpressTrac, Agamum y PuntoGeek

Desactivar el Metodo HTTP Trace Apache2

Posteado en Linux, Seguridad por situ el 22 de June de 2008

Es un metodo de petición HTTP utilizado para la depuración de las entradas de los usuarios.
En este caso vamos a desactivarlo ya que mediente el se puede ejecutar un ataque web del tipo XST.

1. Comprobamos el estado del metodo:
# telnet mywiki 80
Trying 1.1.1.1...
Connected to mywiki.
Escape character is '^]'.
TRACE / HTTP/1.0
Host: 1.1.1.1

HTTP/1.1 200 OK
Date: Sun, 22 Jun 2008 17:38:08 GMT
Server: Apache
Connection: close
Content-Type: message/http

Como podemos ver el resultado fue "200 OK" con esto vemos que el metodo se encuentra activo

2. Desactivamos el metodo:
Debemos agregar a la configuracion del servidor apache la siguiente variable:
# vi /etc/apache2/apache2.conf
TraceEnable Off

Ahora reiniciamos el servicio y verificamos nuevamente el estado:
# /etc/init.d/apache2 restart
# telnet mywiki 80
Trying 1.1.1.1...
Connected to mywiki.
Escape character is '^]'.
TRACE / HTTP/1.0
Host: 1.1.1.1

HTTP/1.1 403 Forbidden
Date: Sun, 22 Jun 2008 17:43:40 GMT
Server: Apache
Last-Modified: Mon, 31 Mar 2008 21:28:05 GMT
ETag: "7fa0c-470-53c8e340"
Accept-Ranges: bytes
Content-Length: 1136
Connection: close
Content-Type: text/html

Como vemos ya no tenemos acceso al metodo "Forbidden".

Borrar un dominio a mano IspCP

Posteado en VHCS, VHCS Omega por Killer2k el 16 de June de 2008

Can't drop database 'dbdelsitio'; database doesn't exist
[dbdelsitio es un ejemplo]

Ese error surgio cuando estaba haciendo pruebas en un blog con wordpress y borre la DB de forma manual desde el PMA en lugar de hacerlo desde el panel de admin del dominio.  Cuando queria borrar el dominio desde el panel me salia "Can't drop database 'dbdelsitio'; database doesn't exist" dado que el blog que habia creado apuntaba a esa DB (dbdelsitio) y como no la encontraba me salia esa leyenda.

La solución es borrar de forma manual los siguientes registros.
1) /var/www/virtual/dominio_a_borrar
2) /var/cache/bind/db.dominio_a_borrar
3a) Desde PhpMyAdmin y borre las siguiente 2 entradas
3b) Ispcp - sql_database - dominio_a_borrar
3c) Ispcp - dominio - dominio_a_borrar
3d) Ispcp - buscar la db de forma manual en cada 1 de las tablas para borrar los registros.  Salvo la tabla logs.

De esta manera se solución el problema y pude borrar el dominio para luego crearlo nuevamente.
Fuente:
Link del post IspCP

Estructura básica de GNU/Linux

Posteado en Debian, Linux, Ubuntu por Killer2k el 11 de June de 2008
Esta post es para la gente que recién se inicia en el mundo GNU.
Paso a detallar la estructuras básicas en GNU/Linux.

/

Raíz (el equivalente al C: de windows)/bin
Binarios y ejecutables del sistema.

/boot
Aquí se encuentra lo mas importante del sistema; el kernel y los archivos necesarios para que el sistema funcione correctamente.

/dev
Archivos que se relacionan con los diferentes dispositivos que pueden estar funcionando en una PC (discos duros, terminales, sonido, video, lectores dvd/cd, etc)

/etc
Uno de los mas importantes, porque se encuentran todas las configuraciones del sistema.

/home
Aquí cada usuario posee un directorio donde se guarda toda su configuración, los programas instalados y documentos personales.

/usr
Jerarquía secundaria para datos compartidos de solo lectura (Unix system resources).

/root
Similar al /home pero para el usuario root (solo puede ser visto por el administrador)

/var
Archivos variables, como son logs, bases de datos, directorio raíz de servidores HTTP y FTP, colas de correo, archivos temporales, etc.

Recuperar Grub luego de instalar Windows

Posteado en Linux, Grub por situ el 6 de June de 2008

Por circunstancias de la vida, tuve que instalar en la notebook win xp :p ... asi que por ese motivo perdi mi querido grub. Leyendo por internet encontre un sitio el cual explica paso a paso como recuperarlo y agregar la sentencia para seleccionar el windows.

Estos son los pasos a seguir:

1. Booteamos con algun Live Cd

2. Montamos la particion de nuestro linux, por ej:

# mount /dev/sda1 /media/prueba

3. Hacemos un backup de la configuracion del Grub.

# cp /media/prueba/boot/grub/menu.lst /media/prueba/home/situ/menus.lst

4. Restauramos nuestro grub

# grub

#grub > root (hd0,0)

#grub > setup (hd0)

#grub > quit
4. Agregamos la sentencia para que se puede seleccionar el SO Windows.

# vi /media/prueba/boot/grub/menu.lst

title Windows XP
root (hd0,1)
makeactive
chainloader +1

Fuente: http://apcmag.com/how_to_dual_boot_linux_and_windows_xp_linux_installed_first.htm?page=5

Utilizar etc/aliases en debian para recibir los mails del sistema en una casilla en particular

Posteado en Debian, Linux por Skirmish el 16 de May de 2008

Antes de comenzar tenemos que tener configurado nuestro MTA (Postfix, Exim, etc..) para enviar mails al exterior. Para ello debemos tener configurado el MTA como internet-site.
A continuación vamos a ver como hacer para que todos los mails dirigido a los usuarios de nuestro linux sean redireccionados a una cuenta en particular, para eso, editamos el archivo /etc/aliases, donde veremos algo asi:
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
clamav: root
De esta forma, vemos que todos los mails de las diferentes cuentas del sistema van dirigidas al usuario root, y como nosotros queremos que esos mails vayan a una cuenta de mail ya existente vamos a agregar una ultima linea que diga algo asi:

root: casilla@dominio.com

Guardamos los cambios y para que estos sean tenidos en cuenta por nuestro MTA tenemos que hacer lo siguiente:
# newaliases

Listo, ahora todos los mails generados por los demonios van a ser automáticamente dirigidos a la cuenta especificada.

Como saber si tu sistema está afectado por la vulnerabilidad en OpenSSH

Posteado en Linux, Seguridad por situ el 15 de May de 2008

Si no tienes instalado openssh-server y nunca usaste openssh-client es seguro que no tendrás problema. Pero por las dudas puedes hacer la comprobación con este método. Te recomiendo que lo hagas, porque yo estaba seguro que en mi PC de escritorio jamás había usado OpenSSH y al comprobar por medio del script me dió que el sistema era vulnerable.

Primero abre una Terminal.

Nos descargamos el script de comprobación desde el servidor de Debian:

wget -c http://security.debian.org/project/extra/dowkd/dowkd.pl.gz

Lo descomprimimos:

gunzip dowkd.pl.gz

y le damos permiso de ejecución:

chmod u+x dowkd.pl

Luego lo ejecutamos:

./dowkd.pl user

./dowkd.pl host hostname

Si nos aparece algo similar a esto: /home/username/.ssh/id_dsa.pub:1: weak key significa que nuestra clave ssh se encuentra comprometida. Si no ves las palabras "weak key" no tienes problemas.

Como lo soluciono?

Seguimos desde la Terminal:

sudo apt-get update

sudo apt-get upgrade

Verás que existen actualizaciones para los paquetes openssl y openssh, Acepta las actualizaciones y ahora vamos a regenerar las nuevas claves.

Si el "weak key" apareció al ejecutar el primer script:

ssh-keygen -t dsa -b 1024

Si apareció en el segundo script:

sudo rm /etc/ssh/ssh_host_{dsa,rsa}_key*

sudo dpkg-reconfigure -plow openssh-server

Hecho esto, corremos los scripts nuevamente para ver si se solucionó el problema.

En el caso de no haberse solucionado mira el archivo donde está la clave con error (en mi caso la salida de la terminal era /home/eduardo/.ssh/authorized_hosts:1: weak key) y abre con Gedit el archivo en cuestión (en mi caso /home/eduardo/.ssh/authorized_hosts) y borra la linea afectada (en mi caso 1). Antes un backup del archivo con otro nombre.

Vuelve a ejecutar el script hasta que las dichosas palabritas weak key no aparezcan.

Fuente, el post fue tomado de http://www.ubuntips.com.ar/

ACTUALIZACION: Al actualizar los paquetes se instala también un paquete que testea todo en un solo paso. Tienes que ejecutar desde una Terminal:

ssh-vulnkey -a

Next Page »