====== GNU/Linux ====== Estos materiales se licencian bajo la «Creative Commons Reconocimiento-CompartirIgual License España». Para ver una copia de esta licencia, se puede visitar http://creativecommons.org/licenses/by-sa/3.0/es/ **Autores**: * Pablo Boronat Pérez (Universitat Jaume I) * Miguel Pérez Francisco (Universitat Jaume I) * David Rubert Viana (Universitat Jaume I) ====== Introducción ====== De la wikipedia (http://es.wikipedia.org/wiki/GNU/Linux): «GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux, que es usado con herramientas de sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias libres. A pesar de que Linux es, en sentido estricto, el sistema operativo, parte fundamental de la interacción entre el núcleo y el usuario (o los programas de aplicación) se maneja usualmente con las herramientas del proyecto GNU o de otros proyectos como GNOME. Sin embargo, una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la unión de ambos proyectos.» {{:public:guifinet:cursoinstaladoresguifi2011:gnulinux:gnulinux005logo.jpg|}} Una distribución GNU/Linux se define como un conjunto de programas que permiten tanto la instalación en el ordenador del Sistema Operativo Linux como su uso posterior. Su objetivo es facilitar la instalación, la configuración y el mantenimiento de un sistema GNU/Linux. Integra un núcleo, un conjunto de aplicaciones de sistema y una colección de programas de usuario listos para instalar. Son como los helados que están todos hechos con la misma materia prima y los hay de muchos sabores. Cada sabor será una distribución GNU/Linux. Para más información consultar [[http://www.gnu.org/home.es.html|¿qué es GNU/Linux?]] En este capítulo se presenta de forma práctica cómo configurar un servidor básico para conectarlo a la red guifi.net. Lo que se presenta en este capítulo se centra en la distribución [[http://debian.com|Debian]] (también es válido para [[http://ubuntu.com/|Ubuntu]]) por ser una de las distribuciones más estables y robustas. En otras distribuciones lo que se comenta aquí será igualmente válido aunque pueden variar algunos ficheros de configuración y su localización. Se puede encontrar información sobre cómo instalar Debian en http://www.debian.org/distrib/ y sobre Ubuntu en http://www.ubuntu.com/download. Un servidor puede estar conectado de muchas maneras a guifi.net, a continuación comentamos algunas de ellas: * El servidor está en un supernodo (mikrotik, ALIX, buffalo, ...) * conectado a una de las ethernets del supernodo con una IP pública. * conectado a una de las ethernets del supernodo con una IP privada y en el supernodo se redireccionan puertos al servidor (aquellos en los que se quieran ofertar servicios: 80 para la web, 22 para el ssh, ...). * El servidor está en un nodo cliente (nanostation o similar) * El dispositivo está en modo bridge y la IP pública del nodo cliente la tiene el servidor. El dispositivo tiene una IP administrativa (pública o privada). * El dispositivo está en modo router con una IP pública, el servidor tiene una IP privada y se redireccionan puertos del nodo cliente al servidor. La siguiente imagen muestra cómo se pondría un servidor (tanto en un supernodo como en un nodo cliente) utilizando IPs públicas. {{:public:guifinet:cursoinstaladoresguifi2011:gnulinux:gnulinux030servidorguifiippublica.png?500|}} La siguiente imagen muestra cómo se pondría un servidor (tanto en un supernodo como en un nodo cliente) utilizando IPs privadas. En ambos casos habría que redireccionar los puertos que se quieran ofrecer servicios del nodo guifi.net al servidor. {{:public:guifinet:cursoinstaladoresguifi2011:gnulinux:gnulinux020servidorguifiipprivada.png?500|}} /* FIXME: Explicar cómo se redireccionan puertos en AirOs, RoterOs i GNU/linux */ **Ejercicio 5.1**: Configurar una nano como cliente de un supernodo (utilizando el unsolclic). Modificar la configuración y ponerla en modo bridge con una IP privada y como puerta de enlace el ordenador. ====== Configuración de red ====== ===== Interfaces de red ===== Un equipo Debian puede tener diversas interfaces con una o varias direcciones IP. Las interfaces pueden ser de diferentes tipos: * Loopback: lo * Ethernet: eth0, eth1, ... * Wi-Fi: wlan0, wlan1, ath0, ... * ... El dispositivo de red //loopback// es una interfaz de red virtual. Se utiliza habitualmente la 127.0.0.1 (debe estar en la 127.0.0.0/8). Esta dirección se suele utilizar cuando una transmisión de datos tiene como destino el propio host. También en tareas de diagnóstico de conectividad y validez del protocolo de comunicación. La dirección de loopback crea un método de acceso directo para las aplicaciones y servicios TCP/IP que se ejecutan en el mismo dispositivo para comunicarse entre sí. Al utilizar la dirección de loopback en lugar de la dirección host IPv4 asignada, dos servicios en el mismo host pueden desviar las capas inferiores de la pila de protocolos TCP/IP. También es posible hacer ping a la dirección de loopback para probar la configuración de TCP/IP en el host local. En este enlace, http://www.debian.org/doc/manuals/debian-reference/ch-gateway.es.html, está explicado con detalle todas las posibilidades de configuración de los dispositivos de red en Debian, utilizando los comandos ''ifconfig'' e ''ip''. Las herramientas tradicionales de configuración de red a bajo nivel en sistemas GNU/Linux son los programas ''ifconfig'' y ''route'' que vienen en el paquete ''net-tools''. Estas herramientas han sido oficialmente reemplazadas por ''ip'' que viene en el paquete ''iproute''. El programa ''ip'' funciona con Linux 2.2 y superior y es más potente que las herramientas anteriores. La orden ifconfig sin parámetros muestra la configuración actual de las interfaces de red del sistema. En algunos sistemas GNU/Linux hay órdenes que no se encuentran en el PATH de los usuarios «normales» por lo que para poder ejecutarlos hay que anteponerle la ruta completa, por ejemplo ''/sbin/route -n'' Para asignarle una IP a una interfaz de red se utiliza la siguiente orden: ifconfig eth0 10.228.131.6 netmask 255.255.255.224 Las ordenes que modifican los dispositivos de red o las rutas del sistema se deben ejecutar con permisos de administrador (''root'') de la máquina. En debian un usuario normal se puede transformar en root ejecutando la orden su - la máquina solicitará el password tras lo cual ya se podrán ejecutar ordenes que necesitan privilegios. En ubuntu el usuario root suele estar deshabilitado, pero se les permite a algunos usuarios «normales» realizar tareas administrativas utilizando la orden sudo -i Una interfaz de red puede tener más de una IP asignada, es lo que se conoce como //IP aliasing//. Para darle una segunda IP a una interfaz de red se utiliza la siguiente orden: ifconfig eth0:2 192.168.1.1 netmask 255.255.255.0 /* FIXME: Orden básica cómo poner IP y poner alias con orden ip */ Estas órdenes son validas en cualquier distribución GNU/Linux **Ejercicio 5.2**: Asignar a la interfaz de red conectada a la nanostation una IP privada en el mismo rango que ésta. Definir, mediante un alias, la IP pública de guifi.net asignada al anterior nodo. ===== Rutas ===== Para conocer las rutas del ordenador se utiliza la orden ''route'' sin parámetros. Es conveniente utilizar la opción -n para que nos muestre la información con valores númericos, sin resolver los nombres. $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.228.131.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 2 0 0 eth0 192.168.2.0 0.0.0.0 255.255.255.0 U 2 0 0 eth1 0.0.0.0 10.228.131.1 0.0.0.0 UG 0 0 0 eth0 Muestra que cualquier ordenador en la ''10.228.131.0/27'' se enviará por ''eth0'', igual que para ''192.168.1.0/24''. Los ordenadores en la red ''192.168.2.0/24'' se enviará por ''eth1''. La ruta por defecto (hacia donde se enviará cualquier cosa de una subred a la que el ordenador no está directamente conectado) es el router 10.228.131.1 Para añadir una ruta estática se utiliza la orden route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.228.131.1 que, en este ejemplo, añade una ruta que envía todo lo que vaya dirigido a una red que empiece por ''10.'' hacia el ''10.228.131.1'' (el ordenador debe tener acceso directo al gateway que se pone como destino). Para borrar una ruta estática se utiliza route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.228.131.1 Para poner la ruta por defecto route add default gw 192.168.2.1 Para borrarla route del default gw 192.168.2.1 /* FIXME: Orden básica cómo poner y borrar rutas con la orden ip */ **Ejercicio 5.3**: Poner como ruta por defecto la IP pública del supernodo del ejercicio 5.1. Comprobar si hay otra ruta por defecto y eliminarla. ===== Ficheros de configuración ===== Las órdenes anteriores sirven para establecer «al vuelo» direcciones IP y rutas, al apagar el ordenador se perderán los cambios que se hayan realizado. Para hacer los cambios permanentes en Debian se utiliza el fichero ''/etc/network/interfaces''. A continuación se muestra un ejemplo de un ordenador con dos interfaces, una de ellas con dos IPs y con una ruta estática hacia guifi.net. Las líneas que empiezan por # son comentarios y no se ejecutan. # The loopback network interface auto lo iface lo inet loopback auto eth2 iface eth2 inet static address 150.128.97.38 netmask 255.255.255.0 network 150.128.97.0 broadcast 150.128.97.255 # Ruta por defecto gateway 150.128.97.1 auto eth0 iface eth0 inet static address 10.228.130.162 netmask 255.255.255.248 network 10.228.130.160 broadcast 10.228.130.167 #Ip para el ADSL auto eth0:2 iface eth0:2 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 # gateway 192.168.1.3 # Sólo se debe poner una ruta por defecto # Ruta para guifi.net castellon up route add -net 10.228.0.0/16 gw 10.228.130.161 Al arrancar el ordenador tendremos las siguientes IPs y rutas $/sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:0d:56:11:70:28 inet addr:10.228.130.162 Bcast:10.228.130.167 Mask:255.255.255.248 inet6 addr: fe80::20d:56ff:fe11:7028/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:30082607 errors:0 dropped:0 overruns:0 frame:0 TX packets:20592680 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:4018116822 (3.7 GiB) TX bytes:2866353243 (2.6 GiB) eth2 Link encap:Ethernet HWaddr 00:a0:c9:ca:6e:a6 inet addr:150.128.97.38 Bcast:150.128.97.255 Mask:255.255.255.0 inet6 addr: fe80::2a0:c9ff:feca:6ea6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25315096 errors:0 dropped:0 overruns:0 frame:0 TX packets:15026549 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1839459667 (1.7 GiB) TX bytes:2107618688 (1.9 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1588706 errors:0 dropped:0 overruns:0 frame:0 TX packets:1588706 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4183812501 (3.8 GiB) TX bytes:4183812501 (3.8 GiB) eth0:2 Link encap:Ethernet HWaddr 00:04:23:23:82:e6 inet addr:192.168.1.42 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 $ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.228.130.160 0.0.0.0 255.255.255.248 U 0 0 0 eth0 150.128.97.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.228.0.0 10.228.130.161 255.255.0.0 UG 0 0 0 eth0 0.0.0.0 150.128.97.1 0.0.0.0 UG 0 0 0 eth2 **Ejercicio 5.4**: Crear los ficheros de configuración para aplicar permanentemente la configuración de los ejercicios 5.2 y 5.3. ===== Network manager ===== /* FIXME: network manager.*/ El Network manager es una aplicación gráfica que permite definir la configración de red a través de menús (http://wiki.debian.org/NetworkManager). Suele tener un icono en el escritorio del usuario que permite configurarlo, siempre que se tengan permisos. Utiliza ficheros de configuración independientes a los comentados en los apartados anteriores y se puede indicar qué interfaces puede y cuales no manejar. En servidores con configuraciones de red fijas y estables se puede desinstalar y configurar como se ha explicado anteriormente. ===== Puertos TCP/UDP ===== Según la wikipedia (http://es.wikipedia.org/wiki/Puerto_de_red): «Un puerto de red es una interfaz para comunicarse con un programa a través de una red. Un puerto suele estar numerado. La implementación del protocolo en el destino utilizará ese número para decidir a qué programa entregará los datos recibidos. Esta asignación de puertos permite a una máquina establecer simultáneamente diversas conexiones con máquinas distintas, ya que todos los paquetes que se reciben tienen la misma dirección, pero van dirigidos a puertos diferentes. Los números de puerto se indican mediante una palabra, 2 bytes (16 bits), por lo que existen 65535» Algunos de los puertos están asignados por la IANA (//Internet Assigned Numbers Authority//) a determinadas aplicaciones (aunque se pueden modificar). Se puede consultar los principales puertos en http://es.wikipedia.org/wiki/Anexo:N%C3%BAmeros_de_puerto **Ejercicio 5.5**: Redireccionar los puertos 50 y 52 de la nanostation al servidor. **Ejercicio 5.6 (a entregar)**: Entregar los ficheros de configuración del ejercicio 5.1 con las modificaciones del ejercicio 5.5. Entregar los ficheros de configuración del ejercicio 5.4. ====== Cortafuegos. iptables ====== De la wikipedia (http://es.wikipedia.org/wiki/Netfilter/iptables): «//Netfilter// es un //framework// disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en Linux. El componente más popular construido sobre Netfilter es //iptables//, una herramienta de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros (//logs//). El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de espacio de usuario y bibliotecas. iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el //connection tracking system// o sistema de seguimiento de conexiones, que permite encolar paquetes para que sean tratados desde el espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de Linux actuales.» En http://www.pello.info/filez/firewall/iptables.html se explica con ejemplos qué es un firewall y el funcionamiento de iptables. En estos apuntes sólo se pretende dar un ejemplo de cómo configurar un sencillo cortafuegos para abrir algunos puertos en un servidor conectado a guifi.net y denegar el acceso al resto. A continuación se muestra un ejemplo con comentarios que explican cada una de las órdenes. #!/bin/sh IPTABLES=/sbin/iptables if [ ! -x $IPTABLES ]; then exit 0 fi # 1) Definir la norma por defecto de la tabla filter (la tabla por omisión), en este caso se acepta todo $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT # Se borran todas las reglas anteriores de iptables de la tabla filter $IPTABLES -F # Se borran todas las reglas anteriores de iptables de la tabla nat $IPTABLES -F -t nat #Se hace source nat de todo lo que sale por la interfaz eth0, sale con la IP 10.228.130.162 $IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.228.130.162 #Se acepta todo lo que llega cuyo destino es 10.228.130.162 $IPTABLES -I INPUT -d 10.228.130.162/32 -j ACCEPT #Se acepta todo el tráfico local $IPTABLES -A INPUT -i lo -j ACCEPT # Se aceptan paquetes en estado establecido y relacionado $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Se aceptan los pings $IPTABLES -I INPUT -p icmp -j ACCEPT #Se aceptan conexiones nuevas en los puertos indicados # ssh $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT # smtp $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # DNS, observese que se abre el puerto tanto en TCP como en UDP $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT $IPTABLES -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT # web, http $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # web segura, https $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT # VNC, escritorio remoto $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 5901 -j ACCEPT # NTP, sincronización horaria, se abre en UDP $IPTABLES -A INPUT -p udp --dport 123 -j ACCEPT # Se abre el puerto 1194 de udp, se utiliza para túneles con OpenVPN $IPTABLES -A INPUT -p udp --dport 1194 -j ACCEPT # Se permite el protocolo 89, el que utiliza ospf (no gasta ni TCP ni UDP). $IPTABLES -A INPUT -p 89 -j ACCEPT # Cualquier otra cosa que no se haya aceptado anteriormente se deniega $IPTABLES -A INPUT -j DROP /* FIXME: Ejemplo de fichero. Comentar más detalladamente */ Este fichero puede adaptarse fácilmente a las necesidades de cualquier servidor. Para que este fichero se ejecute al arrancar el ordenador se puede poner (en la distribución Debian o Ubuntu) en el directorio ''/etc/network/if-up.d/'' y darle permisos de ejecución Existen herramientas gráficas para administrar un cortafuegos con iptables, por ejemplo [[https://help.ubuntu.com/community/Gufw|GUFW]] desarrollado por la comunidad Ubuntu y disponible también para Debian. /* FIXME: Herramientas gráficas. Ampliar y poner alguna otra. */ **Ejercicio 5.7 (a entregar, voluntario)**: Crear un fichero de configuracón para permitir el tráfico web, ssh y DNS. ====== Túneles ====== De la wikipedia (http://es.wikipedia.org/wiki/T%C3%BAnel_%28inform%C3%A1tica%29): «Se conoce como túnel al efecto de la utilización de ciertos protocolos de red que encapsulan a otro protocolo. Así, el protocolo A es encapsulado dentro del protocolo B, de forma que el primero considera al segundo como si estuviera en el nivel de enlace de datos. La técnica de tunelizar se suele utilizar para trasportar un protocolo determinado a través de una red que, en condiciones normales, no lo aceptaría. Otro uso de la tunelización de protocolos es la creación de diversos tipos de redes privadas virtuales.» A efectos prácticos, un túnel permite crear un «enlace vitual» (cifrado o no) entre dos nodos, no necesariamente conectados directamente. Una vez creado el túnel los dos nodos disponen de un enlace directo a través de él. En GNU/Linux existen paquetes para prácticamente todos los tipos de túneles. En este apartado nos centraremos en túneles [[http://es.wikipedia.org/wiki/OpenVPN|OpenVPN]] por tratarse de un software libre multiplataforma (disponible en Linux, Openwrt, windows, mikrotik, android, ...) que ofrece cifrado de datos y autenticación de usuarios mediante usuario y contraseña y/o certificados. En este ejemplo se crea un túnel cifrado entre dos máquinas utilizando una clave estática. El servidor suponemos que tiene una IP fija y el cliente no. El cliente mantiene el túnel abierto, de forma que si cambia su IP lo vuelve a abrir. Este montaje es útil cuando se monta una isla guifi.net y es necesario poder entar desde internet, suponiendo que disponemos de una IP estática. Una alternativa es usar un nombre de dominio dinámico (por ejemplo con dyndns). En primer lugar hay que instalar el paquete ''openvpn'': # apt-get install openvpn En el ordenador que actúa como cliente también hay que instalar openvpn. Crear la clave estática en el servidor: # cd /etc/openvpn/ # openvpn --genkey --secret staticVilafranca.key # ls -l total 3 -rw------- 1 root root 636 feb 18 19:48 staticVilafranca.key -rwxr-xr-x 1 root root 1352 sep 18 2008 update-resolv-conf y copiarla mediante ssh (u otro medio seguro) al cliente. En el servidor, crear el fichero ''/etc/openvpn/tunelVilafranca.conf'' (el nombre del fichero puede ser otro, en este caso suponemos que hacemos un túnel con Vilafranca) con el siguiente contenido: dev tunUJI-Vila ifconfig 10.100.1.1 10.100.1.2 secret staticVilafranca.key port 1194 /* FIXME: explicar el contenido del fichero */ Donde ''10.100.1.1'' es la ip del servidor en el túnel y ''10.100.1.2'' la ip del cliente en el túnel. En el cliente hay que crear un fichero ''/etc/openvpn/tunel.conf'' (de nuevo el nombre del fichero puede ser otro) con el siguiente contenido: remote 150.128.97.56 port 1194 dev tunVila-UJI keepalive 10 60 ifconfig 10.100.1.2 10.100.1.1 secret staticVilafranca.key donde ''150.128.97.56'' es la ip pública del servidor. /* FIXME: explicar el contenido del fichero */ Con la instrucción ''port 1194'' se puede indicar otro puerto (por defecto es el 1194). Esto hay que hacerlo tanto en el cliente como en el servidor y hay que poner el mismo en ambos. Los puertos hay que abrirlos en el cortafuegos. ''keepalive 10 60'' es para que automáticamente vuelva a abrir el túnel si no está funcionando. Cada 10Sg hace un ping. Si no contesta durante 60Sg, volverá a abrir el túnel. ''ifconfig 10.100.1.2 10.100.1.1'' indica que ''10.100.1.2'' es la ip del cliente en el túnel y ''10.100.1.1'' la ip del servidor en el túnel (igual que se había indicado en el servidor). Parece que al instalar openvpn ya se pone en el arranque de la máquina. No es necesario hacer nada adicional. Si queremos probar el túnel se puede ejecutar la orden (adaptando el nombre del fichero de configuración): openvpn --config /etc/openvpn/tunelVilafranca.conf En la documentación de OpenVPN dicen que la gran parte de los problemas de los usuarios nuevos de OpenVPN están relacionados con el firewall: «Bear in mind that 90% of all connection problems encountered by new OpenVPN users are firewall-related.» Si no se quiere que el túnel esté cifrado hay que añadir en el fichero de opciones o en la linea de órdenes al ejecutar el túnel: cipher none ===== Enlaces ===== * http://howto.landure.fr/gnu-linux/debian-4-0-etch-en/install-and-setup-openvpn-on-debian-4-0-etch * http://blog.bodhizazen.net/linux/how-to-vpn-using-ssh/ * http://bodhizazen.net/Tutorials/VPN-Over-SSH/ * http://wiki.debian.org/HowTo/openvpn **Ejercicio 5.8**: Crear un túnel entre dos de los servidores del aula. ====== Enrutamiento. Quagga. ====== Si el servidor necesita realizar enrutamiento dinámico hay que instalar el paquete //quagga// que incluye el protocolo OSPF entre otros. # apt-get install quagga En ''/etc/quagga/'' se encuentran los ficheros de configuración. En primer lugar hay que editar ''/etc/quagga/daemons'' e indicar los //duendes// que se han de ejecutar, ''zebra'' es el demonio principal y que coordina al resto. zebra=yes bgpd=no ospfd=yes ospf6d=no ripd=no ripngd=no isisd=no En ''/usr/share/doc/quagga/examples/'' hay ejemplos de configuración de todos los duendes. En el fichero ''/etc/quagga/zebra.conf'' se definen las interfaces, rutas estáticas, ... Las exclamaciones se utilizan para poner comentarios. ! -*- zebra -*- ! ! zebra sample configuration file ! ! $Id: zebra.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $ ! hostname castello.guifi.net password passzebra enable password passzebra123 ! ! Interface's description. ! !interface lo ! description test of desc. ! !interface sit0 ! multicast interface eth0 description interface de la freenet ! Static default route sample. ! !ip route 0.0.0.0/0 10.228.130.161 ! log file /var/log/quagga/zebra.log El fichero ''/etc/quagga/ospfd.conf'' contiene la configuración del duende ''ospfd'', las interfaces y redes con las que hay que intercambiar rutas: ! -*- ospf -*- ! ! OSPFd sample configuration file ! ! hostname castello.guifi.net password passospf enable password passospf127 ! interface eth0 router ospf ! network 0.0.0.0/0 area 0 network 10.228.130.160/29 area 0 network 10.228.130.176/29 area 0 ! !log stdout log file /var/log/quagga/ospf.log ===== Dispositivos wireless en modo bridge ===== Cuando se utilizan dispositivos wireless en modo bridge pueden haber problemas con los mensajes multicast, en http://wiki.quagga.net/index.php/Main/FAQ#QQuestions11 se explica cómo solventarlo. En los mikrotiks trabajando con dispositivos en modo bridge también hay que especificarlo. http://wiki.mikrotik.com/wiki/Manual:Routing/OSPF#NBMA_Neighbor http://wiki.mikrotik.com/wiki/OSPF-examples http://wiki.mikrotik.com/wiki/Manual:Multicast_detailed_example#Multicast_and_Wireless ===== Firewall ===== Como se ha explicado anteriormente hay que abrir el protocolo 89 (el ospf): $IPTABLES -A INPUT -p 89 -j ACCEPT ===== Posibles problemas ===== Si una interfaz esta definida con una máscara en ''/etc/network/interfaces'' y en ''/etc/quagga/ospfd.conf'' ponemos otra máscara, el demonio ospf no reconoce esa interfaz y no la utiliza. ===== Enlaces ===== * http://www.quagga.net/ * http://wiki.quagga.net/index.php/Main/FAQ * http://openmaniak.com/quagga_tutorial.php * http://infolinux.wordpress.com/2007/05/25/instalando-quagga-en-ubuntu/ * http://wiki.quagga.net/index.php/Main/TipsNTricks /* FIXME: Comentar con más detalle los distintos ejemplos */ **Ejercicio 5.9**: Activar el enrutamiento dinámico con OSPF en el servidor. ====== Logs, mensajes del sistema. ====== El sistema de //logs// o //registros// de GNU/Linux es el mecanismo que se encarga de almacenar los mensajes generados por las aplicaciones. En cada mensaje consta qué programa lo generó, la prioridad y la fecha y hora en que se produjo. Los ficheros de log en un sistema linux, se encuentran habitualmente en el directorio ''/var/log'' o en algún directorio dentro de éste. El sistema de logs arranca con el script ''/etc/init.d/sysklogd'', el demonio que realiza los registros es ''syslogd'' que se configura mediante el fichero ''/etc/syslog.conf'', donde se indica qué se quiere registrar y a dónde se deben enviar los logs. Los archivos más importantes son: * ''/var/log/messages'': donde se almacenan todos los mensajes con prioridad ''info'' (información), ''notice'' (notificación) o ''warn'' (aviso). Es uno de los ficheros en los que primero se mira cuando hay algún problema. * ''/var/log/kern.log'': almacena los logs del kernel. * ''/var/log/dmesg'': almacena la información que genera el kernel durante el arranque del sistema. Se puede ver su contenido con la orden ''dmesg''. Para ver el contenido (total o parcial) de alguno de estos ficheros se pueden utilizar alguna de las siguientes ordenes: cat /var/log/messages less /var/log/messages tail /var/log/messages /* FIXME: explicar con detalle */ Los archivos de log suelen crecer mucho ya que en ellos se está guardando información continuamente. Por ello, existe una aplicación, ''logrotate'' (configurable a través del fichero ''/etc/logrotate'') que, si los ficheros de log son muy grandes, los comprime y aplica una rotación a los archivos (añadiéndoles la extensión .1.gz, .2.gz, etc.), volviendo a crear uno vacío (cuanto mayor es el número más antiguo es el log). /* FIXME: revisar */ Existen aplicaciones gráficas para supervisar los logs, por ejemplo KSystemLog, GNOME-System-Log, Xlogmaster y Xwatch. ===== Enlaces ===== * http://www.estrellateyarde.org/so/logs-en-linux **Ejercicio 5.10**: Mirar el contenido del fichero ''/var/log/messages''. Mirar la información que contiene. Ejecutar la orden ''dmesg''. ====== Copias de seguridad y restauración del sistema ====== Es importante mantener copias del sistema para poder restaurarlo ante una posible perdida de datos. En barrapunto hay una interesante discusión sobre opciones de copias de seguridad para pequeñas empresas: http://preguntas.barrapunto.com/preguntas/11/04/19/0911229.shtml En cualquier caso es importante que se realicen copias de los siguientes directorios: * ''/home'' contiene las carpetas personales de los usuarios. * ''/root'' contiene el directorio personal del usuario root. * ''/etc'' contiene archivos de configuración del sistema. * ''/var'' contiene archivos variables, tales como logs, archivos spool, bases de datos, archivos de e-mail temporales, y algunos archivos temporales. Pueden excluirse los directorios ''/var/cache'', ''/var/spool'' y ''/var/tmp''. Para que la copia no sea excesivamente grande se pueden excluir ficheros del tipo: ''*.o'', ''*~'', ''*.mp3'', ''*.ogg'', ''*.avi'', ''*.mpg'', ''*.mkv'', ''*.iso''. Antes de realizar la copia es conveniente parar los servicios: apache2, postgresql, mailman, ... para que no modifiquen los ficheros mientras se está realizando la copia. También es aconsejable guardar la lista de paquetes instalados en el sistema: dpkg --get-selections | diff - /root/dpkg-selections.log > /dev/null || dpkg --get-selections > /root/dpkg-selections.log todo esto puede automatizarse utilizando algún paquete especializado como ''backup2l''. Las copias se deben almacenar en un lugar distinto al del servidor. Se puede también enviar por guifi.net (o internet) a un servidor remoto utilizando, por ejemplo, ''rsync'' y ''ssh''. /* FIXME: Ampliar */ ====== Enlaces ====== http://www.debian.org/doc/index.es.html http://wiki.debian.org/es/FrontPage?action=show&redirect=es http://www.debian.org/doc/manuals/reference/ ===== Otros enlaces interesantes ===== * http://www.debian.org/doc/manuals/debian-faq/ * http://wiki.debian.org/es /* ===== Otros ===== * http://www.debian.org/doc/manuals/reference/ 3.1.9 Máquinas IP para usar en una LAN * http://wiki.debian.org/SystemMonitoring (para el tema de monitorización). * http://www.debian.org/doc/manuals/securing-debian-howto/index.en.html */ /* **Ampliación**: * calidad de servicio. * Wireless. * Puentes, VLANs, */