VPSs y mas.

viernes, 12 de junio de 2009

NAT en Cisco. 2 ISPs diferentes

Necesidad:
Tener un enlace primario y un enlace secundario en un mismo router con dos proveedores a Internet diferentes.

Escenario(abajo la configuracion detallada y explicada):
Router Cisco 1760 donde:
Interfaz Fastethernet0/0 LAN (IP 172.20.0.1)
Internaz Serial1/0.1 ISP Primario (IP 10.0.0.58)
Internaz Serial0/0.1 ISP Secundario (IP 10.1.1.58)

Diagrama:








Procedimiento:

Primero es necesario configurar unas rutinas en el router que se van a encargar de monitorear las interfaces WAN.

ip sla monitor 1 (deseo monitorar el next-hop del enlace del ISP primario)
type echo protocol ipIcmpEcho 10.0.0.57 source-interface Serial1/0.1
timeout 1000
threshold 400
frequency 3
ip sla monitor schedule 1 life forever start-time now (esta linea es para activar realmente el monitoreo)
ip sla monitor 2 (deseo monitorar el next-hop del enlace del ISP secundario)
type echo protocol ipIcmpEcho 10.1.1.57 source-interface Serial0/1.1
timeout 2000
threshold 1000
frequency 3
ip sla monitor schedule 2 life forever start-time now (esta linea es para activar realmente el monitoreo)
!

Con las lineas arribas indicadas lo que se hace es monitorear si el next hop en el enlace WAN esta levantado. Por ejemplo en el primer caso se hace ping (ipIcmpEcho) al IP 10.0.0.57, con un timeout de 2000 ms, un umbral de 1000 ms cada 3 segundos.


Posteriormente es necesario habilitar los comandos track en Cisco. Estos son muy utiles para conocer luego el estado de los SLA previamente configurados. Los comandos son:

track 123 rtr 1 reachability
delay down 15 up 10
!
track 345 rtr 2 reachability
delay down 15 up 10
!

El truco se encuentra en el NAT (tanto asi que lo anterior se puede hacer con rutas flotantes, sin embargo de la manera implementada es la mejor practica). El NAT debe ser realizado en base a route-maps (no lo intentes de otra manera). Las lineas que personalmente utilice fueron:

ip nat pool POOL-MINAT 200.30.30.30 200.30.30.30 prefix-length 29
ip nat inside source route-map ISP-1 pool POOL-MINAT overload
ip nat inside source route-map ISP-2 interface Serial0/1.1 overload

access-list 150 remark PARA-NAT
access-list 150 permit ip 172.20.0.0 0.0.0.255 any

route-map ISP-1 permit 5
match ip address 150
match interface Serial1/0.1
!
route-map ISP-2 permit 5
match ip address 150
match interface Serial0/1.1


En el ejemplo anterior vemos que el NAT es en base a los route-maps ISP-1 e ISP-2, el ACL a utilizar es el 150 extendido donde estamos nateando toda la red 172.20.0.0/24

Cuando los paquetes salgan por el ISP-1 saldran nateados con el IP 200.30.30.30 y cuando salgan con el ISP-2 saldran con el IP de la interfaz WAN. Logicamente puedes ajustar esto a tu necesidad.

Ahora bien, la ruta de los paquetes de salida son definidas con la siguiente configuracion:

ip route 0.0.0.0 0.0.0.0 Serial1/0.1 track 123
ip route 0.0.0.0 0.0.0.0 Serial0/1.1 track 345

La ruta por default es la interfaz s1/0.1 cuando el IP 10.0.0.57 se encuentre UP, en caso de que se caiga la interfaz y/o el ping al IP 10.0.0.57 NO sea satisfactorio se utilizara la ruta por la interfaz S0/1.1 (enlace secundario)


Verificacion:

1760-WAN#sh track 123
Track 123
Response Time Reporter 1 reachability
Reachability is Up
33 changes, last change 08:27:17
Delay up 10 secs, down 15 secs
Latest operation return code: OK
Latest RTT (millisecs) 11



1760-WAN#sh track 345
Track 345
Response Time Reporter 2 reachability
Reachability is Up
36 changes, last change 3d01h
Delay up 10 secs, down 15 secs
Latest operation return code: OK
Latest RTT (millisecs) 8



1760-WAN#sh ip nat t
[OUTPUT SUPRESSED]




Links de informacion:

http://www.cisco.com/en/US/tech/tk648/tk361/technologies_configuration_example09186a0080950834.shtml
y
http://www.cisco.com/en/US/tech/tk648/tk361/technologies_configuration_example09186a00808d2b72.shtml



Espero haya sido de tu ayuda,

Suerte!,

viernes, 5 de junio de 2009

Tips de Seguridad para Linux

A la hora de instalar un Servidor en Linux, el paso del tiempo me ha dado ciertas experiencia a la hora de ajustar politicas de seguridad. Muchas de ellas van a ayudar a que nuestro servidor se encuentre mas seguro.

A continuacion, comparto varias de las politicas que siempre mantengo en mente a la hora de configurar un servidor.

Siempre despues de instalar un servidor, aprovecho para hacer estos cambios.

1) Con el comando chkconfig, elimino los siguientes daemons:
ppp, bind9 ( a menos que sea un servidor DNS), lwresd, portmap, exim4, netatalk, samba, fam, nfs-common, atd, apache2.

E inclusive, sino son necesarios, los elimino

2) Me aseguro de que el siguiente parametro este en el archivo /etc/security/limits.conf

* hard core 0

3) Asegurarse tambien de que las siguientes lineas esten en el archivo /etc/pam.d/login

session required /lib/security/pam_limits.so

4) Comento la siguiente linea en el archivo /etc/inittab

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

ejm:

#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

5) Las claves deben de expirar cada 90 dias, esto se hace editando el siguiente parametro en /etc/logins.def

MASS_MAX_DAYS 90

6) Elimino las siguientes cuentas (/etc/passwd, /etc/shadow)

games, lp, news, uucp, proxy, irc, gnats, list


7)Cambio el shell por defecto de los siguientes usuarios a /bin/false
bin, daemon, mail, nobody, sync, sys

8) Elimino cualquier informacion que contengan los archivos

/etc/issue
/etc/issue.net

9)Todo los ejecutables que tenga el setuid y setgid, por defecto, ninguno puede ser escrito por el grupo "others"

find / -perm -4000 -exec ls -l {} \;
find / -perm -2000 -exec ls -l {} \;

Ejm
-rwsr-xr-x 1 root root 31640 2008-11-22 11:01 /usr/bin/passwd
||



9) Modifico el parametro a continuacion en el archivo /etc/login.defs:

LOGIN_RETRIES 3

( crear el archivo /var/log/faillog para grabar todo los intentos de acceso)

10) Editamos el archivo /etc/pam.d/common-password y nos aseguramos de que la opcion min=8 este en la configuracion de pam_unix


Estos tips van a ayudar de cierta manera a asegurar el servidor, mas adelante, colocare unas herramientas que van a ayudarnos a realizar tareas sobre el sistema y verificar la integridad del mismo.