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

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”.

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

Port Scanner con Perl

Posteado en Programacion, Seguridad, Perl por situ el 13 de May de 2008

Leyendo el sitio http://www.gnucitizen.org/blog/agile-hacking-a-homegrown-telnet-based-portscanner me encontre con un script realizado en perl el cual tiene objetivo mediante el uso del modulo "IO::Socket::INET" realizar un scan de ports tcp de una direccion ip.

El resultado del mismo es muy elemental pero nos pueden sacar de muchos apuros.

use strict;
use IO::Socket;
my ($target,$remote,$results,$port,@ports);
unless (@ARGV> 0) { die "usage: $0 [ip]" }
$target = shift(@ARGV);
for ($port = 0; $port<65536; $port++)
{
$remote = IO::Socket::INET->new(
Proto    => "tcp",
PeerAddr => $target,
PeerPort => $port,
);
if ($remote) {print  "$port is open\n" };
}

Uso: perl script.pl ip

Ocultando nuestra version de Apache

Posteado en Seguridad por situ el 9 de May de 2008

Vamos a dar unos pequeños tips para asegurar nuestro servidor apache, ocultando su version.

El ServerSignature aparece en las páginas generadas por Apache, tal como ¨error 404¨, ¨listados del directorio¨, etc.

El directorio de ServerTokens se utiliza para determinar lo que pondrá Apache en el servidor en respuesta del HTTP header.

Directivas: dentro de la configuracion del apache.
ServerSignature Off

Oculta totalmente nuesta version del Apache y Sistema Operativo.

ServerTokens Prod[uctOnly]

La respuesta del server es: Apache

ServerTokens Major

La respuesta del server es: Apache/2

ServerTokens Min[imal]

La respuesta del server es: Apache/2.0.41

ServerTokens OS

La respuesta del server es: Apache/2.0.41 (Unix)

ServerTokens Full

La respuesta del server es: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

Tips de seguridad de apache:
http://httpd.apache.org/docs/2.0/misc/security_tips.html

Asegurando apache paso a paso:
http://www.securityfocus.com/infocus/1694 (Explica como aislar nuestro servidor del filesystem)

Fuente:
http://www.ellinux.com.ar/blog1.php/2008/02/29/ocultando-nuestra-version-de-apache

Instalando Mod_Security2 en Debian

Posteado en Debian, Linux, Seguridad por situ el 2 de May de 2008

En esta ocasión vamos a redactar en simples pasos, como poner en producción el modulo del apache mod_security.
modSecurity™ es un firewall de aplicaciones Web embebible que ejecuta como módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorear tráfico HTTP, así como realizar análisis en tiempo real sin necesidad de hacer cambios a la infraestructura existente.
Sitio web: http://www.modsecurity.org/

1. Instalamos los paquetes necesarios para el uso del modulo:
# apt-get install libxml2-dev liblua5.1-0 lua5.1 apache2-threaded-dev

2. Bajamos los archivos fuentes de la versión 2.5.1
# cd /tmp
# wget http://www.modsecurity.org/download/modsecurity-apache_2.5.1.tar.gz

3. Descomprimimos las fuentes
# tar zxvf modsecurity-apache_2.5.1.tar.gz

4. Instalamos el modulo.
cd modsecurity-apache_2.5.1/apache2/
# ./configure && make && make install

5. Verificamos que este en archivo mod_security2.so en el directorio: /usr/lib/apache2/modules/
# ls /usr/lib/apache2/modules/

6. Creamos el archivo mod-security2.load el cual trabajara en conjunto con el apache
# vi /etc/apache2/mods-available/mod-security2.load
Agregamos las siguiente líneas:
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so.0
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

7. Activamos el modulo (mod_security requiero el modulo unique_id activo)
# a2enmod mod-security2
# a2enmod unique_id

8. Agregamos para que el apache tome la configuración del modulo.
# vi /etc/apache2/conf.d/mod-security2.conf
Agregamos:
Include /etc/modsecurity2/*.conf

9. Creamos los directorios y los archivos log
# mkdir /etc/modsecurity2
# mkdir /etc/modsecurity2/logs
# touch /etc/modsecurity2/logs/modsec_audit.log
# touch /etc/modsecurity2/logs/modsec_debug.log

10. Copiamos las reglas
# cp /tmp/modsecurity-apache_2.5.1/rules/*.conf /etc/modsecurity2

11. Modificamos las líneas donde hacen alusión a los archivos logs, dejándolas de la siguiente forma.
# vi /etc/modsecurity2/modsecurity_crs_10_config.conf
SecDebugLog /etc/modsecurity2/logs/modsec_debug.log
SecAuditLog /etc/modsecurity2/logs/modsec_audit.log

12. Verificamos que la configuración del apache este correcta
# apache2ctl configtest

13. Reiniciamos el servicio del Apache
# /etc/init.d/apache2 restart

14. Verificamos que este funcionado el modulo,
# cat /var/log/apache2/error.log | grep ModSecurity
Debemos obtener una salida como esta
[Fri May 02 17:55:39 2008] [notice] ModSecurity for Apache/2.5.1 (http://www.modsecurity.org/) configured.

Fuente: http://www.isp-control.net/documentation/howto/security/mod_security_on_debian

Nueva Seccion - SG6 Labs

Posteado en Seguridad por situ el 2 de May de 2008

Hemos creado una nueva seccion la cual tiene como objetivo exponer la documentacion de la empresa SG6 , la cual tiene como fundamentos la seguridad de la informacion.

Encontraron para bajar una maquina virtual la cual podran usar para recrear un ambiente de pentest y varios documentos relacionados al tema:

http://www.wikipeando.com/index.php/sg6-labs/ 

Comprobar Hash MD5 con perl

Posteado en Programacion, Seguridad, Perl por situ el 6 de November de 2007

Con este script vamos a poder introducir por consola el nombre de un archivo y como resultado vamos obtener el HASH del mismo.

#!/usr/bin/perl
use Digest::MD5;
@ARGV or die "Uso: $0 archivo\narchivo: /etc/passwd por ejemplo\n";
my $file = $ARGV;
my $file= shift;
open(FILE, $file) or die "no se encuentra el archivo '$file': $!";
binmode(FILE);
print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";

Ej:
root@tux2:/tmp# perl md5.pl /etc/passwd
b5066f11ad12b18949eec843634ae9fe /etc/passwd

root@tux2:/tmp# perl md5.pl
Uso: md5.pl archivo
archivo: /etc/passwd por ejemplo

Next Page »