Sie sind auf Seite 1von 16

ESLARED 2013

PRACTICA DE LABORATORIO Practicas bsicas de seguridad en Linux


El objetivo de esta prctica es dar a conocer los mecanismos mnimos para asegurar un sistema Linux.

Desarrollo Prctico Parte 1. Servicios en ejecucin


En esta seccin el objetivo es detener los servicios en ejecucin que no se estn utilizando. 1. Arranque la mquina virtual llamada UbuntuServer con el usuario: ubuntuserver y la clave: ubuntuserver
2.

Instala las siguientes herramientas: nmap, apache2, exim4


#sudo bash #apt-get update #apt-get upgrade #apt-get install apache #apt-get install exim4 #apt-get install nmap

3.

Una vez iniciado su sistema debe comenzar por revisar que puertos estn abiertos, para ello utilice el nmap (o el nmapfe) con esto se podr determinar que servicios de red se estn ejecutando:

#nmap localhost
Starting Nmap 5.00 ( http://nmap.org ) at 2011-09-15 02:32 ECT Interesting ports on localhost (127.0.0.1): Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 111/tcp open rpcbind

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds

4.

Para determinar que otros servicios estn corriendo primero debe saber que nivel de ejecucin (runlevel) esta utilizando, para esto utilice el comando runlevel y luego liste los servicios de arrancan y se detienen en el nivel 2:
# runlevel N2 # ls /etc/rc2.d/
S17rsyslog S14portmap S15nfs-common S19atd S18apache2 S19acpid S19mpt-statusd S19cron S19exim4 S22rc.local S19ssh S21bootlogs S22rmnologin S22stop-bootlogd

5.

Para impedir que los servicios que no se estn utilizando se ejecuten utilice el comando update-rc.d (Ejemplo):
# update-rc.d -f exim4 remove
update-rc.d: using dependency based boot sequencing

Con esto elimina el proceso cuando se reinicie el sistema


6.

Una vez que se impida el arranque de estos servicios hay que detenerlos (Ejemplo):
# /etc/init.d/exim4 stop Stopping MTA: exim4_listener

7. Una vez realizado este paso revise nuevamente su maquina con el nmap y revise su directorio /etc/rc2.d/. Recuerde que solo debe dejar activos los servicios que va ha utilizar.

8. Que sucede si usted desea determinar que demonio esta escuchando conexiones de red por un determinado puerto? Discuta su respuesta. ________________________________________________________________________ ________________________________________________________________________

Parte 2. Instalacin de un firewall bsico


Construya o instale un firewall:
1.

Primero revise cuales reglas de firewall tiene su maquina activa Realice ping a la maquina real (Desde su mquina virtual )

# iptables -L 2.

# ping LA-IP-DE-SU-MAQUINA-VIRTUAL

Para configura las reglas de iptables debe usa polticas por omisin tales como:
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

3.

Coloque estas reglas bsicas


# iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT

# iptables -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED

-j ACCEPT

# iptables -A OUTPUT -p TCP -d 0.0.0.0/0 --destination-port 22 -m state --state NEW -j ACCEPT # iptables -A OUTPUT -p TCP -d 0.0.0.0/0 --destination-port 80 -m state --state NEW -j ACCEPT # iptables -A OUTPUT -p UDP -d 0.0.0.0/0 --destination-port 53 -j ACCEPT

# iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED

-j ACCEPT

# iptables -A INPUT -p tcp -s 0.0.0.0/0 --destination-port 80 -m state --state NEW -j ACCEPT

# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP

4. Realice nuevamente ping a la su mquina. Que resultado obtuvo.

Parte 2.1 Parametros del kernel


Adicionalmente a las reglas de Firewall que pueda configurar en su mquina se recomienda configurar las opciones de red del kernel al momento del encendido.

1.

Edite el archivo /etc/sysctl.conf y descmente las siguientes lneas:


net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.ip_forward=0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.all.accept_source_route = 0

2.

Ejecute el comando sysctl -p


# sysctl -p

Parte 2.2 Golpeo de puertos (Port knocking)


El golpeo de puertos o port knocking es un mecanismo para abrir puertos en un firewall mediante una secuencia preestablecida de intentos de conexin a puertos que se encuentran cerrados. Una vez que el firewall recibe la secuencia de conexin correcta, sus reglas son modificadas para permitir a la IP que realiz los intentos conectarse a un puerto especfico.

a.

Instale el paquete del port knocking


# aptitude install knockd

b.

Edite el archivo de configuracin para permitir que el servicio arranque


# nano /etc/default/knockd
# control if we start knockd at init or not # 1 = start

# anything else = don't start START_KNOCKD=1

# command line options #KNOCKD_OPTS="-i eth0"

c.

Edite el archivo de configuracin para de las reglas del paquete knockd


# nano /etc/knockd.conf
[options] logfile = /var/log/knockd.log [openSSH] sequence = 7001,8001

seq_timeout = 25 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

tcpflags = syn [closeSSH] sequence = 9000,8000

seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

tcpflags = syn

d. Arranque el servicio para comenzar a utilizarlo # /etc/init.d/knockd start

e.

Para abrir el puerto de la maquina destino se debe enviar la secuencia de apertura


IP-de-la-maquina-destino 7001 8001

f.

Una vez enviada la secuencia de apertura se procede a establecer la conexin SSH


# ssh IP-de-la-maquina-destino

g. Compruebe que puede que sucede luego de la secuencia de apertura


h.

Se pueden observar la bitcora de la apertura con el comando


# tail /var/log/knockd.log

Parte 3.Configuracin del TCP Wrappers


Para configurar el TCP Wrappers los archivos de configuracin son el /etc/hosts.allow y el /etc/hosts.deny

1.

En el archivo el /etc/hosts.allow configure su mquina para solo aceptar conexiones ssh desde su red:
# vi /etc/hosts.allow sshd: 192.168..X.Y/255.255.255.Z

2.

Para negar el acceso a el resto de los servicios escriba en el /etc/hosts.deny


# vi /etc/hosts.deny ALL:ALL except 127.0.0.1: Deny

Parte 4. Bsqueda de rootkits


Los rootkit son herramientas que tiene como finalidad esconderse a s misma y esconder a otros programas, procesos, archivos, directorios, llaves de registro, y puertos que permiten a un intruso mantener el acceso a un sistema para remotamente poder ejecutar acciones o extraer informacin.
1.

Instalar los buscadores de rootkits


# aptitude install chkrootkit rkhunter

2.

Ejecutar el chkrootkit y analizar la salida (esta operacin tomara varios minutos)


# chkrootkit

3.

Actualizar el rkhunter y ejecutarlo (esta operacin tomara varios minutos)


# rkhunter --update # rkhunter -c --sk

4. Discuta los resultado obtenidos


5.

Puede revisar la bitcora del rkhunter con el siguiente comando


# more /var/log/rkhunter.log

Parte 5.Configuracin del tripwire


En esta seccin se configurar un IDS de target como es el caso Tripwire.
1.

Instalar el tripwire
# aptitude install tripwire

2. Siga las intrusiones que se presentan por pantalla

3. Siga las instrucciones y coloque las contraseas que se le soliciten. Importante Las contraseas Tripwire deben de ser diferentes de las de root o de cualquier otra contrasea del sistema. Use contraseas nicas tanto para la clave del sitio como para la local. Introduzca la contrasea de sitio (site-key) y su confirmacin La clave de sitio se usa para proteger los archivos de polticas y los de configuracin.

4. Introduzca la contrasea local (local key) y su confirmacin. La clave local se utiliza para firmar los informes generados tras las comprobaciones de integridad.

5.

Una vez realizado el paso anterior hay que inicializar la base de datos del tripwire, mediante el comando:
# tripwire --init

6.

Una vez inicializada la base de datos ejecute una revisin del sistema mediante el comando
# tripwire --check

Esta revisin debe hacerse peridicamente por tanto por omisin tripwire aade un script llamado tripwire-check al directorio /etc/cron.daily/. Este script ejecuta automticamente un control de integridad una vez al da.

7.

Para visualizar los reportes del tripwire ejecute los siguientes comandos:
# cd /var/lib/tripwire/report/ # ls linux-20110915-024617.twr

8.

Para visualizar este reporte ejecute el comando:


# twprint --print-report --twrfile linux-20110915-024617.twr

Open Source Tripwire(R) 2.4.1 Integrity Check Report

Report generated by:

root

Report created on: Database last updated on:

Thu Sep 15 02:46:17 2011 Never

=============================================================================== Report Summary:

Section: Unix File System ------------------------------------------------------------------------------

Rule Name --------Invariant Directories * Tripwire Data Files Other binaries Tripwire Binaries Other libraries Root file-system executables System boot changes Root file-system libraries (/lib) Critical system boot files Other configuration files (/etc) Boot Scripts Security Control

Severity Level -------------66 100 66 100 66 100 100 100 100 66 100 66

Added ----0 1 0 0 0 0 0 0 0 0 0 0

Removed ------0 0 0 0 0 0 0 0 0 0 0 0

Modified -------0 0 0 0 0 0 0 0 0 0 0 0

* Root config files * Devices & Kernel information

100 100

0 208

0 149

1 0

Total objects scanned:

25836 Total violations found:

359

Parte 6. Revisin de logs del sistema


Para facilitar la visualizacin de los mismos puede usar herramientas tales como logwatch. Ejemplo:
# aptitude install logwatch # logwatch --detail High --range All | more

Analice el resultado.

Parte 7. Llaves para conexiones SSH


Para establecer conexin ssh de forma ms segura los usuarios deben autentificarse en los servidores mediante le uso de llaves, para ello se debe seguir los siguientes pasos:

1.

Generar la llaves
# ssh-keygen -t dsa -b 1024
Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: 6e:f6:ee:a0:af:d0:61:0f:1c:1e:97:86:2e:2c:65:93 root@linux

introduzca un password introduzca el password nuevamente

2. Copie la llave recientemente generada al la maquina al la cual desea conectarse (cuidad asegures de la identidad de la maquina destino)

# ssh-copy-id -i /root/.ssh/id_dsa.pub

root@IP-de-la-maquina-destino

The authenticity of host `IP-de-la-maquina-destino' can't be established. RSA key fingerprint is ab:e9:e7:f1:66:57:b9:db:e8:47:a2:52:54:58:a4:73. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts.

root@IP-de-la-maquina-destino's password:

introduzca el password de root de la maquina destino

Now try logging into the machine, with "root@IP-de-la-maquina-destino", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.

3. Establezca una conexin SSH al la maquina destino usada en el paso anterior

# ssh root@IP-de-la-maquina-destino
Enter passphrase for key '/root/.ssh/id_dsa':

introduzca el password utilizado en el paso a

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@nombre-de-la-maq-dest:~$

Parte 8. Instalacin de mod-security para asegurar el servidor Web


Mod-security es un firewall de aplicaciones Web que ejecuta como mdulo del servidor Web (Apache), El mismo se utiliza un modulo que se encarga de proporcionarle un nivel de seguridad adicional a nuestro servidor Web personalizar. es muy potente, flexible y fcil de

1.

Para observar con facilidad los efectos del mismo se proceder a verificar la firma del servidor Web previa a la configuracin del mod-security.
# nmap localhost -sV -p 80
Starting Nmap 5.00 ( http://nmap.org ) at 2011-09-15 02:53 ECT Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.2.16 ((Debian))

2.

Para instalar el modulo debemos ejecutar el siguiente comando


# aptitude install libapache-mod-security

3.

Para copiar las reglas debemos copiarlas de al ubicacin actual a la configuracin de apache
# cp /root/reglas-modsec/* /etc/apache2/conf.d/

4.

Cree el directorio para los LOGS


# mkdir /var/log/mod_sec # chown www-data:www-data /var/log/mod_sec/

5. Edite el archivo de configuracin de servidor Web /etc/apache2/httpd.conf y agregue las siguiente lneas
# nano /etc/apache2/httpd.conf
ServerSignature Off ServerTokens Full

6. Active el modulo
# a2enmod mod-security

7. Reinicie el servidor Web


# /etc/init.d/apache2 restart

Parte 9. Correcto montado de las particiones


Para aumentar la seguridad de los servidores se deben montar las particiones de forma correcta.

1.

Primero instalamos el paquete que se utiliza para las cuotas


# aptitude install quota

2.

Para montar las particiones de forma correcta se debe editar el archivo /etc/fstab
# nano /etc/fstab ///archivo original ///
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda2 / ext3 defaults,errors=remount-ro 0 /dev/sda1 /boot ext3 defaults 0 2 /dev/sda5 /home ext3 defaults 0 2 /dev/sda11 /opt ext3 defaults 0 2 /dev/sda9 /tmp ext3 defaults 0 2 /dev/sda6 /usr ext3 defaults 0 2 /dev/sda10 /usr/local ext3 defaults 0 2 /dev/sda7 /var ext3 defaults 0 2 /dev/sda8 /var/log ext3 defaults 0 2 /dev/sda3 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

///archivo modificado ///


# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda2 / ext3 defaults,errors=remount-ro 0 1 /dev/sda1 /boot ext3 noauto,noatime 0 2 /dev/sda5 /home ext3 rw,nosuid,nodev,exec,auto,nouser,async,usrquota,grpquota /dev/sda11 /opt ext3 defaults 0 2 /dev/sda9 /tmp ext3 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 /dev/sda6 /usr ext3 defaults,ro,nodev 0 2 /dev/sda10 /usr/local ext3 defaults 0 2 /dev/sda7 /var ext3 defaults,nodev,usrquota,grpquota 0 2 /dev/sda8 /var/log ext3 defaults,nodev,nosuid,noexec 0 2 /dev/sda3 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

0 2

3.

Para que el sistema de pueda actualizar de forma correcta se debe modificar el archivo /etc/apt/apt.conf.
# nano /etc/apt/apt.conf
DPkg { Pre-Invoke { "mount /usr -o remount,rw" }; Pre-Invoke { "mount /boot" }; Pre-Invoke { "mount -o remount,exec /tmp" }; Post-Invoke { "mount /usr -o remount,ro" }; Post-Invoke { "umount /boot" }; Post-Invoke { "mount -o remount /tmp" }; };