Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 2 de 34 ndice Capitulo 1: Instalacin 1.1 Conocimientos previos 3 1.2 Requisitos de Hardware 3 1.3 Instalacin 3 Capitulo 2: Router bsico 2.1 Configuracin de red al arranque 5 2.2 Grupo de trabajo 6 2.3 Paquetes, paquetes y mas paquetes... 6 2.4 Acceso Remoto usando SSH 8 2.5 Dhcp3, servidor DHCP 10 2.6 Primer encuentro con IPTABLES (Solo SNAT) 12 Capitulo 3: Router Avanzado 3.1 Segundo encuentro con IPTABLES (Seguridad y polticas de filtrado) 14 3.2 Servidor DNS Primario con Bind9 16 3.3 Apache 2, servidor WEB con Host Virtuales 19 3.4 Squid, proxy de red 20 Capitulo 4: Utilidades y Accesorios 4.1 Montar carpetas compartidas en red de Windows en Linux 23 4.2 Crear carpetas compartidas en Linux para ver desde Windows 23 4.3 Servicio de descargas por Torrent 24 4.4 Estadsticas de Hardware 29 4.5 Estadsticas web 29 4.6 Monitor de Temperaturas 31 Capitulo 5: Fuentes y Agradecimientos Fuentes y Agradecimientos 34 Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 3 de 34 Capitulo 1: Instalacin 1.1 Conocimientos Previos La gua apunta a estudiantes de telecomunicaciones con inters en Linux y redes IP, muestra ejemplos de configuraciones bsicas con aplicaciones tpicas y en funcionamiento. Lo que la hace diferente a otras guas disponibles en Internet es que explico paso a paso como se hace, algunos de los posibles problemas que pueden aparecer con sus respectivas soluciones y consejos que me facilitaron la instalacin. En esta gua no se explica en detalle la teora de redes ni mucho menos los comandos de Linux, por lo que se necesita mnimos conocimientos de Linux, uso bsico de consola, crear archivos de texto, guardarlos, editarlos, copiarlos, etc. y por parte de redes, los fundamentos tericos y aplicaciones. Los temas que se excluyen en esta gua se encuentran con facilidad en Internet o en otras guas. 1.2 Requisitos de Hardware Lo bueno de esta gua es que esta orientada a trabajar completamente en consola, se puede instalar un entorno grafico mnimo para facilitar las configuraciones, pero no es necesario. Si solo usamos la consola podemos instalar Ubuntu en maquinas muy chicas. Lo que normalmente se recomienda es: Procesador de 500 Mhz 128 Mb de RAM 2 GB de disco 2 Placas de Red Lector de CD solo para la instalacin Lgico que con una maquina de esas caractersticas no vamos a poder atender muchas computadoras, pero nos sobra para aprender y atender unos 10 usuarios o algunos ms. Si conseguimos una PC un poco ms potente, podemos darnos el lujo de instalar un entorno grafico para facilitar las configuraciones. Se que mucha gente no esta de acuerdo en esto, pero a muchos les resulta muy incomodo usar siempre la consola, a ellos les recomiendo ir familiarizndose de a poco con la consola seguro les va a resultar extremadamente til al cavo de unos captulos y mas aun cuando usemos SSH. La computadora que estoy usando en este momento es: Procesador: Intel Atom 330 (64 bits, doble ncleo @1,6 Ghz) Placa madre: Intel D945GCLF2 Memoria: 1 GB DDR2 677 Disco: 250 GB SATA 2 Soporta perfectamente un entorno grafico y sobra procesador para es uso de mi red. Para que tengan una idea del trfico en mi red les paso este dato: En 18 das la interfase que me conecta a Internet: Recibi: 40 Gb Envo: 7 Gb No es mucho si lo comparamos con una gran red, pero sirve para empezar. 1.3 Instalacin La instalacin es bastante sencilla y amigable, basta con solo bootear desde el CD-ROM que podemos obtener de la pgina oficial de Ubuntu para inicial el proceso de instalacin. Durante el proceso se preguntan datos bsicos, solo voy a explicar los ms importantes o los que ms hacen renegar. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 4 de 34 Una de las partes donde suelen generarse problemas es en el particionado del disco. No soy un experto en Linux pero la forma que siempre me gusto hacer las particiones es la siguiente: Tamao Descripcin Punto de montaj e Formato 100 Mb Particin para boot /boot ext4 1 Gb rea de intercambio (Swap) no se monta el sistema se encarga del formato 20 Gb Raz (/) / ext4 10 Gb Home /home ext4 Un esquema del disco seria: 100 Mb /boot 1 Gb Swap 20 Gb / 10 Gb / home Si tienen un disco mas grande pueden hacer mas grande la particin /, o si son mas organizados, crean mas particiones para distintas aplicaciones. Lo mas fcil es hacer una particin / bien grande pero un gur de Linux no estara de acuerdo. Continuando con la instalacin, los pasos siguientes son simples, solo voy a destacar los paquetes a instalar. En el mismo CD de Ubuntu se encuentran muchos de los programas que necesitamos para nuestro servidor y el proceso de instalacin nos pregunta cuales de una pequea lista de paquetes queremos instalar. Los que se usan para esta gua son solo los siguientes: DNS Server (Bind9) LAMP Server (LAMP, significa: Linux + Apache2 + MySQL + PHP) OpenSSH Server Samba file server Luego con unos simples pasos ms se completa la instalacin. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 5 de 34 Capitulo 2: Router bsico 2.1 Configuracin de red al arranque Lo que vamos a hacer es que las configuraciones de las placas de red se carguen al arrancar el sistema, podemos usar DHCP, Estticas o PPPoP. Mi servidor usa 2 placas, para diferncialas las voy a llamar WAN a la interfase que me conecta a Internet y LAN a la interfase que conecta a mi red LAN: WAN (eth1, configurada para ser cliente DHCP) LAN (eth0, configurada esttica) Consej o para los que se inician en Ubuntu: Todos los comandos de esta gua se deben ejecutar con permisos de root, para hacer eso tenemos dos simples opciones: 1. anteponer la palabra sudo antes de cada comando 2. logearse como root antes de empezar a trabajar (esto se hace con el comando sudo su) Recomiendo la segunda opcin por ser ms practica, porque son muchos comandos los que se van a usar. Editamos: nano /etc/network/interfaces Agregando: # WAN: auto eth1 iface eth1 inet dhcp # LAN: auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 # muestro como seria una WAN ESTATICA # tengan en cuenta que usamos DHCP STATIC # no las dos configuraciones al mismo tiempo # ESTO ES UN EJEMPLO auto eth1 iface eth1 inet static address 192.168.110.229 netmask 255.255.255.0 network 192.168.110.0 broadcast 192.168.110.255 gateway 192.168.110.1 # Con Solo agregar el gateway ya tenes la WAN # configurada! Reiniciamos los servicios de red: /etc/init.d/networking restart Si vemos un error es porque escribimos mal algo (por ejemplo: addres, en ves de address), ahora ya podemos apagar nuestro equipo y no perderemos la configuracin. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 6 de 34 Muestro el archivo de configuracin final: /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # WAN: auto eth1 iface eth1 inet dhcp # LAN: auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 2.2 Grupo de trabajo Editar la configuracin de Samba para poner el servidor en el mismo Grupo de trabajo que la red de Windows nano /etc/samba/smb.conf Buscar las lneas y editarlas a gusto: # Change this to the workgroup/NT-domain name your Samba server will part of workgroup = mi_grupo_detrabajo # server string is the equivalent of the NT Description field server string = %h server (Samba, Ubuntu) Guardar el archivo y reiniciar Samba para que los cambios tengan efecto: sudo /etc/init.d/samba restart 2.3 Paquetes, paquetes y mas paquetes... Al no tener entorno grafico nos puede ser til esta informacin por si necesitamos instalar o borrar paquetes cuyo nombre no conocemos. Instalacin, pongan un CD de Ubuntu en la lectora y hagan: mount /dev/cdrom /cdrom apt-cache search (nombre o descripcin del paquete que necesito, por ejemplo linux-source) apt-get install (nombre del paquete, por ejemplo: linux-ports-source-2.6.25) umount /dev/cdrom Desinstalacin dpkg l | grep (nombre o descripcin de lo que quiero borrar, por ejemplo: dns) apt-get remove (nombre del paquete, por ejemplo: dnsmasq-base) Deshabilitarlos de Inicio update-rc.d -f avahi-daemon remove Me arrepent, Habilitarlos de nuevo: update-rc.d avahi-daemon defaults Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 7 de 34 Activar los Repositorios restricted, universe y multiverse (MUY TILES) sudo nano /etc/apt/sources.list Agregar al archivo y guardar: deb http://archive.ubuntu.com/ubuntu/ jaunty jackalope restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ jaunty jackalope restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ jaunty jackalope main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ jaunty jackalope main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jaunty jackalope main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu jaunty jackalope main restricted universe multiverse Estas lneas suelen estar comentadas en el archivo, si las encuentran comentadas borren el # al principio de la lnea y no hace falta que agreguen nada. Actualizamos la lista, este paso es fundamental y se hace cada ves que modificamos la lista anterior, no se lo olviden sino no funciona: apt-get update Puede tardar unos minutos, pero no ms que 5 minutos, en general es rpido. Muestro el archivo de configuracin final: /etc/apt/sources.list # #deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic main restricted #deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://ar.archive.ubuntu.com/ubuntu/ karmic main restricted deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates main restricted deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://ar.archive.ubuntu.com/ubuntu/ karmic universe deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic universe deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates universe deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://ar.archive.ubuntu.com/ubuntu/ karmic multiverse deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic multiverse deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates multiverse deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates multiverse ## Uncomment the following two lines to add software from the 'backports' ## repository. ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 8 de 34 ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://ar.archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. deb http://archive.canonical.com/ubuntu karmic partner deb-src http://archive.canonical.com/ubuntu karmic partner deb http://security.ubuntu.com/ubuntu karmic-security main restricted deb-src http://security.ubuntu.com/ubuntu karmic-security main restricted deb http://security.ubuntu.com/ubuntu karmic-security universe deb-src http://security.ubuntu.com/ubuntu karmic-security universe deb http://security.ubuntu.com/ubuntu karmic-security multiverse deb-src http://security.ubuntu.com/ubuntu karmic-security multiverse 2.4 Acceso Remoto usando SSH La idea es que podamos acceder a nuestro servidor desde cualquier maquina de la LAN a la que provee servicios, tambin se puede hacer que podamos acceder a l desde cualquier red pero no es lo que me interesa ahora. Instalamos el servidor SSH: apt-get install openssh-server Editamos su configuracin: nano /etc/ssh/sshd_config Modificando las lneas sealadas: lnea 8 ListenAddress 192.168.1.1 El servidor puede escuchar en muchas direcciones IP, agreguen las que necesiten, por ejemplo: ListenAddress 192.168.1.1 ListenAddress 192.168.0.3 ListenAddress 192.168.10.8 Reiniciamos el servidor: /etc/init.d/ssh restart Para acceder hacemos: desde un cliente Linux: ssh nombre del usuario remoto@IP del servidor, por ejemplo: ssh gerardo@192.168.1.1 desde un cliente Windows: utilizamos PuTTY, y seleccionamos en el tipo de conexin: SSH. PuTTY es libre y se puede bajar de: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Host Name (or ip address): 192.168.1.1 Port: 22 Muestro el archivo de configuracin final: /etc/ssh/sshd_config # Package generated configuration file # See the sshd(8) manpage for details # What ports, IPs and protocols we listen for Port 22 Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 9 de 34 # Use these options to restrict which interfaces/protocols sshd will bind to ListenAddress 192.168.1.1 ListenAddress 192.168.0.3 #ListenAddress 0.0.0.0 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key #Privilege Separation is turned on for security UsePrivilegeSeparation yes # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes # Kerberos options #KerberosAuthentication no #KerberosGetAFSToken no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes #UseLogin no #MaxStartups 10:30:60 #Banner /etc/issue.net Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 10 de 34 # Allow client to pass locale environment variables AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes 2.5 Dhcp3, servidor DHCP Instalamos el servidor: apt-get install dhcp3-server Editamos el archivo de configuracin: nano /etc/default/dhcp3-server Agregamos a la lnea 11 la interfase que dar el servicio DHCP INTERFACES="eth0" Configurar el servicio DHCP nano /etc/dhcp3/dhcpd.conf Modificando las lneas sealadas: lnea 14 lnea 25 lnea 17 lnea 18 lnea 39 ddns-update-style interim; authoritative; # option domain-name example.org; # option domain-name-servers ns1.example.org, ns2.example.org; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.2 192.168.1.30; option domain-name-servers 192.168.1.1; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 36000; max-lease-time 180000; } Con esta configuracin se logra un servidor DHCP que va a ofrecer servicios a CUALQUIER placa de red que sea cliente, es la configuracin ms bsica que se puede armar. Si examinan mejor el archivo de configuracin se muestran muchos ejemplos y tambin se muestra como asignar siempre las mismas direcciones a determinadas computadoras. Reiniciamos el servidor: /etc/init.d/dhcp3-server restart Si todo esta bien veremos: * Stopping DHCP server dhcpd3 [fail] * Starting DHCP server dhcpd3 [OK] Muestra primero [fail] porque el servidor DHCP no estaba corriendo, lo importante es que en la lnea de Starting tengamos un [OK]. Si tenemos [fail] es porque escribimos algo mal en los archivos de configuracin, para entender mejor el error podemos ver el syslog: nano /var/log/syslog Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 11 de 34 Archivos de configuracin final: /etc/default/dhcp3-server # Defaults for dhcp initscript # sourced by /etc/init.d/dhcp # installed at /etc/default/dhcp3-server by the maintainer scripts # # This is a POSIX shell fragment # # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0" /etc/dhcp3/dhcpd.conf # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the # behavior of the version 2 packages ('none', since DHCP v2 didn't # have support for DDNS.) ddns-update-style none; default-lease-time 3600; max-lease-time 86400; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # :::: DECLARACION DE LA RED ::::: subnet 192.168.1.0 netmask 255.255.255.0 { option domain-name-servers 192.168.1.1; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 3600; max-lease-time 86400; } # :::: ASIGNACION DE DIRECCIONES IP A LOS HOST :::: host ap { hardware ethernet 00:23:xx:xx:xx:xx; fixed-address 192.168.1.2; } host usuario101 { hardware ethernet 00:01:xx:xx:xx:xx; fixed-address 192.168.1.101; } host usuario102 { hardware ethernet 00:1e:xx:xx:xx:xx; fixed-address 192.168.1.102; } host usuario103 { hardware ethernet 00:22:xx:xx:xx:xx; fixed-address 192.168.1.103; } Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 12 de 34 host usuario104 { hardware ethernet 00:21:xx:xx:xx:xx; fixed-address 192.168.1.104; } host usuario105 { hardware ethernet 00:1f:xx:xx:xx:xx; fixed-address 192.168.1.105; } host usuario106 { hardware ethernet 00:1e:xx:xx:xx:xx; fixed-address 192.168.1.106; } Como se ve en el archivo no uso asignaciones dinmicas, siempre asigno la misma direccin a las mismas placas de red, si una MAC no esta cargada en la lista no ser atendida por el servidor DHCP, esto lo hago por una cuestin comodidad y tengan en cuenta que se pueden usar simultneamente asignaciones dinmicas y direcciones fijas. 2.6 Primer encuentro con IPTABLES (Solo SNAT) Lo que voy a explicar es como hacer SNAT con iptables y como cargarlo al inicio del sistema. Es muy sencillo y bsico para cualquier router. Creamos el archivo iptables.cf: nano /etc/init.d/iptables.cf El archivo debe tener: 1 2 3 4 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -t nat F iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3 Funcionamiento: Lnea 1: Activa reenvo de paquetes, esto permite que los paquetes que llegan a una interfase pasen a la otra y viceversa. Lnea 2 y 3: Borra cualquier otra regla existente de filtrado. Lnea 4: Source Nat (SNAT para amigos), esta lnea aplica una regla a todos los paquete que despus de haber sido rutiados que tienen que salir por la interfase eth1 (salida a Internet) realizando un cambio en la direccin de origen por 192.168.0.3 (o la IP que tengamos configurada en la interfase eth1) Esto es lo que hace Win cuando hacemos Click derecho sobre una conexin de red, Compartir Conexin y luego le damos Permitir a otros usuario usar esta conexin. Parece mas fcil hacerlo en Win?, no se lo crean Guardamos el archivo creado y solo falta dale permisos de ejecucin: chmod a+x /etc/init.d/iptables.cf Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 13 de 34 Ahora para que se ejecute al arranque instalaremos un pequeo programa que nos ayuda a configurar los archivos que se ejecutan al iniciar el sistema apt-get install rcconf Ejecutamos: Rcconf En la lista buscamos iptables.cf y lo marcamos, quedando: [*] iptables.cf Luego presionamos la tecla TAB y <OK>, listo. Tendras que poder salir a Internet con todas las maquinas de tu red. Un detalle que a lo mej or no se dieron cuenta: Configuramos interfases, creamos filtros, cargamos servidores y nunca fue necesario reiniciar la computadora. Esa es una de las grandes ventajas de Linux y es muy bueno que aprendan a usarla. Todas las aplicaciones se pueden reiniciar o recargar sus configuraciones con el comando: /etc/init.d/APLICACION restart | force-reload | stop | start | status Algunas aplicaciones nos permiten otros comandos, si quieren ver cuales son pueden hacer: /etc/init.d/APLICACION Y el sistema les mostrara la lista de comandos permitidos, suelen ser muy tiles los comandos reload, que permiten re-cargar la configuracin sin detener el servicio o el comando status, que muestran el estado del servicio. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 14 de 34 Capitulo 3: Router Avanzado 3.1 Segundo encuentro con IPTABLES Con Iptables se pueden controlar todos los paquetes que pasan por las interfases de nuestra computadora, solo con unas simples lneas se puede lograr cosas fabulosas o la destruccin total de nuestra red. Los cambios que realizan los comandos se aplican instantneamente, sin necesidad de reiniciar la computadora, por eso es bueno antes de comenzar a implementar polticas de seguridad realizar un backup de la configuracin actual que funcione correctamente, si ven el archivo anterior /etc/init.d/iptables.cf lneas 2 y 3 son muy importantes porque borran todo lo anterior y luego se carga una nueva configuracin, lo que nos permite usar ese archivo para volver a una configuracin limpia, muy bsica pero que funciona. Lo que recomiendo es realizar pequeos cambios y probarlos, cuando estamos completamente seguros que funciona como esperbamos lo guardamos como archivo de backup. Para esta tarea recomiendo mucho el uso de scripts, voy a explicar rpidamente como crear scripts. Bsicamente en Linux cualquier archivo de texto con permisos de ejecucin y una lnea principal al comienzo se convierte en un script, es decir que todos los comandos que ejecutemos lnea por lnea se ejecutan uno por uno al correr el script. Nos paramos en nuestro directorio de trabajo, o donde les quede cmodo: cd /home/gerardo/ Creo un archivo de texto: nano mi-script Adentro escribimos: #!/bin/sh echo hola, esto funciona muy bien Guardamos nuestro poderoso script, y hacemos un ls l para ver sus permisos: -rw-r--r-- 1 root root 41 2010-03-16 11:31 mi-script Lo que nos interesa ahora es dale permisos de ejecucin: chmod a+x mi-script Hacemos un ls l para ver sus permisos: -rwxr-xr-x 1 root root 41 2010-03-16 11:31 mi-script Vemos que en sus permisos tiene x para todos los usuarios, significa que es un archivo ejecutable por todos los usuarios. FIN!, as de fcil es hacer un script en Linux. Lo hacemos correr de la siguiente forma: ./mi-script Si todo esta bien veremos: hola, esto funciona muy bien Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 15 de 34 Con ese concepto, ahora podemos crear un hermoso filtro con Iptables. Lo importante y a veces difcil es saber que filtrar o quienes son las amenazas, para mi caso (una red muy sencilla) la gran amenaza es que un usuario no permitido navegue gratis por Internet, esto se soluciona utilizando una poltica de filtrado por direccin MAC a todos los paquetes que llegan desde la LAN al router (eth0), mi solucin fue: mi filtro con iptables #!/bin/sh # RESET DE REGLAS iptables -F iptables -X iptables -Z iptables -t nat -F # ACTIVO REENVIO DE PAQUETES echo 1 > /proc/sys/net/ipv4/ip_forward # CONFIGURO SNAT, TODO TIENE QUE SALIR POR eth1 CON LA IP: 192.168.0.3 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3 # --------------------- # FIREWALL # --------------------- ### POLITICAS POR DEFECTO DEL FIREWALL iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P INPUT DROP ### SEGURIDAD # No respondo preguntas ICMP en la interfase de afuera: (eth1) iptables -A INPUT -p icmp --icmp-type echo-request -i eth1 -j DROP # No ip spoofing, denegar paquetes internos con direcciones no pertenecientes a la LAN: iptables -A INPUT -j DROP -i eth0 \! -s 192.168.1.0/24 iptables -A FORWARD -j DROP -i eth0 \! -s 192.168.1.0/24 # No ip spoofing, denegar cualquier paquete con direccin local que quiera entrar: iptables -A INPUT -j DROP \! -i lo -s 127.0.0.0/8 iptables -A FORWARD -j DROP \! -i lo -s 127.0.0.0/8 # No permitir conexiones TCP iniciadas afuera (eth1) iptables -A INPUT -m state --state NEW -i eth1 -j DROP iptables -A FORWARD -m state --state NEW -i eth1 -j DROP # Allowing established iptables -A INPUT --match state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT --match state --state ESTABLISHED -j ACCEPT # Allowing related iptables -A INPUT --match state --state RELATED -j ACCEPT iptables -A OUTPUT --match state --state RELATED -j ACCEPT # Allowing loop iptables -A INPUT -i lo --match state --state NEW -j ACCEPT iptables -A OUTPUT -o lo --match state --state NEW -j ACCEPT # Allowing outgoing iptables -A OUTPUT -o eth1 --match state --state NEW -j ACCEPT Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 16 de 34 # --------------------- # FILTRO POR MAC # --------------------- # Allowing incoming (SOLO MACs PERMITIDAS, Interfase de entrada LAN, eth0 IP: 192.168.1.1) #LISTADO DE CLIENTES PERMITIDOS: # AP iptables -A INPUT -i eth0 -m mac --mac-source 00:23:xx:xx:xx:xx -j ACCEPT # 101 iptables -A INPUT -i eth0 -m mac --mac-source 00:01:xx:xx:xx:xx -j ACCEPT # 102 iptables -A INPUT -i eth0 -m mac --mac-source 00:1e:xx:xx:xx:xx -j ACCEPT # 103 iptables -A INPUT -i eth0 -m mac --mac-source 00:22:xx:xx:xx:xx -j ACCEPT # 104 iptables -A INPUT -i eth0 -m mac --mac-source 00:21:xx:xx:xx:xx -j ACCEPT # 105 iptables -A INPUT -i eth0 -m mac --mac-source 00:1f:xx:xx:xx:xx -j ACCEPT # 106 iptables -A INPUT -i eth0 -m mac --mac-source 00:1e:xx:xx:xx:xx -j ACCEPT # Allowing incoming en la interfase de salida (eth1) iptables -A INPUT -i eth1 -j ACCEPT Como funciona: Simplemente cambie la poltica por defecto para los paquete de entrada (INPUT) a DROP, la poltica por defecto indica que se hace con el paquete si no cumple ninguna de las reglas de la lista. en castellano: al entrar un paquete se compara con toda la lista de reglas, si no se cumple ninguna se descarta el paquete, a la primera regla que se cumple se toma la decisin que indique esa regla en criollo: llega un paquete con MAC xx:xx:xx:xx:xx:xx, recorre toda la lista de MAC permitidas si no esta en la lista ese paquete se descarta, si esta en la lista se lo deja pasar por la placa de red eth0 en resumen: si queres entrar tenes que estar en la lista. Hay muchas formas de hacer filtros, para mi caso y por el funcionamiento de Iptables (primera regla que se cumple, se ejecuta) no me es conveniente colocar al principio reglas muy permisivas, es mejor comenzar Denegando y luego permitiendo. 3.2 Servidor DNS Primario con Bind9 Instalamos el servidor: apt-get install bind9 Creamos las zonas donde ser autoritativo el servidor: nano /etc/bind/named.conf Agregamos al final del archivo nuestras zonas: zone "lamernet.com.ar" { type master; file "/etc/bind/lamernet.directa"; }; zone "1.168.192.in-addr.arpa" in { type master; file "/etc/bind/lamernet.inversa"; }; Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 17 de 34 Creamos el archivo de resolucin directa de la las zonas: nano /etc/bind/lamernet.directa Agregamos al archivo las maquinas que vamos a resolver: $TTL 604800 @ IN SOA lamernet.com.ar. root.lamernet.com.ar. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS @ www IN A 192.168.1.1 gerardo IN A 192.168.1.10 Creamos el archivo de resolucin inversa de la las zonas: nano /etc/bind/lamernet.inversa Agregamos al archivo las maquinas que vamos a resolver: $TTL 604800 @ IN SOA lamernet.com.ar. root.lamernet.com.ar. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; 1 IN NS www.lamernet.com.ar. 10 IN NS gerardo.lamernet.com.ar. Iniciamos el servidor: /etc/init.d/bind9 start Archivos de configuracin final: Para mi caso utilice Bind con autoridad sobre 2 dominios 1. lamernet.com.ar 2. lamernet El primero lo uso para la pgina web: www.lamernet.com.ar y el segundo para resolver la direccin de todos los clientes de la red. Por ejemplo el servidor ser: servidor.lamernet, mi maquina es: gerardo.lamernet, entonces para entrar a otras maquinas de la red solo hace falta saber el nombre y no necesitas acordarte la direccin IP. Como el servidor DNS tiene autoridad sobre 2 dominios distintos, voy a tener 2 archivos de definicin directa (1 para cada dominio) y solo 1 archivo de resolucin inversa, porque los dominios comparten la misma direccin de red. /etc/bind/named.conf // This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; zone "lamernet.com.ar" { Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 18 de 34 type master; file "/etc/bind/lamernet.directa"; }; zone "lamernet" { type master; file "/etc/bind/lan.directa"; }; zone "1.168.192.in-addr.arpa" in { type master; file "/etc/bind/lamernet.inversa"; }; /etc/bind/lamernet.directa $TTL 604800 @ IN SOA lamernet.com.ar. root.lamernet.com.ar. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS @ www IN A 192.168.1.1 /etc/bind/lan.directa $TTL 604800 @ IN SOA lamernet. root.lamernet. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS @ servidor IN A 192.168.1.1 ap IN A 192.168.1.2 usuario101 IN A 192.168.1.101 usuario102 IN A 192.168.1.102 usuario103 IN A 192.168.1.103 usuario104 IN A 192.168.1.104 usuario105 IN A 192.168.1.105 usuario106 IN A 192.168.1.106 /etc/bind/lamernet.inversa $TTL 604800 @ IN SOA lamernet.com.ar. root.lamernet.com.ar. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS @ 1 IN PTR www.lamernet.com.ar. 1 IN PTR servidor.lamernet. 2 IN PTR ap.lamernet. 101 IN PTR usuario101.lamernet. 102 IN PTR usuario102.lamernet. 103 IN PTR usuario103.lamernet. 104 IN PTR usuario104.lamernet. 105 IN PTR usuario105.lamernet. 106 IN PTR usuario106.lamernet. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 19 de 34 En general el DNS es fcil de configurar y los errores mas comunes son de tipeo, si no funciona revisen bien los archivos y cuidado con si usan comentarios en los archivos de bind, porque se identifican con // y no con # 3.3 Apache 2, servidor WEB con Host Virtuales En /etc/apache2 disponemos de varios subdirectorios, dos de ellos importantes para nuestra tarea. El primero es: sites-available y el segundo sites-enabled. Los ficheros de configuracin de los hostings virtuales se configuran en sites-available. El segundo subdirectorio slo contiene enlaces a aquellos virtulhost que queremos activar. Si queremos crear un virtualhost de nombre www.lamernet.com.ar, es decir, cuando ponga en mi navegador www.lamernet.com.ar me debe de llevar a la pgina principal de ese host, primero tenemos que crearlo dentro del directorio sites-available y luego generar un enlace dentro de sites-enabled para que funcione. Creando un virtual host: mkdir /home/www/www.lamernet.com.ar dentro de esa carpeta copiamos los archivos de la pgina web Luego creamos el virtualhost haciendo: cd /etc/apache2/sites-available cp default www.lamernet.com.ar Ahora editamos las primeras lneas del archivo www.lamernet.com.ar nano www.lamernet.com.ar Quedando: <VirtualHost *:80> ServerAdmin gpiermattei@gmail.com ServerName www.lamernet.com.ar DocumentRoot /home/www/www.lamernet.com.ar <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/www/www.lamernet.com.ar> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 20 de 34 Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> El siguiente comando, a2ensite (available2enablesite) crea un enlace en sites-enable al sitio que le indiquemos (es decir, activa el virtualhost que acabamos de crear) a2ensite www.lamernet.com.ar Listo, reiniciamos el servidor sudo /etc/init.d/apache2 restart Los mismos pasos se aplican si queremos agregar ms virtualhost. Si tenemos problemas con la instalacin o su configuracin y el servidor deja de funcionar puede resultar til el siguiente comando para reinstalar por completo el apache: sudo apt-get remove --purge $(dpkg -l apache* | grep ii | awk '{print $2}') && sudo apt-get install apache2 3.4 Squid, proxy de red: Instalamos: apt-get install squid Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo: nano /etc/squid/squid.conf No voy a explicar todas las funciones de Squid, solo voy a mostrar la configuracin que utilice. Es una de las ms bsicas pero de gran utilidad. Como van a ver el archivo de configuracin de Squid es GIGANTE, pero la mayora de las lneas estn comentadas porque son ejemplos de usos y distintas configuraciones, voy a adjuntar un archivo de configuracin sin comentarios y solo con la parte bsica que nos interesa a nosotros. Para generar ese archivo podemos usar el siguiente comando: grep -v "#" /etc/squid/squid.conf > sin-comentarios Ese comando busca en el archivo squid.conf todas la lneas que NO comiencen por # y las guarda en el archivo sin-comentarios Archivo de configuracin final: /etc/squid/squid.conf # Configuracin minima por defecto: acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl purge method PURGE acl CONNECT method CONNECT # Mis acl's: acl no_facebook url_regex http://www.facebook.com acl bloqueados src "/etc/squid/bloqueados" acl no_porn url_regex "/etc/squid/porn" # Aplico las acl's: http_access deny no_porn bloqueados deny_info ERR_NO_PORN.html no_porn bloqueados http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 21 de 34 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all # El resto de la configuracin de Squid icp_access allow localnet icp_access deny all http_port 3128 transparent hierarchy_stoplist cgi-bin ? cache_mem 128 MB maximum_object_size_in_memory 64 KB cache_dir ufs /var/spool/squid 50000 16 256 max_open_disk_fds 1 cache_swap_low 80 cache_swap_high 95 update_headers on access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] upgrade_http0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT error_directory /usr/share/squid/errors/es hosts_file /etc/hosts offline_mode on coredump_dir /var/spool/squid Funcionamiento: Por defecto Squid trae algunas ACL que nos brindan una seguridad bsica y sirven de ejemplo, lo mas importante de la configuracin presentada es que es transparente al usuario, es decir, no hace falta configurar el navegador de Internet o el sistema operativo para que usen el Proxy y los usuarios salen a Internet sin saber que hay un Proxy. El funcionamiento transparente se logra gracias a la posibilidad de la nueva versin de squid de trabajar en modo transparente y adems debe ser acompaada de una regla de iptables que redirecciona todo el trfico con puerto de destino 80 hacia el puerto al que escucha nuestro Proxy (3128). Para eso esta la lnea, que indica el puerto y el modo donde escucha Squid: http_port 3128 transparent La regla que se debe agregar a nuestro script de iptables es la siguiente: # ------------------------------------------ # REDIRECCIONO EL TRAFICO WEB AL SQUID # ------------------------------------------ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Si probamos ahora notaran que no pueden acceder a las pginas hostiadas en nuestro propio servidor, se soluciona agregando ANTES a la regla de redireccionar el trfico Web la siguiente: # -------------------------------------------------------------- # EL TRAFICO A NUESTRO SERVIDOR LO ACEPTO SIN REDIRECCIONAR # -------------------------------------------------------------- iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -d 192.168.1.1 -j ACCEPT Adems de proveer filtrado y seguridad, Squid funciona como chache, almacenado las paginas o parte de ellas en su memoria para ahorrar trafico cuando la pagina sea consultada nuevamente. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 22 de 34 Por el lado del filtrado a modo de ejemplo voy a explicar unos casos simples pero tiles para que entiendan como se aplican filtros con Squid. Su funcionamiento es sencillo, primero creamos la ACL de lo que queremos hacer, mis ACL son: # Mis acl's: acl no_facebook url_regex http://www.facebook.com acl bloqueados src "/etc/squid/bloqueados" acl no_porn url_regex "/etc/squid/porn" La acl no_facebook, se aplica a las URL que contengan http://www.facebook.com La acl bloqueados se aplica a la lista de direcciones IP que se guardan en el archivo "/etc/squid/bloqueados" La acl no_porn es similar a la de Facebook, pero se aplica a la lista de palabras que se guardan en el archivo "/etc/squid/porn" /etc/squid/bloqueados /etc/squid/porn 192.168.1.110 192.168.1.107 porn sex xxx Las ACL por si solas no hacen nada, noten que no toman ninguna decisin de filtrado (permitir, denegar, etc.). Se aplican similar a los comando iptables (primera regla que se cumple se ejecuta), entonces importa el orden de aplicacin: # Aplico las acl's: http_access deny no_porn bloqueados # muestro un error personalizado si se cumple la regla anterior: deny_info ERR_NO_PORN.html no_porn bloqueados http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all Noten la forma de aplicar las ACL, para el contenido bloqueado lo aplique junto con la lista de direcciones bloqueadas (Operacin lgica AND), es decir que si se cumple que el paquete es de una de las direcciones de la lista en /etc/squid/bloqueados Y adems se cumple que su URL contiene una palabra de la lista "/etc/squid/porn" el paquete se deniega y se muestra un error. Aplicar las reglas una por lnea equivale a la operacin lgica OR, igual que en iptables. Otro detalle, vean que en ningn momento aplique la acl no_facebook, es decir que se pueden tener ACL sin aplicar pero no el caso contrario. Por defecto se termina la lista con: http_access deny all, que como se lo imaginan deniega el paquete si no cumpli con alguna de las reglas anteriores, esta condicin se puede modificar segn las caractersticas del filtrado. Como en el caso de iptables, esto es solo un ejemplo bsico a modo de gua y tengan en cuenta que se pueden hacer muchas reglas mas avanzadas que estas. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 23 de 34 Capitulo 4: Utilidades y Accesorios 4.1 Montar carpetas compartidas en red de Windows en Ubuntu Es muy til disponer de recursos compartidos de Windows en Ubuntu, esto se logra con unos simples pasos: Instalar los paquetes necesarios: apt-get install smbfs samba samba-common smbclient Crear la carpeta donde se va a montar el recurso compartido: mkdir /home/compartida Podemos modificar los permisos para la carpeta compartida para permitir el acceso a ciertos usuarios de Ubuntu chown gerardo /home/compartida chgrp gerardo /home/compartida Montamos la carpeta compartida de Windows en Ubuntu: mount //192.168.1.10/comp/ /home/compartida Donde, 192.168.1.10 es la direccion IP del host que dispone del recurso compartido y comp es el nombre del recurso compartido. 4.2 Crear carpetas compartidas en Linux para ver desde Windows Gracias a Samba podemos compartir recursos de Linux con los usuarios de Windows, lo que vamos a hacer es crear una carpeta llamada Descargas que estar compartida bajo contrasea con todos los usuarios de la red. Editamos la configuracin de Samba: Nano /etc/samba/smb.conf En la lnea 242 de ese archivo comienza: #======================= Share Definitions ======================= Agregamos las lneas: [Descargas] path = /Descargas comment = Servicio de Descargas browseable = yes read only = no guest ok = no Esta es la forma ms bsica de compartir una carpeta en Linux. Muestro otro ejemplo donde no se necesita contrasea para entrar a la carpeta y los visitantes solo tienen permiso de Lectura: [Sin-Pass] path = /Musica comment = Musica Compartida para todos browseable = yes read only = yes guest ok = yes Para aplicar los cambios basta con reiniciar Samba: /etc/init.d/samba restart Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 24 de 34 4.3 Servicio de descargas por Torrent La idea es aprovechar que vamos a tener una computadora encenda las 24 horas del da para que ella nos descargue las cosas por nosotros, especial para los que descargan muchas cosas por torrent. Es muy simple y funciona muy bien, solo necesitamos tener instalado PHP, MySQL (ya lo instalamos previamente) y TorrentFlux. Como primer paso antes de instalar TorrentFlux vamos a crear una nueva base de datos SQL que usaremos con TorrentFlux. Durante la instalacin el sistema nos solicitar configurar una base de datos para adaptarla a TorrentFlux as que debemos crear una antes de instalarlo. Ejecutamos un navegador en un ordenador cliente y ejecutamos la direccin IP de nuestro servidor de descargas seguido de /phpmyadmin. En mi caso http://192.168.1.1/phpmyadmin y veremos: Introducimos el nombre del sper usuario (root) y el password de administrador para la base de datos configurado durante el proceso de instalacin. Ahora en phpmyadmin vamos a crear una base de datos nueva para TorrentFlux y para ello vamos a introducir el nombre ( torrentflux ) en la casilla: Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 25 de 34 Continuamos pulsando el botn (Crear) Ahora tenemos una base de datos llamada (torrentflux), nos la apuntamos adems del nombre de usuario, password y continuamos arrancando nuestro servidor de descargas e identificndonos como root en el sistema de la manera habitual. Una vez identificados continuaremos instalando torrentflux del siguiente modo: apt-get install torrentflux Continuamos con la instalacin: Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 26 de 34 A continuacin el sistema nos avisa sobre un cambio que deberemos hacer, de momento pulsamos la tecla (Enter) Como ya hicimos anteriormente a la instalacin de TorrentFlux una base de datos llamada (torrentflux) especificaremos en esta pantalla la opcin (Si) y continuamos con la tecla (Enter) Ahora introducimos el password del super usuario (root) de MySQL y pulsamos la tecla (Enter) Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 27 de 34 Pasamos este mensaje por alto de momento, despus lo revisaremos. Continuamos con la tecla (Enter) y una vez terminada la instalacin de TorrentFlux aremos unos ajustes para adaptarlo a nuestro servidor Web y que funcione correctamente. Para acceder a TorrentFlux desde un cliente, vamos a crear un enlace simblico desde el directorio Web que nos ofrece TorrentFlux hacia el directorio Web de nuestra pgina situada en nuestro servidor. ln s /usr/share/torrentflux/www/ /home/www/www.lamernet.com.ar/torrentflux Ya esta listo para ser visitado desde un cliente, en un navegador escribimos www.lamernet.com.ar/torrentflux y veremos: Nos logeamos con root y la contrasea y tenemos un gestor de descargas con interfase web. Con un poco de Dreamweaver el trabajo final quedo as: Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 28 de 34 TorrentFlux tiene buenas configuraciones, lo que recomiendo en configurarlo para que descargue los archivo en una carpeta y luego compartir esa carpeta para poder acceder desde la red y as copiar los archivos a nuestra maquina. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 29 de 34 4.4 Estadsticas de Hardware Suele ser muy til saber que esta pasando dentro del servidor, un programa que nos puede ayudar en esta tarea es PHPsysinfo, este programa genera un reporte en PHP que podemos cargar en nuestra pgina para tener una idea el estado de nuestro servidor. Instalacin: apt-get install phpsysinfo Solo falta realizar un enlace simbolico desde el directorio de la aplicacion a la carpeta de nuestro sitio web: ln s /var/www/phpsysinfo /home/www/www.lamernet.com.ar/phpsysinfo Ahora si desde un navegador entramos a: www.lamernet.com.ar/phpsysinfo, veremos el reporte que genero la aplicacin. El reporte que genera PHPsysinfo se puede configurar editando el archivo: nano /etc/phpsysinfo/config.php Destaco la lnea donde podemos configurar el lenguaje y el estilo del reporte, la modificamos quedando: // define the default language and template here define('lang', 'es'); define('template', 'clean.css'); 4.5 Estadsticas Web Podemos obtener un reporte muy completo sobre las consultas a nuestra Web usando la aplicacin AwStats. Instalacin: apt-get apt-get install awstats Editamos el archivo de configuracin: nano /etc/awstats/awstats.conf Buscamos y editamos las siguientes lneas, quedando: Lnea 51 LogFile=/var/log/apache2/access.log Lnea 122 LogFormat=1 Lnea 153 SiteDomain=www.lamernet.com.ar Lnea 188 DNSLookup=0 Lnea 905 Lang=es El siguiente paso es copiar el archivo de configuracin con el nombre de nuestro dominio: cp /etc/awstats/awstats.conf /etc/awstats/awstats.lamernet.com.ar.conf Ejecutamos la configuracin generada: /usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.conf Creamos un enlace simblico desde la carpeta que creo awstats al directorio raz de nuestra Web. ln s /usr/lib/cgi-bin /home/www/www.lamernet.com.ar/cgi-bin Solo falta agregar unas lneas en la configuracin de Apache: nano /etc/apache2/apache2.conf Se agregan al final del archivo de configuracin las siguientes lneas: Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 30 de 34 # Configura Apache para que muestre las imgenes de las estadsticas: Alias /awstatscss ./usr/share/doc/awstats/examples/css/. Alias /awstatsicons ./usr/share/awstats/icon/. ScriptAlias /awstats/ ./usr/lib/cgi-bin/. Alias /awstats-icon/ /usr/share/awstats/icon/ <Directory /usr/share/awstats/icon> Options None AllowOverride None Order allow,deny Allow from all </Directory> Reiniciamos Apache y todo debera funcionar /etc/init.d/apache2 restart Si entramos a: www.lamernet.com.ar/cgi-bin/awstats.pl?config=awstats.lamernet.com.ar.conf, tenemos que ver el informe generado por Awstats. Por ultimo paso solo falta generar un script que actualice las estadsticas, eso se logra usando un programador de tareas incluido en el sistemas que es Crontab. Hay varias formas de hacer esto, explico la que me parece ms simple. Si nos fijamos en el directorio /etc veremos una serie de carpetas generadas por la aplicacin Crontab Ejecutamos: ls /etc/ | grep cron Veremos: cron.d cron.daily cron.hourly cron.monthly crontab cron.weekly Los directorios que nos interesan son: cron.daily cron.hourly cron.monthly cron.weekly Los scripts que coloquemos dentro de esas carpetas se ejecutan: cron.daily = cada 1 dia cron.hourly = cada 1 hora cron.monthly = cada 1 mes cron.weekly = cada 1 semana Entonces si dentro del directorio cron.hourly generamos un script que actualice las estadsticas, tendremos el problema resuelto: nano /etc/cron.hourly/actualiza-estadisticas-web Dentro del archivo escribimos: #!/bin/sh # Este Script actualiza las estadsticas Web para www.lamernet.com.ar /usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.conf echo "Estadisticas Web para www.lamernet.com.ar, Actualizadas correctamente" Solo falta darle permisos de ejecucin al archivo y listo: chmod a+x /etc/cron.hourly/actualiza-estadisticas-web Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 31 de 34 4.6 Monitor de Temperaturas La temperatura del sistema es un dato importante que siempre es bueno saber en cualquier computadora y mucho mas importante en una computadora que esta las 24 horas del da encendida, entonces vamos a generar un pequeo script que genere un archivo de texto dentro del directorio raz de nuestra pagina Web para poder visualizar los niveles de temperatura de la maquina con unos simples clicks y desde nuestra Web. Para esta tarea vamos a utilizar una aplicacin llamada Sensors, que nos muestra informacin sobre los sensores de nuestra computadora. Instalacin: apt-get install lm-sensors Ejecutamos al aplicacin para que reconozca que sensores disponemos en nuestra PC: sensors-detect Con solo presionar Yes y enter, llegamos al final y el programa muestra los sensores que disponemos, para mi caso el resultado fue: #----cut here---- # I2C adapter drivers i2c-i801 # Chip drivers smsc47m192 smsc47m1 #----cut here---- Luego nos pregunta si queremos que agregue esas lneas automticamente en /etc/modules, respondemos yes y todo listo. Si ejecutamos el comando: Sensors Debemos ver un reporte como el siguiente: smsc47m192-i2c-0-2d Adapter: SMBus I801 adapter at 3000 +2.5V: +2.51 V (min = +0.00 V, max = +3.32 V) VCore: +1.15 V (min = +0.00 V, max = +2.99 V) +3.3V: +3.32 V (min = +0.00 V, max = +4.38 V) +5V: +5.16 V (min = +0.00 V, max = +6.64 V) +12V: +12.31 V (min = +0.00 V, max = +15.94 V) VCC: +3.32 V (min = +0.00 V, max = +4.38 V) +1.5V: +1.56 V (min = +0.00 V, max = +1.99 V) +1.8V: +1.76 V (min = +0.00 V, max = +2.39 V) Chip Temp: +31.0C (low = -127.0C, high = +127.0C) CPU Temp: +43.0C (low = -127.0C, high = +127.0C) Sys Temp: +36.0C (low = -127.0C, high = +127.0C) cpu0_vid: +2.050 V Puede ser mas o menos completo, dependiendo de los sensores disponibles en tu maquina. Para completar ms aun nuestro script monitor de temperatura, vamos a agregar otro programa que nos permite conocer la temperatura de nuestro disco rgido: Instalacin: apt-get install hddtemp El programa nos preguntar si queremos que se arranque al inicio, la interfaz en la que escuchar y el puerto. En principio a las dos ultimas preguntas dejamos el valor por defecto pulsando Enter, a la primera yo aconsejo poner SI, pero es una eleccin personal. Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 32 de 34 Con esto tendremos instalado el programa, si le hemos dicho que se arranque al inicio ya lo tendremos en ejecucin si no tendremos que arrancarlo nosotros, para ello ejecutaremos la siguiente instruccin: hddtemp d /dev/dispositivo Si disponemos de varios dispositivos podemos listar todas las temperaturas con el comando: hddtemp d /dev/sd* Lo mismo se aplica para dispositivos hd*. Ahora utilizando estos programas y Crontab, vamos a crear un script que genere un archivo de texto con los resultados de las temperaturas y lo guardaremos para que se ejecute cada 1 hora. nano /etc/cron.hourly/temperaturas Dentro del archivo escribimos: #!/bin/sh # Este Script toma la lista del comando sensors y la guarda en un archivo # ubicado dentro de la carpeta del sitio www.lamernet.com.ar echo " - INFO DEL SISTEMA: " > /www/www.lamernet.com.ar/temps.txt echo "------------------------------------------------------------------------ " >> /www/www.lamernet.com.ar/temps.txt sensors >> /www/www.lamernet.com.ar/temps.txt echo " " >> /www/www.lamernet.com.ar/temps.txt echo " " >> /www/www.lamernet.com.ar/temps.txt echo " - TEMPERATURA DEL DISCO: " >> /www/www.lamernet.com.ar/temps.txt echo "------------------------------------------------------------------------ " >> /www/www.lamernet.com.ar/temps.txt hddtemp /dev/sda >> /www/www.lamernet.com.ar/temps.txt echo " " >> /www/www.lamernet.com.ar/temps.txt echo " " >> /www/www.lamernet.com.ar/temps.txt echo "Actualizado: " >> /www/www.lamernet.com.ar/temps.txt date >> /www/www.lamernet.com.ar/temps.txt Solo falta darle permisos de ejecucin al archivo y listo: chmod a+x /etc/cron.hourly/temperaturas Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 33 de 34 El Resultado final lo pueden ver entrando a: www.lamernet.com.ar/temps.txt, muestro uno de los archivos generados por nuestro script: - INFO DEL SISTEMA: ------------------------------------------------------------------------ smsc47m192-i2c-0-2d Adapter: SMBus I801 adapter at 3000 +2.5V: +2.51 V (min = +0.00 V, max = +3.32 V) VCore: +1.15 V (min = +0.00 V, max = +2.99 V) +3.3V: +3.32 V (min = +0.00 V, max = +4.38 V) +5V: +5.16 V (min = +0.00 V, max = +6.64 V) +12V: +12.31 V (min = +0.00 V, max = +15.94 V) VCC: +3.32 V (min = +0.00 V, max = +4.38 V) +1.5V: +1.56 V (min = +0.00 V, max = +1.99 V) +1.8V: +1.77 V (min = +0.00 V, max = +2.39 V) Chip Temp: +31.0 C (low = -127.0 C, high = +127.0 C) CPU Temp: +43.0 C (low = -127.0 C, high = +127.0 C) Sys Temp: +35.0 C (low = -127.0 C, high = +127.0 C) cpu0_vid: +2.050 V - TEMPERATURA DEL DISCO: ------------------------------------------------------------------------ /dev/sda: WDC WD2500JS-55NCB1: 40 C Actualizado: Fri Mar 19 12:17:04 ART 2010 Gua practica para montar un servidor con Ubuntu Server Gerardo R. Piermattei, gpiermattei@gmail.com Pgina 34 de 34 Capitulo 5: Fuentes y Agradecimientos Parte de la info de esta gua fue obtenida de foros o de otras guas, perd un poco el rastro de cuales fueron las pginas que use para armar la gua pero las principales fueron: las secciones 4.3, 4.4 y 4.4 las copie directamente desde: www.forat.info encontr la solucin a varios problemas que surgieron de los foros de: www.ubuntu-es.org A ellos mis agradecimientos por compartir sus conocimientos con el resto de la comunidad libre. En agradecimiento esta gua ser publicada abiertamente en los foros para que todos puedan usarla y aportar sus conocimientos. Los agradecimientos especiales se los llevan mis profesores y ayudantes de redes de la facultad: Jose Ivana Daniel Cristian Hector Nicolas Por compartir sus conocimientos y por la paciencia.