jueves, 24 de noviembre de 2011

Enjaulando el Bind

El motivo de enjaular un servicio, siempre tiene como propósito de crear un ambiente aislado del sistema, por motivos de seguridad.

El proceso lo realice en debian 9.0, pero con unos cuantos ajustes funciona para cualquier debian.

Los pasos para dicha tarea son simples, enjaularemos el servicio dentro de /var/lib/named:

1) Instalamos el servicio:
apt-get install bind9

2) Detenemos el servicio:
/etc/init.d/bind9 stop

3) Hacemos el cambio en /etc/default/bind9 y agregamos "-t /var/lib/named"
sed "s/-u\ bind/-u\ bind\ -t\ \/var\/lib\/named/g" /etc/default/bind9 > /tmp/bind.temp
mv /tmp/bind.temp /etc/default/bind9
chmod 644 /etc/default/bind9
sed "s|OPTIONS=\"\"|OPTIONS=\"-u\ bind\ -t\ /var/lib/named\"|g" /etc/init.d/bind9 > /tmp/bind.temp
mv /tmp/bind.temp /etc/init.d/bind9
chmod 755 /etc/init.d/bind9


4) Creamos los directorios para el ambiente enjaulado
mkdir -p /var/lib/named/etc/ /var/lib/named/dev /var/lib/named/var/cache/bind/{data,local,master,slave} /var/lib/named/var/{log} /var/lib/named/run/

5) Procedemos a mover al ambiente enjaulado y hacemos vinculos al sistema para que siempre halla acceso desde el sistema anfitrion a los recursos del bind:
mv /var/log/named /var/lib/named/var/log/
ln -s /var/lib/named/var/log/named /var/log/named
mv /etc/bind /var/lib/named/etc/
ln -s /var/lib/named/etc/bind /etc/bind
mv /run/named /var/lib/named/run/named
ln -s /var/lib/named/run/named /run/named

6) Hacemos ajustes personalizados, en mi caso usaré en el ejemplo los ficheros de etc/bind y los mando a var/cache/bind/local, asi que cambio todo "/etc/bind" por "local", perfectamente se puede omitir este paso e ir al paso (8) o ajustarlo a su necesidad recuerde que si desea usar otro nombre diferente a "local", por ejemplo "folder", debe de crear la carpeta en el lugar del "var/cache/bind" enjaulado el comando sería "mkdir /var/lib/named/var/cache/bind/folder":
sed "s|/etc/bind/zones.rfc1918|local/zones.rfc1918|g" /etc/bind/named.conf.local > /tmp/bind.temp
mv /tmp/bind.temp /etc/bind/named.conf.local
sed "s/\/etc\/bind/local/g" /var/lib/named/etc/bind/named.conf.default-zones > /tmp/bind.temp
mv /tmp/bind.temp /var/lib/named/etc/bind/named.conf.default-zones
sed "s/\/etc\/bind/local/g" /var/lib/named/etc/bind/zones.rfc1918 > /tmp/bind.temp
mv /tmp/bind.temp /var/lib/named/etc/bind/zones.rfc1918
chmod 644 /var/lib/named/etc/bind/named.conf.local
chmod 644 /var/lib/named/etc/bind/named.conf.default-zones
chmod 644 /var/lib/named/etc/bind/zones.rfc1918

7) Ahora movemos todo a la carpeta "local", si se omite el paso 6, omitir tambien este paso
mv /var/lib/named/etc/bind/zones.rfc1918 /var/lib/named/var/cache/bind/local
mv /var/lib/named/etc/bind/db.* /var/lib/named/var/cache/bind/local

8) Movemos los archivos restantes en /var/cache/bind/ borramos y creamos enlace:
mv /var/cache/bind/managed-keys.bind /var/lib/named/var/cache/bind/
mv /var/cache/bind/managed-keys.bind.jnl /var/lib/named/var/cache/bind/
rm -rf /var/cache/bind
ln -s /var/lib/named/var/cache/bind /var/cache/bind

9) Creamos nodos:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/zero c 1 5
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/*

10) Damos los permisos correspondientes:
chown -R bind:bind /var/lib/named/etc/bind
chown -R bind:bind /var/lib/named/var/*

11) Creamos el localtime:
cp /usr/share/zoneinfo/America/Managua /var/lib/named/etc/localtime

12) Iniciamos el servicio:
/etc/init.d/bind9 start

lunes, 26 de septiembre de 2011

Monitoreando los recursos de hardware

¿Quien no usa Orion o Nagios para monitorear los recursos de un ordenador? Sin embargo aunque usemos el monitoreo, cuando estamos empezando siempre hay algo que pasamos por omisión, problemas como que el disco use el 40% y no podamos escribir en el por que los inodes se han topado. Por lo tanto el monitoreo de un servidor debe de abarcar las áreas a continuación: * Memoria: Tenemos los comandos free * Carga CPU: Tenemos los comandos top, sysstat, mpstat, sar * Temperatura: lm-sensors * Espacio en particiones: df * Inodes de particiones: df -i * Carga de red: tcptrack, iptraf, iftop, ifstat