Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas

jueves, 24 de febrero de 2011

Modificar el verbose mode del Apache2

La configuración del verbose mode de Apache2 se encuentra en el fichero /etc/apache2/conf.d/security

Si miramos el contenido del fichero, encontramos:


#
# Disable access to the entire file system except for the directories that
# are explicitly allowed later.
#
# This currently breaks the configurations that come with some web application
# Debian packages.
#
#
# AllowOverride None
# Order Deny,Allow
# Deny from all
#



# Changing the following options will not really affect the security of the
# server, but might make attacks slightly more difficult in some cases.

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
#
#ServerTokens Minimal
ServerTokens Prod
#ServerTokens Full

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
#ServerSignature Off
ServerSignature On

#
# Allow TRACE method
#
# Set to "extended" to also reflect the request body (only for testing and
# diagnostic purposes).
#
# Set to one of: On | Off | extended
#
TraceEnable Off
#TraceEnable On


La parte marcada en negro es lo que nos indica como funciona el verbose, vemos que:

# Set to one of: Full | OS | Minimal | Minor | Major | Prod

Son las diferentes opciones que podemos asignarle, como por ejemplo, des de la menos restrictiva: ServerTokens Full , a la más restrictiva: ServerTokens Prod

domingo, 28 de febrero de 2010

Instalar firewall Shorewall en GNU/Linux Debian / Ubuntu / Gentoo ...

Para instalar este fantástico firewall:

Instalaremos shorewall:

# aptitude install shorewall

copiaremos los ficheros base de configuración:

# cp /usr/share/doc/shorewall/default-config/* /etc/shorewall/

editaremos el fichero interfaces y añadiremos la(s) nuestra(s):

# nano -w /etc/shorewall/interfaces

Añadiremos nuestras interfaces, en mi caso : eth0 y wlan0
el fichero quedara así:

net eth0 detect routefilter,tcpflags,dhcp,logmartians,nosmurfs
net wlan0 detect routefilter,tcpflags,dhcp,logmartians,nosmurfs

guardaremos cambios y cerraremos el fichero.

Editaremos el fichero de zonas:

# nano -w /etc/shorewall/zones

el contenido del fichero debe ser:

fw firewall
net ipv4

guardaremos y cerraremos el fichero.

Editaremos el fichero de las políticas de seguridad, en mi caso, dejar salir desde el firewall a red y ignorar al revés:

# nano -w /etc/shorewall/policy

contenido:

$FW net ACCEPT
net $FW DROP info

guardaremos y cerraremos el fichero.

Editaremos las reglas:

# nano -w /etc/shorewall/rules

en mi caso, no necesito tener ningún puerto abierto, pero por ejemplo, si tuvieramos un servidor web que necesitara tener el puerto 80 abierto, pondríamos:

ACCEPT net $FW tcp 80

guardaremos y cerraremos el fichero.

Ahora comprobaremos que esté todo correctamente configurado:

# shorewall check

Si no nos suelta ningún error, iniciaremos el firewall:

# shorewall start

Ahora, lo añadiremos al inicio (init.d):

Editaremos:

# nano -w /etc/shorewall/shorewall.conf

y donde pone STARTUP_ENABLED tiene que quedar:

STARTUP_ENABLED=Yes

guardaremos y cerraremos el fichero.

Ahora editaremos:

# nano -w /etc/default/shorewall

buscaremos donde pone startup y la dejaremos así:

startup=1

guardaremos y cerraremos el fichero.

Ya tendremos nuestro shorewall en funcionamiento

Un saludo.

martes, 16 de febrero de 2010

Deshabilitar Control+Alt+Supr para reiniciar el equipo a usuarios no root

editamos inittab:

# nano -w /etc/inittab

comentamos la línea ca:12345:ctrlaltdel:/sbin/shutdown -r now

 (añadiendo una # al principio)

Guardamos y cerramos el fichero.

Saludos.

sábado, 16 de enero de 2010

LVM cifrado en GNU/Linux Debian / Ubuntu

En esta entrada explicaré como instalar Debian / Ubuntu con LVM cifrado.

Personalmente acostumbro a utilizarlo en mis ordenadores portátiles, ya que tienen un índice mayor de ser sustraídos.

Probado en Debian Squeeze y en Debian Lenny.

Durante la instalación del sistema operativo iremos a parar en el paso de particionado de discos, en este paso es donde hará hincapié este tutorial.

Nota: En mi ejemplo solamente utilizo un sistema operativo, por lo tanto, utilizaré todo el disco duro en este proceso, para aquellos que tengáis otros sistemas operativos, utilizad el espacio libre contiguo.

En la pantalla de particionado de discos seleccionaremos Manual.

Si el disco duro está totalmente limpio, sin ninguna tabla de particiones:

Seleccionamos el disco duro y damos a enter, nos preguntará si queremos crear una nueva partición, le decimos que .

Llegados aquí tendríamos que tener un resumen de particionado de discos, con una partición ESPACIO LIBRE.

Seleccionamos la partición espacio libre (enter) y le decimos crear una nueva partición.

Borramos el tamaño que nos da por defecto, le ponemos 350MB y confirmamos; ahora le indicamos que es una partición primaria y al principio del espacio disponible (en el caso de que nos lo pregunte); ahora en la opción de punto de montaje, la cambiaremos por /boot y le diremos que se ha terminado de definir la partición.

Ahora crearemos una de las particiones cifradas, para ello seleccionamos el espacio libre y le decimos que cree una partición nueva.

En el tamaño de la partición le dejamos el que nos indica por defecto (que tendría que ser todo el espacio libre) y le decimos que sea de tipo primaria.

Cambiamos el uso de la partición por (Utilizar como) : volumen físico para cifrado. Le decimos que hemos terminado de definir la partición.

Seleccionamos configurar los volumenes cifrados, le decimos que , luego a crear volumenes cifrados (o create encrypted volumes) , de la lista que nos mostrará nos sitamos encima de la línea que nos pone el dispositivo (/dev/loquesea) , el tamaño de la partición  última creada y el uso que nos pondrá cifrado. Para seleccionarla, una vez nos hemos situado encima de dicha línea presionaremos la tecla espacio y le daremos a la tecla enter.

Ahora nos volverá al menú anterior y le diremos Finalizar (Finish) y luego a .

Empezará un proceso de borrado de la partición con datos aleatorios, dicho proceso puede tardar mucho (horas) dependiendo la velocidad de nuestra máquina y el tamaño del disco; es un proceso cancelable, pero recomiendo dejarlo finalizar correctamente.

Una vez terminado el proceso, nos pedirá la contraseña para cifrar el volumen, se recomienda introducir una contraseña robusta (no la olvidéis!).

Volveremos estar al menú inicial de particiones; nos situamos en el volumen cifrado número 1 (#1) , lo seleccionamos (enter) y le cambiamos el uso (utilizar como) por volumen físico para LVM y le decimos que hemos terminado de definir la partición.

Otra vez estaremos al menú inicial de definición de particiones; seleccionamos la opción configurar el gestor de volúmenes lógicos (LVM) y le decimos crear grupo de volúmenes .

Le pondremos un nombre para el grupo. Seleccionaremos el dispositivo /dev/mapper/hdax_crypt o similar, dependiendo de vuestros dispositivos (es el que tiene el mayor espacio anteriormente creado). La selección la haremos con la tecla espacio, veremos que nos pone un * en el dispositivo; presionaremos ahora enter.

Volveremos al menú de configuración de LVM y le diremos que cree un nuevo volumen lógico, seleccionaremos el grupo anteriormente creado y  le daremos como nombre del volúmen: SWAP.

Ahora nos preguntará el tamaño, lo ideal es tener una memoria de intercambio (swap) el doble de tamaño respecto a la RAM de nuestra máquina; en mi caso tengo 1GB de RAM, crearé una SWAP de 2GB.

Le introduzco 2GB y presiono enter.

Ahora, creamos otro volumen lógico para el directorio raíz, dentro del mismo grupo, podemos llamarle raiz; dejamos el tamaño que nos indica (que será todo el restante) y continuamos.

Ahora seleccionamos: Terminar.

Otra vez estaremos en el menú principal de particionado de discos, nos situaremos en la SWAP (#1) y le diremos: usar como área de intercambio; seleccionaremos: se ha terminado de definir la partición.

Ahora nos situaremos sobre raiz (#1) y le diremos: usar como sistema de ficheros ext3 transaccional.

Nota: podemos seleccionar el sistema de ficheros que mejor nos convenga, si nos decidimos en el caso particular ext4, debemos asegurarnos que podremos finalizar correctamente la instalación sin tener problemas en instalar el gestor de arranque grub.

Ahora cambiaremos el punto de montaje por: / - sistema de ficheros raiz .

Diremos que hemos terminado de definir la partición.

Por última vez, volveremos a estar en el menú de particionado de discos, seleccionaremos: Finalizar el particionado y escribir los cambios en el disco.

Le decimos que sí escriba los cambios en los discos.

Una vez finalizado el proceso y terminada la instalación, tendremos el sistema cifrado. Para poder montar el disco en el arranque se nos requerirá la contraseña definida en el proceso de partición.

Saludos.

martes, 1 de diciembre de 2009

Rkhunter : Anti rootkit para Linux Debian / Ubuntu

Para instalar este fantástico anti rootkit para tener nuestro equipo más protegido:

# aptitude install rkhunter -y

Para realizar un escaneo de nuestro sistema:

# rkhunter -c

Para actualizar la base de datos de rkhunter:

# rkhunter --update

Para que rkhunter se ejecute como demonio, añadirlo al cron para que realize un escaneo diario y nos envie el reporte por correo electrónico:

Creamos un sencillo script en /etc/cron.daily:

# nano /etc/cron.daily/rkhunter

Le añadimos:

#!/bin/bash
(/usr/bin/rkhunter -c --cronjob 2>&1 | mail -s "rkhunter: reporte diario" tu@correo.loquesea)

Guardamos con control+o y cerramos con control+x

Le damos permisos de ejecución:

# chmod +x /etc/cron.daily/rkhunter

Nota: si tenemos un sistema recien instaladoy limpio podemos crear la bd de rkhunter: rkhunter -c --propupd

Y listo!

domingo, 29 de noviembre de 2009

phpMyAdmin con SSL (Debian / Ubuntu)

Si queremos hacer pasar nuestro phpMyAdmin por SSL en nuestro Debian / Ubuntu , procederemos:

Primeramente tendremos que tener un certificado, preparar el servidor para  SSL y tenerlo todo listo, para ello pasaros por aquí .

Una vez finalizado lo de la entrada anterior, procederemos:

Editaremos la configuración de nuestro phpMyAdmin:

# nano /usr/share/phpmyadmin/libraries/config.default.php

Buscaremos: $cfg['ForceSSL'] = false;  y lo cambiaremos por true , quedando:

$cfg['ForceSSL'] = true;

Guardaremos con control+o y cerraremos con control+x

Ahora cada vez que queramos acceder a nuestro phpMyAdmin será por SSL (https).

Recordad que si accedéis desde red externa tendréis que abrir el puerto 443 de vuestro router y/o firewall.

Saludos

sábado, 28 de noviembre de 2009

Detectar Intrusos : Instalar Snort ( Debian Lenny / Ubuntu )

Instalar Snort en Debian Lenny o Ubuntu , para detectar intrusos en la red

Primeramente tendremos que instalar mysql y php desde aquí.

Podéis  descargar la última versión desde sección de descargas de la web de snort (clic aquí).

En mi ejemplo, descargaré la última versión a dia de hoy, la 2.8.5.1

Instalando Snort: Nos situaremos en el directorio donde hemos descargado Snort y:

tar xvzf snort-2.8.5.1.tar.gz
cd snort-2.8.5.1.tar.gz

Instalamos dependencias que nos haran falta para compilar snort:

# aptitude install php5-gd php5-ldap php5-dev php5-mysql php-pear libnet1 libnet1-dev libpcap0.8 libpcap-dev libpcap0.8-dev libpcre3 expect gobjc libpcre3-dev flex libnet0 libnet0-dev bison libmysql++-dev libapache2-mod-php5 php5-cgi -y

configuramos, compilamos e instalamos:

./configure --with-mysql --enable-flexresp --enable-sourcefire --enable-targetbased
make
# make install

crearemos los directorios para Snort:


# mkdir -p /etc/snort
# mkdir -p /var/log/snort
# mkdir -p /etc/snort/rules

copiaremos ficheros necesarios:

# cp -r preproc_rules/ /etc/snort/
# cp etc/*.conf* /etc/snort/
# cp etc/*.map /etc/snort/

Ahora ya tenemos Snort instalado, ahora necesitaremos descargar las reglas, para ello, descargaremos oinkmaster desde su web (clic aqui).

La versión a dia de hoy es la 2.0. la descargaré y me situare en el directorio de descarga y :

tar xvzf oinkmaster-2.0.tar.gz
cd oinkmaster-2.0

Ahora deberemos registrarnos a la página de Snort, nos enviaran un correo para confirmar el registro; cuando esté confirmado entraremos a nuestra área privada (sign in), > my account > subscriptions and oinkcodes > oinkcodes : veremos algo así:

Oinkcodes

xxxx92xxxxx .....

Copiaremos esa cadena de números y letras y lo incluiremos a la configuración del oinkmaster:

nano oinkmaster.conf

Buscaremos esta línea:

# url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-2.4.tar.gz

Eliminaremos la almohadilla del principio, cambiaremos <oinkcode> por nuestro código y también la versión del fichero por la versión de nuestro Snort; en mi ejemplo, la 2.8. Quedará así:

url = http://www.snort.org/pub-bin/oinkmaster.cgi/aquí tu código/snortrules-snapshot-2.8.tar.gz

Guardaremos el fichero con Control+o y saldremos del editor con Control+x

Ahora ejecutaremos oinkmaster para que nos descargue las reglas:

perl oinkmaster.pl -C oinkmaster.conf -o ./

Esperaremos un rato a que se descarguen y se descompriman.


Ahora moveremos las reglas (*.rules) que se nos an descomprimido en el actual directorio a snort:

# mv *.rules /etc/snort/rules/

creamos enlace simbólico:

# ln -s /usr/local/bin/snort /usr/sbin/snort


Crearemos un grupo y usuario específicos para manejar snort:

# groupadd snort
# useradd -g snort snort

Cambiamos grupo y dueño del directorio de logs de snort para que pueda ser utilizado por dicho dueño y grupo:

# chown snort:snort /var/log/snort/
# touch /var/log/snort/alert
# chown snort:snort /var/log/snort/alert
# chmod 600 /var/log/snort/alert
# touch /etc/snort/rules/local.rules


Configuraremos snort:

# nano /etc/snort/snort.conf

Buscaremos la línea :  var RULE_PATH ../rules y la cambiaremos por:

var RULE_PATH /etc/snort/rules

también modificaremos la línea: var PREPROC_RULE_PATH ../preproc_rules y la cambiaremos por:

var PREPROC_RULE_PATH /etc/snort/preproc_rules

Buscaremos: # output database: log, mysql, user=root password=test dbname=db host=localhost y eliminaremos la almohadilla del principio y también haremos las siguientes modificaciones:


output database: log, mysql, user=snort password=un_password dbname=dbsnort host=localhost

Nota: cambiaremos un_password por una contraseña que queramos, la utilizaremos más adelante, no te la olvides ;-)

Ahora buscamos: # include $PREPROC_RULE_PATH/preprocessor.rules y eliminamos la almohadilla del principio, quedando:

include $PREPROC_RULE_PATH/preprocessor.rules

También eliminaremos la almohadilla de: # include $PREPROC_RULE_PATH/decoder.rules , quedando:


include $PREPROC_RULE_PATH/decoder.rules

Guardaremos el fichero con Control+o y cerraremos con Control+x


Creando la Base de Datos para Snort:

Ingresaremos:

mysql -u root -p

(ingresaremos la contraseña de nuestro usuario root de mysql).

Crearemos y configuraremos la BD:

CREATE DATABASE dbsnort;
GRANT CREATE, INSERT, SELECT, DELETE, UPDATE ON dbsnort.* TO snort@LOCALHOST;
SET PASSWORD FOR snort@LOCALHOST=PASSWORD('un_password');
FLUSH PRIVILEGES;
exit

Recordad sustituir un_password por vuestro password anterior.

Nos situaremos en el directorio donde descomprimimos snort, en mi caso es:

cd ~/snort-2.8.5.1/

Ejecutaremos el setup schema para la DB:

cd schemas
mysql -p -u snort dbsnort < create_mysql

Nos pedirá la contraseña que pusimos de un_password , la introducimos.


Instalando BASE para interpretar Snort gráficamente:


descargamos BASE de su web http://base.secureideas.net/

y descargamos ADOdb de su web http://adodb.sourceforge.net/

Por ejemplo, a dia de hoy descargo BASE 1.4.4 y ADOdb 5.10

Descomprimo con:

tar xvzf base-1.4.4.tar.gz && tar xvf adodb510.tgz

Cambio el nombre del directorio BASE para ser más ameno:

mv base-1.4.4 base

Los muevo a /var/www

# mv base/ adodb5/ /var/www

Damos acceso a apache:

# chown www-data /var/www/base/

Editamos php.ini :

# nano /etc/php5/cli/php.ini

Buscamos: error_reporting  =  E_ALL & ~E_NOTICE

Ahora existen dos posibilidades: tenemos la línea anter comentada (; delante) pero unas líneas más abajo la volvemos a tener descomentada o tenemos la línea anterior comentada y más abajo tenemos: error_reporting  =  E_ALL

Si estamos en el primer caso: no haremos nada.
Si estamos en el segundo: añadiremos a error_reporting = E_ALL lo que le falta para ser igual a la línea buscada, quedando: error_reporting  =  E_ALL & ~E_NOTICE , guardaremos el fichero y saldremos del editor. Reiniciaremos apache: /etc/init.d/apache2 restart

Instalaremos las extensiones PHP necesarias para BASE desde el repositorio de PHP (PEAR):

# aptitude install php-pear -y
# pear channel-update pear.php.net
# pear upgrade PEAR
# pear install Image_Color Image_Canvas Log Mail Mail_Mime Numbers_Roman Numbers_Words

Configuraremos BASE:

Introduciremos en el navegador :

http://localhost/base

En la página clic en continue.

Ahora seleccionaremos idioma, y le diremos la ruta de ADOdb, en mi caso: /var/www/adodb5

Clicaremos a Enviar Consulta (o lo que sea en vuestro idioma).

Ahora:

Pick a Database type: Dejaremos MySQL
Database Name: dbsnort
Database Host: localhost
Database Port: Pondremos el puerto que queramos, si lo dejamos en blanco será el que viene por defecto (3306). En mi caso, lo dejaré en blanco.
Database User Name: snort
Database Password: poned el que tengáis de un_password

Pulsaremos en Enviar Consulta.

Ahora nos pedirá un usuario y contraseña para acceder a BASE, lo ponemos y le damos a Enviar Consulta.

Ahora pulsamos sobre el botón: Create BASE AG

pulsamos sobre: step 5...

Ya estamos en la página principal de BASE.

Ahora nos falta iniciar Snort, crearemos un script:

# nano /etc/init.d/snort

Que contenga, el siguiente código:

#!/bin/bash

# This is a "simple" script written by bodhi.zazen to start snort.
# This script is released under the GPL V3.
# Feel free to make modifications.
# If you modify or redistribute this script please give the courtesy of credit.

# This script requires zenity if you wish to run it in X.

# Test root and display

############################################################
###                 Configuration options                ###
############################################################
############################################################
# The following sections are used to configure snort
# Change "eth0" to the interface you wish to use with snort
#
IFACE="eth0"

# To Add hosts you wish to ignore to a "white list,
# Add them into the "WHITELIST"
# Be sure separate each ip address by a space
# Example WHITELIST='192.168.1.1 192.168.1.2'
WHITELIST=''

# The following section formats the $WHITELIST into proper syntax for snort
if [ -z "$WHITELIST" ] ; then
  HOST=''
else 
  c='1'
  for i in $WHITELIST; do
    if [ "$c" = "1" ]; then
      HOST="host "$i""
      c='2'
    else
      HOST=""$HOST" or host "$i""
    fi
  done
fi

############################################################
#
# To start snort at boot, put :
#
# "/etc/init.d/snort boot"
#
# in /etc/rc.local (without quotes, above the line exit 0)
#
############################################################

# Sanity checks

if [ -z "$DISPLAY" ] || [ ! -x "/usr/bin/zenity" ]; then
  D="e"
else
  D="z"
fi

uid=$(/usr/bin/id -u)
if [ ! "$uid" = "0" ];then
  case "$D" in
    e)
      sudo bash $0 $@
      exit 0
      ;;
    z)
      if [ -x "/usr/bin/gksu" ];then
        gksu "$0 $@"
        exit 0
      else
        kdesu "$0 $@"
        exit 0
      fi
      ;;
  esac
fi

# Check for stale lock files
if [ -z "$PID" ]; then
  rm -f /var/run/snort_"${IFACE}"*
fi

# Declair variables
SNORT='/usr/local/bin/snort -c /etc/snort/snort.conf -u snort -g snort -D'
ZEN="/usr/bin/zenity"
ZENINF='$ZEN --width=700 --title "Bodhis snort script" --info --text'
ZENWARN='$ZEN --width=700 --title "Bodhis snort script" --warning --text'
ZENMSG='"$TXT"'
PID=`pidof snort`

#Set prompt colors
RED='\e[0;31m'
GREEN='\e[0;32m'
BLUE='\e[0;34m'
NC='\e[0m'              # No Color

# functions

zeninfo ()
{
case "$D" in
  e)
    echo -e $BLUE"${TXT}" $NC
    ;;
  z)
    eval $ZENINF $ZENMSG
    ;;
esac
}

zenwarn ()
{
case "$D" in
    e)
      echo -e $RED"${TXT}" $NC
      ;;

    z)
       eval $ZENWARN $ZENMSG
     ;;
  esac
}

start ()
{
#start snort
if [ -z "$HOST" ];then
  $SNORT -i "$IFACE" &
else
  $SNORT -i "$IFACE" not \(`echo "$HOST"`\)&
fi
# This sleep is necessary to allow snort to initialize.
# If you shorten it, snort may start, but fail.
# this sleep is skipped if you use the boot option
sleep 20
PID=`pidof snort`
if [ ! -z "$PID" ]; then
  if [ ! -z "$WHITELIST" ]; then
    TXT="Snort successfully started, using a Whitelist of "$WHITELIST""
  else
    TXT="Snort started successfully ..."
  fi
  zeninfo &
  exit 0
else
  TXT="Snort failed to start ..."
  zenwarn &
  exit 1
fi
}

stop ()
{
if [ ! -z "$PID" ]; then
  kill -9 ""$PID""
  rm -f /var/run/snort_"${IFACE}"*
  TXT="Snort stopped ..."
  zeninfo &
  exit 0
else
  TXT="Snort is not running ..."
  zenwarn &
  exit 1
fi
}

restart ()
{
if [ ! -z "$PID" ]; then
  kill -9 "$PID"
  rm -f /var/run/snort_"${IFACE}"*
fi
start
}

status ()
{
if [ ! -z $PID ] ; then
  TXT="Snort is running ..."
else
  TXT="Snort is not running ..."
fi
zeninfo &
}

case "$1" in

  boot)
    if [ ! -z "$PID" ]; then
      exit 0
    fi   
    if [ -z "$HOST" ];then
      $SNORT -i "$IFACE" &
    else
       $SNORT -i "$IFACE" not \(`echo "$HOST"`\)&
    fi
    ;;
  start)
    if [ ! -z "$PID" ]; then
      TXT="Snort is already running ..."
      zenwarn &
      exit 1
    else
      start
    fi
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  status)
    status
    ;;
  *)
    TXT="Usage start|stop|restart|reload|status|boot"
    zenwarn
    exit 1
    ;;
esac

exit 0

Si vuestra interfaz es eth0 no tocaremos nada, pero si es diferente, por ejemplo eth1 , en el script cambiaremos IFACE="eth0" por IFACE="eth1"

Guardaremos con Control+o y saldremos con Control+x

Damos permisos:

# chown root:root /etc/init.d/snort
# chmod 500 /etc/init.d/snort

Iniciamos Snort:

# update-rc.d snort defaults
# /etc/init.d/snort restart

Ya tenemos nuestro Snort corriendo y ejecutándose en cada inicio.

Saludos.

Fuente principal:  B!n@ry | Script Snort.init : bodhi.zazen | Adaptación a la actualidad, solución de errores y inclusión de oinkmaster por mí.

 

martes, 24 de noviembre de 2009

Apache 2 con SSL

Apache 2 con soporte SSL en Linux Debian / Ubuntu , web https ssl navegación segura.

El primer paso que tendremos que hacer será generar un certificado SSL para nuestro Apache.

Instalaremos los paquetes necesarios:

# aptitude install openssl


Activamos el módulo SSL en nuestro Apache:

# a2enmod ssl

Creando el certificado:

Creamos la clave privada RSA, para equilibrar entre seguridad y compatibilidad será de fotaleza 1024 bits:

# openssl genrsa -out servidor.key 1024

Protegemos la clave privada quitando privilegios:

creamos el certificado sin cifrar para que cada vez que se inicie el apache no nos pida la clave de acceso:

# openssl req -new -x509 -nodes -sha1 -days 365 -key servidor.key -out servidor.crt

Respondemos a las preguntas del estándar X.509.

Unimos la clave y el certificado para que pueda ser utilizado por apache:

# cat servidor.crt servidor.key > servidor.pem
# rm servidor.key

Protegemos la clave privada quitando privilegios:

# chmod 400 servidor.pem

Creamos los directorios donde pondremos la clave y el certificado para el apache:

# mkdir -p /etc/apache2/ssl
# mkdir -p /etc/apache2/crt

Moveremos la clave y el certificado en dichos directorios:

# mv servidor.pem /etc/apache2/ssl
# mv servidor.crt /etc/apache2/crt


Ahora crearemos un sitio web de ejemplo que utilice SSL:

Crearemos los ficheros del ejemplo:

# mkdir -p /var/www/ejemploSSL
# echo Esta es una web de ejemplo con SSL > /var/www/ejemploSSL/index.html

Crearemos el site del ejemplo:

# nano /etc/apache2/sites-available/ejemploSSL

En en fichero ejemploSSL introduciremos:

 
        ServerName tuservidor.com
        ServerAlias tuservidor
        SSLEngine on
        SSLCertificateFile    /etc/apache2/crt/servidor.crt
        SSLCertificateKeyFile /etc/apache2/ssl/servidor.pem
        DocumentRoot /var/www/ejemploSSL/
       
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
       

        ErrorLog /var/log/apache2/ejemplossl-err.log
        TransferLog /var/log/apache2/ejemplossl-transfer.log


Guardaremos y cerraremos el fichero.

Ahora habilitaremos el site:

# a2ensite ejemploSSL

Recargaremos la configuración del apache:

# /etc/init.d/apache2 force-reload

ó

# service apache2 force-reload


Comprobaremos la dirección:

https://nuestro_host/ejemploSSL

Nota: recordad abrir el puerto 443 (SSL) a vuestro firewall para que funcione!


Ya tenemos nuestra site con SSL ;-)

domingo, 22 de noviembre de 2009

SCP : Copiar ficheros entre máquinas de manera segura

Copiar ficheros entre dos máquinas de manera segura en linux Debian | Ubuntu

Utilizaremos SCP

Copiar un fichero desde mi máquina a otro host:

scp fichero usuario@host:/ruta_host_donde_copiar_el_fichero

Si necesitamos puerto para conectarnos al host:

scp -P puerto fichero usuario@host:/ruta_host_donde_copiar_el_fichero

Para copiar entre dos hosts:

scp usuario1@hostorig:/ruta_host1_origen \ usuario@hostdest:/ruta_host_destino

Para más info: man scp

miércoles, 28 de octubre de 2009

Instalar Firewall Linux

En esta entrada explicaré como instalar el firewall Arno Iptables Firewall en Debian / Ubuntu , tiene la particularidad de que no necesitamos saber de iptables.

Procedemos:

# aptitude install arno-iptables-firewall



Ahora seguiremos estos pasos para configurarlo:

En la pantalla que nos dice si queremos configurarlo con debconf le decimos:

En la pantalla que nos pide la interfaz de red pondremos la nuestra, en mi caso tengo la tarjeta de red (eth0) y la inalámbrica (wlan0) y deseo la misma configuración del firewall para ambas, separadas por un espacio: eth0 wlan0
Poned vuestro caso, podeis ver las interfaces ejecutando como root: ifconfig

Ahora nos pide los puertos TCP que queramos abrir, separados por un espacio; podemos poner los puertos o rangos de la manera xxxx:yyyy.
Por ejemplo, yo abriré el 22 para mi servidor SSH, el 80 y el 443 para mi apache con ssl: 22 80 443

En la siguiente pantalla nos pregunta lo mismo pero para UDP.

Seguidamente configuraremos (si es el caso) nuestras tarjetas de red si conectamos por TNC. Como no és mi caso lo dejaré en blanco.

Terminamos indicandole en la pantalla siguiente para iniciar nuestro firewall.

Ya tendremos nuestro firewall en marcha, si en alguna ocasión necesitamos volverlo a configurar, ejecutaremos:

# dpkg-reconfigure arno-iptables-firewall

Saludos.

viernes, 23 de octubre de 2009

Cambiar MAC en linux

Cómo cambiar la dirección MAC de nuestra tarjeta ethernet en Linux Debian / Ubuntu

Ejecutamos en el terminal:

# ifconfig


Nos mostrará nuestra MAC real:

eth0      Link encap:Ethernet  HWaddr 00:11:11:22:22:22
.
.
.

Nota: la MAC mostrada es ficticia


Para cambiarla procederemos:

# ifconfig eth0 down
# ifconfig eth0 hw ether 00:11:22:33:44:55
# ifconfig eth0 up

Comprovaremos que se haya cambiado con éxito:

# ifconfig

mostrará:


eth0      Link encap:Ethernet  HWaddr 00:11:22:33:44:55 
.
.
.

Ya tendremos nuestra MAC cambiada.

Nota: Cuando cambiemos la MAC, tendremos que ceñirnos al sistema hexadecimal , es decir, una posible MAC correcta sería: 00:11:FE:0F:E0:AB , una MAC inválida: 00:11:XY:9H:11:22

Saludos

domingo, 18 de octubre de 2009

Actualizar phpmyadmin (Ubuntu / Debian)< 2.11.9.6 | 3.2.2.1 Actualización de Seguridad

Recientemente se ha publicado las nuevas versiones de phpMyAdmin que nos protegen de un par de agujeros de seguridad, para más info.

Explicaré como actualizar a las versiones más recientes, ya que todavia no está en los repositorios (almenos en los de debian x64).

Abriremos un terminal y comprovaremos las versiones de mysql y php que tenemos:

mysql --version && php --version

nos saldrá algo tipo:

mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (x86_64) using readline 5.2
PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cli)


Bien, si tenemos php y mysql versión igual o superior a 5 , descargaremos acá , si es inferior acá.

Nos situaremos en el directorio donde hemos descargado el fichero y ejecutaremos (en el terminal):

tar xvzf phpMyAdmin-3.2.2.1-all-languages.tar.gz

Nota: Sigo como ejemplo la versión 3.2.2.1 , si os pertenece otra, los pasos serán los mismos pero adaptandolo a la versión correspondiente.

Pasaremos a actualizar:

cp /etc/phpmyadmin/config.inc.php ./phpMyAdmin-3.2.2.1-all-languages


Ingresaremos como superusuario o ejecutaremos lo siguiente añadiendole sudo delante de la instrucción (no incluir la almohadilla # ):

# mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
# mv phpMyAdmin-3.2.2.1-all-languages /usr/share/phpmyadmin
#chown root:root -R /usr/share/phpmyadmin

Ahora ingresaremos en nuestro navegador web:

http://localhost/phpmyadmin

Se nos abrirá la ventana de login, y nos loguearemos con algun usuario que tengamos acceso a mysql.

En la parte inferior derecha obtendremos:

phpMyAdmin
Acerca de esta versión: 3.2.2.1

(o la versión correspondiente descargada e instalada).

Ahora eliminaremos la versión antigua:

# rm -r /usr/share/phpmyadmin.bak/

Ya tenemos al dia nuestro phpmyadmin sin agujeros de seguridad (por ahora ;-) ).

domingo, 11 de octubre de 2009

Cómo eliminar ficheros de manera segura y permanente en linux



Si necesitamos eliminar ficheros de una manera segura y permanente sea del disco, RAM o de la swap; instalaremos secure-delete:

# aptitude install secure-delete



Una vez instalado podremos optar por:

eliminar de forma segura un fichero o directorio en disco:

Utilizaremos secure remove:

srm fichero
srm -r directorio

Si queremos ver el proceso de borrado lo ejecutaremos con el parámetro -v (verbose). p.ejemplo: srm -v fichero

eliminar de forma segura los datos contenidos en la memoria RAM:

Utilizaremos secure memory wiper:

Cómo el limpiado de la memoria RAM es muy lento, es recomendable ejecutarlo con el parámetro "-ll" , que limita a una pasada para borrar los datos.

# smem -ll

Nota: es possible que nuestro sistema se vuelva extremadamente lento hasta que finalize el borrado; si queremos interrumpirlo presionaremos Control+C. Es recomendable ejecutarlo desde un terminal virtual sin estar en entorno de escritorio por las inestabilidades que produce.

eliminar de forma segura los datos presentes en la SWAP:

El proceso de eliminar los datos de la swap es mas complejo, procederemos paso a paso:

Ver las particiones swap que tenemos en nuestro sistema:

cat /proc/swaps

Nos mostrara un listado con las particiones swap que tenemos, por ejemplo:

Filename                Type        Size    Used    Priority
/dev/sda5                               partition    6385796    0    -1

Nos dice que hay una particion /dev/sda5

Bien, para poder realizar el borrado, es necesario desactivarla:

# swapoff /dev/sda5

Veremos que se ha desactivado correctamente si le decimos que nos vuelva a mostrar las particiones swap:

cat /proc/swaps

Y nos dé una lista vacía (o con dicha swap sin aparecer):

Filename                Type        Size    Used    Priority

Procederemos a el borrado seguro de la misma:

# sswap /dev/sda5

Si queremos ver el proceso de borrado lo ejecutaremos con el parámetro -v (verbose). p.ejemplo: sswap -v /dev/sda5

Una vez terminado, volvemos a activar la swap:

# swapon /dev/sda5


Ya tendremos nuestra swap totalmente borrada de manera segura y permanente.

eliminar de forma segura los datos presentes en el espacio libre en disco:

El borrado normal de un fichero en disco no es seguro, físicamente el fichero continua estando en el disco hasta que éste es sobreescrito por otro; para asegurarnos de que no existe información sensible en el espacio libre de nuestro disco duro procederemos:

# sfill -v /

Veremos que sfill genera un archivo del tamaño del espacio libre en disco para sobreescribirlo.


Nota para todos los procedimientos: depende del procedimiento que utilizemos, el borrado seguro puede ser extremadamente lento por la cantidad de pasadas aleatorias que viene marcada por defecto (38) , si queremos reducirlo ejecutaremos los comandos con el parámetro "-ll" .

Saludos.