sábado, 23 de mayo de 2009

Backup Total + Incrementales

#!/bin/bash
#Sccript name: backup.sh
#Sccript description: Crea un backup del sitio indicado y lo almacena en el sugar indicado; primero crea un Backup total si no existe y cada dia uno incremental con respecto al total, los domingos siempre crea un total de referencia.
D_SEM=`date +%u`
D_SEM_TEXT=`date +%a`
O_BK=""
D_BK=""
case $# in
0)O_BK=$PWD
D_BK="${HOME}/backup";;
1)O_BK=$1
D_BK="${HOME}/backup";;
2)O_BK=$1
D_BK=$2;;
*) echo "$0 [Que copiar] [Fichero guardardo]";exit;;
esac

if [ $D_SEM -eq 7 ]
then
tar czvf "${D_BK}_tot.tgz" $O_BK
else
tar czvf "${D_BK}_${D_SEM_TEXT}.tgz" $O_BK --newer="${D_BK}_tot.tgz"
if [ $? -ne 0 ]
then
tar czvf "${D_BK}_tot.tgz" $O_BK
fi
fi

Script detección accesos erroneos (Mejorado)

#!/bin/bash
#Sccript name: denyAttack.sh
#Sccript description: denegar accesos fallidos
if [ $# -ne 1]
then
echo "Need a text \"Failed\" to work"
echo "$0 text"
exit;
fi
cat /var/log/auth.log | grep $1 > AccesosErroneos.txt
egrep -o '([0-2]\d{2}|\d{2}|\d{1})\.([0-2]\d{2}|\d{2}|\d{1})\.([0-2]\d{2}|\d{2}|\d{1})\.([0-2]\d{2}|\d{2}|\d{1})' AccesosErroneos.txt | sort -u> IPsAccesoFallido.txt
for N in `cat IPsAccesoFallido.txt`
do
iptables -I INPUT 1 -s $N -j DROP
done
rm AccesosErroneos.txt
rm IPsAccesoFallido.txt

domingo, 17 de mayo de 2009

Copias de seguridad en Linux

Vamos a ver que herramientas de serguridad nos brinda Linux para hacer copias de seguridad. En este post no vamos a usar herramientas ajenas al sistema. Pero ¿que debemos salvar?, los datos que deberiamos tener a buen recaudo son:
/home -> Ficheros de usuario
/etc -> Ficheros de configuracion de los programas
/usr/local -> Los binarios de los programas instalados

Tipos de copias de seguridad:




















TipoV. creación
V. reparación
Saturacion de red
TotalLentaRapidaAlta sat.
IncrementalRapidaLentaBaja sat.
DiferencialMediaMediaMedia sat.

cpio: Esta funcionalidad recibe como entrada un listado de ficheros a copiar y los muestra por su salida estandar, con lo que si queremos salvar los datos tendremos que guardarlos redirigiendo el flujo de salida. Tener en cuenta que esta herramienta es muy basica y muy antigua. Trabaja a nivel de datos.
dd: Hace una copia exacta de los discos, a nivel de bit, es decir, si tenemos un disco de 10G y solo 1G usado el programa realizara la copia de 10G.
drump/restore: Mas moderno y flexible que cpio, se puede almacenar en sistintos dispositivos por ejemplo.
tar: Es el mas usador por sus opciones y flezxibilidad.

Ejemplos con tar:
#Creamos
$sudo tar czvf /tmp/home_destino.tgz /home/*
#Restauramos
$sudo tar xzvf /tmp/home_destino.tgz
#Inclementa desde la fecha indicada:
$sudo tar czvf /tmp/home_destino.tgz /home/* --newer "2009-05-18"

viernes, 15 de mayo de 2009

Script detección accesos erroneos

#!/bin/bash
cat /var/log/auth.log | grep "Failed" | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u> IPsAccesoFallido.txt
# Fichero de log | Solo los fallos | Solo las IPs | solo una vez> Lo almaceno aqui

for N in `cat IPsAccesoFallido.txt`
do
iptables -I INPUT 1 -s $N -j DROP
done

jueves, 14 de mayo de 2009

Sistema de archivos en Linux

Carpetas en basicas:
/home -> Fichero de usuario
/usr/local -> Programas de usuario y ficheros usados en los entornos graficos
/opt -> Carpeta opcional, se usa bastante en Gentoo (para las compilaciones) y en
/var -> Donde se almacena el Syslog y
/etc/skel -> El contenido de esta carpeta se copia al crear un usuario nuevo

Tipos de premisos:
Exinten tres tipos de permisos lectura, escritura y ejecución (Read-Write-eXecution) repesentados por "r","w" y "x" respectivamente.
Si queremos ver los permisos de un fichero deberesmo escribir "$ls -l" y nos mostrar los permisos ordenados por usuario, grupo y otros.
¿pero que pasa si quiere dar a un usuario permiso, no a su grupo y a otro usuario tambien permiso?, pues para ello se usa las ACL (Lista de control de acceso) incluidas desde el kernel 2.6 y que podeis compilar para el kernel 2.4 .

Atributos:
i Inmutable, no se puede hacer nada, ni borrar, ni editar, ni hacer un acceso directo, ...
c Comprime en tiempo real los fichero con este atributo
d No deja hacer backup
j Escribe en en el "journalis" que contiene informacion para el backup
s Borrar todo, incluso el fichero en el sector de disco
Para ver los atributos usamos $lsattr
Para cambiarlos $chattr +VALOR FICHERO

miércoles, 6 de mayo de 2009

Instalacion y configuracion de Shorewall

Para instalar el Shorewall vamos ha usar apt.
#apt-get install shorewall
Para que el servicio arranque de manera automatica vamos ha modificar el fichero /etc/default/shorewall y modificamos:
startup=0 por startup=1
Ahora tenemos que crear la configuracion, para ello vamos ha hacer una copia de los ficheros de configuracion por defecto.
#cp /usr/share/doc/shorewall-common/degault-config /etc/shorewall
o
#cp /usr/share/doc/shorewall/degault-config /etc/shorewall

Por defecto solo tiene creada una sola zona "fw firewall" que sirve para asegurarse a si mismo.
Tendremos que crear al menos dos zonas, la lan y la wan, es decir por donde entra internet y otra por donde esta nuestra red; recordar que solo se pueden usar nombres de 5 caracteres.
Editar el fichero /etc/shorewall/zones

###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
lan ipv4 #
wan ipv4 #
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE

Tendremos que crear las politicas por defecto: fw-lan, fw-wan, lan-wan, lan-fw, wan-lan y wan-fw.
Editamos el fichero /etc/shorewall/policy

###############################################################################
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
local $FW ACCEPT
local net ACCEPT
$FW local ACCEPT
$FW net ACCEPT
net local DROP
net $FW DROP
#LAST LINE -- DO NOT REMOVE

Por ultimo podemos configurar las reglas para permitir cirtas cosas que en principio esta o no permitidas.
Editamos el fichero /etc/shorewall/rules

############################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK
# PORT PORT(S) DEST LIMIT GROUP
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
ACCEPT net local tcp 80
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

NOTA: Para hacer todo esto sin muchos problemas podemos usar en Webmin con le modulo Shoreline.

Cambio de contraseña olvidada en linux

Cuando se nos olvida la contraseña de root Linux nos permite cambiarla para evitar tener que reinstalar todo el sistema; para ello tenemos que seguir los siguientes pasos:

1. Cuando arranque el GRUB pausamos el arranque y pulsamos "e".
No aparecera una pantalla con los distintos modos de arranque.
2. Seleccionamos el que aparece con "root=DISCO ro" y pulsamos "e" para editar.
3. Cambiamos "ro" por "rw" para poder hacer que se guarden los cambios
4. Añadimos "init=/bin/sh" esto nos mostrara una consola al arrancar, recordar no poner nada despues de esto.
5. Por ultimo arrancamos pulsando "b"
Ahora hemos entrado como root, como se ve por la prom #
6. Para cambiar la contraseña escribimos "passwd" y ponemos la contraseña nueva.

NOTA: DISCO será un disco contenido en /dev