Servidor Paso a Paso

34
Guía practica para montar un servidor con Ubuntu Server 9.10

Transcript of Servidor Paso a Paso

Page 1: Servidor Paso a Paso

Guía practica para montar un servidorcon Ubuntu Server 9.10

Page 2: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 2 de 34

Índice

Capitulo 1: Instalación

1.1 Conocimientos previos 3

1.2 Requisitos de Hardware 3

1.3 Instalación 3

Capitulo 2: Router básico

2.1 Configuración 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 políticas 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 Estadísticas de Hardware 29

4.5 Estadísticas web 29

4.6 Monitor de Temperaturas 31

Capitulo 5: Fuentes y Agradecimientos

Fuentes y Agradecimientos 34

Page 3: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 3 de 34

Capitulo 1: Instalación

1.1 Conocimientos PreviosLa guía apunta a estudiantes de telecomunicaciones con interés en Linux y redes IP, muestra ejemplos deconfiguraciones básicas con aplicaciones típicas y en funcionamiento.

Lo que la hace diferente a otras guías disponibles en Internet es que explico paso a paso como se hace, algunosde los posibles problemas que pueden aparecer con sus respectivas soluciones y consejos que me facilitaron lainstalación.

En esta guía no se explica en detalle la teoría de redes ni mucho menos los comandos de Linux, por lo que senecesita mínimos conocimientos de Linux, uso básico de consola, crear archivos de texto, guardarlos, editarlos,copiarlos, etc. y por parte de redes, los fundamentos teóricos y aplicaciones.

Los temas que se excluyen en esta guía se encuentran con facilidad en Internet o en otras guías.

1.2 Requisitos de HardwareLo bueno de esta guía es que esta orientada a trabajar completamente en consola, se puede instalar unentorno grafico mínimo para facilitar las configuraciones, pero no es necesario. Si solo usamos la consolapodemos instalar Ubuntu en maquinas muy chicas.

Lo que normalmente se recomienda es:Procesador de 500 Mhz128 Mb de RAM2 GB de disco2 Placas de RedLector de CD solo para la instalación

Lógico que con una maquina de esas características no vamos a poder atender muchas computadoras, pero nossobra para aprender y atender unos 10 usuarios o algunos más.

Si conseguimos una PC un poco más potente, podemos darnos el lujo de instalar un entorno grafico parafacilitar las configuraciones. Se que mucha gente no esta de acuerdo en esto, pero a muchos les resulta muyincomodo usar siempre la consola, a ellos les recomiendo ir familiarizándose de a poco con la consola seguroles va a resultar extremadamente útil al cavo de unos capítulos y mas aun cuando usemos SSH.

La computadora que estoy usando en este momento es:Procesador: Intel Atom 330 (64 bits, doble núcleo @1,6 Ghz)Placa madre: Intel D945GCLF2Memoria: 1 GB DDR2 677Disco: 250 GB SATA 2

Soporta perfectamente un entorno grafico y sobra procesador para es uso de mi red. Para que tengan una ideadel tráfico en mi red les paso este dato:En 18 días la interfase que me conecta a Internet:

Recibió: 40 GbEnvío: 7 Gb

No es mucho si lo comparamos con una gran red, pero sirve para empezar.

1.3 InstalaciónLa instalación es bastante sencilla y amigable, basta con solo bootear desde el CD-ROM que podemos obtenerde la página oficial de Ubuntu para inicial el proceso de instalación.

Durante el proceso se preguntan datos básicos, solo voy a explicar los más importantes o los que más hacenrenegar.

Page 4: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 4 de 34

Una de las partes donde suelen generarse problemas es en el particionado del disco. No soy un experto enLinux pero la forma que siempre me gusto hacer las particiones es la siguiente:

Tamaño Descripción Punto de montaje Formato100 Mb Partición para boot /boot ext41 Gb Área de intercambio (Swap) no se monta el sistema se encarga del formato20 Gb Raíz (/) / ext410 Gb Home /home ext4

Un esquema del disco seria:

100 Mb/boot

1 GbSwap

20 Gb/

10 Gb/ home

Si tienen un disco mas grande pueden hacer mas grande la partición “/”, o si son mas organizados, crean masparticiones para distintas aplicaciones. Lo mas fácil es hacer una partición “/” bien grande pero un gurú deLinux no estaría de acuerdo.

Continuando con la instalación, los pasos siguientes son simples, solo voy a destacar los paquetes a instalar. Enel mismo CD de Ubuntu se encuentran muchos de los programas que necesitamos para nuestro servidor y elproceso de instalación nos pregunta cuales de una pequeña lista de paquetes queremos instalar.

Los que se usan para esta guía 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 más se completa la instalación.

Page 5: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 5 de 34

Capitulo 2: Router básico

2.1 Configuración de red al arranqueLo que vamos a hacer es que las configuraciones de las placas de red se carguen al arrancar el sistema,podemos usar DHCP, Estáticas o PPPoP.Mi servidor usa 2 placas, para diferéncialas las voy a llamar WAN a la interfase que me conecta a Internet yLAN a la interfase que conecta a mi red LAN:

WAN (eth1, configurada para ser cliente DHCP) LAN (eth0, configurada estática)

Consejo para los que se inician en Ubuntu:Todos los comandos de esta guía se deben ejecutar con permisos de “root”, para hacer eso tenemos dossimples opciones:

1. anteponer la palabra “sudo” antes de cada comando2. logearse como “root” antes de empezar a trabajar (esto se hace con el comando “sudo su”)

Recomiendo la segunda opción por ser más practica, porque son muchos comandos los que se van a usar.

Editamos:

nano /etc/network/interfaces

Agregando:

# WAN:auto eth1iface eth1 inet dhcp

# LAN:auto eth0iface eth0 inet static

address 192.168.1.1netmask 255.255.255.0network 192.168.1.0broadcast 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 EJEMPLOauto eth1iface eth1 inet static

address 192.168.110.229netmask 255.255.255.0network 192.168.110.0broadcast 192.168.110.255gateway 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 podemosapagar nuestro equipo y no perderemos la configuración.

Page 6: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 6 de 34

Muestro el archivo de configuración 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 interfaceauto loiface lo inet loopback

# WAN:auto eth1iface eth1 inet dhcp

# LAN:auto eth0iface eth0 inet static

address 192.168.1.1netmask 255.255.255.0network 192.168.1.0broadcast 192.168.1.255

2.2 Grupo de trabajoEditar la configuración de Samba para poner el servidor en el mismo “Grupo de trabajo” que la red de Windows

nano /etc/samba/smb.conf

Buscar las líneas y editarlas a gusto:

# Change this to the workgroup/NT-domain name your Samba server will part ofworkgroup = mi_grupo_detrabajo

# server string is the equivalent of the NT Description fieldserver 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 información por si necesitamos instalar o borrar paquetescuyo nombre no conocemos.

Instalación, pongan un CD de Ubuntu en la lectora y hagan:

mount /dev/cdrom /cdromapt-cache search (nombre o descripción 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

Desinstalación

dpkg –l | grep (nombre o descripción 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

Page 7: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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 multiversedeb-src http://archive.ubuntu.com/ubuntu/ jaunty jackalope restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jaunty jackalope main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ jaunty jackalope main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu jaunty jackalope main restricted universe multiversedeb-src http://security.ubuntu.com/ubuntu jaunty jackalope main restricted universe multiverse

Estas líneas suelen estar comentadas en el archivo, si las encuentran comentadas borren el “#” al principio dela línea 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 loolviden sino no funciona:

apt-get update

Puede tardar unos minutos, pero no más que 5 minutos, en general es rápido.

Muestro el archivo de configuración final:

/etc/apt/sources.list

##deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic mainrestricted

#deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic mainrestricted# 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 restricteddeb-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 restricteddeb-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 universedeb-src http://ar.archive.ubuntu.com/ubuntu/ karmic universedeb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates universedeb-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 multiversedeb-src http://ar.archive.ubuntu.com/ubuntu/ karmic multiversedeb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates multiversedeb-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

Page 8: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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 multiversedeb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-backports main restricted universemultiverse

## 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 partnerdeb-src http://archive.canonical.com/ubuntu karmic partner

deb http://security.ubuntu.com/ubuntu karmic-security main restricteddeb-src http://security.ubuntu.com/ubuntu karmic-security main restricteddeb http://security.ubuntu.com/ubuntu karmic-security universedeb-src http://security.ubuntu.com/ubuntu karmic-security universedeb http://security.ubuntu.com/ubuntu karmic-security multiversedeb-src http://security.ubuntu.com/ubuntu karmic-security multiverse

2.4 Acceso Remoto usando SSHLa idea es que podamos acceder a nuestro servidor desde cualquier maquina de la LAN a la que proveeservicios, también se puede hacer que podamos acceder a él desde cualquier red pero no es lo que me interesaahora.

Instalamos el servidor SSH:

apt-get install openssh-server

Editamos su configuración:

nano /etc/ssh/sshd_config

Modificando las líneas señaladas:

línea 8 ListenAddress 192.168.1.1

El servidor puede escuchar en muchas direcciones IP, agreguen las que necesiten, por ejemplo:

ListenAddress 192.168.1.1ListenAddress 192.168.0.3ListenAddress 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 [email protected]

desde un cliente Windows: utilizamos PuTTY, y seleccionamos en el tipo de conexión: 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.1Port: 22

Muestro el archivo de configuración final:/etc/ssh/sshd_config

# Package generated configuration file# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen forPort 22

Page 9: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 9 de 34

# Use these options to restrict which interfaces/protocols sshd will bind toListenAddress 192.168.1.1ListenAddress 192.168.0.3#ListenAddress 0.0.0.0Protocol 2# HostKeys for protocol version 2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_key#Privilege Separation is turned on for securityUsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server keyKeyRegenerationInterval 3600ServerKeyBits 768

# LoggingSyslogFacility AUTHLogLevel INFO

# Authentication:LoginGraceTime 120PermitRootLogin yesStrictModes yes

RSAAuthentication yesPubkeyAuthentication yes#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts filesIgnoreRhosts yes# For this to work you will also need host keys in /etc/ssh_known_hostsRhostsRSAAuthentication no# similar for protocol version 2HostbasedAuthentication 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 yesX11DisplayOffset 10PrintMotd noPrintLastLog yesTCPKeepAlive yes#UseLogin no

#MaxStartups 10:30:60#Banner /etc/issue.net

Page 10: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 10 de 34

# Allow client to pass locale environment variablesAcceptEnv 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 configuración:

nano /etc/default/dhcp3-server

Agregamos a la línea 11 la interfase que dará el servicio DHCP

INTERFACES="eth0"

Configurar el servicio DHCP

nano /etc/dhcp3/dhcpd.conf

Modificando las líneas señaladas:

línea 14

línea 25

línea 17línea 18

línea 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 configuración se logra un servidor DHCP que va a ofrecer servicios a CUALQUIER placa de red que seacliente, es la configuración más básica que se puede armar. Si examinan mejor el archivo de configuración semuestran muchos ejemplos y también se muestra como asignar siempre las mismas direcciones adeterminadas 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 línea deStarting tengamos un [OK].

Si tenemos [fail] es porque escribimos algo mal en los archivos de configuración, para entender mejor elerror podemos ver el syslog:

nano /var/log/syslog

Page 11: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 11 de 34

Archivos de configuración 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;}

Page 12: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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 dinámicas, siempre asigno la misma dirección a las mismasplacas de red, si una MAC no esta cargada en la lista no será atendida por el servidor DHCP, esto lo hago poruna cuestión comodidad y tengan en cuenta que se pueden usar simultáneamente asignaciones dinámicas ydirecciones 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 ybásico para cualquier router.

Creamos el archivo iptables.cf:

nano /etc/init.d/iptables.cf

El archivo debe tener:

1234

echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -Fiptables -t nat –Fiptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3

Funcionamiento: Línea 1: Activa reenvío de paquetes, esto permite que los paquetes que llegan a una interfase pasen a

la otra y viceversa. Línea 2 y 3: Borra cualquier otra regla existente de filtrado. Línea 4: Source Nat (SNAT para amigos), esta línea aplica una regla a todos los paquete que después

de haber sido rutiados que tienen que salir por la interfase eth1 (salida a Internet) realizando uncambio en la dirección de origen por 192.168.0.3 (o la IP que tengamos configurada en la interfaseeth1)

Esto es lo que hace Win cuando hacemos Click derecho sobre una conexión de red, Compartir Conexión y luegole damos Permitir a otros usuario usar esta conexión. Parece mas fácil hacerlo en Win?,… no se lo crean…

Guardamos el archivo creado y solo falta dale permisos de ejecución:

chmod a+x /etc/init.d/iptables.cf

Page 13: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 13 de 34

Ahora para que se ejecute al arranque instalaremos un pequeño programa que nos ayuda a configurar losarchivos 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. Tendrías que poder salir a Internet con todas las maquinas detu red.

Un detalle que a lo mejor 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 sepueden 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, quepermiten re-cargar la configuración sin detener el servicio o el comando status, que muestran el estado delservicio.

Page 14: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 14 de 34

Capitulo 3: Router Avanzado

3.1 Segundo encuentro con IPTABLESCon Iptables se pueden controlar todos los paquetes que pasan por las interfases de nuestra computadora, solocon unas simples líneas se puede lograr cosas fabulosas o la destrucción total de nuestra red.

Los cambios que realizan los comandos se aplican instantáneamente, sin necesidad de reiniciar la computadora,por eso es bueno antes de comenzar a implementar políticas de seguridad realizar un backup de laconfiguración actual que funcione correctamente, si ven el archivo anterior “/etc/init.d/iptables.cf” líneas2 y 3 son muy importantes porque borran todo lo anterior y luego se carga una nueva configuración, lo que nospermite usar ese archivo para volver a una configuración limpia, muy básica pero que funciona.

Lo que recomiendo es realizar pequeños cambios y probarlos, cuando estamos completamente seguros quefunciona como esperábamos lo guardamos como archivo de backup.Para esta tarea recomiendo mucho el uso de scripts, voy a explicar rápidamente como crear scripts.

Básicamente en Linux cualquier archivo de texto con permisos de ejecución y una línea principal al comienzo seconvierte en un script, es decir que todos los comandos que ejecutemos línea por línea se ejecutan uno por unoal correr el script.

Nos paramos en nuestro directorio de trabajo, o donde les quede cómodo:

cd /home/gerardo/

Creo un archivo de texto:

nano mi-script

Adentro escribimos:

#!/bin/shecho “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 ejecución:

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 todoslos usuarios. FIN!, así de fácil 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

Page 15: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 15 de 34

Con ese concepto, ahora podemos crear un hermoso filtro con Iptables.Lo importante y a veces difícil es saber que filtrar o quienes son las amenazas, para mi caso (una red muysencilla) la gran amenaza es que un usuario no permitido navegue gratis por Internet, esto se solucionautilizando una política de filtrado por dirección MAC a todos los paquetes que llegan desde la LAN al router(eth0), mi solución fue:

mi filtro con iptables#!/bin/sh

# RESET DE REGLASiptables -Fiptables -Xiptables -Ziptables -t nat -F

# ACTIVO REENVIO DE PAQUETESecho 1 > /proc/sys/net/ipv4/ip_forward

# CONFIGURO SNAT, TODO TIENE QUE SALIR POR eth1 CON LA IP: 192.168.0.3iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3

# ---------------------# FIREWALL# ---------------------

### POLITICAS POR DEFECTO DEL FIREWALLiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -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/24iptables -A FORWARD -j DROP -i eth0 \! -s 192.168.1.0/24

# No ip spoofing, denegar cualquier paquete con dirección local que quiera entrar:iptables -A INPUT -j DROP \! -i lo -s 127.0.0.0/8iptables -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 DROPiptables -A FORWARD -m state --state NEW -i eth1 -j DROP

# Allowing establishediptables -A INPUT --match state --state ESTABLISHED -j ACCEPTiptables -A OUTPUT --match state --state ESTABLISHED -j ACCEPT

# Allowing relatediptables -A INPUT --match state --state RELATED -j ACCEPTiptables -A OUTPUT --match state --state RELATED -j ACCEPT

# Allowing loopiptables -A INPUT -i lo --match state --state NEW -j ACCEPTiptables -A OUTPUT -o lo --match state --state NEW -j ACCEPT

# Allowing outgoingiptables -A OUTPUT -o eth1 --match state --state NEW -j ACCEPT

Page 16: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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:

# APiptables -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 política por defecto para los paquete de entrada (INPUT) a DROP, la política por defectoindica 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 sedescarta el paquete, a la primera regla que se cumple se toma la decisión 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 noesta 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 secumple, se ejecuta) no me es conveniente colocar al principio reglas muy permisivas, es mejor comenzarDenegando 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";};

Page 17: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 17 de 34

Creamos el archivo de resolución 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.1gerardo IN A 192.168.1.10

Creamos el archivo de resolución 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 configuración final:Para mi caso utilice Bind con autoridad sobre 2 dominios

1. lamernet.com.ar2. lamernet

El primero lo uso para la página web: www.lamernet.com.ar y el segundo para resolver la dirección de todos losclientes de la red. Por ejemplo el servidor será: servidor.lamernet, mi maquina es: gerardo.lamernet, entoncespara entrar a otras maquinas de la red solo hace falta saber el nombre y no necesitas acordarte la dirección IP.

Como el servidor DNS tiene autoridad sobre 2 dominios distintos, voy a tener 2 archivos de definición directa (1para cada dominio) y solo 1 archivo de resolución inversa, porque los dominios comparten la misma direcciónde 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" {

Page 18: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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.1ap IN A 192.168.1.2usuario101 IN A 192.168.1.101usuario102 IN A 192.168.1.102usuario103 IN A 192.168.1.103usuario104 IN A 192.168.1.104usuario105 IN A 192.168.1.105usuario106 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.

Page 19: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 19 de 34

En general el DNS es fácil de configurar y los errores mas comunes son de tipeo, si no funciona revisen bien losarchivos 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 VirtualesEn /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 configuración de los hostings virtuales se configuran en sites-available. El segundosubdirectorio sólo 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 navegadorwww.lamernet.com.ar me debe de llevar a la página principal de ese host, primero tenemos que crearlo dentrodel 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 página web

Luego creamos el virtualhost haciendo:cd /etc/apache2/sites-availablecp default www.lamernet.com.ar

Ahora editamos las primeras líneas del archivo www.lamernet.com.arnano www.lamernet.com.ar

Quedando:<VirtualHost *:80>

ServerAdmin [email protected] www.lamernet.com.arDocumentRoot /home/www/www.lamernet.com.ar<Directory />

Options FollowSymLinksAllowOverride None

</Directory><Directory /home/www/www.lamernet.com.ar>

Options Indexes FollowSymLinks MultiViewsAllowOverride NoneOrder allow,denyallow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<Directory "/usr/lib/cgi-bin">

AllowOverride NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatchOrder allow,denyAllow 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

Page 20: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 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 leindiquemos (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 más virtualhost.

Si tenemos problemas con la instalación o su configuración y el servidor deja de funcionar puede resultar útil elsiguiente comando para reinstalar por completo el apache:

sudo apt-get remove --purge $(dpkg -l apache* | grep ii | awk '{print $2}') && sudo apt-getinstall 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 configuración que utilice. Es una de lasmás básicas pero de gran utilidad.

Como van a ver el archivo de configuración de Squid es GIGANTE, pero la mayoría de las líneas estáncomentadas porque son ejemplos de usos y distintas configuraciones, voy a adjuntar un archivo deconfiguración sin comentarios y solo con la parte básica 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 líneas que NO comiencen por “#” y las guarda en elarchivo sin-comentarios

Archivo de configuración final:/etc/squid/squid.conf

# Configuración minima por defecto:acl all src allacl manager proto cache_objectacl localhost src 127.0.0.1/32acl to_localhost dst 127.0.0.0/8acl purge method PURGEacl CONNECT method CONNECT

# Mis acl's:acl no_facebook url_regex http://www.facebook.comacl bloqueados src "/etc/squid/bloqueados"acl no_porn url_regex "/etc/squid/porn"

# Aplico las acl's:http_access deny no_porn bloqueadosdeny_info ERR_NO_PORN.html no_porn bloqueadoshttp_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purge

Page 21: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 21 de 34

http_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localnethttp_access allow localhosthttp_access deny all

# El resto de la configuración de Squidicp_access allow localneticp_access deny allhttp_port 3128 transparenthierarchy_stoplist cgi-bin ?cache_mem 128 MBmaximum_object_size_in_memory 64 KBcache_dir ufs /var/spool/squid 50000 16 256max_open_disk_fds 1cache_swap_low 80cache_swap_high 95update_headers onaccess_log /var/log/squid/access.log squidcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880refresh_pattern . 0 20% 4320acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]upgrade_http0.9 deny shoutcastacl apache rep_header Server ^Apachebroken_vary_encoding allow apacheextension_methods REPORT MERGE MKACTIVITY CHECKOUTerror_directory /usr/share/squid/errors/eshosts_file /etc/hostsoffline_mode oncoredump_dir /var/spool/squid

Funcionamiento:Por defecto Squid trae algunas ACL que nos brindan una seguridad básica y sirven de ejemplo, lo masimportante de la configuración presentada es que es transparente al usuario, es decir, no hace falta configurarel navegador de Internet o el sistema operativo para que usen el Proxy y los usuarios salen a Internet sin saberque hay un Proxy.

El funcionamiento transparente se logra gracias a la posibilidad de la nueva versión de squid de trabajar enmodo transparente y además debe ser acompañada de una regla de iptables que redirecciona todo el tráficocon puerto de destino 80 hacia el puerto al que “escucha” nuestro Proxy (3128).

Para eso esta la línea, 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 páginas hostiadas en nuestro propio servidor, sesoluciona agregando ANTES a la regla de redireccionar el tráfico 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

Además de proveer filtrado y seguridad, Squid funciona como chache, almacenado las paginas o parte de ellasen su memoria para ahorrar trafico cuando la pagina sea consultada nuevamente.

Page 22: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 22 de 34

Por el lado del filtrado a modo de ejemplo voy a explicar unos casos simples pero útiles para que entiendancomo 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.comacl 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.comLa 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.110192.168.1.107

pornsexxxx

Las ACL por si solas no hacen nada, noten que no toman ninguna decisión de filtrado (permitir, denegar, etc.).Se aplican similar a los comando iptables (primera regla que se cumple se ejecuta), entonces importa el ordende aplicación:

# 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 localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localnethttp_access allow localhosthttp_access deny all

Noten la forma de aplicar las ACL, para el contenido bloqueado lo aplique junto con la lista de direccionesbloqueadas (Operación lógica AND), es decir que si se cumple que el paquete es de una de las direcciones de la

lista en “/etc/squid/bloqueados” Y además 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 línea equivale a la operación lógica OR, igual que en iptables.

Otro detalle, vean que en ningún momento aplique la acl no_facebook, es decir que se pueden tener ACL sinaplicar 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 nocumplió con alguna de las reglas anteriores, esta condición se puede modificar según las características delfiltrado.

Como en el caso de iptables, esto es solo un ejemplo básico a modo de guía y tengan en cuenta que se puedenhacer muchas reglas mas avanzadas que estas.

Page 23: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 23 de 34

Capitulo 4: Utilidades y Accesorios

4.1 Montar carpetas compartidas en red de Windows en UbuntuEs 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 deUbuntu

chown gerardo /home/compartidachgrp 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 delrecurso compartido.

4.2 Crear carpetas compartidas en Linux para ver desde WindowsGracias a Samba podemos compartir recursos de Linux con los usuarios de Windows, lo que vamos a hacer escrear una carpeta llamada “Descargas” que estará compartida bajo contraseña con todos los usuarios de la red.

Editamos la configuración de Samba:

Nano /etc/samba/smb.conf

En la línea 242 de ese archivo comienza:

#======================= Share Definitions =======================

Agregamos las líneas:

[Descargas] path = /Descargas comment = Servicio de Descargas browseable = yes

read only = no guest ok = no

Esta es la forma más básica de compartir una carpeta en Linux. Muestro otro ejemplo donde no se necesitacontraseña 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

Page 24: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 24 de 34

4.3 Servicio de descargas por TorrentLa idea es aprovechar que vamos a tener una computadora encendía las 24 horas del día para que ella nosdescargue 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 instalamospreviamente) y TorrentFlux.

Como primer paso antes de instalar TorrentFlux vamos a crear una nueva base de datos SQL que usaremos conTorrentFlux. Durante la instalación el sistema nos solicitará configurar una base de datos para adaptarla aTorrentFlux así que debemos crear una antes de instalarlo.

Ejecutamos un navegador en un ordenador cliente y ejecutamos la dirección IP de nuestro servidor dedescargas seguido de /phpmyadmin. En mi caso http://192.168.1.1/phpmyadmin y veremos:

Introducimos el nombre del súper usuario (root) y el password de administrador para la base de datosconfigurado durante el proceso de instalación.

Ahora en phpmyadmin vamos a crear una base de datos nueva para TorrentFlux y para ello vamos a introducirel nombre ( torrentflux ) en la casilla:

Page 25: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 25 de 34

Continuamos pulsando el botón (Crear)

Ahora tenemos una base de datos llamada (torrentflux), nos la apuntamos además del nombre de usuario,password y continuamos arrancando nuestro servidor de descargas e identificándonos como root en el sistemade la manera habitual.

Una vez identificados continuaremos instalando torrentflux del siguiente modo:

apt-get install torrentflux

Continuamos con la instalación:

Page 26: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 26 de 34

A continuación el sistema nos avisa sobre un cambio que deberemos hacer, de momento pulsamos la tecla(Enter)

Como ya hicimos anteriormente a la instalación de TorrentFlux una base de datos llamada (torrentflux)especificaremos en esta pantalla la opción (Si) y continuamos con la tecla (Enter)

Ahora introducimos el password del super usuario (root) de MySQL y pulsamos la tecla (Enter)

Page 27: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 27 de 34

Pasamos este mensaje por alto de momento, después lo revisaremos. Continuamos con la tecla (Enter) y unavez terminada la instalación de TorrentFlux aremos unos ajustes para adaptarlo a nuestro servidor Web y quefuncione correctamente.

Para acceder a TorrentFlux desde un cliente, vamos a crear un enlace simbólico desde el directorio Web quenos ofrece TorrentFlux hacia el directorio Web de nuestra página 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 yveremos:

Nos logeamos con root y la contraseña y tenemos un gestor de descargas con interfase web. Con un poco deDreamweaver el trabajo final quedo así:

Page 28: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 28 de 34

TorrentFlux tiene buenas configuraciones, lo que recomiendo en configurarlo para que descargue los archivo enuna carpeta y luego compartir esa carpeta para poder acceder desde la red y así copiar los archivos a nuestramaquina.

Page 29: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 29 de 34

4.4 Estadísticas de HardwareSuele ser muy útil saber que esta pasando dentro del servidor, un programa que nos puede ayudar en estatarea es “PHPsysinfo”, este programa genera un reporte en PHP que podemos cargar en nuestra página paratener una idea el estado de nuestro servidor.

Instalación:

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 laaplicación.

El reporte que genera PHPsysinfo se puede configurar editando el archivo:

nano /etc/phpsysinfo/config.php

Destaco la línea donde podemos configurar el lenguaje y el estilo del reporte, la modificamos quedando:

// define the default language and template heredefine('lang', 'es');define('template', 'clean.css');

4.5 Estadísticas WebPodemos obtener un reporte muy completo sobre las consultas a nuestra Web usando la aplicación AwStats.

Instalación:

apt-get apt-get install awstats

Editamos el archivo de configuración:

nano /etc/awstats/awstats.conf

Buscamos y editamos las siguientes líneas, quedando:

Línea 51 LogFile=”/var/log/apache2/access.log”Línea 122 LogFormat=1

Línea 153 SiteDomain=”www.lamernet.com.ar”Línea 188 DNSLookup=0

Línea 905 Lang=”es”

El siguiente paso es copiar el archivo de configuración con el nombre de nuestro dominio:

cp /etc/awstats/awstats.conf /etc/awstats/awstats.lamernet.com.ar.conf

Ejecutamos la configuración generada:

/usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.conf

Creamos un enlace simbólico desde la carpeta que creo awstats al directorio raíz de nuestra Web.

ln –s /usr/lib/cgi-bin /home/www/www.lamernet.com.ar/cgi-bin

Solo falta agregar unas líneas en la configuración de Apache:

nano /etc/apache2/apache2.conf

Se agregan al final del archivo de configuración las siguientes líneas:

Page 30: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 30 de 34

# Configura Apache para que muestre las imágenes de las estadísticas:

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,denyAllow from all</Directory>

Reiniciamos Apache y todo debería funcionar

/etc/init.d/apache2 restart

Si entramos a: www.lamernet.com.ar/cgi-bin/awstats.pl?config=awstats.lamernet.com.ar.conf, tenemos quever el informe generado por Awstats.

Por ultimo paso solo falta generar un script que actualice las estadísticas, eso se logra usando un programadorde tareas incluido en el sistemas que es Crontab. Hay varias formas de hacer esto, explico la que me parecemás simple.

Si nos fijamos en el directorio /etc veremos una serie de carpetas generadas por la aplicación Crontab

Ejecutamos:

ls /etc/ | grep cron

Veremos:

cron.dcron.dailycron.hourlycron.monthlycrontabcron.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 estadísticas, tendremos elproblema resuelto:

nano /etc/cron.hourly/actualiza-estadisticas-web

Dentro del archivo escribimos:

#!/bin/sh

# Este Script actualiza las estadísticas Web para www.lamernet.com.ar

/usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.confecho "Estadisticas Web para www.lamernet.com.ar, Actualizadas correctamente"

Solo falta darle permisos de ejecución al archivo y listo:

chmod a+x /etc/cron.hourly/actualiza-estadisticas-web

Page 31: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 31 de 34

4.6 Monitor de TemperaturasLa temperatura del sistema es un dato importante que siempre es bueno saber en cualquier computadora ymucho mas importante en una computadora que esta las 24 horas del día encendida, entonces vamos agenerar un pequeño script que genere un archivo de texto dentro del directorio raíz de nuestra pagina Webpara poder visualizar los niveles de temperatura de la maquina con unos simples clicks y desde nuestra Web.

Para esta tarea vamos a utilizar una aplicación llamada Sensors, que nos muestra información sobre lossensores de nuestra computadora.

Instalación:

apt-get install lm-sensors

Ejecutamos al aplicación 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, parami caso el resultado fue:

#----cut here----# I2C adapter driversi2c-i801# Chip driverssmsc47m192smsc47m1#----cut here----

Luego nos pregunta si queremos que agregue esas líneas automáticamente en /etc/modules, respondemos“yes” y todo listo.

Si ejecutamos el comando:

Sensors

Debemos ver un reporte como el siguiente:

smsc47m192-i2c-0-2dAdapter: 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.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: +36.0°C (low = -127.0°C, high = +127.0°C)cpu0_vid: +2.050 V

Puede ser mas o menos completo, dependiendo de los sensores disponibles en tu maquina.

Para completar más aun nuestro script monitor de temperatura, vamos a agregar otro programa que nospermite conocer la temperatura de nuestro disco rígido:

Instalación:

apt-get install hddtemp

El programa nos preguntará si queremos que se arranque al inicio, la interfaz en la que escuchar y el puerto. Enprincipio a las dos ultimas preguntas dejamos el valor por defecto pulsando Enter, a la primera yo aconsejoponer SI, pero es una elección personal.

Page 32: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 32 de 34

Con esto tendremos instalado el programa, si le hemos dicho que se arranque al inicio ya lo tendremos enejecución si no tendremos que arrancarlo nosotros, para ello ejecutaremos la siguiente instrucción:

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 losresultados 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.txtecho "------------------------------------------------------------------------ " >>/www/www.lamernet.com.ar/temps.txt

sensors >> /www/www.lamernet.com.ar/temps.txt

echo " " >> /www/www.lamernet.com.ar/temps.txtecho " " >> /www/www.lamernet.com.ar/temps.txt

echo " - TEMPERATURA DEL DISCO: " >> /www/www.lamernet.com.ar/temps.txtecho "------------------------------------------------------------------------ " >>/www/www.lamernet.com.ar/temps.txthddtemp /dev/sda >> /www/www.lamernet.com.ar/temps.txt

echo " " >> /www/www.lamernet.com.ar/temps.txtecho " " >> /www/www.lamernet.com.ar/temps.txtecho "Actualizado: " >> /www/www.lamernet.com.ar/temps.txtdate >> /www/www.lamernet.com.ar/temps.txt

Solo falta darle permisos de ejecución al archivo y listo:

chmod a+x /etc/cron.hourly/temperaturas

Page 33: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 33 de 34

El Resultado final lo pueden ver entrando a: www.lamernet.com.ar/temps.txt, muestro uno de los archivosgenerados por nuestro script:

- INFO DEL SISTEMA:------------------------------------------------------------------------smsc47m192-i2c-0-2dAdapter: 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

Page 34: Servidor Paso a Paso

Guía practica para montar un servidor con Ubuntu Server

Gerardo R. Piermattei, [email protected] Página 34 de 34

Capitulo 5: Fuentes y Agradecimientos

Parte de la info de esta guía fue obtenida de foros o de otras guías, perdí un poco el rastro de cuales fueron laspáginas que use para armar la guía pero las principales fueron:

las secciones 4.3, 4.4 y 4.4 las copie directamente desde: www.forat.info encontré la solución 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. Enagradecimiento esta guía será publicada abiertamente en los foros para que todos puedan usarla y aportar susconocimientos.

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.