‘ Problemas Comunes ’ category archive

¿Cómo configurar DNS con Bind9? segunda parte

March 03, 10 by serumax

La verdad es que no escribiré un extenso manual sobre las zonas inversas, básicamente porque en Internet hay muchos ejemplos. Además, la resolución de nombres inversa no es algo completamente necesario para tener un DNS sencillo funcionando de manera local, como podría ser para el uso de una oficina o pequeña red doméstica donde generalmente tenemos un sólo servidor web que responde a varios dominios ficticios.

Pero si lo que quieres obtener es el nombre de una máquina localizada en la IP 200.72.85.X, necesitarás configurar la zona de resolución de nombres que puede ser llamada, por ejemplo, 85.72.200.in-addr.arpa. Es decir, la numeración IP al revés y sin el último octeto.

Lo primero será editar /etc/bind/named.conf.local y añadir:

zone “85.72.200.in-addr.arpa” {
type master;
file “db-reverse-85.72.200″;
};

Luego escribiremos la información para el dns inverso en un archivo específico llamado db-reverse-85.72.200

nano /etc/bind/db-reverse-85.72.200

y copia las siguientes líneas:

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA dominio.cl. dominio.cl. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dominio.cl.
55 IN PTR dominio.cl.
56 IN PTR sub1.dominio.cl.
57 IN PTR sub2.dominio.cl.

De forma que el último octeto de la IP (55, 56 o 57) escrito a la inversa y omitiendo el 85.72.200 que ya se especificó en “named.conf.local” corresponden a los dominios dominio.cl, sub1.dominio.cl y sub2.dominio.cl respectivamente.

Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:

$ /etc/init.d/bind9 restart
$ host 200.72.85.55
85.72.200.55.in-addr.arpa domain name pointer dominio.cl

Finalmente, una de las grande confusiones respecto de el funcionamiento de las zonas inversas tiene que ver con la cantidad de octetos que se especifican al definir la zona inversa en el named.conf.local,  pues sería válido definir zone “72.200.in-addr.arpa” o zone “200.in-addr.arpa” y en dichos casos en el archivo db-reverse-85.72.200 (da igual el nombre) variarían las últimas líneas:

En el caso 72.200.in-addr.arpa

55.85 IN PTR dominio.cl.
56 .85 IN PTR sub1.dominio.cl.
57.85 IN PTR sub2.dominio.cl.

En el caso 200.in-addr.arpa

55.85.72 IN PTR dominio.cl.
56 .85 .72 IN PTR sub1.dominio.cl.
57.85.72 IN PTR sub2.dominio.cl.

Todo dependerá del tamaño del la red.

Cómo borrar archivos .svn recursivamente

February 05, 10 by serumax

Ya había posteado algo similar a esto, pero como constantemente se necesita borrar estos archivos ya sea cuando está la versión definitiva o cuando hay algún problema y es necesario volver a hacer el checkout:

sudo find . -type d -name “.svn” -exec rm -R {} \;

Suerte ;)

Otras soluciones vía dokshor por twitter (gracias)
http://www.dokshor.com/borrar-carpetas-svn

Cómo borrar archivos de un sólo tipo y de froma recursiva

December 10, 08 by serumax

Simple, con este comando buscas (find) todos los archivos de un tipo determinado (zip, gz, jpg, gif, pdf, etc) y los borras recursivamente a lo largo del árbol de directorio, partiendo desde donde estás ubicado. Con la opción -i te pedirá confirmar ante de borrar un cierto archivo, mostrándote su nombre en la consulta.

Sin pedir confirmación

find . -type f -name “*.gz” -exec rm -f {} \;

Con confirmación

find . -type f -name “*.gz” -exec rm -i {} \;

Suerte!

Password random en php

December 06, 08 by serumax

Hace un par de años tuve que comenzar a generar claves aleatorias para algunos sistemas de registro de usuarios seguros y captchas en los que he trabajado. He utilizado varias fórmulas, pero hasta ahora la que considero más acabada y elegante es esta:

$claves = array_flip(array_merge(range(’a’,’z’),range(’A’,’Z’),range(0,9)));
$password = implode(“”,array_rand($claves, 6));

No necesita mucha explicación, pero lo que hace es generar tres arrays, uno de la “a” a la “z” en minúscula, otro en mayúscula y el tercero, del “0″ al “9″.  Luego unimos los arrays en uno gracias a array_merge, y con array_flip intercambiamos “keys” por “values“. En la segunda línea generamos un nuevo array compuesto por 6 “keys” aleatorias y, finalmente, obtenemos nuestra password random con el implode que nos devuelve un string de 6 dígitos.

Referencia
Generador de Password Aleatorios

Problemas comunes III: respaldos a distancia con rsync

November 30, 08 by serumax

Aunque existen numerosas herramientas de Escritorio para respaldar y sincronizar archivos en distintas máquinas, ninguno me ha gustado funcionado correctamente. Por lo mismo, prefiero usar el terminal y rsync. Una forma fácil de entender y comenzar con este comando es la siguiente:

serumax@bunbury:~$ comando -opciones /carpeta-o-archivo/origen /carpeta-o-archivo/destino

Es importante destacar que cuando se trata de carpetas  las rutas de origen y destino no se comportan de igual forma si se usa o no un salsh (/) final. De esta forma, si el ejemplo anterior fuese real, tendríamos como resultado la carpeta “destino” ahora contiene una llamada “origen”

Veamos entonces algo más concreto. Pongamos por caso que necesitamos respaldar todos los archivos de la carpeta /var/www/sitio1 en una carpeta de igual nombre pero en otra máquina. Para esto tenemos dos opciones:

Opción 1
rsync -avz /var/www/sitio1 usuario@192.168.0.1:/var/www

Opción 2
rsync -avz /var/www/sitio1/ usuario@192.168.0.1:/var/www/sitio1/

Como pueden observar, para indicar donde respaldaremos los archivos debemos escribir el usuario y la ip de la máquina de destino usuario@192.168.0.1, seguido de los “:” y de la ruta /var/www/sitio1/, esto nos permitirá autenticarnos en la máquina remota tal como lo hacemos con ssh. Para conocer el resto de las opciones de rsync podemos recurrir a man rsync, no obstante, en el ejemplo hemos usado -avc, que significa que respaldaremos la carpeta de froma recursiva en mdo verboso (con salida por pantalla) y con compresión.

Finalmente, para evitar que nos pregunte la password -por ejemplo para programar un crontab- podemas crear un certificado DSA.

Post relacionados

¿Cómo configurar DNS con Bind9? Primera parte

November 17, 08 by serumax

Con este post había pensado continuar mi serie de post de “Problemas comunes“, pero ciertamente siendo este un problema común entre administradores de redes, debo confesar tal como sucede con el tema de las particiones de Discos Duros, la configuración de un servidor DNS necesita un poco más de conocimientos, experiencia y  -oops!- cabeza.

¿Qué necesitamos?

  • Un servidor con Linux (para este caso usaremos Ubuntu)
  • Bind 9
  • Un poco de experiencia con el terminal y opcionalmente con Midnight Commander
  • Un editor de texto plano (vim, nano, gedit, kate, o el de MC)
  • Privilegios de root o sudo

Como este tutorial es sobre DNS no me extenderé en detalles anexos, es decir, si usas Fedora o Centos, o prefieres Nano en vez de Vim notarás ciertas diferencias que supongo dominarás bien!

Lo primero es lo primero, instalar Bind9:

serumax@bunbury:~$ sudo apt-get install bind9
[sudo] password for serumax:

Acto seguido editamos el archivo named.conf.local

//o nano o gedit
sudo vim /etc/bind/named.conf.local

y agregamos una nueva zona:

zone “dominio.cl”{
type master;
file “/etc/bind/db.dominio.cl;
};

Read the rest of this entry »

Claves DSA para conectarse por ssh sin contraseña

November 11, 08 by serumax

Terminal terminator ubuntu linux

Cada vez administro más servidores Linux (ayer se sumaron dos más ubicados en Chicago), por lo que suelo conectarme todo el tiempo por SSH y, obvio, tengo teclear las contraseñas cada vez me conecto a una máquina, algo que realmente se ha vuelto tedioso. Por suerte se puede configurar SSH para que utilice certificados o claves DSA, de tal forma podremos autenticarnos automáticamente en el servidor.

Entonces generaremos las claves DSA usando el protocolo 2, que es el protocolo utilizado y recomendado hoy por hoy. Una de las claves generadas será la “clave privada” que quedará guardada en nuestra máquina y opcionalmente podrá ser protegida con una contraseña.  La otra será la “clave pública” que es la que transferiremos al servidor remoto.

Para generar estas claves utilizamos el comando ssh-keygen:

traveler@talita:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/traveler/.ssh/id_dsa):
Created directory ‘/home/traveler/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/traveler/.ssh/id_dsa.
Your public key has been saved in /home/traveler/.ssh/id_dsa.pub.
The key fingerprint is:
b4:23:82:5a:19:5b:6f:f3:78:31:fb:f8:45:0b:ed:8f traveler@talita

En la pregunta “Enter file in which to save the key…” hagan enter para que tome el valor predeterminado, lo mismo pueden hacer cuando se les pregunte por la contraseña si no quieren proteger la clave privada con una password.
Read the rest of this entry »

Problemas comunes II: Cambiar permisos de archivos

October 10, 08 by serumax

El sistema de permisos en linux aparentemente es complejo, sobre todo porque hay al menos dos notaciones: simbólica y octal.

Pero lo cierto es que que con un par líneas de comandos es suficiente para comenzar a entender.

//Darle permisos de escritura, lectura y ejecución a un archivo
$sudo chmod 777 archivo.txt

//Darle permisos de escritura, lectura y ejecución a todos los archivos de una carpeta
$sudo chmod -R 777 /home/serumax/public

//hacer un archivo ejecutable
$sudo chmod +x scriptshell.sh

Pero si necesitas más, como con cualquier comando de linux o unix, tienes una ayuda a mano invocando el comando seguido con el parámetro -help:

//También pudes invocar man chmod para algo más completo
$chmod –help

Referencias:

Problemas comunes I: Max File Uploads en PHP

October 02, 08 by serumax

Como programador y administrador de servidores muchas veces me encuentro con problemas simples que, por diversas razones, se repiten cada cierto tiempo. Algunas veces son tareas que fueron realizadas en  proyectos antiguos que nadie recuerda o conoce; otras, en cambio, se pierden en la trivialidad de lo cotidiano y, por lo tanto, no están debidamente documentadas para que el resto de las personas con las que trabajo puedan resolverlas por su cuenta.

La idea entonces es crear y compartir algo así como un repositorio de soluciones rápidas a estos problemas comunes. Por tanto, si se animan, espero que en los comentarios pregunten lo que sea pertinente al tema expuesto o propongan nuevos problemas.

Problema: aumentar tamaño máximo para subir archivos con PHP

Estamos trabajando con un gestor de contenidos como Wordpres o Drupal y necesitamos subir mediante un formulario archivos PDF, PNG o DOC que pesan sobre 2 MB, pero resulta que no se puede y nos sale un mensaje de error.

El problema no es del gestor de contenidos. La configuración por defecto de PHP en un servidor Linux permite copiar o subir archivos desde la máquina local al servidor que tengan un tamaño máximo de 2MB. Aunque no es recomendable aumentar esta cuota en entornos poco protegidos o públicos es posible hacerlo de la siguiente forma:

serumax@bunbury:~$  sudo nano /etc/php5/apache2/php.ini
[sudo] password for serumax:

Ingresamos la clave sudo de nuestra máquina y con CTRL+W procedemos a buscar “upload_max_filesize“:

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Nos fijamos que el parámetro file_uploads esté en On y donde dice upload_max_filesize = 2M reemplazamos por el tamaño que necesitamos, pero ojo con el tiempo de ejecución de los script en PHP, que por defecto es de 30 segundos (se archiva un nuevo draft) y si subimos un archivo muy grande esto puede verse afectado.

Por ejemplo, podemos aumentarlo a 5 Megas:

; Maximum allowed size for uploaded files.
upload_max_filesize = 5M

Guardamos con CTRL+O y salimos con CTRL+X.  Con esto ya hemos hecho lo más díficil. Ahora sólo nos resta volver a iniciar Apache, sí Apache, para  que los cambios tengan efecto. Esto porque PHP generalmente corre como módulo de Apache

serumax@bunbury:~$sudo /etc/init.d/apache2 restart
[sudo] password for serumax:

o mejor solo recargamos la nueva configuración

serumax@bunbury:~$sudo /etc/init.d/apache2 reload
[sudo] password for serumax:

Como comentario final, este ejemplo lo hice pensando en un servidor Linux  Ubuntu 8.04, con Apache2 y PHP5. Espero que sea de utilidad :)

Cómo particionar y formatear discos en Ubuntu/Linux

September 27, 07 by serumax

Hace más de un año escribí un how-to en dos partes (parte I y parte II) sobre este tema, debido a su popularidad y a que no está actualizado he decidido hacer uno nuevo:

Esta vez usaremos la herramienta qtParted, el Partition Magic de Linux. Si no lo tienes instalado, podemos hacerlo fácilmente con Synaptic o apt-get.

Instalando QTParted

Entonces lo buscamos en Sistema, si estamos en KDE, y lo iniciamos (pedirá clave, pues debe ser usado como administrador). Read the rest of this entry »