bash: hack: orden no encontrada!!

viernes, 9 de octubre de 2009

iptables II parte

hola

de nuevo por aca escribiendo hoy con algo un poco mas avanzado de Iptables

bueno comencemos:

suponiendo que tenemos un firewall ya creado similar a este y quiene es el que da la cara hacia internet, no ssurgen nuevas peticiones.

ejemplo.

1. ese server solo hace de firewall y tenemos un server diferente que hace de correo en la LAN, ¿ que debemos hacer ?

R/ tendriamos que hacer una redireccion de puertos

¿como lo hago?

R/ atravez de las reglas de PREROUTING

veamos.

# el server de correo esta en la IP 192.168.0.10 y tiene el servicio de postfix, #imap y pop3 (ejemplo)

primero permitimos los puertos

Recordemos !! que en el firewall tenemos definido algo asi :

###Denegamos el resto, si se necesita que alguien de la lan,necesita acceder a
###algun puerto se debe meter antes de la siguiente regla
iptables -A FORWARD -s 192.168.0.0/24 -i eth1 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i eth1 -j DROP
iptables -A OUTPUT -s 192.168.0.0/24 -i eth1 -j DROP

!!osea que las reglas de INPUT que definiremos debe ir antes de estas lineas!!!

ahora si a crear las reglas:

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 143 -j ACCEPT
#si tenemos pop3s debemos abrir el puerto 995
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 995 -j ACCEPT

# ahora si vamos a enrutar el trafico una vez permitido

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 25 -j DNAT --to 192.168.0.10:25
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 110 -j DNAT --to 192.168.0.10:110
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 143 -j DNAT --to 192.168.0.10:143
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 995 -j DNAT --to 192.168.0.10:995

¿que hicimos ?

le dijimos al iptables que todo lo que reciba por los puertos anteriormente indicados que vengan desde la eth1 (WAN) se enrute todo hacia la direccion IP de nuestro server de correo en la LAN, asi se vera desde la WAN como si el server de correo estuviera directamente contra internet ( y no siendo asi :) )

NOTA: esta configuracion se puede aplicar para enrutar el trafico de cualquier puerto hacia cualquier maquina de la LAN lo unico que se debe tener en cuenta es el tipo de trafico si es TCP o UDP.

viernes, 25 de septiembre de 2009

hablando de iptables

hola, hoy despues de muchos dias sin pasar por aca (la falta de tiempo) vengo escribiendo sobre un tema que a todos nos intriga (cuando hablo de todos me refiero a los que administramos servidores linux que de una u otra manera tienen conexion hacia internet) es el tema de la seguridad.

siempre pensamos que lo mas seguro de implementar es un firewall, pero como lo implemento ?

algunas distribuciones de linux ya traen Firewalls basados en Iptables preconfigurados, y nos permiten abrir uno que otro puerto cuando lo necesitamos.

otras personas usan gestores como lo son Firestarter, shorewall u otros.

pero a mi concepto estos son limitantes para configuraciones avanzadas que muy rara vez requerimos implementar.


por eso cuando se trata de montar un firewall prefiero crear 1 a 1 las reglas de iptables en ejectable en bash.

lo primero que debo tener en cuenta es que puertos voy a abrir.

comenzemos con algo sencillo:

1. tengo mi servidor que hara de server proxy a su vez de enrutador entre internet y LAN. ademas deseo que lo usuarios no tengan que configurar ip en su navegador

el server tiene en la LAN (eje) la ip 192.168.0.1 y en la WAN la 200.1.2.3
la LAN es la eth0 y la WAN la eth1

comiezon mi archivo Firewall

$ sudo vi firewall.sh

#!/bin/sh
#Firewall realizado por th3doctor

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F


## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT


##Empezamos a filtrar
###Nota: eth0 es la interfaz conectada a la LAN
###y la eth1 es la interfaz WAN

##Permitimos todo para localhost
iptables -A INPUT -i lo ACCEPT


##permitimos el acceso al proxy desde la LAN
iptables -A INPUT -s 192.168.0.0/24 -p TCP --dport 3128 -j ACCEPT

##permitimos la salida a HTTPS
iptables -A INPUT -s 192.168.0.0/24 -p TCP --dport 443 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p TCP --dport 443 -j ACCEPT

##permitimos el FTP para la LAN
iptables -A INPUT -s 192.168.0.0/24 -p TCP --dport 21 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p TCP --dport 21 -j ACCEPT

###Denegamos el resto, si se nececita que alguien de la lan,necesita acceder a
###algun puerto se debe meter antes de la siguiente regla
iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j DROP
iptables -A OUTPUT -s 192.168.0.0/24 -i eth0 -j DROP

##obligamos a todos a salir por el proxy
##con la excepcion ! le indicamos que no use proxy en para las direcciones de LAN

iptables -t nat -A PREROUTING -i eth1 -s 192.168.0.0/24 -d ! 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Quitamos los pings.
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_al

echo ------fin de la configuracion


ahora solo bastaria con agregarlo al inicio de la maquina para que se tomen los cambios ante eventuales reinicios

estan en Debian (sirve para la gran mayoria de distros)

basta con editar el archivo /etc/rc.local

y antes del exit 0 colocar

sh /ubicacion/firewall.sh (cambias "ubicacion" por la ruta donde esta tu firewall)

ahi tenemos las bases para empezar a crear un firewall a medida de nuestros requerimientos.

miércoles, 26 de agosto de 2009

Instalacion de Awstats

primero que todo
veamos que es:

AWStats es una herramienta open source de informes de análisis web, apta para analizar datos de servicios de Internet como un servidor web, streaming, mail y FTP. AWstats analiza los archivos de log del servidor, y con base a ellos produce informes HTML

(definicion tomada de wikipedia)
ahora si vamos a lo importante.........

Primero descargamos el Awstats desde su pagina oficial, o desde este link http://downloads.sourceforge.net/project/awstats/AWStats/6.9/awstats-6.9.tar.gz?use_mirror=ufpr

lo podemos hacer desde la consola con la orden

root@d3ad-laptop:~# wget http://downloads.sourceforge.net/project/awstats/AWStats/6.9/awstats-6.9.tar.gz?use_mirror=ufpr

luego de tener el archivo en tar.gz, lo podemos descomprimir en la carpeta en donde lo trabajaremos, yo decidi hacerlo en el /var/www/ para ya que es una aplicación que me funcionara via web.

Lo hacemos de la siguiente manera

root@d3ad-laptop:/var/www# tar -xzvf awstats-6.9.tar.gz

ya vemos que nos quedara una carpeta con el nombre de el programa y la version

root@d3ad-laptop:/var/www# ls -la

drwxr-xr-x 5 1003 513 4096 2008-12-28 09:04 awstats-6.9

-rw-r--r-- 1 root root 1125906 2009-08-26 14:34 awstats-6.9.tar.gz

-rw-r--r-- 1 root root 45 2009-08-06 09:30 index.html

drwxr-xr-x 11 root root 4096 2009-08-06 09:30 phpPgAdmin

una vez tenemos esto le cambiamos el nombre a la carpeta para cuestiones de facilitar la administracion

root@d3ad-laptop:/var/www# mv awstats-6.9 awstats

Ahora ya tenemos el Awstats, descargado y listo para empezar a configurar, por cuestiones de facilitar la administracion el proceso de parametrizacion lo haremos por medio de el webmin,

si no tenemos el webmin instalado lo hacemos de la siguiente manera.

Nota. Se debe descargar el webmin dependiendo de la version linux que se tenga en mi caso tengo debian, asi que descargo el .deb desde la pagina oficial de webmin.

http://www.webmin.com/download.html

si lo hago por la consola lo hago de la siguiente forma:

root@d3ad-laptop:/var/www# wget http://downloads.sourceforge.net/project/webadmin/webmin/1.480/webmin_1.480_all.deb?use_mirror=ufpr

una vez descargado procedo a instalarlo

root@d3ad-laptop:/var/www/awstats# dpkg -i webmin_1.480_all.deb

cuando intento hacer esta instalacion el me indica que no se puede instalar por que se necesitan unas dependencias.

Se soluciona seleccionando cada una de las dependencias que indica e instalarlas.

root@d3ad-laptop:/var/www/awstats# apt-get install [dependencia1] [Dependencia2] [Dependencia2]

Nota: en [Dependencia] ponemos el paquete que nos indica que falta

inmediatamente instalemos esto automaticamente este terminara la instalacion de el Webmin

indicandonos que nos podemos conectar de la siguiente manera https://de3ad-laptop:10000

tambien se pueden conectar con local host o la direccion de el equipo, en debian, ubuntu u otras distribuciones este trabaja en https pero por ejemplo en Suse, OpeSuse este trabaja en http normal nos podemos loguear con el usuario : root contraseña : la que se tenga o el usuario con el que instalamos el sistema que se supondria que es administrador.

Una vez esto ya tenemos el webmin y se veria de la siguiente manera:



Estamos listos para empezar a configurar el Awstats.

Primero que todo necesitamos tener el modulo de awstats en nuestro webmin, con el paquete que bajamos, el cual deje en /var/www y renombre como awstar tenemos este modulo.

La instalacion es un poco mas sencilla:

vamos a :

Webmin-> Configuracion de Webmin-> Modulos de Webmin->

le indicamos que lo instalaremos desde un archivo local.

Si tienen la carpeta awstats en la misma ruta que en mi equipo podemos ponerlo de la siguiente manera:

/var/www/awstats/tools/webmin/awstats-1.8.wbm

y damos click en Instalar modulo.

Ya instalado podemos ver que tenemos el Awstats en la seccion de sistema.

Estamos listos para empezar a configurar el Awstats.

Primero que todo necesitamos tener el modulo de awstats en nuestro webmin, con el paquete que bajamos, el cual deje en /var/www y renombre como awstar tenemos este modulo.

La instalacion es un poco mas sencilla:

vamos a :

Webmin-> Configuracion de Webmin-> Modulos de Webmin->

le indicamos que lo instalaremos desde un archivo local.

Si tienen la carpeta awstats en la misma ruta que en mi equipo podemos ponerlo de la siguiente manera:

/var/www/awstats/tools/webmin/awstats-1.8.wbm

y damos click en Instalar modulo.

Ya instalado podemos ver que tenemos el Awstats en la seccion de sistema.


Estamos listos para empezar a configurar el Awstats.

Primero que todo necesitamos tener el modulo de awstats en nuestro webmin, con el paquete que bajamos, el cual deje en /var/www y renombre como awstar tenemos este modulo.

La instalacion es un poco mas sencilla:

vamos a :

Webmin-> Configuracion de Webmin-> Modulos de Webmin->

le indicamos que lo instalaremos desde un archivo local.

Si tienen la carpeta awstats en la misma ruta que en mi equipo podemos ponerlo de la siguiente manera:

/var/www/awstats/tools/webmin/awstats-1.8.wbm

y damos click en Instalar modulo.

Ya instalado podemos ver que tenemos el Awstats en la seccion de sistema.


Cuando se da click en awstats lo primero que veremos es que nos devuelve con un error, esto es por que el webmin trae preconfigurado las ubicaciones de donde esta el software dependiendo de el sistema pero como es una instalacion manual, le damos click en configuracion de modulo, para especificar donde esta nuestro software.


Al dar click en salvar, nos arrojara otro error en el cual nos indica que el archivo de configuracion de ejemplo no esta en la ruta especificada.

Lo modificamos especicando la ruta en la cual lo tenemos.

Ahora estamos en la configuracion de el modulo, el cual nos inica que no tenemos configuraciones especificadas para generar informe.

Este se basa en la configuracion que tengamos en /etc/awstats/

por eso creamos el directorio manualmente.

root@d3ad-laptop:/var/www/awstats/wwwroot/cgi-bin# mkdir /etc/awstats

y le damos los permisos necesarios.

root@d3ad-laptop:/var/www/awstats/wwwroot/cgi-bin# chmod 777 /etc/awstats/

ahora necesitamos un archivo de configuracion de ejemplo.

Aca les dejo el que realize. Para que lo descarguen.

http://www.4shared.com/file/127953383/ead0991d/awstatsth3doctor.html

lo copiamos en /etc/awstats/

ahora recargamos nuestro navegador (f5)

y veremos algo asi:



para crear nuestra propia politica basada en una preconfigurada usando nuestro nombre se server o el que le queremos dar. Damos click sobre Añadir un nuevo fichero de configuración para analizar.

Nos saldra algo de la siguiente manera




en el campo subrayado ponemos el nombre de nuestra configuracion reemplazando [newconfig]

seleccionamos que copie un archivo de configuracion existente (para que tome todas la configuraciones de los archivos descargados(awstats.tar.gz)).

Ahora ya no queda si no editar nuestra configuracion desde la opcion Editar/Borrar, para que nos muestre los resultados de lo que queramos ver, activamos las opciones con 1 y las desactivamos con 0.

Nota al salvar nos puede indicar que no se puede guardar por que el archivo DataDir no existe

solo debes crear la carpeta en /var/cache/awstats, con

root@d3ad-laptop:~/Escritorio# mkdir /var/cache/awstats

le damos permisos a el directorio

root@d3ad-laptop:~/Escritorio# chmod 755 /var/cache/awstats

ahora si damos guardar a nuestra configuracion y lo debera hacer sin problemas.

Ahora para poder visualizar en forma WEB los informes debemos editar el apache2.conf

root@d3ad-laptop:~/Escritorio# vi /etc/apache2/apache2.conf

agregamos el siguiente contenido al final.

Alias /awstatsclasses "/var/www/awstats/wwwroot/classes/"
Alias /awstatscss "/var/www/awstats/wwwroot/css/"
Alias /awstatsicons "/var/www/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/var/www/awstats/wwwroot/cgi-bin/"


Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from all


reiniciamos el apache2

root@d3ad-laptop:~/Escritorio#/etc/init.d/apache2 restart

ahora vamos a el webmin-> sistema-> awstats-> actualizamos nuestro informe de el boton actualizar.

Y le damos click en Ver

nos debe abrir una web de la siguiente forma.

Y ya solo queda programar la actualizacion automatica para que el informe contenga la mayor cantidad de informacion posible, en horas, dias, semanas, meses.......