You are on page 1of 34

Gua practica para montar un servidor

con Ubuntu Server 9.10

Gua practica para montar un servidor con Ubuntu Server

ndice
Capitulo 1: Instalacin
1.1

Conocimientos previos

1.2

Requisitos de Hardware

1.3

Instalacin

Capitulo 2: Router bsico


2.1

Configuracin de red al arranque

2.2

Grupo de trabajo

2.3

Paquetes, paquetes y mas paquetes...

2.4

Acceso Remoto usando SSH

2.5

Dhcp3, servidor DHCP

10

2.6

Primer encuentro con IPTABLES (Solo SNAT)

12

Capitulo 3: Router Avanzado


3.1

Segundo encuentro con IPTABLES (Seguridad y polticas de filtrado)

14

3.2

Servidor DNS Primario con Bind9

16

3.3

Apache 2, servidor WEB con Host Virtuales

19

3.4

Squid, proxy de red

20

Capitulo 4: Utilidades y Accesorios


4.1

Montar carpetas compartidas en red de Windows en Linux

23

4.2

Crear carpetas compartidas en Linux para ver desde Windows

23

4.3

Servicio de descargas por Torrent

24

4.4

Estadsticas de Hardware

29

4.5

Estadsticas web

29

4.6

Monitor de Temperaturas

31

Capitulo 5: Fuentes y Agradecimientos


Fuentes y Agradecimientos

Gerardo R. Piermattei, gpiermattei@gmail.com

34

Pgina 2 de 34

Gua practica para montar un servidor con Ubuntu Server

Capitulo 1: Instalacin

1.1 Conocimientos Previos


La gua apunta a estudiantes de telecomunicaciones con inters en Linux y redes IP, muestra ejemplos de
configuraciones bsicas con aplicaciones tpicas y en funcionamiento.
Lo que la hace diferente a otras guas disponibles en Internet es que explico paso a paso como se hace, algunos
de los posibles problemas que pueden aparecer con sus respectivas soluciones y consejos que me facilitaron la
instalacin.
En esta gua no se explica en detalle la teora de redes ni mucho menos los comandos de Linux, por lo que se
necesita mnimos conocimientos de Linux, uso bsico de consola, crear archivos de texto, guardarlos, editarlos,
copiarlos, etc. y por parte de redes, los fundamentos tericos y aplicaciones.
Los temas que se excluyen en esta gua se encuentran con facilidad en Internet o en otras guas.

1.2 Requisitos de Hardware


Lo bueno de esta gua es que esta orientada a trabajar completamente en consola, se puede instalar un
entorno grafico mnimo para facilitar las configuraciones, pero no es necesario. Si solo usamos la consola
podemos instalar Ubuntu en maquinas muy chicas.
Lo que normalmente se recomienda es:
Procesador de 500 Mhz
128 Mb de RAM
2 GB de disco
2 Placas de Red
Lector de CD solo para la instalacin
Lgico que con una maquina de esas caractersticas no vamos a poder atender muchas computadoras, pero nos
sobra para aprender y atender unos 10 usuarios o algunos ms.
Si conseguimos una PC un poco ms potente, podemos darnos el lujo de instalar un entorno grafico para
facilitar las configuraciones. Se que mucha gente no esta de acuerdo en esto, pero a muchos les resulta muy
incomodo usar siempre la consola, a ellos les recomiendo ir familiarizndose de a poco con la consola seguro
les va a resultar extremadamente til al cavo de unos captulos y mas aun cuando usemos SSH.
La computadora que estoy usando en este momento es:
Procesador: Intel Atom 330 (64 bits, doble ncleo @1,6 Ghz)
Placa madre: Intel D945GCLF2
Memoria: 1 GB DDR2 677
Disco: 250 GB SATA 2
Soporta perfectamente un entorno grafico y sobra procesador para es uso de mi red. Para que tengan una idea
del trfico en mi red les paso este dato:
En 18 das la interfase que me conecta a Internet:
Recibi: 40 Gb
Envo: 7 Gb
No es mucho si lo comparamos con una gran red, pero sirve para empezar.

1.3 Instalacin
La instalacin es bastante sencilla y amigable, basta con solo bootear desde el CD-ROM que podemos obtener
de la pgina oficial de Ubuntu para inicial el proceso de instalacin.
Durante el proceso se preguntan datos bsicos, solo voy a explicar los ms importantes o los que ms hacen
renegar.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 3 de 34

Gua 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:
Tamao
100 Mb
1 Gb
20 Gb
10 Gb

Descripcin
Particin para boot
rea de intercambio (Swap)
Raz (/)
Home

Punto de montaje
/boot
no se monta
/
/home

Formato
ext4
el sistema se encarga del formato
ext4
ext4

Un esquema del disco seria:


100 Mb
/boot

1 Gb
Swap

20 Gb
/

10 Gb
/ home

Si tienen un disco mas grande pueden hacer mas grande la particin /, o si son mas organizados, crean mas
particiones para distintas aplicaciones. Lo mas fcil es hacer una particin / bien grande pero un gur de
Linux no estara de acuerdo.
Continuando con la instalacin, los pasos siguientes son simples, solo voy a destacar los paquetes a instalar. En
el mismo CD de Ubuntu se encuentran muchos de los programas que necesitamos para nuestro servidor y el
proceso de instalacin nos pregunta cuales de una pequea lista de paquetes queremos instalar.
Los que se usan para esta gua son solo los siguientes:
DNS Server (Bind9)
LAMP Server (LAMP, significa: Linux + Apache2 + MySQL + PHP)
OpenSSH Server
Samba file server
Luego con unos simples pasos ms se completa la instalacin.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 4 de 34

Gua practica para montar un servidor con Ubuntu Server

Capitulo 2: Router bsico


2.1 Configuracin de red al arranque
Lo que vamos a hacer es que las configuraciones de las placas de red se carguen al arrancar el sistema,
podemos usar DHCP, Estticas o PPPoP.
Mi servidor usa 2 placas, para diferncialas las voy a llamar WAN a la interfase que me conecta a Internet y
LAN a la interfase que conecta a mi red LAN:

WAN (eth1, configurada para ser cliente DHCP)

LAN (eth0, configurada esttica)

Consejo para los que se inician en Ubuntu:


Todos los comandos de esta gua se deben ejecutar con permisos de root, para hacer eso tenemos dos
simples opciones:
1. anteponer la palabra sudo antes de cada comando
2. logearse como root antes de empezar a trabajar (esto se hace con el comando sudo su)
Recomiendo la segunda opcin por ser ms practica, porque son muchos comandos los que se van a usar.
Editamos:
nano /etc/network/interfaces
Agregando:
# WAN:
auto eth1
iface eth1 inet dhcp
# LAN:
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

# muestro como seria una WAN ESTATICA


# tengan en cuenta que usamos DHCP STATIC
# no las dos configuraciones al mismo tiempo
# ESTO ES UN EJEMPLO
auto eth1
iface eth1 inet static
address 192.168.110.229
netmask 255.255.255.0
network 192.168.110.0
broadcast 192.168.110.255
gateway 192.168.110.1
# Con Solo agregar el gateway ya tenes la WAN
# configurada!

Reiniciamos los servicios de red:


/etc/init.d/networking restart
Si vemos un error es porque escribimos mal algo (por ejemplo: addres, en ves de address), ahora ya podemos
apagar nuestro equipo y no perderemos la configuracin.
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 5 de 34

Gua practica para montar un servidor con Ubuntu Server

Muestro el archivo de configuracin final:


/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# WAN:
auto eth1
iface eth1 inet dhcp
# LAN:
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

2.2 Grupo de trabajo


Editar la configuracin de Samba para poner el servidor en el mismo Grupo de trabajo que la red de Windows
nano /etc/samba/smb.conf
Buscar las lneas y editarlas a gusto:
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = mi_grupo_detrabajo
# server string is the equivalent of the NT Description field
server string = %h server (Samba, Ubuntu)
Guardar el archivo y reiniciar Samba para que los cambios tengan efecto:
sudo /etc/init.d/samba restart

2.3 Paquetes, paquetes y mas paquetes...


Al no tener entorno grafico nos puede ser til esta informacin por si necesitamos instalar o borrar paquetes
cuyo nombre no conocemos.
Instalacin, pongan un CD de Ubuntu en la lectora y hagan:
mount /dev/cdrom /cdrom
apt-cache search (nombre o descripcin del paquete que necesito, por ejemplo linux-source)
apt-get install (nombre del paquete, por ejemplo: linux-ports-source-2.6.25)
umount /dev/cdrom
Desinstalacin
dpkg l | grep (nombre o descripcin de lo que quiero borrar, por ejemplo: dns)
apt-get remove (nombre del paquete, por ejemplo: dnsmasq-base)
Deshabilitarlos de Inicio
update-rc.d -f avahi-daemon remove
Me arrepent, Habilitarlos de nuevo:
update-rc.d avahi-daemon defaults

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 6 de 34

Gua 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 lneas suelen estar comentadas en el archivo, si las encuentran comentadas borren el # al principio de
la lnea y no hace falta que agreguen nada.
Actualizamos la lista, este paso es fundamental y se hace cada ves que modificamos la lista anterior, no se lo
olviden sino no funciona:
apt-get update
Puede tardar unos minutos, pero no ms que 5 minutos, en general es rpido.
Muestro el archivo de configuracin final:
/etc/apt/sources.list
#
#deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic main
restricted
#deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ - Release amd64 (20091027.2)]/ karmic main
restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ar.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://ar.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic universe
deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://ar.archive.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://ar.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb-src http://ar.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
##
##
##
##

Uncomment the following two lines to add software from the 'backports'
repository.
N.B. software from this repository may not have been tested as
extensively as that contained in the main release, although it includes

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 7 de 34

Gua 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, tambin se puede hacer que podamos acceder a l desde cualquier red pero no es lo que me interesa
ahora.
Instalamos el servidor SSH:
apt-get install openssh-server
Editamos su configuracin:
nano /etc/ssh/sshd_config
Modificando las lneas sealadas:
lnea 8

ListenAddress 192.168.1.1

El servidor puede escuchar en muchas direcciones IP, agreguen las que necesiten, por ejemplo:
ListenAddress 192.168.1.1
ListenAddress 192.168.0.3
ListenAddress 192.168.10.8
Reiniciamos el servidor:
/etc/init.d/ssh restart
Para acceder hacemos:

desde un cliente Linux: ssh nombre del usuario remoto@IP del servidor, por ejemplo:
ssh gerardo@192.168.1.1

desde un cliente Windows: utilizamos PuTTY, y seleccionamos en el tipo de conexin: SSH.


PuTTY es libre y se puede bajar de: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Host Name (or ip address): 192.168.1.1
Port: 22
Muestro el archivo de configuracin final:
/etc/ssh/sshd_config
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 8 de 34

Gua 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

Pgina 9 de 34

Gua 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 configuracin:
nano /etc/default/dhcp3-server
Agregamos a la lnea 11 la interfase que dar el servicio DHCP
INTERFACES="eth0"
Configurar el servicio DHCP
nano /etc/dhcp3/dhcpd.conf
Modificando las lneas sealadas:
lnea 14

ddns-update-style interim;

lnea 25

authoritative;

lnea 17
lnea 18

# option domain-name example.org;


# option domain-name-servers ns1.example.org, ns2.example.org;

lnea 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 configuracin se logra un servidor DHCP que va a ofrecer servicios a CUALQUIER placa de red que sea
cliente, es la configuracin ms bsica que se puede armar. Si examinan mejor el archivo de configuracin se
muestran muchos ejemplos y tambin se muestra como asignar siempre las mismas direcciones a
determinadas computadoras.
Reiniciamos el servidor:
/etc/init.d/dhcp3-server restart
Si todo esta bien veremos:
* Stopping DHCP server dhcpd3
* Starting DHCP server dhcpd3

[fail]
[OK]

Muestra primero [fail] porque el servidor DHCP no estaba corriendo, lo importante es que en la lnea de
Starting tengamos un [OK].
Si tenemos [fail] es porque escribimos algo mal en los archivos de configuracin, para entender mejor el
error podemos ver el syslog:
nano /var/log/syslog

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 10 de 34

Gua practica para montar un servidor con Ubuntu Server

Archivos de configuracin final:


/etc/default/dhcp3-server
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#
Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

/etc/dhcp3/dhcpd.conf
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
default-lease-time 3600;
max-lease-time 86400;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# :::: DECLARACION DE LA RED :::::
subnet 192.168.1.0 netmask 255.255.255.0 {
option domain-name-servers 192.168.1.1;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 3600;
max-lease-time 86400;
}
# :::: ASIGNACION DE DIRECCIONES IP A LOS HOST ::::
host ap {
hardware ethernet 00:23:xx:xx:xx:xx;
fixed-address 192.168.1.2;
}
host usuario101 {
hardware ethernet 00:01:xx:xx:xx:xx;
fixed-address 192.168.1.101;
}
host usuario102 {
hardware ethernet 00:1e:xx:xx:xx:xx;
fixed-address 192.168.1.102;
}
host usuario103 {
hardware ethernet 00:22:xx:xx:xx:xx;
fixed-address 192.168.1.103;
}

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 11 de 34

Gua 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 dinmicas, siempre asigno la misma direccin a las mismas
placas de red, si una MAC no esta cargada en la lista no ser atendida por el servidor DHCP, esto lo hago por
una cuestin comodidad y tengan en cuenta que se pueden usar simultneamente asignaciones dinmicas y
direcciones fijas.

2.6 Primer encuentro con IPTABLES (Solo SNAT)


Lo que voy a explicar es como hacer SNAT con iptables y como cargarlo al inicio del sistema. Es muy sencillo y
bsico para cualquier router.
Creamos el archivo iptables.cf:
nano /etc/init.d/iptables.cf
El archivo debe tener:
1
2
3
4

echo 1 >
iptables
iptables
iptables

/proc/sys/net/ipv4/ip_forward
-F
-t nat F
-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3

Funcionamiento:

Lnea 1: Activa reenvo de paquetes, esto permite que los paquetes que llegan a una interfase pasen a
la otra y viceversa.

Lnea 2 y 3: Borra cualquier otra regla existente de filtrado.

Lnea 4: Source Nat (SNAT para amigos), esta lnea aplica una regla a todos los paquete que despus
de haber sido rutiados que tienen que salir por la interfase eth1 (salida a Internet) realizando un
cambio en la direccin de origen por 192.168.0.3 (o la IP que tengamos configurada en la interfase
eth1)
Esto es lo que hace Win cuando hacemos Click derecho sobre una conexin de red, Compartir Conexin y luego
le damos Permitir a otros usuario usar esta conexin. Parece mas fcil hacerlo en Win?, no se lo crean
Guardamos el archivo creado y solo falta dale permisos de ejecucin:
chmod a+x /etc/init.d/iptables.cf

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 12 de 34

Gua practica para montar un servidor con Ubuntu Server

Ahora para que se ejecute al arranque instalaremos un pequeo programa que nos ayuda a configurar los
archivos que se ejecutan al iniciar el sistema
apt-get install rcconf
Ejecutamos:
Rcconf
En la lista buscamos iptables.cf y lo marcamos, quedando:
[*] iptables.cf
Luego presionamos la tecla TAB y <OK>, listo. Tendras que poder salir a Internet con todas las maquinas de
tu red.

Un detalle que a lo 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 configuracin sin detener el servicio o el comando status, que muestran el estado del
servicio.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 13 de 34

Gua 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 lneas se puede lograr cosas fabulosas o la destruccin total de nuestra red.
Los cambios que realizan los comandos se aplican instantneamente, sin necesidad de reiniciar la computadora,
por eso es bueno antes de comenzar a implementar polticas de seguridad realizar un backup de la
configuracin actual que funcione correctamente, si ven el archivo anterior /etc/init.d/iptables.cf lneas
2 y 3 son muy importantes porque borran todo lo anterior y luego se carga una nueva configuracin, lo que nos
permite usar ese archivo para volver a una configuracin limpia, muy bsica pero que funciona.
Lo que recomiendo es realizar pequeos cambios y probarlos, cuando estamos completamente seguros que
funciona como esperbamos lo guardamos como archivo de backup.
Para esta tarea recomiendo mucho el uso de scripts, voy a explicar rpidamente como crear scripts.
Bsicamente en Linux cualquier archivo de texto con permisos de ejecucin y una lnea principal al comienzo se
convierte en un script, es decir que todos los comandos que ejecutemos lnea por lnea se ejecutan uno por uno
al correr el script.
Nos paramos en nuestro directorio de trabajo, o donde les quede cmodo:
cd /home/gerardo/
Creo un archivo de texto:
nano mi-script
Adentro escribimos:
#!/bin/sh
echo hola, esto funciona muy bien
Guardamos nuestro poderoso script, y hacemos un ls l para ver sus permisos:
-rw-r--r-- 1 root

root

41

2010-03-16

11:31

mi-script

11:31

mi-script

Lo que nos interesa ahora es dale permisos de ejecucin:


chmod a+x mi-script
Hacemos un ls l para ver sus permisos:
-rwxr-xr-x 1 root

root

41

2010-03-16

Vemos que en sus permisos tiene x para todos los usuarios, significa que es un archivo ejecutable por todos
los usuarios. FIN!, as de fcil es hacer un script en Linux.
Lo hacemos correr de la siguiente forma:
./mi-script
Si todo esta bien veremos:
hola, esto funciona muy bien

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 14 de 34

Gua practica para montar un servidor con Ubuntu Server

Con ese concepto, ahora podemos crear un hermoso filtro con Iptables.
Lo importante y a veces difcil es saber que filtrar o quienes son las amenazas, para mi caso (una red muy
sencilla) la gran amenaza es que un usuario no permitido navegue gratis por Internet, esto se soluciona
utilizando una poltica de filtrado por direccin MAC a todos los paquetes que llegan desde la LAN al router
(eth0), mi solucin fue:
mi filtro con iptables
#!/bin/sh
# RESET DE REGLAS
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# ACTIVO REENVIO DE PAQUETES
echo 1 > /proc/sys/net/ipv4/ip_forward
# CONFIGURO SNAT, TODO TIENE QUE SALIR POR eth1 CON LA IP: 192.168.0.3
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3
# --------------------#
FIREWALL
# --------------------### POLITICAS POR DEFECTO DEL FIREWALL
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P INPUT DROP

### SEGURIDAD
# No respondo preguntas ICMP en la interfase de afuera: (eth1)
iptables -A INPUT -p icmp --icmp-type echo-request -i eth1 -j DROP
# No ip spoofing, denegar paquetes internos con direcciones no pertenecientes a la LAN:
iptables -A INPUT -j DROP -i eth0 \! -s 192.168.1.0/24
iptables -A FORWARD -j DROP -i eth0 \! -s 192.168.1.0/24
# No ip spoofing, denegar cualquier paquete con direccin local que quiera entrar:
iptables -A INPUT -j DROP \! -i lo -s 127.0.0.0/8
iptables -A FORWARD -j DROP \! -i lo -s 127.0.0.0/8
# No permitir conexiones TCP iniciadas afuera (eth1)
iptables -A INPUT -m state --state NEW -i eth1 -j DROP
iptables -A FORWARD -m state --state NEW -i eth1 -j DROP
# Allowing established
iptables -A INPUT --match state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT --match state --state ESTABLISHED -j ACCEPT
# Allowing related
iptables -A INPUT --match state --state RELATED -j ACCEPT
iptables -A OUTPUT --match state --state RELATED -j ACCEPT
# Allowing loop
iptables -A INPUT -i lo --match state --state NEW -j ACCEPT
iptables -A OUTPUT -o lo --match state --state NEW -j ACCEPT
# Allowing outgoing
iptables -A OUTPUT -o eth1 --match state --state NEW -j ACCEPT

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 15 de 34

Gua 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 poltica por defecto para los paquete de entrada (INPUT) a DROP, la poltica por defecto
indica que se hace con el paquete si no cumple ninguna de las reglas de la lista.

en castellano: al entrar un paquete se compara con toda la lista de reglas, si no se cumple ninguna se
descarta el paquete, a la primera regla que se cumple se toma la decisin que indique esa regla

en criollo: llega un paquete con MAC xx:xx:xx:xx:xx:xx, recorre toda la lista de MAC permitidas si no
esta en la lista ese paquete se descarta, si esta en la lista se lo deja pasar por la placa de red eth0

en resumen: si queres entrar tenes que estar en la lista.


Hay muchas formas de hacer filtros, para mi caso y por el funcionamiento de Iptables (primera regla que se
cumple, se ejecuta) no me es conveniente colocar al principio reglas muy permisivas, es mejor comenzar
Denegando y luego permitiendo.

3.2 Servidor DNS Primario con Bind9


Instalamos el servidor:
apt-get install bind9
Creamos las zonas donde ser autoritativo el servidor:
nano /etc/bind/named.conf
Agregamos al final del archivo nuestras zonas:
zone "lamernet.com.ar" {
type master;
file "/etc/bind/lamernet.directa";
};

zone "1.168.192.in-addr.arpa" in {
type master;
file "/etc/bind/lamernet.inversa";
};
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 16 de 34

Gua practica para montar un servidor con Ubuntu Server

Creamos el archivo de resolucin directa de la las zonas:


nano /etc/bind/lamernet.directa
Agregamos al archivo las maquinas que vamos a resolver:
$TTL
604800
@
IN
SOA
lamernet.com.ar. root.lamernet.com.ar. (
2
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
IN
NS
@
www
IN
A
192.168.1.1
gerardo IN
A
192.168.1.10
Creamos el archivo de resolucin inversa de la las zonas:
nano /etc/bind/lamernet.inversa
Agregamos al archivo las maquinas que vamos a resolver:
$TTL
604800
@
IN
SOA
lamernet.com.ar. root.lamernet.com.ar. (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
1
IN
NS
www.lamernet.com.ar.
10
IN
NS
gerardo.lamernet.com.ar.
Iniciamos el servidor:
/etc/init.d/bind9 start
Archivos de configuracin final:
Para mi caso utilice Bind con autoridad sobre 2 dominios
1. lamernet.com.ar
2. lamernet
El primero lo uso para la pgina web: www.lamernet.com.ar y el segundo para resolver la direccin de todos los
clientes de la red. Por ejemplo el servidor ser: servidor.lamernet, mi maquina es: gerardo.lamernet, entonces
para entrar a otras maquinas de la red solo hace falta saber el nombre y no necesitas acordarte la direccin IP.
Como el servidor DNS tiene autoridad sobre 2 dominios distintos, voy a tener 2 archivos de definicin directa (1
para cada dominio) y solo 1 archivo de resolucin inversa, porque los dominios comparten la misma direccin
de red.

/etc/bind/named.conf
//
//
//
//
//
//
//

This is the primary configuration file for the BIND DNS server named.
Please read /usr/share/doc/bind9/README.Debian.gz for information on the
structure of BIND configuration files in Debian, *BEFORE* you customize
this configuration file.
If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "lamernet.com.ar" {
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 17 de 34

Gua 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

www

IN
IN

NS
A

@
192.168.1.1

$TTL
@

604800
IN

/etc/bind/lan.directa
SOA

lamernet. root.lamernet. (
2
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL

;
servidor
ap
usuario101
usuario102
usuario103
usuario104
usuario105
usuario106

IN
IN
IN
IN
IN
IN
IN
IN

IN
A
A
A
A
A
A
A
A

NS
@
192.168.1.1
192.168.1.2
192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
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

;
1
1
2
101
102
103
104
105
106

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

NS
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR

@
www.lamernet.com.ar.
servidor.lamernet.
ap.lamernet.
usuario101.lamernet.
usuario102.lamernet.
usuario103.lamernet.
usuario104.lamernet.
usuario105.lamernet.
usuario106.lamernet.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 18 de 34

Gua practica para montar un servidor con Ubuntu Server

En general el DNS es fcil de configurar y los errores mas comunes son de tipeo, si no funciona revisen bien los
archivos y cuidado con si usan comentarios en los archivos de bind, porque se identifican con // y no con #

3.3 Apache 2, servidor WEB con Host Virtuales


En /etc/apache2 disponemos de varios subdirectorios, dos de ellos importantes para nuestra tarea.
El primero es: sites-available y el segundo sites-enabled.
Los ficheros de configuracin de los hostings virtuales se configuran en sites-available. El segundo
subdirectorio slo contiene enlaces a aquellos virtulhost que queremos activar.
Si queremos crear un virtualhost de nombre www.lamernet.com.ar, es decir, cuando ponga en mi navegador
www.lamernet.com.ar me debe de llevar a la pgina principal de ese host, primero tenemos que crearlo dentro
del directorio sites-available y luego generar un enlace dentro de sites-enabled para que funcione.
Creando un virtual host:
mkdir /home/www/www.lamernet.com.ar
dentro de esa carpeta copiamos los archivos de la pgina web
Luego creamos el virtualhost haciendo:
cd /etc/apache2/sites-available
cp default www.lamernet.com.ar
Ahora editamos las primeras lneas del archivo www.lamernet.com.ar
nano www.lamernet.com.ar
Quedando:
<VirtualHost *:80>
ServerAdmin gpiermattei@gmail.com
ServerName www.lamernet.com.ar
DocumentRoot /home/www/www.lamernet.com.ar
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www/www.lamernet.com.ar>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 19 de 34

Gua 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 ms virtualhost.
Si tenemos problemas con la instalacin o su configuracin y el servidor deja de funcionar puede resultar til el
siguiente comando para reinstalar por completo el apache:
sudo apt-get remove --purge $(dpkg -l apache* | grep ii | awk '{print $2}') && sudo apt-get
install apache2

3.4 Squid, proxy de red:


Instalamos:
apt-get install squid
Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo:
nano /etc/squid/squid.conf
No voy a explicar todas las funciones de Squid, solo voy a mostrar la configuracin que utilice. Es una de las
ms bsicas pero de gran utilidad.
Como van a ver el archivo de configuracin de Squid es GIGANTE, pero la mayora de las lneas estn
comentadas porque son ejemplos de usos y distintas configuraciones, voy a adjuntar un archivo de
configuracin sin comentarios y solo con la parte bsica que nos interesa a nosotros.
Para generar ese archivo podemos usar el siguiente comando:
grep -v "#" /etc/squid/squid.conf > sin-comentarios
Ese comando busca en el archivo squid.conf todas la lneas que NO comiencen por # y las guarda en el
archivo sin-comentarios
Archivo de configuracin final:
/etc/squid/squid.conf
# Configuracin minima por defecto:
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
# Mis acl's:
acl no_facebook url_regex http://www.facebook.com
acl bloqueados src "/etc/squid/bloqueados"
acl no_porn url_regex "/etc/squid/porn"
# Aplico las acl's:
http_access deny no_porn bloqueados
deny_info ERR_NO_PORN.html no_porn bloqueados
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 20 de 34

Gua practica para montar un servidor con Ubuntu Server

http_access
http_access
http_access
http_access
http_access

deny !Safe_ports
deny CONNECT !SSL_ports
allow localnet
allow localhost
deny all

# El resto de la configuracin de Squid


icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 128 MB
maximum_object_size_in_memory 64 KB
cache_dir ufs /var/spool/squid 50000 16 256
max_open_disk_fds 1
cache_swap_low 80
cache_swap_high 95
update_headers on
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
refresh_pattern ^ftp:
1440
20%
10080
refresh_pattern ^gopher: 1440
0%
1440
refresh_pattern -i (/cgi-bin/|\?) 0
0%
0
refresh_pattern (Release|Package(.gz)*)$ 0
20%
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

2880

Funcionamiento:
Por defecto Squid trae algunas ACL que nos brindan una seguridad bsica y sirven de ejemplo, lo mas
importante de la configuracin presentada es que es transparente al usuario, es decir, no hace falta configurar
el navegador de Internet o el sistema operativo para que usen el Proxy y los usuarios salen a Internet sin saber
que hay un Proxy.
El funcionamiento transparente se logra gracias a la posibilidad de la nueva versin de squid de trabajar en
modo transparente y adems debe ser acompaada de una regla de iptables que redirecciona todo el trfico
con puerto de destino 80 hacia el puerto al que escucha nuestro Proxy (3128).
Para eso esta la lnea, que indica el puerto y el modo donde escucha Squid:
http_port 3128 transparent
La regla que se debe agregar a nuestro script de iptables es la siguiente:
# -----------------------------------------#
REDIRECCIONO EL TRAFICO WEB AL SQUID
# -----------------------------------------iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Si probamos ahora notaran que no pueden acceder a las pginas hostiadas en nuestro propio servidor, se
soluciona agregando ANTES a la regla de redireccionar el trfico Web la siguiente:
# -------------------------------------------------------------#
EL TRAFICO A NUESTRO SERVIDOR LO ACEPTO SIN REDIRECCIONAR
# -------------------------------------------------------------iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -d 192.168.1.1 -j ACCEPT
Adems de proveer filtrado y seguridad, Squid funciona como chache, almacenado las paginas o parte de ellas
en su memoria para ahorrar trafico cuando la pagina sea consultada nuevamente.
Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 21 de 34

Gua 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
192.168.1.110
192.168.1.107

/etc/squid/porn
porn
sex
xxx

Las ACL por si solas no hacen nada, noten que no toman ninguna decisin de filtrado (permitir, denegar, etc.).
Se aplican similar a los comando iptables (primera regla que se cumple se ejecuta), entonces importa el orden
de aplicacin:
# Aplico las acl's:
http_access deny no_porn bloqueados
# muestro un error personalizado si se cumple la regla anterior:
deny_info ERR_NO_PORN.html no_porn bloqueados
http_access
http_access
http_access
http_access
http_access
http_access
http_access
http_access

allow manager localhost


deny manager
allow purge localhost
deny purge
deny !Safe_ports
deny CONNECT !SSL_ports
allow localnet
allow localhost

http_access deny all


Noten la forma de aplicar las ACL, para el contenido bloqueado lo aplique junto con la lista de direcciones
bloqueadas (Operacin lgica AND), es decir que si se cumple que el paquete es de una de las direcciones de la
lista en /etc/squid/bloqueados Y adems se cumple que su URL contiene una palabra de la lista
"/etc/squid/porn" el paquete se deniega y se muestra un error.
Aplicar las reglas una por lnea equivale a la operacin lgica OR, igual que en iptables.
Otro detalle, vean que en ningn momento aplique la acl no_facebook, es decir que se pueden tener ACL sin
aplicar pero no el caso contrario.
Por defecto se termina la lista con: http_access deny all, que como se lo imaginan deniega el paquete si no
cumpli con alguna de las reglas anteriores, esta condicin se puede modificar segn las caractersticas del
filtrado.
Como en el caso de iptables, esto es solo un ejemplo bsico a modo de gua y tengan en cuenta que se pueden
hacer muchas reglas mas avanzadas que estas.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 22 de 34

Gua 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 contrasea con todos los usuarios de la red.
Editamos la configuracin de Samba:
Nano /etc/samba/smb.conf
En la lnea 242 de ese archivo comienza:
#======================= Share Definitions =======================
Agregamos las lneas:
[Descargas]
path = /Descargas
comment = Servicio de Descargas
browseable = yes
read only = no
guest ok = no
Esta es la forma ms bsica de compartir una carpeta en Linux. Muestro otro ejemplo donde no se necesita
contrasea para entrar a la carpeta y los visitantes solo tienen permiso de Lectura:
[Sin-Pass]
path = /Musica
comment = Musica Compartida para todos
browseable = yes
read only = yes
guest ok = yes
Para aplicar los cambios basta con reiniciar Samba:
/etc/init.d/samba restart

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 23 de 34

Gua 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 encenda las 24 horas del da para que ella nos
descargue las cosas por nosotros, especial para los que descargan muchas cosas por torrent.
Es muy simple y funciona muy bien, solo necesitamos tener instalado PHP, MySQL (ya lo instalamos
previamente) y TorrentFlux.
Como primer paso antes de instalar TorrentFlux vamos a crear una nueva base de datos SQL que usaremos con
TorrentFlux. Durante la instalacin el sistema nos solicitar configurar una base de datos para adaptarla a
TorrentFlux as que debemos crear una antes de instalarlo.
Ejecutamos un navegador en un ordenador cliente y ejecutamos la direccin IP de nuestro servidor de
descargas seguido de /phpmyadmin. En mi caso http://192.168.1.1/phpmyadmin y veremos:

Introducimos el nombre del sper usuario (root) y el password de administrador para la base de datos
configurado durante el proceso de instalacin.
Ahora en phpmyadmin vamos a crear una base de datos nueva para TorrentFlux y para ello vamos a introducir
el nombre ( torrentflux ) en la casilla:

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 24 de 34

Gua practica para montar un servidor con Ubuntu Server

Continuamos pulsando el botn (Crear)

Ahora tenemos una base de datos llamada (torrentflux), nos la apuntamos adems del nombre de usuario,
password y continuamos arrancando nuestro servidor de descargas e identificndonos como root en el sistema
de la manera habitual.
Una vez identificados continuaremos instalando torrentflux del siguiente modo:
apt-get install torrentflux
Continuamos con la instalacin:

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 25 de 34

Gua practica para montar un servidor con Ubuntu Server

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

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

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

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 26 de 34

Gua practica para montar un servidor con Ubuntu Server

Pasamos este mensaje por alto de momento, despus lo revisaremos. Continuamos con la tecla (Enter) y una
vez terminada la instalacin de TorrentFlux aremos unos ajustes para adaptarlo a nuestro servidor Web y que
funcione correctamente.
Para acceder a TorrentFlux desde un cliente, vamos a crear un enlace simblico desde el directorio Web que
nos ofrece TorrentFlux hacia el directorio Web de nuestra pgina situada en nuestro servidor.
ln s /usr/share/torrentflux/www/ /home/www/www.lamernet.com.ar/torrentflux
Ya esta listo para ser visitado desde un cliente, en un navegador escribimos www.lamernet.com.ar/torrentflux y
veremos:

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

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 27 de 34

Gua 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

Pgina 28 de 34

Gua practica para montar un servidor con Ubuntu Server

4.4 Estadsticas de Hardware


Suele ser muy til saber que esta pasando dentro del servidor, un programa que nos puede ayudar en esta
tarea es PHPsysinfo, este programa genera un reporte en PHP que podemos cargar en nuestra pgina para
tener una idea el estado de nuestro servidor.
Instalacin:
apt-get install phpsysinfo
Solo falta realizar un enlace simbolico desde el directorio de la aplicacion a la carpeta de nuestro sitio web:
ln s /var/www/phpsysinfo /home/www/www.lamernet.com.ar/phpsysinfo
Ahora si desde un navegador entramos a: www.lamernet.com.ar/phpsysinfo, veremos el reporte que genero la
aplicacin.
El reporte que genera PHPsysinfo se puede configurar editando el archivo:
nano /etc/phpsysinfo/config.php
Destaco la lnea donde podemos configurar el lenguaje y el estilo del reporte, la modificamos quedando:
// define the default language and template here
define('lang', 'es');
define('template', 'clean.css');

4.5 Estadsticas Web


Podemos obtener un reporte muy completo sobre las consultas a nuestra Web usando la aplicacin AwStats.
Instalacin:
apt-get apt-get install awstats
Editamos el archivo de configuracin:
nano /etc/awstats/awstats.conf
Buscamos y editamos las siguientes lneas, quedando:
Lnea 51

LogFile=/var/log/apache2/access.log

Lnea 122

LogFormat=1

Lnea 153

SiteDomain=www.lamernet.com.ar

Lnea 188

DNSLookup=0

Lnea 905

Lang=es

El siguiente paso es copiar el archivo de configuracin con el nombre de nuestro dominio:


cp /etc/awstats/awstats.conf /etc/awstats/awstats.lamernet.com.ar.conf
Ejecutamos la configuracin generada:
/usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.conf
Creamos un enlace simblico desde la carpeta que creo awstats al directorio raz de nuestra Web.
ln s /usr/lib/cgi-bin /home/www/www.lamernet.com.ar/cgi-bin
Solo falta agregar unas lneas en la configuracin de Apache:
nano /etc/apache2/apache2.conf
Se agregan al final del archivo de configuracin las siguientes lneas:

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 29 de 34

Gua practica para montar un servidor con Ubuntu Server

# Configura Apache para que muestre las imgenes de las estadsticas:


Alias /awstatscss ./usr/share/doc/awstats/examples/css/.
Alias /awstatsicons ./usr/share/awstats/icon/.
ScriptAlias /awstats/ ./usr/lib/cgi-bin/.
Alias /awstats-icon/ /usr/share/awstats/icon/
<Directory /usr/share/awstats/icon>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Reiniciamos Apache y todo debera funcionar
/etc/init.d/apache2 restart
Si entramos a: www.lamernet.com.ar/cgi-bin/awstats.pl?config=awstats.lamernet.com.ar.conf, tenemos que
ver el informe generado por Awstats.
Por ultimo paso solo falta generar un script que actualice las estadsticas, eso se logra usando un programador
de tareas incluido en el sistemas que es Crontab. Hay varias formas de hacer esto, explico la que me parece
ms simple.
Si nos fijamos en el directorio /etc veremos una serie de carpetas generadas por la aplicacin Crontab
Ejecutamos:

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 estadsticas, tendremos el
problema resuelto:
nano /etc/cron.hourly/actualiza-estadisticas-web
Dentro del archivo escribimos:
#!/bin/sh
# Este Script actualiza las estadsticas Web para www.lamernet.com.ar
/usr/lib/cgi-bin/awstats.pl -config=awstats.lamernet.com.ar.conf
echo "Estadisticas Web para www.lamernet.com.ar, Actualizadas correctamente"
Solo falta darle permisos de ejecucin al archivo y listo:
chmod a+x /etc/cron.hourly/actualiza-estadisticas-web

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 30 de 34

Gua 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 da encendida, entonces vamos a
generar un pequeo script que genere un archivo de texto dentro del directorio raz de nuestra pagina Web
para poder visualizar los niveles de temperatura de la maquina con unos simples clicks y desde nuestra Web.
Para esta tarea vamos a utilizar una aplicacin llamada Sensors, que nos muestra informacin sobre los
sensores de nuestra computadora.
Instalacin:
apt-get install lm-sensors
Ejecutamos al aplicacin para que reconozca que sensores disponemos en nuestra PC:
sensors-detect
Con solo presionar Yes y enter, llegamos al final y el programa muestra los sensores que disponemos, para
mi caso el resultado fue:
#----cut here---# I2C adapter drivers
i2c-i801
# Chip drivers
smsc47m192
smsc47m1
#----cut here---Luego nos pregunta si queremos que agregue esas lneas automticamente en /etc/modules, respondemos
yes y todo listo.
Si ejecutamos el comando:
Sensors
Debemos ver un reporte como el siguiente:
smsc47m192-i2c-0-2d
Adapter: SMBus I801 adapter at 3000
+2.5V:
+2.51 V (min = +0.00 V, max = +3.32 V)
VCore:
+1.15 V (min = +0.00 V, max = +2.99 V)
+3.3V:
+3.32 V (min = +0.00 V, max = +4.38 V)
+5V:
+5.16 V (min = +0.00 V, max = +6.64 V)
+12V:
+12.31 V (min = +0.00 V, max = +15.94 V)
VCC:
+3.32 V (min = +0.00 V, max = +4.38 V)
+1.5V:
+1.56 V (min = +0.00 V, max = +1.99 V)
+1.8V:
+1.76 V (min = +0.00 V, max = +2.39 V)
Chip Temp:
+31.0C (low = -127.0C, high = +127.0C)
CPU Temp:
+43.0C (low = -127.0C, high = +127.0C)
Sys Temp:
+36.0C (low = -127.0C, high = +127.0C)
cpu0_vid:
+2.050 V
Puede ser mas o menos completo, dependiendo de los sensores disponibles en tu maquina.
Para completar ms aun nuestro script monitor de temperatura, vamos a agregar otro programa que nos
permite conocer la temperatura de nuestro disco rgido:
Instalacin:
apt-get install hddtemp
El programa nos preguntar si queremos que se arranque al inicio, la interfaz en la que escuchar y el puerto. En
principio a las dos ultimas preguntas dejamos el valor por defecto pulsando Enter, a la primera yo aconsejo
poner SI, pero es una eleccin personal.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 31 de 34

Gua 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
ejecucin si no tendremos que arrancarlo nosotros, para ello ejecutaremos la siguiente instruccin:
hddtemp d /dev/dispositivo
Si disponemos de varios dispositivos podemos listar todas las temperaturas con el comando:
hddtemp d /dev/sd*
Lo mismo se aplica para dispositivos hd*.
Ahora utilizando estos programas y Crontab, vamos a crear un script que genere un archivo de texto con los
resultados de las temperaturas y lo guardaremos para que se ejecute cada 1 hora.
nano /etc/cron.hourly/temperaturas
Dentro del archivo escribimos:
#!/bin/sh
# Este Script toma la lista del comando sensors y la guarda en un archivo
# ubicado dentro de la carpeta del sitio www.lamernet.com.ar
echo " - INFO DEL SISTEMA: " > /www/www.lamernet.com.ar/temps.txt
echo "------------------------------------------------------------------------ " >>
/www/www.lamernet.com.ar/temps.txt
sensors >> /www/www.lamernet.com.ar/temps.txt
echo " " >> /www/www.lamernet.com.ar/temps.txt
echo " " >> /www/www.lamernet.com.ar/temps.txt
echo " - TEMPERATURA DEL DISCO: " >> /www/www.lamernet.com.ar/temps.txt
echo "------------------------------------------------------------------------ " >>
/www/www.lamernet.com.ar/temps.txt
hddtemp /dev/sda >> /www/www.lamernet.com.ar/temps.txt

echo
echo
echo
date

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


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

Solo falta darle permisos de ejecucin al archivo y listo:


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

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 32 de 34

Gua 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

Pgina 33 de 34

Gua practica para montar un servidor con Ubuntu Server

Capitulo 5: Fuentes y Agradecimientos


Parte de la info de esta gua fue obtenida de foros o de otras guas, perd un poco el rastro de cuales fueron las
pginas que use para armar la gua pero las principales fueron:

las secciones 4.3, 4.4 y 4.4 las copie directamente desde: www.forat.info
encontr la solucin a varios problemas que surgieron de los foros de: www.ubuntu-es.org

A ellos mis agradecimientos por compartir sus conocimientos con el resto de la comunidad libre. En
agradecimiento esta gua ser publicada abiertamente en los foros para que todos puedan usarla y aportar sus
conocimientos.
Los agradecimientos especiales se los llevan mis profesores y ayudantes de redes de la facultad:

Jose
Ivana
Daniel
Cristian
Hector
Nicolas

Por compartir sus conocimientos y por la paciencia.

Gerardo R. Piermattei, gpiermattei@gmail.com

Pgina 34 de 34

You might also like