Redes

0 5287

Mediante el sistema de IP’s virtuales podemos asignar varias direcciones IP a una misma interfaz de red física. A continuación vamos a realizarlo en sistemas Red Hat.

En la ruta /etc/sysconfig/network-scripts encontramos los archivos de configuración de cada una de las interfaces de red del sistema.

ls -l /etc/sysconfig/network-scripts/ifcfg-*
-rw-r--r-- 3 root root 201 Jul  7 16:01 /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-rw-rw- 3 root root 178 Jul  7 16:00 /etc/sysconfig/network-scripts/ifcfg-eth1
-rw-r--r-- 1 root root 254 Sep 24  2008 /etc/sysconfig/network-scripts/ifcfg-lo

En este caso, queremos que la interfaz de red eth0 contenga una IP virtual además de la IP principal de la misma, simplemente tenemos que crear un nuevo archivo de configuración, llamado ifcfg-eth0:0 (IP’s virtuales sucesivas serán ifcfg-eth0:1, ifcfg-eth0:2, …). El contenido del archivo será el mismo que el de ifcfg-eth0, pero con las siguientes modificaciones:

ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:22:7e:3c:3b:12
IPADDR=192.168.1.10
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=192.168.1.254
TYPE=Ethernet

ifcfg-eth0:0

DEVICE=eth0:0
BOOTPROTO=static
HWADDR=00:22:7e:3c:3b:12
IPADDR=192.168.1.11
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=192.168.1.254
TYPE=Ethernet

Puedes notar que modificamos la IP, por la IP virtual, y el campo DEVICE también lo modificamos poniendo el nuevo identificador (eth0:0) , todos los démas campos siguen siendo los mismos, con los mismos valores.

Una vez que terminamos de editar el archivo de configuración de la IP virtual, reiniciamos el servicio de red para que levante la nueva IP virtual:

# /etc/init.d/network restart

La nueva IP virtual, ya debería de responder al ping.

Fuente: http://rm-rf.es/asignar-ip-virtual-linux/

10 5023

En un post anterior vimos muy por encima la configuración de un servidor de DNS que trabaje de forma local en nuestra red o computadora, ahora veremos más a fondo las características de un servidor de DNS.

Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.

BIND (Berkeley Internet Name Domain) es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad.

La estructura básica del DNS es similar a un árbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel.

Jerarquía DNS

El espacio de nombres de dominio tiene una estructura arborescente. Un nombre de dominio completo de un objeto consiste en la concatenación de todas las etiquetas de un camino.
Las etiquetas deben contar con al menos un carácter y un máximo de 63 caracteres de longitud.
Las etiquetas individuales están separadas por puntos.
Un nombre de dominio termina con un punto (aunque este último punto generalmente se omite, ya que es puramente formal).
Un nombre de dominio debe incluir todos los puntos y tiene una longitud máxima de 255 caracteres.
Un nombre de dominio se escribe siempre de derecha a izquierda. El punto en el extremo derecho de un nombre de dominio separa la etiqueta de la raíz de la jerarquía (en inglés, root). Este primer nivel es también conocido como dominio de nivel superior (TLD).
Los objetos de un dominio DNS (por ejemplo, el nombre del equipo) se registran en un archivo de zona, ubicado en uno o más servidores de nombres.

Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.

Por ejemplo: “www.ejemplo.com”. Leyéndolo de derecha a izquierda tenemos un dominio primario (“COM”), un dominio secundario (“EJEMPLO”) y el nombre del host (“WWW”). Algunos dominios primarios son:

org – Organizaciones no lucrativas.
com – Organizaciones lucrativas.
net – Organizaciones en Internet.
gob – Agencias gubernamentales en latinoamérica.
mx – Sufijo de México.
es – Sufijo de España.

800px-DNS_arbol.svg

Tipos de servidores DNS

  • Primarios: Guardan los datos de un espacio de nombres en sus ficheros
  • Secundarios: Obtienen los datos de los servidores primarios a través de una transferencia de zona.
  • Locales o Caché: Funcionan con el mismo software, pero no contienen la base de datos para la resolución de nombres. Cuando se les realiza una consulta, estos a su vez consultan a los servidores secundarios, almacenando la respuesta en su base de datos para agilizar la repetición de estas peticiones en el futuro.

Tipos de registros

Para ofrecer suficiente flexibilidad en la configuración, se pueden declarar diversos tipos de registros, que hacen referencia a la función del host. A continuación veremos los más importantes.

  • A (Address). Es el registro más usado, que define una dirección IP y el nombre asignado al host. Generalmente existen varios en un dominio.
  • MX (Mail eXchanger). Se usa para identificar servidores de correo, se pueden definir dos o más servidores de correo para un dominio, siendo que el orden implica su prioridad. Debe haber al menos uno para un dominio.
  • CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP válida y que responde a diversos nombres. Pueden declararse varios para un host.
  • NS (Name Server). Define los servidores de nombre principales de un dominio. Debe haber al menos uno y pueden declararse varios para un dominio.
  • SOA (Start Of Authority). Este es el primer registro de la zona y sólo puede haber uno en cada archivo de la zona y sólo está presente si el servidor es autoritario del dominio. Especifica el servidor DNS primario del dominio, la cuenta de correo del administrador y tiempo de refresco de los servidores secundarios.

Configuración

Veamos como configurar BIND9 para disponer de un servidor DNS en una intranet, que resuelva dominios internos. Por ejemplo, en la intranet se utilizaran dominios que terminen en “k4ch0.net” como “hercules.k4ch0.net” ó “leonidas.k4ch0.net”
El servidor DNS se encargará de resolver esos dominios en sus respectivas IPs, además de resolver otros dominios de Internet como “google.com”.

Instalamos BIND9 y nos desplazamos a su directorio de configuración:

# aptitude install bind9
# cd /etc/bind/

Editamos el archivo named.conf.local y añadimos la zona “k4ch0.net”, haciendo referencia a su fichero de configuración:

zone "k4ch0.net" {
type master;
file "/etc/bind/db.k4ch0";
};

Creamos el fichero de configuración “db.k4ch0.net” a partir del archivo “db.local”:

# cp db.local db.k4ch0

Editamos “db.k4ch0”, reemplazamos la palabra “localhost” por “k4ch0.net”, cambiamos la IP “127.0.0.1” por la que queramos asignar al dominio y añadimos al final del fichero todos los A, MX y CNAME que queramos, quedando:

; BIND data file for local loopback interface
$TTL    604800
@   IN  SOA k4ch0.net. root.k4ch0.net. (
1            ; Serial
604800     ; Refresh
86400       ; Retry
2419200    ; Expire
604800 )   ; Negative Cache TTL
@           IN      NS          k4ch0.net
@           IN      A           192.168.1.64
@           IN      MX      0   k4ch0.net
www       IN      A           192.168.1.64
hercules   IN      CNAME     k4ch0.net

En este ejemplo vemos primeramente el dominio a resolver, “k4ch0.net.” y el segundo es la cuenta de correo del administrador, “root.k4ch0.net.” (sustituyéndo el primer punto por arroba, lo que dejaría “root@k4ch0.net”).
Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este. El resto de los parámetros son:

Serial: es un identificador del archivo, puede tener un valor arbitrario pero se recomienda que tenga la fecha con una estructura AAAA-MM-DD y un consecutivo.
Refresco: número de segundos que un servidor de nombres secundario debe esperar para comprobar de nuevo los valores de un registro.
Reintentos: número de segundos que un servidor de nombres secundario debe esperar después de un intento fallido de recuperación de datos del servidor primario.
Expiración: número de segundos máximo que los servidores de nombre secundarios retendrán los valores antes de expirarlos.
TTL mínimo: Significa Time To Live y es el número de segundos que los registros se mantienen activos en los servidores NS caché antes de volver a preguntar su valor real.

Cada vez que se cambia la configuración de BIND9, debemos reiniciar el demonio:

# /etc/init.d/bind9 restart

Para que nuestra máquina utilice el servidor de DNS que hemos configurado, debemos editar el archivo /etc/resolv.conf y agregamos la línea:

nameserver 127.0.0.1

Se debería hacer lo mismo con el resto de máquinas de la intranet que vayan a utilizar el servidor, con la única diferencia que habrá que substituir la IP 127.0.0.1 por la IP que tenga el servidor dentro de la red local.

Para comprobar el correcto funcionamiento, utilizamos el comando “host” el cual sirve para resolver dominios:

$ host k4ch0.net
k4ch0.net has address 192.168.1.64
k4ch0.net mail is handled by 0 k4ch0.net

Y listo!!! tendremos nuestro servidor de DNS local funcionando.

El tener un sistema de cache de DNS en nuestra red, o incluso en nuestra propia PC nos permite acelerar el proceso de navegación. El proceso por el cual nosotros leemos cualquier pagina web se puede simplificar en dos partes:

  1. Obtener la dirección IP del recurso o página web
  2. Obtener el recurso (Descargar la página) para su visualización.

Un DNS cache nos permite optimizar la primera de las dos anteriores.

Para instalar un servidor DNS Cache puedes elegir varias opciones, desde montarte uno propio con python, o instalar uno de los muchos existentes.

El que yo uso es Bind9, que por cierto es el mas pesado de todos pero a la vez el mas funcional.

Para instalarlo en Debian y Ubuntu solo necesitas hacer:

$ sudo aptitude install bind9

Para instalarlo en Archlinux basta con hacer

$ sudo pacman -Sy bind9

Luego solo nos queda editar sus opciones generales

$ sudo vi /etc/bind/named.conf.options

options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below.  Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.
// 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 {
200.48.225.130;
200.48.225.146;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

La única parte que debemos modificar, es la de:

forwarders {
200.48.225.130;
200.48.225.146;
};

Ahí debemos incluir los DNS que usamos con nuestros proveedor de internet o en su defecto los de opendns.

Para iniciar el servicio en Debian y Ubuntu hacemos:

$ sudo /etc/init.d/bind9 start

Y para Archlinux es:

$ sudo /etc/rc.d/bind9 start

Ahora el único paso que falta es comenzar a usarlo y tenemos que configurar nuestro gestor de redes, en este caso Wicd.

En el cual le damos click en la pestaña Preferences, y escogemos la opción "Usar DNS Globales" y ahí agregamos la IP donde se encuentra nuestro Servidor DNS, en este caso 127.0.0.1 es la IP de nuestra maquina.

DNS local

Ó también podemos modificar los DNS en el archivo /etc/resolv.conf editandolo con la siguiente linea:

nameserver 127.0.0.1

Espero sea de utilidad.

9 4911

El objetivo de este pequeño tutorial es tener un equipo que filtre el contenido de internet hacia nuestra red local, aparte de eso debemos dicho equipo se encargara de routear los paquetes para acceder a internet por medio de él.

Nota: Las ips de la red local son del tipo: 192.168.50.x y el equipo que hará de router tendrá dos interfaces de red, eth0: 189.204.25.132 y eth1: 192.168.50.254

Requerimientos:

  • Equipo con GNU/Linux instalado (Debian)
  • Equipo con dos (2) tarjetas de red
  • Conexión a internet

Instalación:

Instalamos los programas que vamos a necesitar para hacer el trabajo:

# apt-get install iptables squid dansguardian dhcp3-server

Configuración del servidor DHCP (dhcp3-server)

Para configurar dhcp3-server debemos de editar el archivo localizado en: /etc/dhcp3/dhcpd.conf

#
# Sample configuration file for ISC dhcpd for Debian
#
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.50.0 netmask 255.255.255.0 {
range 192.168.50.10 192.168.50.50;
option domain-name-servers 200.57.64.67;
option domain-name-servers 200.85.0.107;
option domain-name “k4ch0.net”;
option routers 192.168.50.254;
option broadcast-address 192.168.50.255;
default-lease-time 600;
max-lease-time 7200;
}

Explicación:
Con esta configuración, lo que estamos haciendo es que el servidor DHCP se encargara de asignar IP’s de manera dinámicas que entren en el rango 192.168.50.10 – 192.168.50.50, con una máscara de red 255.255.255.0, y Servidores DNS 200.57.64.67 y 200.85.0.107, una puerta de enlace definida en la IP 192.168.50.254 y un broadcast de 192.168.50.255.

Configuración del Servidor Proxy (squid)

Procedemos a editar el archivo /etc/squid/squid.conf

visible_hostname proxy
http_port 3128 transparent
#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?
#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
# Apache to signal ETag correctly on such responses
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
# To log the request via syslog specify a filepath of “syslog”
access_log /var/log/squid/access.log squid
#Default: hosts_file /etc/hosts
hosts_file /etc/hosts
#Suggested default:
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern .		0	20%	4320
#Recommended minimum configuration:
acl red_local src 192.168.0.0 192.168.50.0/255.255.255.0 #agregamos nuestras redes
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631Â # cups
acl Safe_ports port 873Â # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
# Only allow cachemgr access from localhost
http_access allow red_local #damos acceso a nuestras redes
http_access allow localhost
http_access allow manager localhost
http_access deny manager
http_access deny all
# Only allow purge requests from localhost
http_access allow purge localhost
http_access deny purge
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#http_access allow our_networks
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# and finally allow by default
http_reply_access allow all
#Allow ICP queries from everyone
icp_access allow all
#TAG: cache_effective_group
#If you want Squid to run with a specific GID regardless of
#the group memberships of the effective user then set this
#to the group (or GID) you want Squid to run as. When set
#all other group privileges of the effective user is ignored
#and only this GID is effective. If Squid is not started as
#root the user starting Squid must be member of the specified
#group.
#cache_effective_group proxy
# Nota: debemos de crear un usuario squid y un grupo squid
#agregamos el usuario y el grupo con que va a trabajar
cache_effective_user squid
cache_effective_group squid

Y con eso ya tenemos configurado squid en nuestro equipo.

Configuración de Dansguardian

Ahora nos dedicamos a configurar Dansguardian, /etc/dansguardian/dansguardian.conf y lo primero es comentar o borrar esta linea:

#UNCONFIGURED - Please remove this line after configuration 😀

Luego continuamos:

reportinglevel = 0
language = "spanish"
loglocation = "/var/log/dansguardian/access.log"
filterip = 192.168.50.254 #La IP de la interfaz en la que el Dansguardian escuchará!
filterport = 8080 #El puerto en el que trabajara Dansguardian
proxyip = 192.168.50.254
proxyport = 3128 #El puerto en el que funciona Squid

Importante definir las listas de “cosas” prohibidas, como formatos de archivos, urls y demás, aunque estas opciones por defecto vienen activadas al igual que otras más.

bannedextensionslist = "/etc/dansguardian/bannedextensionslist"
bannediplist = "/etc/dansguardian/bannediplist"
banneduserlist = "/etc/dansguardian/banneduserlist"

Evito hacer mención de un montón de opciones mas que cada quien puede configurar a su gusto en dichos archivos de configuración al igual que la utilización de blacklists adicionales, pero como ejemplo nos descargarnos la blacklist de http://urlblacklist.com/ y la descomprimimos en /etc/dansguardian/

Y con esto estará configurado Dansguardian.

Configuración de Iptables

A continuación va es script con iptables que funciona para bloquear puertos y redireccionar el trafico.

#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.50.254"
# Interface connected to Internet
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth1"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables table nat append POSTROUTING out-interface $INTERNET -j MASQUERADE
iptables append FORWARD in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka #transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp dport 80 -j DNAT to $SQUID_SERVER:8080
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp dport 80 -j REDIRECT to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

Lo guardamos proxy.sh y le asignamos permisos de ejecucion

# chmod +x proxy.sh

para correrlo seria

#sh proxy.sh

Y con esto tenemos configurado nuestro proxy web transparente con dhcp3-server + squid + dansguardian + iptables.

Espero les sirva, cualquier corrección pueden mandarme un correo a la dirección: lcacho [at] k4ch0.net

2 2102

En esta ocasión voy a hablar de wicd, un administrador de nuestras conexiones de red, un poco parecido al Network-Manager.

Lo que vamos a hacer para instalarlo en ArchLinux es:

1.- Instalamos el programa que está en los repositorios:

# pacman -S wicd

2.- Instalamos los programas extras que necesita:

# pacman -S dhclient wpa_supplicant hicolor-icon-theme

3.- Editamos el archivo /etc/rc.conf y en la linea donde estan nuestros demonios le ponemos:

DAEMONS (... !network ... wicd ...)

4.- Finalmente agregamos a nuestro usuario al grupo network:

# gpasswd -a usuario network

Para comenzarlo a usar basta con que reinicimos los demonios de red y el demonio de wicd:

# /etc/rc.d/network restart
# /etc/rc.d/wicd restart

Y listo, a disfrutar!!!!