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.
jueves, 31 de mayo de 2012
jueves, 24 de mayo de 2012
enviar por piezas
Aveces queremos mandar algo por correo muy grande (por "N" motivos) y nos vemos obligados a divir el archivo en pedazos. Para los amantes de Mutt aquí les dejo un script que hace esa tarea muy bien. Pues divide, envía y luego confirma que todo fue enviado; e incluso cual fue la última pieza enviada. Solo es cuestión de correr:
script.sh /path/fichero.ext direcion@dominio.tld
#!/bin/bash
rm -rf /tmp/splitter/
mkdir /tmp/splitter
split -b 312000 $1
mv x* /tmp/splitter/
cd /tmp/splitter/
ALIST=( `ls -w1 /tmp/splitter/` )
RANGE=${#ALIST[@]}
for i in x* ; do
ULTIMO=$i
echo """
Envio a las $(date +%H:%M)
md5sum: $(md5sum $i)
longitud $(du -h $i) """ |mutt -a $i -s "Envio: $i" -- $2
echo $i enviado
rm $i
sleep 5
done
echo "Completo!"
echo """
Todos los pedazos fueron enviados.
Nombre del ultimo: $ULTIMO
Archivos enviados: $RANGE
Para armar el archivo, coloquelos todos en una carpeta.
Deben tener un nombre relativo a x??, luego ejecute:
cat x* > $1
Donde $1 sera el nombre del archivo resultante
luego de armar los $RANGE pedazos. Suerte!
"""| mutt -s "el ultimo fue $i" -- $2
Así de simple, niin helpompaa
script.sh /path/fichero.ext direcion@dominio.tld
#!/bin/bash
rm -rf /tmp/splitter/
mkdir /tmp/splitter
split -b 312000 $1
mv x* /tmp/splitter/
cd /tmp/splitter/
ALIST=( `ls -w1 /tmp/splitter/` )
RANGE=${#ALIST[@]}
for i in x* ; do
ULTIMO=$i
echo """
Envio a las $(date +%H:%M)
md5sum: $(md5sum $i)
longitud $(du -h $i) """ |mutt -a $i -s "Envio: $i" -- $2
echo $i enviado
rm $i
sleep 5
done
echo "Completo!"
echo """
Todos los pedazos fueron enviados.
Nombre del ultimo: $ULTIMO
Archivos enviados: $RANGE
Para armar el archivo, coloquelos todos en una carpeta.
Deben tener un nombre relativo a x??, luego ejecute:
cat x* > $1
Donde $1 sera el nombre del archivo resultante
luego de armar los $RANGE pedazos. Suerte!
"""| mutt -s "el ultimo fue $i" -- $2
Así de simple, niin helpompaa
Suscribirse a:
Entradas (Atom)