Professional Documents
Culture Documents
ndice
Capitulo 1: Instalacin
1.1
Conocimientos previos
1.2
Requisitos de Hardware
1.3
Instalacin
2.2
Grupo de trabajo
2.3
2.4
2.5
10
2.6
12
14
3.2
16
3.3
19
3.4
20
23
4.2
23
4.3
24
4.4
Estadsticas de Hardware
29
4.5
Estadsticas web
29
4.6
Monitor de Temperaturas
31
34
Pgina 2 de 34
Capitulo 1: Instalacin
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.
Pgina 3 de 34
Una de las partes donde suelen generarse problemas es en el particionado del disco. No soy un experto en
Linux pero la forma que siempre me gusto hacer las particiones es la siguiente:
Tamao
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
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.
Pgina 4 de 34
Pgina 5 de 34
Pgina 6 de 34
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
Pgina 7 de 34
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
Pgina 8 de 34
Pgina 9 de 34
ddns-update-style interim;
lnea 25
authoritative;
lnea 17
lnea 18
lnea 39
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
Pgina 10 de 34
/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;
}
Pgina 11 de 34
host usuario104 {
hardware ethernet 00:21:xx:xx:xx:xx;
fixed-address 192.168.1.104;
}
host usuario105 {
hardware ethernet 00:1f:xx:xx:xx:xx;
fixed-address 192.168.1.105;
}
host usuario106 {
hardware ethernet 00:1e:xx:xx:xx:xx;
fixed-address 192.168.1.106;
}
Como se ve en el archivo no uso asignaciones dinmicas, siempre asigno la misma direccin a las mismas
placas de red, si una MAC no esta cargada en la lista no ser atendida por el servidor DHCP, esto lo hago por
una cuestin comodidad y tengan en cuenta que se pueden usar simultneamente asignaciones dinmicas y
direcciones fijas.
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 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
Pgina 12 de 34
Ahora para que se ejecute al arranque instalaremos un pequeo programa que nos ayuda a configurar los
archivos que se ejecutan al iniciar el sistema
apt-get install rcconf
Ejecutamos:
Rcconf
En la lista buscamos iptables.cf y lo marcamos, quedando:
[*] iptables.cf
Luego presionamos la tecla TAB y <OK>, listo. Tendras que poder salir a Internet con todas las maquinas de
tu red.
Pgina 13 de 34
root
41
2010-03-16
11:31
mi-script
11:31
mi-script
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
Pgina 14 de 34
Con ese concepto, ahora podemos crear un hermoso filtro con Iptables.
Lo importante y a veces difcil es saber que filtrar o quienes son las amenazas, para mi caso (una red muy
sencilla) la gran amenaza es que un usuario no permitido navegue gratis por Internet, esto se soluciona
utilizando una poltica de filtrado por direccin MAC a todos los paquetes que llegan desde la LAN al router
(eth0), mi solucin fue:
mi filtro con iptables
#!/bin/sh
# RESET DE REGLAS
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# ACTIVO REENVIO DE PAQUETES
echo 1 > /proc/sys/net/ipv4/ip_forward
# CONFIGURO SNAT, TODO TIENE QUE SALIR POR eth1 CON LA IP: 192.168.0.3
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 192.168.0.3
# --------------------#
FIREWALL
# --------------------### POLITICAS POR DEFECTO DEL FIREWALL
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P INPUT DROP
### SEGURIDAD
# No respondo preguntas ICMP en la interfase de afuera: (eth1)
iptables -A INPUT -p icmp --icmp-type echo-request -i eth1 -j DROP
# No ip spoofing, denegar paquetes internos con direcciones no pertenecientes a la LAN:
iptables -A INPUT -j DROP -i eth0 \! -s 192.168.1.0/24
iptables -A FORWARD -j DROP -i eth0 \! -s 192.168.1.0/24
# No ip spoofing, denegar cualquier paquete con direccin local que quiera entrar:
iptables -A INPUT -j DROP \! -i lo -s 127.0.0.0/8
iptables -A FORWARD -j DROP \! -i lo -s 127.0.0.0/8
# No permitir conexiones TCP iniciadas afuera (eth1)
iptables -A INPUT -m state --state NEW -i eth1 -j DROP
iptables -A FORWARD -m state --state NEW -i eth1 -j DROP
# Allowing established
iptables -A INPUT --match state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT --match state --state ESTABLISHED -j ACCEPT
# Allowing related
iptables -A INPUT --match state --state RELATED -j ACCEPT
iptables -A OUTPUT --match state --state RELATED -j ACCEPT
# Allowing loop
iptables -A INPUT -i lo --match state --state NEW -j ACCEPT
iptables -A OUTPUT -o lo --match state --state NEW -j ACCEPT
# Allowing outgoing
iptables -A OUTPUT -o eth1 --match state --state NEW -j ACCEPT
Pgina 15 de 34
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
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
/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
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.
Pgina 18 de 34
En general el DNS es fcil de configurar y los errores mas comunes son de tipeo, si no funciona revisen bien los
archivos y cuidado con si usan comentarios en los archivos de bind, porque se identifican con // y no con #
Pgina 19 de 34
Pgina 20 de 34
http_access
http_access
http_access
http_access
http_access
deny !Safe_ports
deny CONNECT !SSL_ports
allow localnet
allow localhost
deny all
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
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
Pgina 22 de 34
Pgina 23 de 34
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:
Pgina 24 de 34
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:
Pgina 25 de 34
A continuacin el sistema nos avisa sobre un cambio que deberemos hacer, de momento pulsamos la tecla
(Enter)
Como ya hicimos anteriormente a la instalacin de TorrentFlux una base de datos llamada (torrentflux)
especificaremos en esta pantalla la opcin (Si) y continuamos con la tecla (Enter)
Ahora introducimos el password del super usuario (root) de MySQL y pulsamos la tecla (Enter)
Pgina 26 de 34
Pasamos este mensaje por alto de momento, despus lo revisaremos. Continuamos con la tecla (Enter) y una
vez terminada la instalacin de TorrentFlux aremos unos ajustes para adaptarlo a nuestro servidor Web y que
funcione correctamente.
Para acceder a TorrentFlux desde un cliente, vamos a crear un enlace simblico desde el directorio Web que
nos ofrece TorrentFlux hacia el directorio Web de nuestra pgina situada en nuestro servidor.
ln s /usr/share/torrentflux/www/ /home/www/www.lamernet.com.ar/torrentflux
Ya esta listo para ser visitado desde un cliente, en un navegador escribimos www.lamernet.com.ar/torrentflux y
veremos:
Nos logeamos con root y la contrasea y tenemos un gestor de descargas con interfase web. Con un poco de
Dreamweaver el trabajo final quedo as:
Pgina 27 de 34
TorrentFlux tiene buenas configuraciones, lo que recomiendo en configurarlo para que descargue los archivo en
una carpeta y luego compartir esa carpeta para poder acceder desde la red y as copiar los archivos a nuestra
maquina.
Pgina 28 de 34
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
Pgina 29 de 34
Veremos:
cron.d
cron.daily
cron.hourly
cron.monthly
crontab
cron.weekly
cron.daily
cron.hourly
cron.monthly
cron.weekly
Los scripts que coloquemos dentro de esas carpetas se ejecutan:
Pgina 30 de 34
Pgina 31 de 34
Con esto tendremos instalado el programa, si le hemos dicho que se arranque al inicio ya lo tendremos en
ejecucin si no tendremos que arrancarlo nosotros, para ello ejecutaremos la siguiente instruccin:
hddtemp d /dev/dispositivo
Si disponemos de varios dispositivos podemos listar todas las temperaturas con el comando:
hddtemp d /dev/sd*
Lo mismo se aplica para dispositivos hd*.
Ahora utilizando estos programas y Crontab, vamos a crear un script que genere un archivo de texto con los
resultados de las temperaturas y lo guardaremos para que se ejecute cada 1 hora.
nano /etc/cron.hourly/temperaturas
Dentro del archivo escribimos:
#!/bin/sh
# Este Script toma la lista del comando sensors y la guarda en un archivo
# ubicado dentro de la carpeta del sitio www.lamernet.com.ar
echo " - INFO DEL SISTEMA: " > /www/www.lamernet.com.ar/temps.txt
echo "------------------------------------------------------------------------ " >>
/www/www.lamernet.com.ar/temps.txt
sensors >> /www/www.lamernet.com.ar/temps.txt
echo " " >> /www/www.lamernet.com.ar/temps.txt
echo " " >> /www/www.lamernet.com.ar/temps.txt
echo " - TEMPERATURA DEL DISCO: " >> /www/www.lamernet.com.ar/temps.txt
echo "------------------------------------------------------------------------ " >>
/www/www.lamernet.com.ar/temps.txt
hddtemp /dev/sda >> /www/www.lamernet.com.ar/temps.txt
echo
echo
echo
date
Pgina 32 de 34
El Resultado final lo pueden ver entrando a: www.lamernet.com.ar/temps.txt, muestro uno de los archivos
generados por nuestro script:
- INFO DEL SISTEMA:
-----------------------------------------------------------------------smsc47m192-i2c-0-2d
Adapter: SMBus I801 adapter at 3000
+2.5V:
+2.51 V (min = +0.00 V, max = +3.32 V)
VCore:
+1.15 V (min = +0.00 V, max = +2.99 V)
+3.3V:
+3.32 V (min = +0.00 V, max = +4.38 V)
+5V:
+5.16 V (min = +0.00 V, max = +6.64 V)
+12V:
+12.31 V (min = +0.00 V, max = +15.94 V)
VCC:
+3.32 V (min = +0.00 V, max = +4.38 V)
+1.5V:
+1.56 V (min = +0.00 V, max = +1.99 V)
+1.8V:
+1.77 V (min = +0.00 V, max = +2.39 V)
Chip Temp:
+31.0 C (low = -127.0 C, high = +127.0 C)
CPU Temp:
+43.0 C (low = -127.0 C, high = +127.0 C)
Sys Temp:
+35.0 C (low = -127.0 C, high = +127.0 C)
cpu0_vid:
+2.050 V
Actualizado:
Fri Mar 19 12:17:04 ART 2010
Pgina 33 de 34
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
Pgina 34 de 34