Archivos del Mes para Agosto, 2009

2012

Breves

B.S.O. The Secret of Monkey Island

Paradoja de Olbers. ¿Por qué el cielo es negro?

Curso de Redes GNU Linux

¿Porqué son los cerdos alimento prohibido para algunos?

Vigilad por donde navegan vuestros hijos

Montaje de un Servidor Ciego con Debian Lenny (16.-Instalación de TorrentFlux-b4rt)

Nos conectamos por SSH al servidor. Antes de nada instalamos otras utilidades necesarias:

#apt-get install bzip2

#apt-get install unzip

#apt-get install uudeview

#apt-get install cksfv (en los repositorios de debian lenny no está, tendremos que activar momentáneamente los repositorios de testing)

Una vez allí lo primero es situarnos en la carpeta home del usuario root, donde descargaremos el archivo comprimido del programa, y con el que trabajaremos a partir de ahora:

#cd /root
#wget
http://download2.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2

Tras descargar el archivo, debería tardar poco, tenemos que descomprimirlo de la siguiente manera:

#bunzip2 torrentflux-b4rt_1.0-beta2.tar.bz2

#tar xvf torrentflux-b4rt_1.0-beta2.tar

Ahora vamos a crear la carpeta de torrentflux y por eso tendremos que copiar allí todo lo que haya en la carpeta html:

#mkdir /home/usuarioweb/www/torrentflux
#cp-r html / * /home/usuarioweb/www/torrentflux

Le cambiamos el propietario a la carpeta asignándole www-data que es utilizado por el usuario de Apache (el servidor web) pueda acceder a los archivos utilizados por TorrentFlux.

#chown-R www-data:www-data /home/usuarioweb/www/torrentflux

Ahora hay que abrir un navegador dirigirlo allí: http://la Ip del servidor o Pc/torrentflux
y tendrías que ver algo como esto:

Pasaremos por varios Continue en donde elegiremos la base de datos (en nuestro caso MySQL) y comprobará el PHP5, hasta que llegamos al siguiente punto importante, donde elegiremos la ruta donde guardará los archivos, aunque esa ruta será relativa pues en esa carpeta creará una carpeta por cada usuario que use y descargue algo con torrentflux-b4rt, pero lo que si es importante es que esa ruta tenga los permisos correctos, es decir que www-data el usuario de Apache2 pueda escribir en ella. Lo guardaremos en “/media/Archivos“, para no tener problemas de permisos le he pasado el comando chmod con la opción 777, como veis a continuación, luego he indicado la ruta en el script de instalación del programa como veis en la captura:

#chmod 777 /media/Archivos/

Pasado este punto, comprobará, de nuevo tras varios Continue, que tenemos todos los ejecutables que necesita para aprovechar todas las funciones, correctamente instalados, como veis en la captura a mi solo me falta uno, VLC, que solo se usa para hacer Streaming a través de la red directamente desde el propio programa, pero yo no necesito esa opción y me parece excesivo instalar VLC así que no lo instalo. Pero si os parece una función necesaria solo tenéis que instalarlo antes de este paso y lo detectará automáticamente. Podéis verlo en la captura:

Una vez superado este punto hemos llegado al punto final del script de instalación, donde como podéis ver en la captura, nos comenta un detalle importante, cuando nos salga por primera vez la ventana de login, el usuario y la contraseña que introduzcamos serán las que el programa guardará como las del usuario SuperAdmin, así que fijaros bien que escribís que luego necesitaréis esa clave y user.

Tras este paso veremos la ventana de Login, como veis en la captura, el usuario y la contraseña que introduzcáis ahora serán las que se guardarán como las del usuario SuperAdmin, así que aseguraos bien que ponéis y recordadlo claro.

Una vez puestos Username y Password, veremos la pantalla de configuración de Torrentflux-b4rt, y podremos configurar todos los aspectos del programa. Aquí os dejo una del programa en acción para que veáis como es funcionando:

Un consejo: es muy recomendable configurar bien los límites de subida y bajada de acuerdo a nuestra conexión. De lo contrario consumirá todo el ancho de banda de nuestro servidor pudiéndose dar el caso de que no se puedan ofrecer otros servicios tan básicos durante la ejecución de torrentflux tales como la compartición de archivos.

Hasta aquí. Seguramente habrán muchas más utilidades para un servidor, pero con estas a mí me basta. De todos modos siempre es bueno conocer otras cosas que en cualquier momento futuro puedan llegar a ser útiles.

Montaje de un Servidor Ciego con Debian Lenny (15.-Servidor DNS con Bind9)

Vamos a agregar un servicio de DNS al servidor para que resuelva todos los nombres y direcciones IP que necesite desde la red de área local. Lo que ganamos con esto es simplemente tiempo. No es lo mismo acceder a un servidor DNS de nuestro proveedor de servicios de Internet ( ISP ) por nuestro router que acceder a una maquina que está conectada a nuestra red interna donde la velocidad de conexión es mucho mayor que la que nos pueda ofrecer cualquier ADSL

Para instalarlo accedemos a una Terminal, nos identificamos como súper usuario root con el comando su y procedemos a su instalación con:

#apt-get install bind9

Ahora vamos a editar antes de nada el fichero resolv.conf

#nano /etc/resolv.conf

Veremos algo así:

nameserver 89.29.160.2

nameserver 192.168.0.1

Lo modificamos dejándolo así:

search ejemplo.no-ip.info #dirección del servidor
nameserver 127.0.0.1 #lo dejamos así
nameserver
192.168.0.1 #ip del router o puerta de enlace

Una vez modificado vamos ha hacer una copia de seguridad del archivo de configuración de bind9 named.conf.options

#cp /etc/bind/named.conf.options /etc/bind/named.conf.optionsOLD

Ahora lo editamos con:

#nano /etc/bind/named.conf.options

Veremos algo así:

options {

directory “/var/cache/bind”;

// If there is a firewall between you and nameservers you want

// to talk to, you may need to fix the firewall to allow multiple

// ports to talk. See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable

// nameservers, you probably want to use them as forwarders.

// Uncomment the following block, and insert the addresses replacing

// the all-0’s placeholder.

// forwarders {

// 0.0.0.0;

// };

auth-nxdomain no; # conform to RFC1035

listen-on-v6 { any; };

modificamos las lineas …

// forwarders {
// 0.0.0.0;
// };

y añadimos la linea …

query-source address * port 53;

introducimos nuestra IP localhost y descomentamos las lineas quedándonos así :

options {

directory “/var/cache/bind”;

// If there is a firewall between you and nameservers you want

// to talk to, you may need to fix the firewall to allow multiple

// ports to talk. See http://www.kb.cert.org/vuls/id/800113

query-source address * port 53;

// If your ISP provided one or more IP addresses for stable

// nameservers, you probably want to use them as forwarders.

// Uncomment the following block, and insert the addresses replacing

// the all-0’s placeholder.

forwarders {

127.0.0.1;

192.168.0.1;

};

auth-nxdomain no; # conform to RFC1035

listen-on-v6 { any; };

Ahora podríamos reiniciar solo los servicios de la RED y del DNS pero yo prefiero reiniciar para ver si todo arranca perfectamente y no tiene problemas con otros programas que tengamos instalados:

#reboot

Una vez reiniciada la maquina vamos a ver que tal funciona. Como podremos ver a continuación el acceso a nombres en Internet va a ser súper rápido una vez accedamos a el por primera vez ya que todos los nombres que resolvamos conforme vallamos navegando se irán guardando en una tabla cache localmente en nuestro servidor.

Vamos a usar para esto el comando dig, probaremos con el dominio google.com

#dig www.google.com

;; Query time: 26 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Sat May 9 18:14:57 2009

;; MSG SIZE rcvd: 244

Si nos fijamos a tardado unos 26 milisegundos, pero si repetimos veremos que es muchísimo mas rápido que la primera vez:

#dig www.google.com

;; Query time: 2 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Sat May 9 18:16:54 2009

;; MSG SIZE rcvd: 244

2 milisegundos es lo que ha tardado la segunda vez. Como veis es una manera mas de agilizar nuestra navegación en Internet ya que siempre sera mas rápido nuestro cable de red local conectado a 10/100 Mbps que no el ancho de banda que nos pueda ofrecer nuestro Router.

Si necesitamos ofrecer servicio de DNS a todos los ordenadores que quisieran usar nuestro servidor desde Internet tan solo tendríamos que abrir el puerto 53 y redireccionarlo hacia la IP de nuestro servidor aunque esto es una cosa que no recomiendo ya que si se sirven de este servicio muchos ordenadores a la vez podríamos tener problemas. No hablo de nuestro servidor ya que el haría su trabajo sin problemas pero nuestro ancho de banda de la ADSL es tan pequeño que incluso podríamos tener problemas a la hora de acceder a Internet.

Localmente es una solución ideal para entornos donde se conectan varios ordenadores a Internet desde una misma área local agilizando la traducción de nombres a ips.

Ahora ya tenemos nuestro propio servidor DNS listo para la trabajar. Seguidamente vamos a configurar todos nuestros ordenadores para que puedan hacer uso de él.

En la mayoría de los sistemas Linux incluyendo, podemos configurarlo en el fichero resolv.conf agregando la IP de nuestro servidor en la linea nameserver y nuestro dominio en la linea search. Como ejemplo, en un ordenador de nuestra red privada:

#nano /etc/resolv.conf

Dejándolo tal que así:

search ejemplo.no-ip.info #dirección del servidor
nameserver
192.168.0.XXX #ip del servidor
nameserver
192.168.0.1 #ip del router o puerta de enlace

Montaje de un Servidor Ciego con Debian Lenny (14.-Seguridad con Fail2ban)

La aplicación que vamos a usar para protegernos se llama Fail2Ban y se va a encargar de hacer de guardián las 24 horas del día bloqueando a todo aquel que tenga un numero de intentos fallidos de login en alguno de nuestros servicios. Vamos con su instalación. Ejecutamos una Terminal y nos logeamos como súper usuario root con el comando su, a continuación lo instalamos con

#apt-get install fail2ban

Ahora vamos a renombrar el fichero de configuración jail.conf por jail.confOLD ya que este mismo nos puede servir como referencia

#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.confOLD

Como podemos ver en el interior de el archivo jail.confOLD, ya hay varias opciones editadas por defecto y solo están a la espera de ser editadas para ser activadas. A continuación os voy a exponer cual es mi configuración para que os sirva como ejemplo.

Creamos un nuevo jail.conf para asignarle nuestras propias regla

#nano /etc/fail2ban/jail.conf

Especificando un poco sobre el fichero de configuración:

ignoreip : IPs de nuestra área local que queremos que se haga la vista gorda en caso de equivocación.
bantime : Tiempo que el usuario que fallo el logeo se quedara sin poder acceder al servicio especificado en segundos.
maxretry : Numero de intentos de logeo.
backend : Permite de un modo o otro la escritura de ficheros log.
destemail : Dirección de correo donde nos enviara las alertas.
action : Forma en que iptables aplica sus reglas.
mail-whois-lines : Se especifica que queremos que nos envié al correo en caso de intrusión.

Esas lineas explican la configuración básica de el fichero, a continuación vamos a ver un ejemplo de las celdas que creamos para cada servicio:

[ssh] : Tomare ssh como ejemplo pero esta es una linea que da igual lo que pongamos, ya que no afecta a la configuración.
enable : Podemos introducir true para activarlo y false para desactivarlo.
port : Nombre del servicio relacionado con el puerto.
filter : Nombre del archivo .conf ubicado en el subdirectorio /etc/fail2ban/filter.d, este va relacionado con algún filtro ya creado.
logpath : Ruta donde se ubica el fichero log donde se almacena toda la información de el servicio en cuestión.
maxretry : Numero de intentos fallidos, aquí podemos especificar un carácter diferente para cada celda que creemos.
findtime : Si alguien prueba x intentos en este periodo de tiempo especificado en segundos se le considera ataque.

Yo voy a proteger a los servicios SSH, FTP, y al WWW que son los que ofrecen mi servidor hacia internet. A cada uno le voy a dar un retardo de 300 segundos que vienen a ser unos 5 minutos para que durante ese tiempo el usuario que quiera conectarse no le sea una molestia esta medida de seguridad. 5 minutos es suficiente para evitar el uso malintencionado de un ataque por fuerza bruta o también llamado diccionario de nombres.

Si nos fijamos en mi fichero de configuración veréis un ejemplo de como lo tengo yo montado

# Fail2Ban configuration file.

#

# This file was composed for Debian systems from the original one

# provided now under /usr/share/doc/fail2ban/examples/jail.conf

# for additional examples.

#

# To avoid merges during upgrades DO NOT MODIFY THIS FILE

# and rather provide your changes in /etc/fail2ban/jail.local

#

# Author: Yaroslav O. Halchenko <debian@onerussian.com>

#

# $Revision: 281 $

#

# The DEFAULT allows a global definition of the options. They can be override

# in each jail afterwards.

[DEFAULT]

# “ignoreip” can be an IP address, a CIDR mask or a DNS host

ignoreip = 127.0.0.1 192.168.0.0/24

bantime = 300

maxretry = 3

# “backend” specifies the backend used to get files modification. Available

# options are “gamin”, “polling” and “auto”.

# yoh: For some reason Debian shipped python-gamin didn’t work as expected

# This issue left ToDo, so polling is default backend for now

backend = polling

#

# Destination email address used solely for the interpolations in

# jail.{conf,local} configuration files.

destemail = root@localhost

#

# ACTIONS

#

# Default banning action (e.g. iptables, iptables-new,

# iptables-multiport, shorewall, etc) It is used to define

# action_* variables. Can be overriden globally or per

# section within jail.local file

banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail

# MTA for the mailing. Change mta configuration parameter to mail

# if you want to revert to conventional ‘mail’.

mta = sendmail

# Default protocol

protocol = tcp

#

# Action shortcuts. To be used to define action parameter

# The simplest action to take: ban only

action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]

# ban & send an e-mail with whois report to the destemail.

action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]

%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]

# ban & send an e-mail with whois report and relevant log lines

# to the destemail.

action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]

%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]

# Choose default action. To change, just override value of ‘action’ with the

# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local

# globally (section [DEFAULT]) or per specific section

action = %(action_)s

#

# JAILS

#

# Next jails corresponds to the standard configuration in Fail2ban 0.6 which

# was shipped in Debian. Enable any defined here jail by including

#

# [SECTION_NAME]

# enabled = true

#

# in /etc/fail2ban/jail.local.

#

# Optionally you may override any other parameter (e.g. banaction,

# action, port, logpath, etc) in that section within jail.local

[ssh]

enabled = true

port = XXX

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

findtime = 600

# Generic filter for pam. Has to be used with action which bans all ports

# such as iptables-allports, shorewall

[pam-generic]

enabled = false

# pam-generic filter can be customized to monitor specific subset of ‘tty’s

filter = pam-generic

# port actually must be irrelevant but lets leave it all for some possible uses

port = all

banaction = iptables-allports

port = anyport

logpath = /var/log/auth.log

maxretry = 6

findtime = 600

[xinetd-fail]

enabled = false

filter = xinetd-fail

port = all

banaction = iptables-multiport-log

logpath = /var/log/daemon.log

maxretry = 2

findtime = 600

[ssh-ddos]

enabled = false

port = ssh

filter = sshd-ddos

logpath = /var/log/auth.log

maxretry = 6

findtime = 600

#

# HTTP servers

#

[apache]

enabled = false

port = http,https

filter = apache-auth

logpath = /var/log/apache*/*error.log

maxretry = 3

findtime = 600

# default action is now multiport, so apache-multiport jail was left

# for compatibility with previous (<0.7.6-2) releases

[apache-multiport]

enabled = false

port = http,https

filter = apache-auth

logpath = /var/log/apache*/*error.log

maxretry = 6

findtime = 600

[apache-noscript]

enabled = false

port = http,https

filter = apache-noscript

logpath = /var/log/apache*/*error.log

maxretry = 3

findtime = 600

[apache-overflows]

enabled = false

port = http,https

filter = apache-overflows

logpath = /var/log/apache*/*error.log

maxretry = 2

findtime = 600

#

# FTP servers

#

[vsftpd]

enabled = false

port = ftp,ftp-data,ftps,ftps-data

filter = vsftpd

logpath = /var/log/vsftpd.log

# or overwrite it in jails.local to be

# logpath = /var/log/auth.log

# if you want to rely on PAM failed login attempts

# vsftpd’s failregex should match both of those formats

maxretry = 6

findtime = 600

[proftpd]

enabled = false

port = ftp,ftp-data,ftps,ftps-data , XXX

filter = proftpd

logpath = /var/log/proftpd/proftpd.log

maxretry = 3

findtime = 600

[wuftpd]

enabled = false

port = ftp,ftp-data,ftps,ftps-data

filter = wuftpd

logpath = /var/log/auth.log

maxretry = 6

findtime = 600

#

# Mail servers

#

[postfix]

enabled = false

port = smtp,ssmtp

filter = postfix

logpath = /var/log/mail.log

findtime = 600

[couriersmtp]

enabled = false

port = smtp,ssmtp

filter = couriersmtp

logpath = /var/log/mail.log

findtime = 600

#

# Mail servers authenticators: might be used for smtp,ftp,imap servers, so

# all relevant ports get banned

#

[courierauth]

enabled = false

port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s

filter = courierlogin

logpath = /var/log/mail.log

findtime = 600

[sasl]

enabled = false

port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s

filter = sasl

logpath = /var/log/mail.log

findtime = 600

# DNS Servers

# These jails block attacks against named (bind9). By default, logging is off

# with bind9 installation. You will need something like this:

#

# logging {

# channel security_file {

# file “/var/log/named/security.log” versions 3 size 30m;

# severity dynamic;

# print-time yes;

# };

# category security {

# security_file;

# };

# }

#

# in your named.conf to provide proper logging

# Word of Caution:

# Given filter can lead to DoS attack against your DNS server

# since there is no way to assure that UDP packets come from the

# real source IP

[named-refused-udp]

enabled = false

port = domain,953

protocol = udp

filter = named-refused

logpath = /var/log/named/security.log

findtime = 600

[named-refused-tcp]

enabled = false

port = domain,953

protocol = tcp

filter = named-refused

logpath = /var/log/named/security.log

findtime = 600

Como podéis ver en la configuración anterior se especifican reglas para cada servicio especificando el puerto, filtro, ruta donde se ubica el fichero log que genera el servicio y el máximo de intentos de logeo. Una vez editado este fichero de configuración salimos y guardamos. A continuación ejecutamos nuestro guardián con:

#fail2ban-client start

Si todo va bien veremos algo así:

2009-05-13 19:15:49,367 fail2ban.server : INFO Starting Fail2ban v0.8.3

2009-05-13 19:15:49,368 fail2ban.server : INFO Starting in daemon mode

Si lo configuramos correctamente solo veremos esta linea, si no veremos alguna linea tipo Warning. ( ATENCIÓN : Ella siempre nos especifica el problema que tenemos en el fichero fail.conf).

Si queréis ver que tal andamos de bloqueos podéis ver el fichero fail2ban.log que se ubica en la ruta /var/log donde se guardan todos los bloqueos, ips, fecha y hora de quien nos está atacando

Legion

Un Poco de Seguridad en las Transmisiones FTP: ProFTPD con TLS

Suponiendo que tenemos instalado en nuestro servidor ProFTPD y OpenSSL, podemos configurar el servicio FTP para que trabaje con un poco más de seguridad. Las transmisiones a través de FTP son de por sí inseguras por que viajan en texto plano. Con TLS conseguiremos cifrar la información. Para activarlo debemos modificar el archivo de configuración de ProFTPD:

#cd /etc/proftpd/

#nano proftpd.conf

Y añadir lo siguiente:

# Includes DSO modules
Include /etc/proftpd/modules.conf

Y….

# This is used for FTPS connections
Include /etc/proftpd/tls.conf

Para poder trabajar con TLS debemos crear un certificado SSL. Para ello crearemos antes una carpeta para guardarlos:

# mkdir /etc/proftpd/ssl

Entonces generaremos el certificado:

# openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Ahora abriremos el archivo de configuración de TLS:

# nano /etc/proftpd/tls.conf

Y añadimos lo siguiente:

<IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23
TLSOptions                 NoCertRequest
TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                on
</IfModule>

Ahora tan solo debemos reiniciar ProFTPD:

# /etc/init.d/proftpd restart

Cabe señalar que la opción TLSRequired especifica la exclusividad de usar en el cliente FTP con TLS. Si la tenemos activada, como es el caso no podremos conectarnos al servidor por medio del FTP clásico.

No todos los clientes FTP disponen de conexión vía TLS. Sin embargo Filezilla sí. Para instalarlo:

# apt-get install filezilla

Alarm

El Cuento Más Breve y Hermoso del Mundo

Había una vez un hermoso príncipe que le preguntó a la bella Princesa:
- ¿Te quieres casar conmigo?
- Y ella le respondió: – ¡¡¡NO!!!

Y el príncipe vivió feliz por muchos años yendo a pescar, a cazar y al bar todos los días con sus amigos y tomaba mucha cerveza, vino y whisky, se ponía hasta las orejas de copas cuantas veces quería. Jugaba al golf y comía caviar porque le alcanzaba la pasta para eso y mucho más. Dejaba la ropa tirada en la silla del comedor y follaba con mujeres de la noche y vecinas y amigas y no tenía que competir con vecinos y amigos por el mejor coche, el mejor lugar de vacaciones, etc…

Y se tiraba pedos a mansalva y meaba salpicando la tapa del inodoro y con la puerta del baño abierta. Cagaba leyendo sin límite de tiempo y cantaba eructando y se rascaba los güevos. Escuchaba música a pleno volumen y veía fútbol todo el fin de semana… y no le tocaban las pelotas!!!!.

FIN

Leido en ubuntulife.

Mostrar el Uso de Espacio en Disco desde Consola

El comando que nos muestra el uso de espacio de todas las particiones es “df“. Proporciona la cantidad de espacio usado en disco y la cantidad de espacio disponible. Para usarlo es sencillo, sólo escribimos en la consola df. Nos mostrará la información de todos los sistemas de archivos que se encuentren montados actualmente y nos arrojará la información en bloques de 1kb. Podemos hacer uso del parámetro “-h”. Éste lo que hará es que nos mostrará la información de manera más legible, es decir en Mb y Gb. Si sólo queremos saber la capacidad de una partición podemos hacer que se muestre sólo esa agregando su ruta después del -h, ésto sería algo así: df -h /media/disk. Referencia http://huevas.wordpress.com/

# df -h
S.ficheros          Tamaño   Usado     Disp    Uso% Montado en
/dev/sda1              19G      903M      17G      6%       /
tmpfs                     2,0G             0       2,0G      0%      /lib/init/rw
udev                     10M          80K     10M       1%      /dev
tmpfs                    2,0G              0      2,0G       0%      /dev/shm
/dev/sda6            67G       200M      63G       1%      /home
/dev/sda7          367G         30G    319G       9%      /mnt/datos.01
/dev/sdb1         463G       344G       96G     79%      /mnt/datos.02