Servidor ubuntu completo - X parte - Hacer visible nuestro servidor web


Hola a todos otra vez. Por ahora lo más complicado (servidor de correo) todavía no lo hemos visto, pero quería parar durante un pequeño momento en unos puntos en los cuales vamos a ver como el trabajo realizado hasta ahora vale la pena.

En entradas anteriores montamos un servidor web pero a ese servidor web solo se podía acceder a través de la red local, y hombre, montar un servidor web y que no se pueda acceder desde internet es un poco... Por lo tanto, hoy aprenderemos como hacer que nuestro servidor web sea visible desde internet.

Antes de empezar me gustaría decir que en uno de los pasos no voy a poder ayudaros, ya que eso depende de cada uno, lo que si que podre será daros unas pautas de que se debería hacer. Con todo esto empecemos.


Hacer visible nuestro ordenador.

Como muchas veces antes de cada manual hay que saber un poco de teoría para entender mejor que es lo que estamos haciendo.

Cuando nosotros nos conectamos a una pagina siempre ponemos un nombre (ej:. Google.es), pero en ese momento que estamos escribiendo. Lo que estamos escribiendo es un nombre de dominio, os acordais de DNS, “servidor de nombres de dominio”, que es lo que hacia un servidor DNS, a un nombre de dominio le asignaría una IP por lo tanto nosotros no nos conectamos a google.es, sino que nos estamos conectando a una dirección IP, no todos tenemos un nombre de dominio, pero lo que si tenemos todos es una IP publica, esta es la que se muestra hacia internet, y es única en el mundo, por lo tanto si abriéramos un navegador y pusiéramos esa dirección IP llegaríamos a nuestro router.

Sabiendo esto lo que ahora tenemos que hacer es decir a nuestro router que hacer cuando “alguien” llama a la puerta. ¿Y que creéis que habría que hacer? -Abrir esa puerta-. A eso se le llama abrir un puerto en el router, y no solo eso, tendremos que decir que hacer y lo que tendremos que indicarle es que lo que quiera entrar por el puerto 80 de nuestro router, lo redirija al puerto 80 de la ip de nuestro servidor, ya esta!!! con eso podríamos acceder desde cualquier lado del mundo a nuestro servidor de internet.


Para acceder tendremos que hacer estos pasos.

1ª Abrir puerto 80 del router y decir que lo redireccione a la ip de nuestro servidor por el puerto 80
2ª En nuestro servidor esos puertos están chapados automáticamente, por lo que tendremos que poner los siguientes comando:

iptables -A INPUT -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -p TCP --dport 8080 -j ACCEPT
iptables -A OUTPUT -p TCP --dport 80 -j ACCEPT
iptables -A OUTPUT -p TCP --dport 8080 -j ACCEPT

Con esto hemos abierto los puertos de nuestro ordenador (iptables es el fireware de linux)

Siento mucho no poder deciros como configurar vuestro router, pero eso ya depende de cada uno, lo que si es casi seguro es que para acceder a vuestro router tendreis que abrir un navegador y poner la siguiente dirección: 192.168.1.1

Si no sabéis como configurar vuestro router, buscar en google.

Espero que os sirva.

En la próxima entrada aprenderemos a como poner un nombre de dominio gratuito (para no tener que ir poniendo ips)

Servidor ubuntu completo - IX parte - Servidor WINS


Ahora que parecía que todo estaba siendo complicado, vengo con una cosa que se me olvido contar en su momento (cuando solo eran cosas locales) y es el servidor WINS, WINS (Windows Internet Name Service) es un servidor de nombres de para NetBIOS, que se encarga de mantener una tabla con la correspondencia entre direcciones IP, y nombres NetBIOS, de los equipos que conforman la red local.



Si tenemos samba montado (o eso espero), sera lo más fácil del mundo, es más es más sencillo que incluso configurar la interfaz de red.



Lo primero será ir al archivo de configuración de SAMBA
nano /etc/samba/smb.conf



y en la zona [global] poner esto:



wins support = yes
name resolve order = wins lmhosts hosts bcast



La opción wins support convierte a Sambaen un servidor WINS. Lo creas o no, ¡Es todo lo que necesitas hacer! Samba maneja el resto de detalles detrás del escenario, convirtiéndote en un relajado administrador. Las opciones wins support=yes y wins server son mutuamente excluyentes; no puedes al mismo tiempo ofrecer a Samba Samba como server WINS y además apuntar a otro sistema para que actúe como servidor.
Si Samba está actuando como server WINS, deberías familiarizarte con la opción name resolve order mencionada anteriormente. Esta opción le dice a Samba el orden a seguir en cuanto a la utilización de métodos para la resolución de un nombre NetBIOS. Puede tomar hasta cuatro valores:
lmhosts
Usa el fichero de control de red LMHOSTS.
hosts
Usa los métodos de resolución de nombres standard de un sistema Unix system, /etc/hosts, DNS, NIS, o una combinación (según esté configurado en dicho sistema).
wins
Usa el servidor WINS.
bcast
Usa un método de multidifusión o broadcast.
El orden en que los especificas es el orden en que Samba intentará la resolución de nombres cuando actúe como servidor WINS. Por ejemplo, echemos un vistazo al valor expuesto arriba:
name resolve order = wins lmhosts hosts bcast
Esto significa que Samba intentará usar primero sus entradas WINS par la resolución de nombres, y a continuación el fichero LMHOSTS de su sistema. Después, el valor hosts provoca que use los métodos Unix para la resolución de nombres. La palabra hosts puede llegar a engaño; no sólo cubre el fichero /etc/hosts, sino también el uso de DNS o NIS (según esté configurado en el sistema Unix). Finalmente, si ninguno de los tres funcionó, usará broadcast para intentar localizar la máquina correcta.

Servidor ubuntu completo - VIII parte - Servidor DNS


Todo lo que hemos estado viendo hasta ahora ha estado muy divertido, pero ahora llega el verdadero enemigo, el server más complicado de todos (o por lo menos para mi) su nombre son 3 letras que imparten terror entre los estudiantes de informática, su nombre es... ¡DNS!
Este es el verdadero enemigo a batir, ya que si este falla, muchas de las cosas que haremos más adelante, darán fallos en algunas zonas y no sabrás el que falla y te entraran ganas de sacarte los ojos, por lo tanto poner mucha atención y si es necesario leeros lo varias veces si no lo habéis entendido bien porque repito que esto es muy importante.



Un servidor DNS es una máquina que resuelve nombres DNS dentro de una red. Un nombre DNS es una cadena de palabras que representa una dirección IP. Por ejemplo, www.google.com es un nombre DNS que hace referencia a la dirección IP 74.125.230.80. El servidor tiene una lista de nombres DNS asociados a una dirección IP, y si se le da un nombre DNS que está en su lista, el servidor devuelve la dirección IP correspondiente; es a esto a lo que se le llama "resolver el nombre DNS".
Cuando un usuario introduce un nombre DNS en un navegador de Internet, su ordenador envía una petición al servidor DNS para que resuelva dicho nombre. El servidor le devuelve la dirección IP correspondiente, pudiendo establecer así la conexión.
He aquí un ejemplo de cómo funciona explicado en cinco pasos:
-El usuario introduce el nombre DNS www.google.com en el navegador de Internet.
-El ordenador cliente envía una petición al servidor DNS para que resuelva el nombre DNS www.google.com.
-El servidor DNS busca www.google.com en su lista de nombres. Si lo encuentra, envía al ordenador cliente la dirección IP. Si no, reenvía la petición al siguiente servidor DNS (forwarder).
-El servidor DNS encuentra el nombre www.google.com asociado a la dirección IP 74.125.230.80, y lo envía al ordenador cliente.
-El ordenador cliente realiza la conexión con el ordenador con la dirección IP 74.125.230.80.
Un detalle importante es que un nombre DNS está compuesto por dos partes: un nombre de nodo y un nombre de dominio. En este ejemplo, por ejemplo, aparecen diferenciados el nombre de nodo (azul) y el nombre de dominio (verde):
www.google.com
El nombre de nodo hace referencia a un ordenador que está dentro de un grupo de ordenadores, representado por el nombre de dominio (zona DNS). Por lo general, los nodos que en un sitio web tienen funciones específicas tienen un nombre especial que se utiliza en todos los dominios. En este caso, el nombre de nodo www se utiliza para nombrar el nodo que actúa como servidor Web, es decir, el que aloja las páginas web del sitio. 
 
Antes de empezar a instalar y configurar el servidor, es importante que conozca los tipos de servidores DNS y los tipos de registros. 

Existen cuatro tipos de servidores DNS: Master (Maestro o primario), Slave(Esclavo o secundario), Caching-only(Sólo caché) y Forwarding (De reenvío). Los servidores maestros son los principales; contienen los nombres DNS y responden a las peticiones de resolución; los esclavos también responden a las peticiones, pero no tienen información de los nombres DNS: sólo actúan como extensiones de los servidores maestros, por así decirlo, para que éstos puedan abarcar un mayor espacio y atender a más equipos. Los servidores de caché son como los maestros, pero en lugar de tener una base de datos permanente de los nombres DNS, lo que hace es registrar las últimas peticiones de resolución hechas a un servidor maestro y almacenarlas temporalmente, acelerando de esa forma el proceso de resolución de nombre DNS (cuando visita una página por segunda vez antes de que el servidor DNS caché borre su base de datos, es éste servidor y no el maestro quien resuelve la petición de resolución). Por último, los servidores de reenvío (valga la redundancia), reenvían las peticiones de resolución a otro servidor DNS (entre dos servidores del mismo tipo).

Servidor DNS maestro

 

Servidor DNS esclavo

 

 


Servidor caché DNS

 


 

Archivos de configuración del DNS

El archivo de configuración del DNS es el archivo /etc/bind/named.conf, pero este hace referencia a otros cuantos archivos como por ejemplo:

  • Archivo named.conf ; Archivo principal de configuración.
  • Archivo named.conf.options ; Opciones genéricas.
  • Archivo named.conf.local ; Especificación particula de este servidor DNS.
  • Archivo db.127 Especificación dirección de retorno.
  • Archivo db.root DNSs de nivel superior.

Configuración como caché DNS

Por defecto, al instalar el bind9 está preconfigurado como servidor caché DNS. Tan solo será necesario editar el archivo /etc/bind/named.conf.options y en la sección forwarders añadir las IPs de dos servidores DNS donde redirigir las peticiones DNS:

                         //Configuración como caché DNS
                         //Añadir IPs de los DNS de nuestro proveedor en /etc/named.conf.options
                         options{
                            forwarders {
                                  8.8.8.8; 8.8.4.4;
                            };
                          };

Configuración DNS maestro

Por razones de accesibilidad y organizativas, deseamos asignar un nombre a todos los equipos de nuestra red, para lo que instalaremos un servidor DNS privado con un dominio ficticio, por ejemplo 'shusui.com'. Todos los PCs de nuestra red pertenecerán a dicho dominio ficticio que funcionará solo en nuestra red interna, no en Internet. En tal caso el nombre completo de los PCs terminará con 'shusui.com', por ejemplo: habi1Pc2.shusui.com. Lo ideal en una situación así es disponer de un servidor DNS que sea maestro de nuestro dominio, es decir, maestro del dominio interno 'shusui.com'. 

Nuestro servidor DNS maestro para nuestro dominio ficticio interno 'shusui.com' será capaz de resolver peticiones internas de nombres de este dominio, tanto de forma directa como de forma inversa, es decir, si recibe una consulta acerca de quién es habi1pc2.shusui.com deberá devolver su IP, pongamos por ejemplo 192.168.1.107. Si la consulta es una consulta DNS inversa acerca de quién es 192.168.1.107, deberá responder habi1pc2.shusui.com. Por ello deberemos añadir en el archivo /etc/bind/named.conf.local la especificación de maestro para el dominio y para la resolución inversa, por ejemplo: 

               // Añadir en /etc/bind/named.conf.local
               // Archivo para búsquedas directas
               zone "shusui.com" {
                type master;
                file "/etc/bind/shusui.db";
              };

               //Archivo para búsquedas inversas
                 zone "1.168.192.in-addr.arpa"{
                  type master;
                  file "/etc/bind/192.rev";
               };

Evidentemente será necesario crear los archivos shusui.db y 192.rev que especificarán la asociación entre nombres y direcciones IP de nuestra red en un sentido y otro respectivamente.


Archivo de zona de búsqueda directa

Supongamos que en nuestra red local tenemos una habitación llamada habi1 con 12 PCs con IPs que van desde la 192.168.1.101 hasta 112 y cuyos nombres van desde habi1pc1 hasta habi1pc10, luego un servidor web (pc11) y un servidor de correo electrónico que además es servidor DNS (pc12). El archivo de configuración DNS de nuestro dominio podría ser así:

 // Archivo /etc/bind/shusui.db
;
; BIND data file for shusui.com
;
@ IN SOA shusui.com. root.shusui.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL

@ IN NS dns.shusui.com.
@ MX 10 mail.shusui.com.

habi1pc1 IN A 192.168.1.101
habi1pc2 IN A 192.168.1.102
habi2pc3 IN A 192.168.1.103
habi3pc4 IN A 192.168.1.104
habi4pc5 IN A 192.168.1.105
habi5pc6 IN A 192.168.1.106
habi6pc7 IN A 192.168.1.107
habi7pc8 IN A 192.168.1.108
habi8pc9 IN A 192.168.1.109
habi9pc10 IN A 192.168.1.110
www IN A 192.168.1.111
dns IN A 192.168.1.112
mail IN A 192.168.1.112

Las primeras líneas son unos parámetros relaccionados con la actualización del DNS (número de serie y periodos de actuación). Las dos siguientes líneas indican quién es el servidor primario (NS = Name server) y quien procesa el correo electronico del dominio (MX = Mail eXchange). Las siguientes líneas especifican las IPs de los distintos PCs componentes del dominio (A = Address).

Si olvidamos algún punto y coma, dará errores y no funcionará correctamente. Para revisar los archivos disponemos de los comandos named-checkconf y anmed-checkzone que analizan que esté correcta la sintaxis de los mismos. Recomiendo usar el archivo db.local ya que tiene una plantilla.

Archivo de zona de búsqueda inversa

Para poder realizar consultas inversas (de IP a nombre) será necesario crear el siguiente archivo:

// Archivo /etc/bind/192.rev
;
; BIND reverse data file for 192.168.1.0
;
@ IN SOA shusui.com. root.shusui.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL

IN NS dns.shusui.com.

101 IN PTR habi1pc1.shusui.com.
102 IN PTR habi1pc2.shusui.com.
103 IN PTR habi1pc3.shusui.com.
104 IN PTR habi1pc4.shusui.com.
105 IN PTR habi1pc5.shusui.com.
106 IN PTR habi1pc6.shusui.com.
107 IN PTR habi1pc7.shusui.com.
108 IN PTR habi1pc8.shusui.com.
109 IN PTR habi1pc9.shusui.com.
110 IN PTR habi1pc10.shusui.com.
111 IN PTR www.shusui.com.
112 IN PTR dns.shusui.com.
112 IN PTR mail.shusui.com. 

Una vez configurado nuestro servidor DNS, debemos indicar a nuestro servidor Linux que el servidor DNS es él mismo, lo cual se especifica en el archivo /etc/resolv.conf. 

nameserver 127.0.0.1
search shusui.com

En el resto de PCs de la red, indicaremos que el servidor DNS es 192.168.0.112 

Tan solo nos faltará poner en marcha nuestro servidor de nombres ejecutando en el servidor el script de inicio correspondiente: 

 /etc/init.d/bind9 restart

y, mediante el comando host, el comando dig o el comando nslookup hacer alguna consulta de prueba:


DNS funcionando correctamente.

 

Configuración DNS esclavo

 
Si deseamos configurar nuestro servidor DNS para que actúe como esclavo de un servidor DNS maestro, la configuración es mucho más sencilla que en el caso anterior ya que únicamente será necesario indicar en el DNS esclavo quién es el servidor DNS maestro, y en el DNS maestro, la IP del DNS esclavo. 

Ejemplo, supongamos que el nombre del DNS maestro es dns.shusui.com (IP 192.168.1.112) y que el nombre del DNS esclavo es dns2.shusui.com. En el archivo 'shusui.db' de zona de búsqueda directa añadiremos la línea del segundo dns justo debajo de donde está la del primero: 

 // Añadir línea en /etc/bind/shusui.db del maestro.

@ IN NS dns.shusui.com.
@ IN NS dns2.shusui.com. // Nueva línea

En el archivo /etc/bind/named.conf.local del servidor DNS esclavo debemos indicar que se trata de un servidor esclavo y también debemos indicar quién es el maestro:  

// Añadir en /etc/bind/named.conf.local del esclavo
zone "shusui.com" {
type slave;
file "/etc/bind/shusui.db";
masters { 192.168.1.112; };
};

zone "1.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/192.rev";
masters { 192.168.1.112; };
};

En el archivo /etc/bind/named.conf.local del servidor DNS maestro podemos utilizar also-notify para mantener los DNS sincronizados. Con also-notify pasamos los cambios de zonas en el maestro al esclavo: 

 // Archivo /etc/bind/named.conf.local del maestro
zone "shusui.com" {
type master;
file "/etc/bind/shusui.db";
also-notify {ip_del_esclavo;}
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
also-notify {ip_del_esclavo;}
};

De esta forma dispondremos en la red de un servidor DNS esclavo que podrá satisfacer las peticiones DNS al igual que lo haría el maestro. Es interesante si el número de peticiones es muy elevado y se requiere distribuir la carga entre los dos servidores, o si deseamos disponer de servicio DNS de alta disponibilidad de forma que aunque el servidor maestro deje de funcionar, el servidor esclavo podrá seguir ofreciendo el servicio.

Cada vez que hagamos un cambio en los archivos /etc/bind/shusui.db y /etc/bind/192.rev del maestro, debemos acordarnos de actualizar el parámetro serial (incrementar en una unidad) para que los dns dependientes del maestro sepan que ha cambiado y actualicen su información para mantenerse perfectamente sincronizados.

Servidor ubuntu completo - VII parte - Servidor DHCP

-->
Esto ya marcha super bien. Dentro de poco podremos hacer grandes cosas :)
creo que con esto hemos empezado a calentar motores para el resto.

Ahora empiezan los que serán los malos finales, la liga pokémon de los servidores.

Servidor DHCP en ubuntu server

Para los que no saben que es un servidor DHCP, son aquellos servidores encargados de dar unas IP y una configuración de red a los equipos de la red que lo soliciten. (obtener ip automáticamente).

Para tener un DHCP vamos a instalar dhcp3-server, a estas alturas ya tendríamos que saber como se instala, pero este es el comando.

apt-get install dhcp3-server

/etc/default/dhcp3-server 

/etc/default/isc-dhpc-server (ubuntu 12.04)
 
y cambiamos INTERFACES="eth0″ por la tarjeta de red interna.


Es aconsejable hacer una copia de seguridad del archivo de configuración usando el siguiente comando:
cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.back


Editamos la configuracion tecleando:
sudo nano /etc/dhcp3/dhcpd.conf
nano /etc/dhcp/dchpd.conf (ubuntu 12.04)
Y en este archivo cambiamos las siguientes secciones dependiendo de lo que queramos.

Buscar la siguiente linea y modificar  los parametros  deacuerdo a nuestro rango y quitar el comentario(#).

# A slightly different configuration for an internal subnet.
 
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 80.25.61.25;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
}

Guardamos y salimos del archivo. El texto anterior configura el servidor DHCP con los siguientes parametros:
  • Asignacion a los clientes direcciones IPs del rango de 192.168.1.10 hasta 192.168.1.200
    * Prestara la direccion IP por un minimo de 600 segundos, y como maximo permitido de 7200 segundos.
    * Determina la mascara de subred a 255.255.255.0
    * Direccion de broadcast de 192.168.1.255
    * Como gateway/pasarela de red/router la direccion 192.168.1.1
    * Y los servidores 192.168.1.9 y 10 como sus servidores DNS
 
Con esto ya tendríamos un servidor DHCP configurado y listo para usar, pero pasa algo más, y es que muchas veces que tenemos máquinas las cuales no quieres que cambien de IP, por ejemplo un host de Oracle al que los equipos se conectan para atacar la base de datos, pues ese host no puede tener una IP dinámica, eso sería un completo caos, pero por suerte eso se puede arreglar si decimos que a una MAC determinada se le ponga siempre la misma IP, no hace falta decir que aunque antes habíamos puesto un rango entre 192.168.1.10 y 192.168.1.200, cuando pongamos una estática, esa se va a reservar.


Para hacer esto tendremos que poner lo siguiente
host oracle{
hardware ethernet 00:03:47:31:e1:7f;
fixed-address 192.168.1.20;
}


donde pone host oracle se puede cambiar por cualquier otro nombre, por ejemplo ahora lo hago con un servidor de impresión.
ost printer {
hardware ethernet 00:03:47:31:e1:b0;
fixed-address 192.168.1.21;
}


Cuando todo ya este configurado, tendremos que reiniciar el servicio.
 
/etc/init.d/dhcp3-server restart

Servidor ubuntu completo - VI parte - Servidor WEB


Buff, hemos llegado ya muy alto en la configuración de un servidor linux, a entrada de hoy podríamos decir que somos unos administradores de Linux en la red local :), pero hay una cosa, y es que linux donde más se uso es en internet y por lo tanto todo lo anterior que era bastante sencillito se nos va a complicar. Esto es como un videojuego. Hasta ahora nos hemos pasado la mitad del juego y ahora nos faltan los malos finales, por lo que ahora toca un malo intermedio (es muy sencillo) pero con los niveles de experiencia que tenemos lo resolveremos en pocos segundos.


Servidor WEB.

Este es una de las cosas por la que Linux destaca ante todos los demás (aunque es mejor en todo), cuando montamos un servidor WEB la mejor opción es montar un servidor apache en una plataforma GNU/LINUX, es más, cuando naveguéis por internet tened en cuenta que el 90% de los servidores web son así.

Vamos a montar un servidor web super completo, con php y mySQL para así tener un servidor web super potente.

Lo primero que tendremos que hacer, sera instalar apache2, para ello escribimos lo siguiente:

apt-get install apache2

Con esto ya tendremos instalado un servidor web, ¡¿Tan fácil?!, pues sí. Si vamos en el navegador a la siguiente direccion http://localhost veremos un mensaje que pondrá “it works” o algo parecido, esta página esta guardada en la siguiente dirección /var/www















ahora vamos a instalar mySQL, para ello escribimos

apt-get install mysql-server

en la instalación nos pedirá una contraseña para el usuario “root” que administrará la base de datos.

Una vez terminado esto instalaremos php coro (php5). Para esto tendremos que poner lo suguiente:
apt-get install php5

y despues

/etc/init.d/apache2 restart

vamos a comprobar si tenemos php.


Nos dirigimos a la ruta /var/www

cd /var/www

creamos un archivo que se llame phpinfo.php

nano phpinfo.php

y en el escribimos

<?php phpinfo(); ?>

guardamos el archivo y abrimos el navegador, y ponemos http://localhost/phpinfo.php

y en el nos aparecerá toda la información php de nuestro servidor.














 
Por último vamos hacer que php se conecte con nuestra base de datos que para eso la tenemos. Para ello tendremos que instalar los siguientes paquetes.
# apt-get install php5-gd php5-mysql 

# apt-get install php5-curl php5-xmlrpc php5-intl

reiniciamos apache2

/etc/init.d/apache2 restart

instalamos phpCLI

apt-get install php5-cli

Servidor ubuntu completo - V parte - Proxy squid3


Esto ya esta saliendo bastante bien :), ahora vamos a empezar a tener más contacto con los que es la “gran red” también llamada internet, aunque lo que vamos hacer es casi configuración local, esto va a ser muy importante, ya que lo que toca ahora es configurar un ¡Poderoso servidor proxy!

Para los que no saben que es un servidor proxy, es aquel servidor que analiza el trafico entrante y saliente de la red local (casi siempre es de la red local a internet, pero también podemos hacer que analice el trafico entre 2 servidores o lo que queramos).

Un esquema muy habitual en redes del hogar o en puestos de trabajo, varios equipos conectados en una red a un router que proporciona el acceso a internet, pero nos podria interesar que estos equipos no pudieran acceder a todas las webs que quisieran, sino a las que nosotros estableciéramos, para eso necesitamos un servidor porxy. Un servidor proxy es un equipo que se encarga de recibir todas las comunicaciones de la red y una vez analizadas con las reglas que hemos configurado las transmite o las deniega. Si las permite establece conexión con el router y después con internet para que puedan navegar, pues bueno, vamos a aprender a instalar este servidor porxy. Lo primero que habrá que hacer sera instalar un ubuntu en la maquina, no voy a explicar este paso ya que no creo que sea necesario.


Una vez instalado abrimos una terminal y tendremos que poner la contraseña del root, para ello utilizaremos el comando [ sudo passwd root] el cual nos pedirá primero la contraseña de administrador y después nos dirá que ingresemos la contraseña que queramos ponerle al root.

una vez hecho lo anterior entraremos como root para hacernos más cómodos el trabajo, esto se ara poniendo el comando [su ] y después ingresando la contraseña del root que habíamos puesto anteriormente. Cuando estemos como root lo siguiente sera instalar squid3, pero todabía queda un paso intermedio y es el de instalar el paquete aptitude por el cual se instala squid3 y no viene de serie en ubuntu 10.10, para ello simplemente escribiremos [apt-get install aptitude]. Cuando ya este instalado, lo que tendremos que hacer sera instalar ya porfin squid3, para ello ponermos el siguiente comando [aptitude install squid3].

En este momento ya tendremos instalado squid3 (seguramente con los procesos ya lanzados) ahora lo que tenemos que hacer es configurarlo.

Para configurar squid3 tendremos que acceder al archivo de configuración que esta en la carpeta /etc/squid3/ el archivo de configuración se llama squid.conf por lo tanto la dirección completa es /etc/squid3/squid.conf para configurarlo lo único que tendremos que hacer sera modificar el archivo como si fuese un documento de texto (de hecho para linux todo es un documento de texto) para ello podremos utilizar muchísimas alternativas ya sea el uso del nano, el vi o por el que nos decantaremos en esta guia el gedit.



Lo primero que recomiendo hacer antes de ponerse a modificarlo es hacer una copia de seguridad por si acaso algo sale mal.


El archivo de configuración de squid3 es bastante grande pero nosotros solo vamos a configurar una cuantas lineas para que funcione de una manera muy eficiente.


Primero habrá que configurar el proxy: sobre esta linea aproximadamente la 1080, nos encontramos http_port el cual es el parámetro por el cual se configura el puerto por el que squid escuchará las peticiones, se puede configurar para el que más interese, pero hay que saber que el 3128 es el que viene por defecto.



Sobre la linea 1954 nos encontramos el parámetro cache_men, que es el que utilizaremos para asignar la memoria cache de squid lo recomendable es asignar la tercera parte de la memoria ram que dispongamos, en este caso si disponemos de 512Mb sería recomendable poner 192 con esto será más que suficiente, para que lo que hemos modificado sea valido tendremos que descomentar la linea, para hacer esto tendremos simplemente que borrar la # que hay al principio.



Sobre la linea 2118 encontraremos el parámetro cache_dir este parámetro se encarga de asignar una zona de disco para almacenar la cache de squid. Lo descomentamos y veremos el parámetro ufs el cual es el que utiliza squid para guardar en disco, lo siguiente es la ruta donde se almacenara la cache y lo siguiente es el parámetro del tamaño máximo del disco que va a comentar vamos a asignarle 1000Mb añadiendo un 0 al 100. Una cosa importante es que este valor no puede ser menor al que le hemos asignado antes a la memoria cache. Los siguientes 2 parámetros son los de directorio primario y directorio secundario en niveles, estableciendo 16 directorios de primer nivel y 256 subdirectorios de segundo nivel esta configuración es recomendable NO modificarla. Con esto ya tenemos configurado el proxy, ahora vamos a establecer los parámetros para que funcione como nos interese.

Para establecer las reglas que el proxy admita o deniegue las conexiones, tenemos las listas de control de acceso o en ingles ACL. Estas se componen de un parámetro acl seguido de un nombre que puede ser el que nosotros queramos, después el método de acceso y por fin el rango de acceso.

Vamos a poner un ejemplo: acl mired src 192.168.1.0/24 . Como vemos acl indica la orden, luego viene el nombre que le hemos dado al parámetro, seguido hemos puesto src esto indica origen para establecer el origen de las conexiones, para ello tendremos que poner la red en la que estamos trabajando en mi caso 192.168.1.0 y lo siguiente que hemos puesto es /24 esto indica la mascara de subred la cual poner 24 es lo mismo que poner 255.255.255.0



Otra regla sería por ejemplo: acl noway url_regex “/etc/squid3/noperm” . Esto lo que indica es como siempre las listas de acceso empiezan por acl lo siguiente es el nombre que le hemos puesto, después le hemos puesto el parámetro url_regex esto significa que el proxy analizará las direcciones con palabras que nosotros pongamos en una lista, hay 2 maneras de hacer lo, uno es poner todas las palabras seguidas separadas por un espacio (algo que desde aquí no recomiendo) y la otra es la de redirigirlo a un archivo que más tarde crearemos, en mi caso es el archivo llamado noperm esta dirección habrá que ponerla entre comillas “”. Pero todo esto solo establece que conexiones de origen o destino ha de analizar el servidor, para completar esta configuración tenemos que establecer si las permitimos o las denegamos y esto se hace con el parámetro http_access estas ordenes se introducen sobre la linea 767 y lo que hay que hacer sera poner las listas que pongamos nosotros lo más arriba posible de las demás, esto es por que cuando el proxy lee la configuración primero le las lineas de arriba y son las primeras que se ejecutaran. Bueno, para hacerlo escibimos: http_access allow mired . http_access es el parámetro y donde hay allow también hay otra posibilidad, y es la de deny con la cual denegaremos el acceso mientras que con allow lo concederemos, lo siguiente es el nombre que le dimos a la acl, tendremos que hacer uno para cada acl que hayamos puesto, por ejemplo para la de noway tendremos que poner http_access deny noway.





Una vez hecho esto el archivo de configuración esta listo, ya solo nos falta crear el archivo noperm el cual lo único que tendremos que hacer será crear un nuevo documento en la ruta especificada y en el documento escribir las palabras que queremos capar, una cosa importante es que cada palabra tiene que ir en una linea.


Ya solo nos falta activar el servicio, para activar el servicio de squid lo que tendremos que hacer sera tan simple como poner [/etc/init.d/squid3 <parametro*>] Los parametros que se pueden poner son:


start para iniciar el servicio


stop para parar el servicio


restart para reiniciar el servicio


reload para volver a cargar el archivo de configuración, pero sin la necesidad de finalizar el servicio.


En este caso lo que aremos sera poner restart para reiniciar el servicio (sino estaba iniciado tendremos que iniciarlo), si no hay ningún error en el archivo de configuración nos saldrá una pantalla como la siguiente.






Lo siguiente que tendremos que hacer sera configurar nuestra tarjeta de red para ponerle una IP fija, y lo más importante la getway sera la dirección privada de nuestro router. Después volveremos a reiniciar el servicio de squid, y por ultimo ya solo tendremos que configurar los navegadores de los demás para que utilicen nuestro proxy.


Una vez configurado el proxy en los navegadores si ponemos una palabra no admitida etc... nos aparecerá la pantalla de error predeterminada.


Esta pantalla la podemos cambiar, modificando su contenido HTML, para ello iremos a la siguiente dirección /usr/share/squid3/errors/es-es . En esta dirección están todos los posibles html que tendremos dependiendo del fallo.

Servidor ubuntu completo - IV parte - Compartir impresoras de linux para windows

-->
Para compartir una impresora con un ordenador que use Windows seguimos estos pasos:


  • 1. Necesitamos tener CUPS, así que instalamos el paquete cups de los repositorios oficiales de Ubuntu.
  • 2. Instalamos la impresora.
  • 3. Escribimos lo siguiente en una terminal:



$ sudo adduser cupsys shadow
$ sudo /etc/init.d/cupsys restart
editamos el archivo /etc/cups/cupsd.conf
 
En la zona de Listen añadimos: Listen IP:631
y en los bloques
<Location /> , <Location /admin> and <Location /admin/conf> 
añadimos: allow all
 
 
Haciendo esto podrás logearte en la dirección http://localhost:631 (es el panel donde se administra CUPS), con tu nombre de usuario y contraseña y se reiniciará CUPS.



  • 4. Introducimos la siguiente dirección en el navegador web: http://localhost:631, una vez introducidos nuestro nombre de usuario y contraseña, nos metemos en administración y seleccionamos todas las casillas. Aceptamos y CUPS se reiniciará. Si no se reiniciara, lo cual se vería al salir una página de error en el navegador, pues lo reinicias desde una terminal manualmente:


$ sudo /etc/init.d/cupsys restart
  • 5. Nos vamos al ordenador con Windows y le damos a añadir impresora, seleccionamos impresora en Red, y en el cuadro escribimos:


http://*:631/printers/LaserJet-1200
El * deberás substituirlo por la dirección IP del ordenador conectado con la impresora (del tipo 192.168.1.0), y en vez de LaserJet-1200 deberás introducir el nombre de la impresora, en GNU/Linux no busques algo como nombre de impresora compartida ya que es el mismo nombre que tiene la impresora en el sistema. En Windows tal vez sea necesario instalar la impresora siendo administrador del sistema.
Listo, imprime una página de prueba.

Servidor ubuntu completo - III parte - servidor SAMBA

Ahora vamos a empezar con cosas más complicadas, pero todavía no vamos a irnos de la red loca, ya que ahora toca el turno de ¡SAMBA! (a bailarrrr!!!!, bueno esto es broma).

Samba es un software que permite a tu ordenador con Ubuntu poder compartir archivos e impresoras con otras computadoras en una misma red local. Utiliza para ello un protocolo conocido como SMB/CIFS compatible con sistemas operativos UNIX o Linux , como Ubuntu, pero además con sistemas Windows (XP, NT, 98...), OS/2 o incluso DOS. También se puede conocer como LanManager o NetBIOS.

Instalación.

Primero instalamos samba:
$ sudo apt-get install samba samba-client smbfs smbclient
esto debería instalar también varias otras dependencias.

Configuración.

La configuración del servidor samba se realiza en el archivo /etc/samba/smb.conf el cual podemos modificar de la siguiente manera:
$ sudo nano /etc/samba/smb.conf
Modificar el grupo de trabajo.

Buscamos la línea que diga algo como :
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro grupo de trabajo.

Como compartir una carpeta.

Primero debemos crear una carpeta con permisos (por ejemplo) :
$ sudo mkdir /home/publico
$ sudo chmod 755 /home/publico
Luego abrimos la configuración y le agregamos, al final, algo como esto :
[publico]
comment = Cosas publicas
path = /home/publico
public = yes
writable = no
Las opciones son sugerentes, por ejemplo "public = yes" es para que se pueda acceder a la carpeta cualquier usuario, y "writable = no" es para que no se pueda escribir.

Como compartir la unidad de CD-ROM

Abrimos la configuración y le agregamos, al final, algo como esto :
[cdrom]
comment = Cd Rom Compartido
path = /media/cdrom0
public = yes
writable = no
browseable = yes
(le agregamos un nuevo parámetro "browseable" esto sirve para ingresar a la maquina por medio de windows y linux de forma remota y ver la carpeta que esta compartida)
Abrimos la configuración y le agregamos, al final, algo como esto :
[cdrom]
comment = Cd Rom Compartido
path = /media/cdrom0
public = yes
writable = no
browseable = yes
(le agregamos un nuevo parámetro "browseable" esto sirve para ingresar a la maquina por medio de windows y linux de forma remota y ver la carpeta que esta compartida)

Permisos
Los usuarios que ingresan a un recurso público, el sistema le da como nombre de usuario nobody y como nombre de grupo nogroup, es así como podemos cambiar el nombre de usuario y nombre de grupo a nuestras carpetas, con el fin de que el sistema también sepa quien es el propietario de esa carpeta:
$ sudo chown nobody:nogroup /home/publico
$ sudo chmod 555 /home/publico
y si queremos que también pueda escribir sobre esta carpeta
$ sudo chmod 755 /home/public
y además debemos decirle a Samba que se lo permita (acuerdate que para que un permiso sea válido, tanto el sistema como Samba deben estar de acuerdo)
Administración
Cambiar contraseña de un dominio Windows
Para cambiar la contraseña de un usuario de dominio de Windows no es necesario ir a un PC Windows sino que se puede hacer desde el propio Ubuntu. Para hacerlo sólo hay que abir un terminal y ejecutar este comando:
$ smbpasswd -r WindowsDC -U nombreUsuario
Donde WindowsDC es en este caso la dirección del controlador de dominio de Windows y nombreUsuario el usuario en el dominio.
Al ejecutar el comando pedirá la antigua contraseña en primer lugar y posteriormente pedirá la nueva.
Una vez hecho esto ya podemos hacer login con la nueva contraseña.
Agregar usuario
Suele pasar que cuando entras desde windows a una carpeta compartida en ubuntu, te pide usuario, puede hacer lo siguiente:
$ sudo smbpasswd -a tu_usuario
si deseas le pones contraseña por motivos de seguridad, y si no necesitas la constraseña solo dale enter.
Cambiar contraseña usuario
Ahora que ya tenemos compartiendo la carpeta, nos queda crear un nombre de usuario y contraseña en el servidor Samba para que el ordenador con Windows pueda acceder a dicha carpeta, para ello abrimos una consola e introducimos:
$ sudo useradd -s /sbin/nologin usuario-windows
Donde usuario-windows es el usuario que va a acceder a la carpeta en Windows. Si /sbin/nologin no existe, probar con /usr/sbin/nologin.
Si no encuentras el fichero nologin, también puedes crear tu usuario normalmente y luego ejecutar la sentencia:
$ sudo passwd -d usuario-windows
A continuación introducimos
$ sudo smbpasswd -a usuario-windows
Y nos pedirá la contraseña que queramos asignar a dicho usuario.
Para reiniciar samba
Luego de efectuar algún cambio en el archivo /etc/samba/smb.conf debemos reiniciar samba, para ello :
$ sudo /etc/init.d/samba restart
Ojo en Ubuntu 10.04 LTS y 10.10 el comando anterior no va, debes utilizar este:
$ sudo restart smbd
Con todo lo anterior deberíamos ser capaces de entrar desde un equipo con windows o linux a la carpeta /home/public sin necesidad de tener nombre de usuario ni password:
Acceso a los recursos compartidos
Desde Windows
Colocamos en la barra de direcciones de alguna ventana:
\\192.168.3.1\publico
Desde Linux
Debemos instalar el paquete samba-client. Luego, abrimos una carpeta y colocamos en la barra de direcciones:
smb://192.168.3.1/publico/
o
smbclient //192.168.3.1/publico/
donde 192.168.3.1 es "la IP privada" del equipo linux que contiene a la carpeta /home/public


Después de montar todo esto se me planteo una duda muy grande, y es que podia hacer para compartir una carpeta de tal forma que se pueda acceder y dejar documentos  e incluso crear carpetas, pero que ya no pudiera modificarlos, leerlos o borrarlos. Estuve durante un tiempo mirando el archivo de configuración y al final desistí y decidí hacerlos a trabes de webmin.

cuando entre en webmin cambie estas directivas en la zona de permisos de archivos de la carpeta escogida y modifique los parametros como aparece en la imagen.









después de observar el archivo de configuración, creo que es la opción "create mode"

Si en algún momento queremos que a un recurso se acceda con usuario y contraseña, tendremos que en la opción "public = yes" poner "public = no" y ya nos pedirá usuario y contraseña.

Para añadir un usuario a samba (para que podamos acceder a ese recurso con ese usuario) tendremos lo primero que crear un usuario.

useradd <nombre usuario>

a continuación

smbpasswd -a <usuario dicho antes>

con esto ya tendremos un usuario agregado a samba y con el podremos acceder a nuestra carpeta.

En dominio hay que poner el grupo de trabajo

Servidor ubuntu completo - II parte - servidor FTP

-->
Después de haber visto el servidor ssh, ahora toca el turno de montarnos un servidor FTP, el cual será muy útil para por ejemplo dejar trabajos.

Pero antes de nada. ¿Qué es un Servidor FTP?

Es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red.
Basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.

Para instalar nuestro servidor ftp, vamos a utilizar vsftpd, para instalar el mismo utilizaremos el comando “apt-get install vsftpd

Cuando lo hayamos instalado se nos crearan lo siguientes archivos y directorios en el sistema:
/etc/init.d/vsftpd: fichero que inicia el servidor ftp.
/usr/bin/vsftpd: archivo ejecutable.
/etc/vsftpd.conf: es el fichero de configuración del servidor.
/etc/ftpusers: fichero que contiene una lista de usuarios que no se podrán conectar al servidor.

Configuración del servidor de correo.

Para configurar el servidor ftp debemos dirigirnos al directorio /etc/ y buscar el archivo de configuración el cual es vsftpd.conf, para configurarlo ponemos lo siguiente:

nano /etc/vsftpd.conf

Las directivas más importantes de este fichero son:
 
anonymous_enable : Si queremos que cualquier usuario se conecte a nuestro servidor dando el nombre de usuario anonymous o ftp solo debemos dejarlo de esta manera:
anonymous_enable=yes
Por motivos de seguridad, debemos poner no quedando de la siguiente manera:
anonymous_enable=NO
local_enable: Si deseamos permitir que cualquier usuario local pueda tener acceso a sus carpetas privadas debemos colocar esta directiva de la siguiente manera:
local_enable=YES
De lo contrario:
local_enable=NO
chroot_local_user: Esta orden permite encapsular a todos los usuarios dentro de sus propios directorios. Si el archivo de configuración aparece de la siguiente manera:
chroot_local_user=NO
El usuario tendra acceso a todo el sistema de archivos. Si aparece de esta manera:
chroot_local_user=YES
Entonces encapsulara a los usuarios dentro de su directorio personal, esto quiere decir que no tendra posibilidad de tener acceso a archivos de otros directorios. De esta manera se mejora la seguridad.

Actualización (últimas versiones de vsftpd): En las últimas versiones si ponemos nada más chroot_local_user e intentamos conectarnos nos saltara un error: 500 OOPS: vsftpd: refusing to run with writable root inside chroot(), para evitarlo tenemos que añadir encima de chroot_local_user la siguiente linea: allow_writeable_chroot=YES
 
write_enable:Con esta directiva se puede permitir o denegar la subida de ficheros al servidor FTP.
Si se permite que los usuarios suban archivos al servidor FTP habría que poner
write_enable=YES.
local_umask: Se establecen los servicios con los que quedará el archivo subido al FTP.
Un ejemplo, si local_umask=022, nos indicara que los permisos de los archivos serán 644, es decir, tendrá los permisos de lectura y escritura para el propietario del fichero, y solo de lectura para el resto de los usuarios.
anon_upload_enable:Si marcamos esta opción como YES, nos indicara si los usuarios pueden subir archivos al servidor quedando de la siguiente manera:
anon_upload_enable:YES
anon_mkdir_write_enable: Si esta a YES, nos permite crear directorios en el servidor
ftpd_banner= Nos permitira poner un mensaje de bienvenida en nuestro FTP.
"**** Bienvenido a mi servidor FTP ****"
local_max_rate= Es utilizado para limitar la tasa de transferencia en bytes por segundo a los usuarios locales del servidor.
local_max_rate=1024
max_clients: Nos indicara la cantidad máxima de clientes que podrán conectarse simultáneamente al servidor.
max_clients=5
Importante: Debemos tener en cuenta que cada vez que se ha cambiado algo en el fichero de configuración del vsftp se debe reiniciar con el siguiente comando:
/etc/init.d/vsftpd restart
pinchar para ampliar

pinchar para ampliar

Servidor ubuntu completo - I parte - servidor ssh

Hola a todos, he decidido crear un manual de forma completa para saber configurar cualquier tipo de servidor en un servidor linux (en este caso ubuntu server 10.04).

 Pienso que todo el mundo ya debería saber como instalar ubuntu server y configurar la interfaz de red (/etc/network/interfaces). Si no lo sabéis os sugiero que leáis estos manuales, uno para la instalación del ubuntu server y otro para la configuración interfaz de red.
Lo primero será empezar a instalar las cosas más sencillas para luego pasar con las avanzadas, y que cosa hay más sencilla que un servidor ssh para empezar a meternos en el mundo de las redes y servidores linux.
  Para la gente menos experta podriamos decir que SSH es como una conexion mediante telnet pero la informacion viaja de manera encriptada. 

Un buen servidor es “open ssh server” el cual implementaremos en nuestra máquina con el siguiente comando.


apt-get install openssh-server

con esto ya tendremos instalado el ssh corriendo en nuestro servidor, por lo cual cualquiera que entre con ssh, ya sea con puty o cualquier otro podrá conectarse, eso sí, le pedirán usuario y contraseña, y los permisos serán como los del local.

ejemplo de conexión realizada con putty
Yo no utilizo mac, es solo la interfaz gráfica