jueves, 3 de septiembre de 2009

MONTAR UN SERVIDOR PROXY CON SQUID

Software necesario:
1- squid
2- apache (no es necesario obligatoriamente pero acelerara la cache y trae un paquete que necesitaremos para encriptar las contraseñas de los usuarios en caso de que queramos que el proxy sea con autentificacion de usuarios)

Lo 1º tenemos que descargar el squid si quedemos compilarlo a mano lo descargaríamos de www.squid-cache.org aunque en muchas de las distribuciones ya esta en los repositorios, Yo como uso Debian usare apt y es tan sencillo como apt-get install squid3 y lo mismo con apache2.
Después tenemos que ir al archivo de configuracion de squid ( /etc/squid/squid.conf ) y editarlo cambiando unos parámetros que a continuación pondré.

Puerto de escucha
El primero es buscar la linea " # Squid normally listens to port 3128 " esta dentro de la sección NETWORK OPTIONS, (Este archivo parece un autentico caos por la cantidad de lineas que tiene pero luego no lo es tanto y no hay que cambiar tantas cosas...yo diría que el 90% del archivo son esplicaciones.)
Bueno buscamos esa linea (si usáis nano se busca con ctrl+W ) y justo debajo añadís (sin la almoadilla que eso es para comentarios)

http_port 3128
http_port 8080




memoria cache y cache en disco

Que sera el puerto por el que escuchara squid.
Luego buscamos la parte donde pone " cache_mem " y lo desmarcamos de comentario y lo dejamos así:

cache_mem 32 MB


Después buscamos esta linea: " cache_dir ufs /var/spool/squid 100 16 256 "


Donde aquí podríamos cambiar el 100 que puse en negrita que es cuantos megas de disco vamos a dejar para que guarde las paginas en la cache y se pueda acceder a ellas mas rápido, Yo creo que con el volumen de discos que manejamos hoy en dia se pueden dejar sin problemas 500 que aun así 500 megas para almacenar paginas no creo que este mal, pero eso ya es al gusto del consumidor, necesidades de la red y demás.

lista de control de acceso

Luego nos encontramos la parte de control de accesos, Aquí tenemos que saber sobre que red vamos a trabajar, 192.168.1.0 o 192.168.2.0 y la mascara de subred que salvo casos excepcionales, En ambientes de hogar claro ya que una gran empresa dudo que consulte este blog para montar su proxy, pues salvo esos casos suele ser 255.255.255.0.
Lo que tendríamos que cambiar aquí en principio seria poner esta linea " acl miredlocal src 192.168.1.0/255.255.255.0 " pero digo en principio porque luego veremos que depende como lo hagamos esta linea puede ser muy importante, y apartir de ahora los acl donde pongamos miredlocal se refreirá a 192.168.1.0/255.255.255.0, También podemos crear una lista de maquinas que queramos que accedan al proxy con lo siguiente " acl permitidos src "/etc/squid/permitidos" " y en /etc/squid/permitidos una lista con las ips internas que queramos que accedan, la sintaxis seria la siguiente:

acl (nombre) src (red o dir archivo)

un ejemplos:

acl miredlocal src 192.168.1.0/255.255.255.0
acl miredlocal src 192.168.1.0/255.255.255.0 192.168.2.0/255.255.255.0
acl permitidos src "/etc/squid/permitidos

Lo anterior es una lista de control de acceso, lo siguiente que vamos a ver son las reglas de control de acceso

Tenemos que buscar el texto " INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS "
La sintaxis seria " http_access (deny o allow) (lista) " y usando el archivo anterior podíamos crear la siguiente regla:

http_access allow permitidos

Pero esta parte tiene mucho juego ya que en una misma regla podemos poner varias listas y dejar acceso a unas y otra denegarlas, poniendo ! delante de la lista la deniegas el acceso, un ejemplo en el que la lista1 va a tener acceso y la lista2 no:

http_access allow lista1 !lista2

Aquí investigando mas en profundidad podemos hacer mucho, restringir dominios, Que no se descarguen ficheros con mp3,avi.., por contenidos, Cuando investigue mas en profundidad las reglas igual hago un post sobre ello. pero vamos que es una de las partes donde mas se puede hacer.
Y las lineas de esta parte tendrían que quedar mas o menos así con una configuracion simple, Por debajo de " # Recommended minimum configuration " :

Así podría ser la configuracion de la lista de control de acceso

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl miredlocal src 192.168.1.0/255.255.255.0



y así la de las reglas de control de acceso

http_access allow localhost
http_access allow miredlocal
http_access deny all

Como dije esto es una configuracion simple para que funcione el squid

Podemos poner también los mensajes de error en español si lo deseamos con eliminar el directorio actual " rm -f /etc/squid/errors " y cambiar el enlace simbólico " ln -s /usr/share/squid/errors/Spanish /etc/squid/errors "

AUTENTIFICACION DE USUARIOS


Ahora vamos con otra parte importante que es el acceso con autentificacion, Hay 2 formas con LDAP y con módulo NCSA,que es una forma de atentificacion por un texto simple que ademas ya viene incluido en squid,obviamente es mas seguro por LDAP pero es esta segunda la que yo voy a utilizar yo, la de por modulo NCSA.

Bueno este método es muy sencillo de usar, Solo tenemos que crear un fichero que el usuario squid pueda leer (en esto mirar bien si el usuario que arranca es squid o proxy que a mi me dio algún problemilla esto) para crear el archivo nada mas que:

touch /etc/squid/usuarios


y despues solo hacer que tenga squid (o proxy) los permisos y que sea el propietario

chmod 600 /etc/squid/usuarios
chown squid:squid /etc/squid/usuarios


Después solo tenemos que usar el comando htpasswd que dicho paquete viene incluido en apache, Un ejemplo:

htpasswd /etc/squid/usuarios david

Después no pide la contraseña para el usuario y se guarda cifrada en /etc/squid/usuarios.
Después buscar la linea " auth_param basic program " y añadirle" /usr/lib/squid/ncsa_auth /etc/squid/usuarios " y desmarcarla como comentario, vamos que tiene que quedar así:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/claves

Con esto le decimos donde esta el archivo de los usuarios y las contraseñas.

Y en la lista de control de accesos que vimos antes añadir esta linea:

acl password proxy_auth REQUIRED
y la parte lista de control de accesos anterior quedaria asi:

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl miredlocal src 192.168.1.0/255.255.255.0
acl password proxy_auth REQUIRED



Ya solo queda añadir la palabra password donde definimos las reglas y que quede así:

http_access allow localhost
http_access allow miredlocal password
http_access deny all


Y con esto quedaría squid listo, sin olvidarnos de parar y arrancar el servicio para que coja la configuracion claro, el comando es fácil:

/etc/init.d/squid stop
/etc/init.d/squid start

o
/etc/init.d/squid restar para reiniciarlo

Ahora vamos a tocar un poco la parte física y como debe ir la red.

Bien vamos a tener un router, 2 ordenadores, uno sera el servidor y otro el cliente, clientes podemos tener mas de uno pero entonces necesitariamos también un switch, pero para este caso sera solo un cliente, aunque para mas no habrá mas que hacer lo mismo en los demas clientes.

bien el router sera un router normalito, esto en principio no tiene misterio.
El servidor va a tener que tener 2 targetas de red, una para conectarla al router y otra para que el cliente se conecte a el (en el caso de varios clientes, en esta segunda targeta iria conectado el switch y a el los clientes)
y el cliente pues un ordenador normal, sin nada especial.

Las tarjetas del servidor han de estar en redes diferentes la 1º en la red del router, por ejemplo la 192.168.1.x y la segunda en otra red, por ejemplo la 192.168.2.x y el equipo ha de estar en la red de la segunda tarjetas (192.168.2.x) para que así ningún equipo de la red pueda ver el router y todos tengan que pasar por el servidor proxy y autentificarse para poder salir a internet, ni que decir que las ips fijas, y claro las " acl miredlocal src 192.168.1.0/255.255.255.0 "de la lista de control de accesos (y de las reglas y de cualquier sitio donde vaya la dirección de nuestra red) han de cambiar a la red 192.168.2.x

No os olvidéis tampoco de añadir estas lineas en los ficheros /etc/bash.bashrc y /etc/environment para poder acceder por el proxy a Internet desde concosa, Sin esto apt,wget y demás aplicaciones de consola que acceden a internet no podrán acceder.

export http_proxy="http://usuario:password@proxy:puerto"
export https_proxy="http://usuario:password@proxy:puerto"
export ftp_proxy="http://usuario:password@proxy:puerto"


Y bueno, con esto creo que el post (que este fue un poco mas largo) queda terminado,cualquier duda, sugerencia o lo que sea...ya sabéis, ponerlo en los comentarios o mandarme un email y os responderé con mucho gusto.
Un saludo

domingo, 16 de agosto de 2009

Cambiar entre versiones de Java

Es posible, que tras instalar nuestra Debian hayamos instalado Java. ¿Qué ocurre? Tendremos instaladas varias versiones de Java en nuestro sistema. Es posible que queramos utilizar la última versión disponible. Para ello, vamos a seguir los siguientes pasos:

Como root:

update-alternatives --config java

Entonces, nos aparece una lista con las versiones que tenemos instaladas en nuestro equipo. Algo como:

pc-debian:/home/sergio# update-alternatives --config java

Hay 3 alternativas que proveen `java’.

Selección Alternativa
———————————————--
1 /usr/bin/gij-4.3
+ 2 /usr/lib/jvm/java-gcj/jre/bin/java
* 3 /usr/lib/jvm/java-6-sun/jre/bin/java

Pulse para mantener el valor por omisión [*] o pulse un número de selección:

Si os fijáis, después de mostrarnos las versiones instaladas, nos dice que pulsemos un número (el correspondiente con la versión de java que queremos usar) o podemos pulsar intro para mantener la que estamos usando (es la marcada con un asterisco).

Como veis es muy simple.

Fuente: insepc.com

sábado, 8 de agosto de 2009

Instalar Flash para Firefox en Debian

Bueno esta no sera una entrada muy larga ni estrictamente de administración de servidores pero también creo que puede ser util para mucha gente y en esta vida no todo son servidores, no? bueno vamos con ello.

1º añadimos esta linea: deb http://www.backports.org/debian lenny-backports main contrib non-free a /etc/apt/sources.list
con esto añadimos los repositorios backports , que son unos repositorios de Debian también pero con paquetes de de otras versiones como testing o unstable, no te da la estabilidad que te da Debian estable pero te da paquetes que puedes necesitar como en este caso el flashplugin que en este caso mas que por inestable esta aquí por no ser libre (como sucede con java si no mal no recuerdo)

después hacemos update (apt-get update) pero nos dará error con de puclic key ( o firmas o llaves publicas si se tiene el sistema en español) así que ejecutamos lo siguiente:
wget -O - http://backports.org/debian/archive.key | apt-key add - (también esta el paquete debian-backports-keyring aunque este no lo probé ya que lo vi después)
para que nos descargue las claves publicas y con esto ya podremos hacer update sin que nos de errores

después se instala flashplugin-nonfree ( apt-get install flashplugin-nonfree ) en caso de problemas o que no lo vea intentamos forzarle a que lo busque en los repositorios backports con lo siguiente: apt-get -t lenny-backports install flashplugin-nonfree y con esto ya tendremos el flash en nuestro navegador de Debian (Iceweasel) que aun no tengo muy claro porque Debian tiene esa manía de cambiar el nombre a las cosas, bueno serán cosas de su política de libertad extrema, pero ese es otro tema que tratare otro dia.

jueves, 2 de julio de 2009

CONFIGURACION DE ETHERNET Y ALIAS DE RED

El comando basico para ver y configurar una red es ifconfig, As de ser root para ejecutarlo.
Muestra la información de todos los dispositivos, Un ejemplo es la siguiente captura


En este caso nuestra tarjeta es la eth1, La otra que se ve es la loopback, una direccion local que para lo que vamos a ver en este post no nos hace falta.

De aqui lo mas importantes lo sigiente:

Link encap:Ethernet

Te indica el tipo de dispositivo en este caso Ethernet, el Local Loopback (lo) va estar siempre es tu propia maquina

HWaddr 08:00:27:c5:61:7f

Esta es tu mac

Inet addr:10.0.2.15

Aqui sera tu ip, en este caso es 10.0.2.15

Bcast:10.0.2.255

Aqui te indica la ultima direccion posible (esa no se podra usar por ser la de broadcast)

Mask:255.255.255.0

Esto sera la mascara de red

cambiar una ip (interna se entiende) seria tan facil como usar el sigiente comando

# ifconfig eth0 10.0.2.16

con eso cambiaria nuestra ip de la 10.0.2.15 a la 10.0.2.16


CONFIGURACION DEL FICHERO /etc/network/interfaces

una configuracion normal seria todo automatico y cojeria todo del dhcp pero vamos a aprender a configurarlo a mano tambien, 1º vamos a ver como seria una configuracion automatica:

# The primary network interface

auto eth0

iface eth0 inet dhcp

con estas 2 lineas lo tendramos configurado (se contar...veo 3 pero la 1º es un comentario al tener el simbolo #, todo lo que este a la drecha de una almoadilla en un script sera interpretado como un comentario y no se tendra en cuenta a la hora de ejecutar el script)


ahora vamos a ver el mismo archivo de configuracion pero sin que este en automatico

iface eth0 inet static

address 192.168.242.3 # la ip

netmask 255.255.255.0 # la mascara de red

network 192.168.242.0 # la 1º ip posible

broadcast 192.168.242.255 # la ultima ip posible

gateway 192.168.242.3 # la puerta de enlace

hay que meter algunos dato mas pero tampoco mucho ni muy complicados y con esto estaria configurado todo.


* en un servidor servidor se recomienda siempre quitar los paquetes network-manager y network-manager-gnome, van a intentar configurar cosas de la red por ti y vas a tener problemas despues


ALIAS DE RED

el comando a utilizar para crar el alias seria el mismo ifconfig la sintaxis es practicamente la misma:

el comando "apropiado" es este:

ifconfig eth0:0 inet 192.168.100.2 netmask 255.255.255.0 up


pero generalmente no hace falta poner la mascara de red ni inet que se refiere a que es ipv4 pero al no ponerle nada lo asume todo y vale con este comando: (up al final si no lo pones tambien asume que quieres levantarla)


ifconfig eth0:0 10.0.2.99 up


si queremos "tirar" ese alias, vamos que si queremos quitarla el comando es el siguiente:


ifconfig eth0:0 donw  

tenemos que tener en cuenta que si la que tiramos es la "real" osea eth0 tiras tambien todos los alias que hayas creado

si tienes varias targetas de red lo que te cambiara es el numero, por ejemplo eth1, y el alias tendrias que crealo en eth1:0 eth1:1...etc


estos alias se borrarian al reiniciar el equipo, para que se queden grabados y esten siempre creadas hay que configurar el archivo interfaces que se encuentraen : /etc/network/interfaces


viernes, 26 de junio de 2009

Conexiones remotas con SSH

SSH (Secure SHell) es un programa, Bueno en realidad es un protocolo ya que programas hay varios para acceder o montar un servidor (cliente/servidor).
En muchas(la mayoria creo yo) de las distribuciones linux viene el cliente por defecto ya instalado,
El servidor es tan fácil como ejecutar el siguiente comando:
apt-get install ssh
ssh podría decirse que es como telnet, Pero la diferencia mas importante es que ssh encripta los datos, Por lo que es mucho mas seguro conectarse remotamente a una maquina por ssh que por telnet.
La sintaxis es la siguiente:

ssh usuario@nombre_de_maquina_o_ip

Ejemplos:
ssh pepe@debian.org
ssh pepe@150.223.50.189

Después de esto nos pedirá la contraseña como muestro en la imagen de abajo.


Y con eso ya estaríamos conectados a la maquina remotamente, pero...Ya esta? Solo eso permite ssh? Pues no, ssh aunque se puede usar de esa manera tan simple tiene mas funciones.
Imaginemos que solo queremos ver la ocupación de otro equipo, Solo queremos ver como están los discos pero no necesitamos entrar a el ejecutariamos:

ssh usuario@maquina comando
Ejemplo:

ssh pruebas@127.0.0.1 df -h
Te pediría la contraseña y sacaría esto:

Esa ip es tu propia maquina (localhost) siempre pero con cualquier ip funcionaria igual (y que exista el usuario y sepas la password claro)
Esto funcionaria con cualquier comando.

Otra cosa muy util es scp que permite copiar archivos o directorios de un equipo a otro con el protocolo ssh, Osea que los archivos viajan encriptados y seguros, vamos a ver la sintaxis:

scp [-r] origen destino
El -r es opcional significa recursive, Osea que copia el directorio y todos los directorios que estén dentro de el, Si solo queremos un archivo no nos hace falta el -r.
Ejemplo:
Si queremos copiar de nuestra maquina a otra remota seria
scp hhhh pruebas@127.0.0.1:/home/pruebas


Si lo que queremos es copiar un archivo de la otra maquina a nuestro equipo seria así:
scp pruebas@127.0.0.1:/home/pruebas/gggg /home/


Tambien tenemos el comando sftp que es un ftp seguro, Por que no olvidemos que ftp no encripta los datos

Asta aqui algunas cosas del cliente ssh, En otra ocasión nos meteremos a configurar el servidor ssh.

miércoles, 17 de junio de 2009

INIT Y LOS NIVELES DE EJECUCIÓN (runlevels)

1. Cierre del sistema (Apagado)

2. Modo de usuario único (Monousuario) No configura la interfaz de red o los demonios de inicio, ni permite que ingresen otro usuarios que no sean el usuario root, sin contraseña. Este nivel de ejecución permite reparar problemas, o hacer pruebas en el sistema.

3. Multiusuario Multiusuario sin soporte de red.

4. Multiusuario con soporte de red. Inicia el sistema normalmente.

5. No se usa.

6. Multiusuario gráfico (X11) Similar al nivel de ejecución 3 + display manager.

7. Reinicio. Se reinicia el sistema.

Suelen ser un standard y generalmente el sistema arranca en el runlevel 3, aunque debian lo hace por defecto en el 2.
Para cambiar el nivel de ejecucion (runlevel) basta con ejecutar init (runlevel)

Ejemplos:

init 0

Apagaria el sistema

init 6

reiniciaria el sistema

init 1

pondría el sistema en modo monousuario, solo podra estar conectado 1 usuario y solo podra ser root, suele ser usado para tareas de administración donde no puede haber mas usuarios en el sistema tocando cosas.

Podemos ver el runleven en el que nos encontramos ejecutando runlevel y nos sacara un nomero que sera el del runlevel actual, si hemos cambiado de runlevel saldran 2 numeros, el 1º es el anterior runlevel t el 2º en el que nos encontramos actualmente.

Puse arriba suelen ser un standard por que ubuntu decidio dejar de usarlo y en su lugar puso upstart del que puede que hable en otra ocasión (o puede que no).

/etc/rcX.d

En los directorios /etc/rcX.d (donde la X un numero del 0 al 6, como los runleves posibles)

En el directorio /etc/rc2.d (o el 3,4,5) se encuentran todos los servicios que queramos que se ejecuten en ese runlevel (el numero identifica a que runlevel se refiere).

En el interior del directorio habra archivos que empiezan por S o K

los que empiezan por S son los servicios que se van a ejecutar en el arranque de ese runlevel y los que empiezan por K serán los que NO se ejecutaran, les sigue un numero que indica la preferencia, en el orden que van a arrancar, Cuanto menor sea el numero, mayor sera la prioridad.

A cualquiera de ellos les cambiamos la S por una K y cambiamos de runlevel y veremos como ese servicio se para.




SERVICIOS

se deben de ejecutar los servicios con el script que tiene cada servicio en el directorio init.d ( /etc/init.d) y no llamando al servicio directamente ni matarlo con kill, cada servicio tiene un star/stop/resestart y muchos de ellos un status

el init.d no se encuentra metido en el path por lo que hay que ejecutar el script con su ruta completa

ejemplo:

/etc/init.d/ssh start