Está en la página 1de 34

Guía practica para montar un servidor

con Ubuntu Server 9.10


Guía practica para montar un servidor con Ubuntu Server

Í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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 2 de 34


Guía practica para montar un servidor con Ubuntu Server

Capitulo 1: Instalación

1.1 Conocimientos Previos


La guía apunta a estudiantes de telecomunicaciones con interés en Linux y redes IP, muestra ejemplos de
configuraciones 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, algunos
de los posibles problemas que pueden aparecer con sus respectivas soluciones y consejos que me facilitaron la
instalació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 se
necesita 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 Hardware


Lo bueno de esta guía es que esta orientada a trabajar completamente en consola, se puede instalar un
entorno grafico mínimo 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 instalación

Lógico que con una maquina de esas características no vamos a poder atender muchas computadoras, pero nos
sobra 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 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 familiarizándose de a poco con la consola seguro
les 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 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 tráfico en mi red les paso este dato:
En 18 días la interfase que me conecta a Internet:
Recibió: 40 Gb
Envío: 7 Gb
No es mucho si lo comparamos con una gran red, pero sirve para empezar.

1.3 Instalación
La instalación es bastante sencilla y amigable, basta con solo bootear desde el CD-ROM que podemos obtener
de 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 hacen
renegar.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 3 de 34


Guía practica para montar un servidor con Ubuntu Server

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:
Tamaño Descripción Punto de montaje Formato
100 Mb Partición para boot /boot ext4
1 Gb Área de intercambio (Swap) no se monta el sistema se encarga del formato
20 Gb Raíz (/) / ext4
10 Gb Home /home ext4

Un esquema del disco seria:

100 Mb 1 Gb 20 Gb 10 Gb
/boot Swap / / home

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

Continuando con la instalación, 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 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.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 4 de 34


Guía practica para montar un servidor con Ubuntu Server

Capitulo 2: Router básico

2.1 Configuración 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, 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 y
LAN 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 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 opción por ser más practica, porque son muchos comandos los que se van a usar.

Editamos:
nano /etc/network/interfaces

Agregando:
# WAN: # muestro como seria una WAN ESTATICA
auto eth1 # tengan en cuenta que usamos DHCP ó STATIC
iface eth1 inet dhcp # no las dos configuraciones al mismo tiempo
# ESTO ES UN EJEMPLO
# LAN: auto eth1
auto eth0 iface eth1 inet static
iface eth0 inet static address 192.168.110.229
address 192.168.1.1 netmask 255.255.255.0
netmask 255.255.255.0 network 192.168.110.0
network 192.168.1.0 broadcast 192.168.110.255
broadcast 192.168.1.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 configuración.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 5 de 34


Guía practica para montar un servidor con Ubuntu Server

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 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 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 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 información por si necesitamos instalar o borrar paquetes
cuyo nombre no conocemos.

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


mount /dev/cdrom /cdrom
apt-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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 6 de 34


Guía practica para montar un servidor con Ubuntu Server

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 líneas suelen estar comentadas en el archivo, si las encuentran comentadas borren el “#” al principio de
la 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 lo
olviden 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 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 7 de 34


Guía practica para montar un servidor con Ubuntu Server

## 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, también 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 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.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 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.1
Port: 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 for


Port 22

Gerardo R. Piermattei, gpiermattei@gmail.com Página 8 de 34


Guía practica para montar un servidor con Ubuntu Server

# 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 9 de 34


Guía practica para montar un servidor con Ubuntu Server

# 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 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 ddns-update-style interim;

línea 25 authoritative;

línea 17 # option domain-name “example.org”;


línea 18 # option domain-name-servers ns1.example.org, ns2.example.org;

línea 39 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 sea
cliente, es la configuración más básica que se puede armar. Si examinan mejor el archivo de configuración se
muestran muchos ejemplos y también 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 línea de
Starting tengamos un [OK].

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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 10 de 34


Guía practica para montar un servidor con Ubuntu Server

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;
}

Gerardo R. Piermattei, gpiermattei@gmail.com Página 11 de 34


Guía practica para montar un servidor con Ubuntu Server

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 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 cuestión comodidad y tengan en cuenta que se pueden usar simultáneamente asignaciones dinámicas 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
básico para cualquier router.

Creamos el archivo iptables.cf:


nano /etc/init.d/iptables.cf

El archivo debe tener:


1 echo 1 > /proc/sys/net/ipv4/ip_forward
2 iptables -F
3 iptables -t nat –F
4 iptables -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 un
cambio en la dirección 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 conexión de red, Compartir Conexión y luego
le 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 12 de 34


Guía practica para montar un servidor con Ubuntu Server

Ahora para que se ejecute al arranque instalaremos un pequeño 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. Tendrías que poder salir a Internet con todas las maquinas de
tu 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 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 configuración sin detener el servicio o el comando status, que muestran el estado del
servicio.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 13 de 34


Guía practica para montar un servidor con Ubuntu Server

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 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 la
configuración actual que funcione correctamente, si ven el archivo anterior “/etc/init.d/iptables.cf” líneas
2 y 3 son muy importantes porque borran todo lo anterior y luego se carga una nueva configuración, lo que nos
permite 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 que
funciona 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 se
convierte en un script, es decir que todos los comandos que ejecutemos línea por línea se ejecutan uno por uno
al 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/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 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 todos
los 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 14 de 34


Guía practica para montar un servidor con Ubuntu Server

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 muy
sencilla) la gran amenaza es que un usuario no permitido navegue gratis por Internet, esto se soluciona
utilizando 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 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 dirección 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 15 de 34


Guía practica para montar un servidor con Ubuntu Server

# ---------------------
# 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 política por defecto para los paquete de entrada (INPUT) a DROP, la política 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 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 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";
};

Gerardo R. Piermattei, gpiermattei@gmail.com Página 16 de 34


Guía practica para montar un servidor con Ubuntu Server

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.1
gerardo 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.ar
2. lamernet

El primero lo uso para la página web: www.lamernet.com.ar y el segundo para resolver la dirección 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 dirección IP.

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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 17 de 34


Guía practica para montar un servidor con Ubuntu Server

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.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 18 de 34


Guía practica para montar un servidor con Ubuntu Server

En general el DNS es fácil 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 configuración de los hostings virtuales se configuran en sites-available. El segundo


subdirectorio 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 navegador


www.lamernet.com.ar me debe de llevar a la página 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 página web

Luego creamos el virtualhost haciendo:


cd /etc/apache2/sites-available
cp default www.lamernet.com.ar

Ahora editamos las primeras líneas 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 19 de 34


Guía practica para montar un servidor con Ubuntu Server

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 más virtualhost.

Si tenemos problemas con la instalación o su configuración 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 configuración que utilice. Es una de las
má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án
comentadas porque son ejemplos de usos y distintas configuraciones, voy a adjuntar un archivo de
configuració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 el
archivo sin-comentarios

Archivo de configuración final:


/etc/squid/squid.conf
# Configuración 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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 20 de 34


Guía practica para montar un servidor con Ubuntu Server

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 configuración 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 básica y sirven de ejemplo, lo mas
importante de la configuración 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 versión de squid de trabajar en


modo transparente y además debe ser acompañada de una regla de iptables que redirecciona todo el tráfico
con 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, se
soluciona 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 ellas
en su memoria para ahorrar trafico cuando la pagina sea consultada nuevamente.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 21 de 34


Guía practica para montar un servidor con Ubuntu Server

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 porn
192.168.1.107 sex
xxx

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 orden
de 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 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 (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 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 condición se puede modificar según las características del
filtrado.

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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 22 de 34


Guía practica para montar un servidor con Ubuntu Server

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 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 necesita
contraseñ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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 23 de 34


Guía practica para montar un servidor con Ubuntu Server

4.3 Servicio de descargas por Torrent


La idea es aprovechar que vamos a tener una computadora encendía las 24 horas del día 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 instalación 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 dirección IP de nuestro servidor de


descargas 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 datos
configurado durante el proceso de instalación.

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:

Gerardo R. Piermattei, gpiermattei@gmail.com Página 24 de 34


Guía practica para montar un servidor con Ubuntu Server

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 sistema
de la manera habitual.

Una vez identificados continuaremos instalando torrentflux del siguiente modo:


apt-get install torrentflux

Continuamos con la instalación:

Gerardo R. Piermattei, gpiermattei@gmail.com Página 25 de 34


Guía practica para montar un servidor con Ubuntu Server

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)

Gerardo R. Piermattei, gpiermattei@gmail.com Página 26 de 34


Guía practica para montar un servidor con Ubuntu Server

Pasamos este mensaje por alto de momento, después lo revisaremos. Continuamos con la tecla (Enter) y una
vez terminada la instalación 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 simbólico desde el directorio Web que
nos 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 y
veremos:

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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 27 de 34


Guía practica para montar un servidor con Ubuntu Server

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.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 28 de 34


Guía practica para montar un servidor con Ubuntu Server

4.4 Estadísticas 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 página para
tener 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 la


aplicació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 here
define('lang', 'es');
define('template', 'clean.css');

4.5 Estadísticas Web


Podemos 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:

Gerardo R. Piermattei, gpiermattei@gmail.com Página 29 de 34


Guía practica para montar un servidor con Ubuntu Server

# 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,deny
Allow 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 que


ver el informe generado por Awstats.

Por ultimo paso solo falta generar un script que actualice las estadísticas, 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
más simple.

Si nos fijamos en el directorio /etc veremos una serie de carpetas generadas por la aplicación Crontab
Ejecutamos: Veremos:
ls /etc/ | grep cron 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 estadísticas, tendremos el
problema 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.conf
echo "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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 30 de 34


Guía practica para montar un servidor con Ubuntu Server

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 día encendida, entonces vamos a
generar un pequeño script que genere un archivo de texto dentro del directorio raíz 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 aplicación llamada Sensors, que nos muestra información sobre los
sensores 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, 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 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-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.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 nos
permite 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. En
principio a las dos ultimas preguntas dejamos el valor por defecto pulsando Enter, a la primera yo aconsejo
poner SI, pero es una elección personal.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 31 de 34


Guía practica para montar un servidor con Ubuntu Server

Con esto tendremos instalado el programa, si le hemos dicho que se arranque al inicio ya lo tendremos en
ejecució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 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 ejecución al archivo y listo:


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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 32 de 34


Guía practica para montar un servidor con Ubuntu Server

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

Gerardo R. Piermattei, gpiermattei@gmail.com Página 33 de 34


Guía practica para montar un servidor con Ubuntu Server

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 las
pá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. En
agradecimiento esta guía 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.

Gerardo R. Piermattei, gpiermattei@gmail.com Página 34 de 34