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