Refosco Ingeniería Informática

Refosco Ingeniería Informática
Rivadavia 877 CP 3306 Oberá Mnes. Te 03755 406060

jueves, 8 de octubre de 2009

Como eliminar las líneas de un archivo que comienzan con...

Estube instalando el squid y el squid.conf tiene una rebolera de líneas que no las usaba...eso me perdía un poco dentro del archivo así que investigué como elminar de este archivo las líneas comentadas que empierzan con #.
El Comando grep sirve para mostar las líneas de un archivo que concuerdan con un patron.
grep, egrep, fgrep, rgrep - print lines matching a pattern
Para este comando la opción -v dice:
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)
Así que con -v puedo invertir la seleccion y decir las líneas que no comiencen con el patron #.
La opción -e permite extresar el parton a buscar.
Entonce quedaría:
grep -v -e# squid.conf > squid.conf.sincomentarios
Finalmente en squid.conf.sincomentarios tendríamos las líneas de squid.conf que NO empiezan con #.
Espero que sea de ayuda.

lunes, 5 de octubre de 2009

Sobre las claves PGP de los repositorios Debian

Este archivo fué obtenido de:

http://www.esdebian.org/wiki/llaves-repositorios-secure-apt

Me parece muy explicativo

Índice

1. Introducción
2. Como funciona
3. Como APT utiliza Release.gpg
4. Como añadir una llave pública
5. Caso: Repositorios oficiales de Debian
6. Referencias y más información

Introducción

A partir de la versión 0.6, apt comenzó a usar criptografía para validar los paquetes descargados, a esto se le llama comúnmente “Secure Apt” (o “apt-secure”).

La criptografía de llave (o clave) pública se basa en el par de llaves: una llave pública y una privada. Si bien la llave pública se da a todo el mundo, la llave privada debe permanecer en secreto, así es posible usar una llave privada para firmar un archivo (no para encriptarlo) y cualquiera que tenga la llave pública puede comprobar que el archivo fue firmado por esa llave, esto nos asegura que nadie que no tenga esa llave puede falsificar la firma.

GPG (GNU Privacy Guard) es la herramienta que se utiliza en Secure-Apt para firmar los ficheros y comprobar sus firmas. GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves.

Apt-key es un programa que se usa para gestionar el anillo de llaves de gpg para asegurar Apt. El anillo de llaves se guarda en el archivo /etc/apt/trusted.gpg (no confundir con el archivo /etc/apt/trustdb.gpg con el que está relacionado). Apt-key puede ser usado para mostrar las llaves en el anillo de llaves, y para añadir o remover una llave.

Así si un paquete viene de un archivo sin firma o con una firma de la que apt no tiene una clave, se considerará como no confiable y se nos mostrará la correspondiente advertencia, es decir, apt-get (actualmente) sólo nos advierte de los archivos sin firmar pero no impide su descarga y posterior instalación. Sin embargo para los paquetes que vienen firmados, APT utiliza este sistema de criptografía GPG para validar los .deb descargados y asegurarse de que no han sido alterados en modo alguno.

2. Como funcionan

1. Un archivo de Debian contiene un archivo llamado Release, el cual se actualiza cada vez que cualquiera de los paquetes en el archivo cambian. Entre otras cosas, el fichero Release contiene algunos md5sums por cada paquete listado en él.

2. Al realizar un update, APT descarga los archivos Packages.gz, Release y Release.gpg.

3. Al descargar un paquete .deb, APT comprueba que su md5sum coincide con la que figura en Packages.

4. APT se asegura la no alteración del archivo Packages comprobándo que su md5sum coincide con el que figura en el archivo Release.

5. Ahora para asegurarse de que el archivo Release no ha sido alterado, APT comprueba su firma a través del archivo Release.pgp, es decir Secure-Apt añade una firma gpg para el fichero Release en el fichero Release.gpg (que se envía junto al fichero Release) y para poder realizar esta comprobación APT necesita conocer la llave pública del que firma el archivo.

3. Como APT utiliza Release.gpg

Secure Apt siempre descarga los ficheros Release.gpg cuando está descargando los ficheros Release, y si no puede descargar el archivo Release.gpg, o si la firma está mal, lo advertirá, y nos dirá que el fichero Packages al cual apunta el fichero Release, y todos los paquetes enumerados dentro, son de una fuente sin autentificar. Por este motivo, durante un apt-get update, apararece el famoso:

W: GPG error: http://ftp.us.debian.org testing Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 010908312D230C5F

Como ya hemos mencionado, podemos ignorar ese aviso e intentar instalar un paquete, al hacerlo Apt nos advertirá de nuevo:

WARNING: The following packages cannot be authenticated!
libglib-perl libgtk2-perl
Install these packages without verification [y/N]?

Como vemos APT nos permite aceptar la instalación de paquetes sin verificar, pero el problema (peligro) es que no podríamos saber si ese paquete es el paquete que realmente queremos instalar, o si es otro distinto al que queremos y lleva dentro una desagradable sorpresa.

NOTA: podemos deshabilitar esas comprobaciones ejecutando apt con –allow-unauthenticated.

Como vemos la seguridad del sistema entero depende de que haya un fichero Release.gpg, el cual firma un fichero Release, y de APT comprobando que esa firma use gpg. Para comprobar la firma, APT debe conocer la llave pública de la persona que firmó el fichero. Esas llaves se mantienen en el anillo de llaves de APT (/etc/apt/trusted.gpg), y administrando esas llaves es donde aparece Secure Apt.

Por defecto, los sistemas Debian vienen preconfigurados con la llave del archivo Debian en el anillo de llaves, así a modo de ejemplo podemos ver que llaves públicas tenemos haciendo:

# apt-key list

obtenemos

/etc/apt/trusted.gpg
--------------------
pub 1024D/6070D3A1 2006-11-20 [expires: 2009-07-01]
uid Debian Archive Automatic Signing Key (4.0/etch)

Aquí 6070D3A1 es la identificación de la llave pública, y podemos ver que esta llave sólo es válida por tiempo, Debian rota estas llaves como última línea de defensa contra algunas brechas de seguridad que rompen una llave. Con ello APT consigue certificar el archivo oficial de Debian.

Si se añade algún otro repositorio al archivo /etc/apt/sources.list, tendremos que darle a APT su llave, es decir, deberemos añadir su llave pública al anillo de llaves para que APT pueda certificar su contenido.

4. Como añadir una llave pública

El proceso se divide en dos etapas:

1. Obtener la llave pública
2. Exportar esa llave y añadirla

Pongamos un ejemplo:

Si añadimos el repositorio de debian-multimedia a nuestro archivo /etc/apt/sources.list:

deb http://www.debian-multimedia.org stable main

En principio no tenemos su llave pública, por tanto al actualizar el índice de paquetes de nuestros repositorios:

# aptitude update

Se nos mostrará la siguiente advertencia:

W: GPG error: http://www.debian-multimedia.org stable main Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907

Debemos fijarnos en el número que nos muestra: 07DC563D1F41B907

GPG tiene una forma estándar de distribuir llaves, utiliza servidores de llaves y desde uno de ellos gpg puede descargarse la llave pública, para elo ejecutamos:

# gpg --keyserver subkeys.pgp.net --recv-keys 07DC563D1F41B907

Una vez obtenida, sólo nos falta exportarla y añadirla:

# gpg --export --armor 07DC563D1F41B907 | apt-key add -

Y finalizamos el proceso con un:

# apt-get update

NOTA: en el caso concreto de debian-multimedia, el procedimiento se puede simplificar instalando el paquete debian-multimedia-keyring

5. Caso: Repositorios oficiales de Debian

Disponemos de los paquetes:

debian-keyring, contiene las firmas de los desarrolladores de Debian, que es utilizada para verificar cada paquete.

debian-archive-keyring, el proyecto Debian firma digitalmente sus archivos «Release». Este paquete contiene las claves que se utilizan para ello.

6. Referencias y más información

Secure Apt:
- http://wiki.debian.org/SecureApt (inglés)
- http://www.esdebian.org/articulos/23869/secure-apt (traducción al español)
man apt-secure
man apt-key
man gpg

lunes, 21 de septiembre de 2009

Como quitar servicios en el Arranque de Debian

Estaba mirando y me dí cuenta que durante el arranque de mi Debian se detenía en MTA..recuerdo que al instalar no incluí todo lo relativo a servidor de Correo, pero parece que algo queda.. googleando vi que hay un exim4_listener que es el responsable de que se "estacione" durante algunos segundos del arranque el Debian. Entonces me puse a buscar como eliminar los servicios indeseados que se levantan durante el arranque.
Recordemos que update-rc.d - crea y borra los enlaces a los scripts init de tipo System V.
Primero debemos buscar a que corresponde el servicio, una vez identificado procedemos a detener el mismo, para mi caso sería:
/etc/init.d/exim4 stop
Vemos que en la consola aprece:
Stopping MTA: exim4_listener.
Una vez detenido el servicio procedemos a eliminarlo de la lista de servicios que arrancan.
update-rc.d -f exim4 remove
Removing any system startup links for /etc/init.d/exim4 ...
/etc/rc0.d/K20exim4
/etc/rc1.d/K20exim4
/etc/rc2.d/S20exim4
/etc/rc3.d/S20exim4
/etc/rc4.d/S20exim4
/etc/rc5.d/S20exim4
/etc/rc6.d/K20exim4

El update-rc.d crea y borra los enlaces a los scripts init de tipo System V,
los argumentos:
-n No hacer nada, solamente indicar que hubiera hecho.
-f Borrar los enlaces incluso si todavÃa existe el scrip /etc/init.d/nombre.

Menciono algunos de los servicios que PODRIAN resultar inecesarios:
portmap, cups, lpd, nfs-common, pcmcia, ppp, bittorrent, ntpdate.
De igual manera para crear un enlace a los scripts de incio se debería hacer por ejemplo para incluir el script de no-ip.sh que actualiza en los DNS de no-ip la ip sería:
update-rc.d noip.sh defaults 90
Donde 90 sería un nro que no existe dentro del los rc* , y se ejecutará luego del 89 y antes del 91.

Espero que sea de ayuda.

jueves, 16 de julio de 2009

Proxy Cache Squid con Debian y Shorewall

Hola.. como le pormetí a Eduardo C. voy a hacer un detalle de lo que hice como para que sirva de guia a el y por que no a cualquier otro ( incluso yo.. ya que el Aleman anda cerca ).

Obetivo:

Conectar una red Lan Privada a Internet buscando acelerar la navegación con un Web Proxy y controlar los accesos a Contenidos, Ancho de Banda de Descargas P2P y otras, de manera de logra un uso moderado que asegure el usufructo de todos.
Para este Proyecto dispongo de:
Dispongo de una PC , PIV con 512MB de Ram , Disco 80GB, dos placas de Red.

Primero instalé Debian 5.0 ( Lenny ) con la Instalación Básica ( lo mas pelado posible , existen en internet varios instructivos de como lograrlo).

eth0 conetada al modem en modo Bridge ( ppp
eth1 Red local 192.168.0.7 (Red de Local)

Durante la instalacion configure la eth0 , como interfaz primaria , esta es la que se conecta a internet.
Luego de Instalar el Debian , lo primero que hice , fué configurar el equipo para poder conectarme a internet via eth1/Modem ADSL y así poder seguir bajando lo que necesite.
Para ello hice :
apt-get install ppoe , ppoe-common,
Ejecutando desde la consola pppoeconf , debería haber encontrado que en la eth0 estaba un modem pero en mi caso no fué así , por lo que ejecuté directamente:
pppoeconf eth
Con este argumento si andubo , le escribí nombre de usuario y passwd para la conexión ADSL y chice quedó funcionando. Al terminar me tira uno comandos que se pueden usar para controlar el pppoe como ser:
pon
poff
postat
plog
En este punto al ejecutar ifconfig ya debería aparecer ppp0, indicandome que esta establecida una conexión via el modem.-
Bueno lo siguiente es hacer que la ruta por defecto de esta máquina no sea el GW o puerta de enlace de la red ( para mi caso 192.168.0.1) si no que salga por eth0 o mejor dicho ppp0, verificamos cual es el GW desde una consola tipeando:
route
Para ello tipeando iflow y editando etc/network/interfaces, comentamos la línea que contiene el GW y luego levantamos el servicio con ifup
Luego nos queda indicar el camino por defecto para esta maquina:
route add default gw ppp0
Para verficar que el GW ahora es ppp0 tipeamos nuevamente
route
y debería aparece esto que la ruta por defecto es ppp0.
Instalamos el lynx que es un navegador no gráfico. Corre desde una terminal.
apt-get install lynx
Ya podemos probar si nuestro equipo navega.

Desinstalar el exim4_listener
/etc/init.d/exim4 stop
Vemos que en la consola aprece:
Stopping MTA: exim4_listener.
Una vez detenido el servicio procedemos a eliminarlo de la lista de servicios que arrancan.
update-rc.d -f exim4 remove
Luego instalo el ssh:
apt-get install ssh
habilitar en /etc/ssh/sshd_config el puerto por el que queremos que se acceda a ssh.

Instalar Squid
apt-get install squid
Encontré que se debe habilitar para el squid una parámetro x_forward_for esto es para permitir identificar en el tráfico la IP de cada equipo que sale por el proxy de manera que podamos tomar alguna acción como ser graficar el consumo de AB por IP , pero como en el Debian el paquete esta precompilado y esta opción la tiene por defecto mejor...
Para ver las opciones de compilacion del squid basta con tipear:
squid -v
Luego recorrí muchos sitios como para encontrar que debería modificar del /etc/squid/squid.conf y en definitiva lo mínimo que hice como para dejar funcionando el proxy, y descomenté algunas líneas y las edité para que se adecúen a mi red y requerimientos, para esta maquina fueron:

http_port 8080
acl localnet src 192.168.0.0/21
client_netmask 255.255.248.0
acl patronesdenegados url_regex src "/etc/squid/patronesdenegados"
http_access deny patronesdenegados
http_access allow localnet
error_directory /usr/share/squid/errors/Spanish

Dentro de /etc/squid edité un archivo de texto llamado patronesdenegados donde incluyo las palabras que quiero que filtre y niegue el squid como ser sexo, porno.

Recomiendo siempre hacer un backup antes de meter mano.
En este punto ya tenía levantado y funcionado lo básico. Quedaba por delante agregar reglas al squid como para tener el control deseado de contenido y descargas.
Instalar Shorewall
Luego para poder trabajar con IPTables instalé el shorewall, es un script que permite escribir reglas de iptables de una manera mas sencilla,
apt-get install shorewall ( lo descargó del DVD de Debian)
En la parte de /usr/share/docs/shorewall hay ejemplos de configuración basíca para dos interfaces. copié estos archivos a /etc/shorewall y solo modifique algunos archivos.

Modificar en el /etc/shorewall.con dos cositas:
STARTUP_ENABLE=Yes
IP_FORWARDING=Yes

Configurar zone, policity, masq y rules mirando los ejemplos-

Alguna modificaciones mias fueron:
A rules antes del final del archivo le agregué:
ACCEPT loc fw tcp 8080

Para que acepte lo que venga por la red local desde el port 8080 que es donde atiende el proxy.
y al archivo masq

ppp0 eth1


Para que traslade las direcciones de la interfaz privada ( eth1) a la publica ( eth0/pppd0)
El archivo interfaces quedó de la siguiente manera:
net ppp0
loc eth1 detect
Con esto ya tenía cargadas las reglas para que el shorewall me generara las reglas de iptables.
Para arrancar el shorewall tenemos los comandos:
shorewall start
shorewall stop
shorewall restart

Para el squid los comandos serían:
/etc/init.d/squid stop
/etc/init.d/squid start
/etc/init.d/squid restart
y los archivos para ver que esta sucediendo con el squid
var/log/squid/access.log
var/log/squid/cache.log
En estos archivos podemos ver las peticiones que llegan al squid(access.log) y los sitios que van quedando cacheados.

Bueno este creo que el artículo ya esta terminado , y lo pongo a disposición de Uds. Espero que sea de ayuda.-

sábado, 20 de junio de 2009

Conceptos de Linux en Video

Este video me pareció interesante compartilo con Uds. espero que sea de su agrado, creo que expresa de manera sencilla muchas cosa sobre nuestro querido Sistema Operativo

http://www.youtube.com/watch?v=F5WLEu4UIds

Navegar offline

Estaba necesitando bajar un sitio a mi notebook para poder, estudiar el contenido en otro momento, entonces empecé a buscar navegadores o browsers off -line, los primeros que encotré porsupuesto fueron los pagos..y luego los otros ...pero, mi busqueda paró cuando encontré que con el famoso wget podría solucionar el problema.
Paso a detallar la sintaxis.
wget --mirror -p  --html-extension --convert-links -v http://www.sitio.com.ar
mirror: hace recursiva la descarga desde el link pasado.
p: page reuisites, baja los elemantos para que las paguinas se vean tal cual, imagenes, sonidos, etc.
html-extension : convierte los url a html, por ejemplo aquellos que son .php o .asp
convert-links : luego de descargar busca y reemplaza los links de las paginas bajadas a links referenciados localmente, si la ref de una imagen era, http://www.sitio.com.ar/img.gif hace que este link de la pagina quede referenciado a ./img.gif ( posición relativa)
Otra opción que encotré es
-- restricte-file-name = xxxxx donde xxxxx puede ser unix o windows
Esto es para que las secuencias de escape puedan ser convertidas al set de unix o windows, espero que se de ayuda.






martes, 31 de marzo de 2009

Como trasladar o duplicar una maquina virtual

Hace algunos días publique los comandos de VirtualBox, la idea de este escrito es indicar como procedí para trasladar una Maquina Virutal de un host a otro.
Primero utilizando el VBoxManage con la opción clone creo otra maquina virtual clon de la que quiero trasladar de la maquina A a la B. Entonces desde consola:
de la maquina A escribimios:

VBoxManage clonehd /home/daniel/.VirtualBox/HardDisks/Win2K3.vdi Win2k3x.vdi

Win2K3x.vdi ( la imagen de la maquina virtual clonada) ,trasladamos este archivo a la maquina B y desde esta accedemos a la Interface gráfica de VirtualBox, vamos a Virtual Media Manager, elegimos la opción Agregar (Archivo de imagen de disco Rígido) y apuntamos a la maquiana clonada que para nuestro caso es :Win2K3x.vdi ( será seguramente grande 1 o ma GB dependiendo del tamaño que le dimos al crear el disco para la maquina original).
Luego creamos una nueva maquina y al momento de elegir Disco Duro Virtual elegimos ; Existente y apuntamos al creamos (win2K3x.vdi) con esto estaría duplicada la maquiana.
Espero que sea de ayuda.

sábado, 28 de marzo de 2009

Distribución Liviana de Linux

Hace unos días tube la tarea solicitada por un cliente de instalar un Linux en una máquina chica, buscando en internet encontré varias... pero aca empieza lo interesante todas las distribuciones livianas requieren al menos 128MB de Ram, en mi caso el equipo disponía de 64MB.

Con esta limitación solo quedaban dos distribuciones que según los requerimientos mínimos podían andar : Vector Linux y Elive. La primera la conocía pero la segunda Elive no la había escuchado nunca, por lo que me dirigí al Sitio: http://www.elivecd.org para bajarla.

Con sorpresa noté que no se podía bajar la distribución sin hacer una "contribución", la mínima contribución era de 5 Euros, si bien esto no es mucho, como mezquino el uso de la tarjeta en internet y mas bien quería conocer la distribución me bajé la versión unstable que si se puede bajar sin hacer contribucione$.

Lo primero que me llamó la atención y me gustó es que es ditribución basada en Debian así que para probar instalé la misma en una maquina virtual de VirtualBox de mi Ubuntu 8.10.

Le asigné 4GB al disco virtual de la maquina y arranque desde el CD la maquina Virtual y la instalé sin inconvenientes.
En el primer arranque luego de instaldo me gustó la pantalla de login, con animaciones muy sobrias, aprece fecha/hora, un boton de apagado para no errarle.
Luego de logearme , el escritorio... me hizo acordar al Gos, creo que por el administador de ventanas que posee el :enlightenment el mismo es muy llamativo y liviano. Tiene efectos en los menúes y en la parte inferior tiene unos accesos directos a algunas aplicaciones de forma animada , llamado Elpanel (Elive Panel). Las opciones de configuración del escritorio son muchas...es para estar un rato..largo probando.
Demoré un poco en avivarme que haciendo click con el boton izquierdo del mouse el cualquier parte del escritorio se accede a un menú desde donde se puede apagar el sistema.
Como dependía de Debian probé el Synaptic.. andubo de una. Aplicaciones Ofimaticas bien.. lo mínimo Abiword y Gnumeric.En la parte de internet amsn, skype, firefox, client bittorrent,entre algunos mas. Para la patre de Video y Gráficos bien, con lo necesario como para empezar.

Conclusión. Me gustó mucho, el hecho que esté basado en debian y que sea liviano me parece una caracterísitca importante para tenerla en cuenta. Me faltaría probar en una maquina con 64 MB como para ver si levanta como dicen los requerimientos mínimos.

viernes, 13 de marzo de 2009

Virtual Box desde la línea de Comandos

Encontré en el Sitio http://pi.lastr.us una guia interesante sobre VirtualBox para ser ejecutados desde la línea de comandos.
Hago un paste del contenido:

No he encontrado un documento donde estén reseñados los comandos de línea más interesantes de VirtualBox, por eso escribo aquí mi breve resúmen.
Administración de máquinas virtuales
Máquinas disponibles

VBoxManage list vms | grep Name

Prender y apagar máquina

VBoxSDL -vm MaquinaVirtual

Apagar la máquina desde línea de comando equivale a apagarla desde el botón de power en un hardware real (puede ser peligroso para los datos)

VBoxManage controlvm MaquinaVirtual poweroff

Duplicar máquina

VBoxManage clonevdi MaquinaVirtual.vdi NuevaMaquina.vdi

También es posible mediante:

cp MaquinaVirtual.vdi NuevaMaquina.vdi
VBoxManage internalcommands setvdiuuid NuevaMaquina.vdi

Redes
Forwardiar puertos hacia la maquina virtual

# Puerto 2222 para ssh
VBoxManage setextradata "MaquinaVirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata "MaquinaVirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata "MaquinaVirtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP

Esta información queda guardada en Machines/MaquinaVirtual/MaquinaVirtual.xml así que se corre una sola vez.

Para que la maquina virtual la pueda levantar un usuario comun, el puerto HostPort debe ser alto.

Hasta aqui lo sacado del Sitio... algo que me sirvió es pasar la máquina que se arranca desde la consola a background, esto sería:

VBoxSDL -vm MaquinaVirtual &

Esto liberará el prompt de la terminal.. pero si cerramos la terminal el proceso hijo ( VirtualBox) morirá con la terminal y se cerrará.
Para solucionar esto ultimo podemos usar:
nohup VBoxSDL -vm MaquinaVirtual &

Este comando ( nohup) permite al igual que '&' mandar el proceso y background y que este quede inmune a los hangups (de ahí su nombre nohup) que es cuando se cuelga o termina la terminal o consola de la cual se ejecutó el proceso.Espero que sea de ayuda.

martes, 3 de marzo de 2009

Cambio de Fecha y Horas desde consola


Para cambiar la fecha desde la consola ->
date -d mm/dd/aaPara cambiar la hora desde la consola -> date -s hh:mm:ss