miércoles, 27 de junio de 2012

chrony

El tiempo es muy importante. En las computadoras lo es más aun. Por ejemplo, 3 satélites que hacen una triangulación (GPS) deben tener una presición bestial, ya que un segundo de diferencia entre uno y otro, sería el equivalente a posicionar mal un objeto en la tierra. Cada segundo de diferencia allá arriba, daría un metro de diferencia a una persona caminando en la tierra cuando se intente de ubicar. Los yumas quieren que sus misiles caigan justo donde lo manden, no un metro más al lado. Por eso usan relojes atómicos y un sofisticado sistema de sincronización.

PERO! eso es en lo celajes; que poco me importan porque no los administro yo. Poniendo los pies en la tierra:

Muchos de mis camaradas me preguntan: Para que un servidor de tiempo?

Imaginense un servidor de correo con la hora mal puesta... ALABAO! que crisis, no quiero ni pensarlo. Por ejemplo, buscamos en los logs un evento que sucedió ayer a las 10 de la mañana, pero para nuestro servidor a esa hora eran las 3 de la tarde y el grep no sirve de mucho. También tenemos las pentium dos del año del 3 cuya batería del CMOS hace años dejo de almacenar la hora. También está en la LAN el típico usuario de window que no para de decir "la hora de mi máquina está mal puesta"

Aveces el canal está a todo lo que da y No nos da el ancho de banda, entonces NTPd dice que es demasiado drift y NO sincroniza. También supongamos que tenemos una red local y no queremos fajarnos con eso de los stratum 0 al 9. Pues chrony es la solución.

En debian:

aptitude install chrony

Por defecto, sincronizara con los NTP de debian. Si no tiene acceso a los mismos, puede usar el que desee. Especifíquelo en el fichero:

/etc/chrony/chrony.conf

Localizando la linea:

server

Puede poner cuantas lineas "server" quiera.

server 0.unstratum.org
server 0.otrostratum.org
server 192.168.1.4
server 0.debian.pool.ntp.org

Cuanto más tenga más presición tendrán los nanosegundos, pero bueno, les recuerdo que No administro satélites.

lunes, 25 de junio de 2012

abajo el Caps_Lock

Si hay una tecla que sobra es el el bloque capital, no la tecla de windows. Aún no logro ver donde esta la famosa tecla "any" que dice windows que apretemos cuando falla pero supongo que tampoco falte. En cambio, el Tabuladorsufer exceso de carga.

Poir fin, he conseguido resolver ambos problemas.Convirtiendo el Caps_Lock en un Tabulador con este simple par de comandos.



xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Tab"

miércoles, 13 de junio de 2012

extenciones de chrome en Cuba

Desde que surgió chorme me ha llamado la atención, pero los yankis nos han cerrado las puertas.

Recientemente google no nos deja descargar cosas de google-code, para colmo bajarse extensiones de chrome tambien da 403 y el robosito desarmado. Siempre estamos pidiendo alguna amigo del exterior que nos descargue algoq ue los yankis nos bloquean.

Pero siempre es posible tirarse de culo en el pajal e incarse con la aguja, resulta que si componemos la URL asi:

https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D[IDE_DEL_APP_AQUI]%26uc

Note la parte claramente destacada en rojo. Ahi situaremos el ID de la extencion, una vez parado en la extensión deseada, la url seria:

 https://chrome.google.com/webstore/detail/oiigbmnaadbkfbmpbfijlflahbdhdgdf

Tomamos la parte señalado en negrita y la URL final quedaría así:


https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Doiigbmnaadbkfbmpbfijlflahbdhdgdf%26uc



Esa URL se la damos a nuestro amable colega en el exterior y el decimos que la abra con algo que no sea chrome, con firefox por ejemplo o con el gran wget.

Simple verdad? Gracias el camarada Janne Kaikkonen, los finlandeses siempre con la lumbrera encendida. Kiitos apuasi Janen.

redirector de squid

dRealmente squid es un caballo pero en temas de redirección no se lleva todos los puntos pero por suerte un tipo inteligente inventó un redictor para squid. Ademas de eso, squid por diseño ya había dejado una ventana abierto para esto.
El software se llama squirm y lo descargaremos aquí:

http://squirm.foote.com.au/squirm-1.26.tgz

Compilarlo es todo un poema. Tras desempaquetarlo, nos posicionamos en su carpeta y ejecutamos:

 cd regex
./configure
make clean
make
cp -p regex.o regex.h ..

Con eso ya tenemos regex listo, ahora vamos a compilar squirm como tal:

make
make install

Ahora viene el redirector en el fichero /etc/squid/squid.conf y deba tener claro que la ruta en redirect_program debe ser la ruta donde esta el squirm.

redirect_program /usr/local/squirm/bin/squirm
redirect_children 10

Ahora viene la configuración. Por defecto ira en /usr/local/squirm/etc/ copiamos los ficheros de ejemplo

cp squirm.local.dist /usr/local/squirm/etc/squirm.local
cp squirm.patterns.dist /usr/local/squirm/etc/squirm.patterns

En el fichero squirm.patterns le ponemos expresiones regulares que matcheen las URL que queremos redireccionar: por ejemplo:

regexi ^http://www\.xxx\.com/.* http://www/notallowed.html

Así cuando el usuario valla a www.xxx.com se redireccionará a notallowed.html. Más ejemplos de ese fichero pueden verlo aquí y del otro fichero aquí. 

jueves, 31 de mayo de 2012

proxy inverso con nginx

En Cuba se ha puesto de moda el asunto este de el proxy inverso. Generalmente los hacen con squid y yo para no quedarme cheo decidí implementar uno. Los resultados fueron nefastos en cuanto a seguridad. Eso de tener un servidor proxy como proxy inverso no me gusto ni un poquito. Cuando lo terminé, es una herramienta par detectar vulnerabilidades web (cuyo nombre escapa de mi memoria) y por favor la vida. El proxy inverso llego a pedir autenticación para navegar y hasta mostró mi phpmyadmin y en fin, las nalgas en el cristal de la ventana como quien dicen.

Nginx, es un servidor web muy seguro y ligero creado por los rusos. Resulta que el hombre tiene soporte para proxy inverso.

El fichero /etc/nginx/nginx.conf queda así:


user                www-data www-data;
worker_processes    2;
error_log           /var/log/nginx/error.log warn;
pid                 /var/run/nginx.pid;
events {
    worker_connections  1024;
    use epoll;
}
http {
    # allow long server names
    server_names_hash_bucket_size 64;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log          /var/log/nginx/access.log;
    # spool uploads to disk instead of clobbering downstream servers
    client_body_temp_path /var/spool/nginx-client-body 1 2;
    client_max_body_size 32m;
    client_body_buffer_size    128k;
    server_tokens       off;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         off;
    keepalive_timeout   5;
    ## Compression
    gzip on;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_min_length  1100;
    gzip_buffers 16 8k;
    gzip_types text/plain text/html text/css application/x-javascript \
        text/xml application/xml application/xml+rss text/javascript;
    # Some version of IE 6 don't handle compression well on some mime-types, 
    # so just disable for them
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    # Set a vary header so downstream proxies don't send cached gzipped 
    # content to IE6
    gzip_vary on;
    # proxy settings
    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
    include             /etc/nginx/sites-enabled/*;
}

y el fichero /etc/nginx/sites-enabled/proxy
queda así:


server {
    listen       80;
    server_name  lexsa-proxy.lex-sa.cu;
    access_log  /var/log/nginx/proxy.access.log;
    error_log   /var/log/nginx/proxy.error.log;
    # proxy to Apache 2 and mod_python
    location / {
        proxy_pass         http://192.168.1.3:8080/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_max_temp_file_size 0;
        client_max_body_size       10m;
        client_body_buffer_size    128k;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}

Ojo con la linea señalada en rojo, indica a donde estará redireccionado el tráfico. 

Simple, seguro y ligero... esto si es vida.