martes, 29 de noviembre de 2011

WPAD (Web Proxy Auto Discovery) ClearOS linux

Y seguimos con otra entrada esta ves relacionada a autoconfiguración de proxys, esta ves el caso es el siguiente:

La empresa tiene funcionarios que se estan desplazando continuamente por las sedes ubicadas en el país lo cual implica que cada ves que llegan a una oficina es necesario llamar al técnico para que configure el proxy (es obligatorio en toda sede el uso de proxy) a lo cual se exigió una solución.

La respuesta a este incidente es WPAD que básicamente consiste en que el navegador busque la configuración del proxy en caso de no encontrar nada deja al navegador sin proxy, pues bien para esto necesitamos varios componentes:

1) servidor web
2) servidor dns o DHCP
3) script

1) Pues inicialmente necesitamos el navegador web para publicar el script (javascript) para que el navegador lo lea y lo entregue al navegador, para este caso que estamos trabajando con ClearOS él ya tiene un servidor corriendo lo que se llama webconfig, por lo tanto no necesitamos instalar mas servicios, el cual el directorio de trabajo es /var/webconfig/htdocs/ ese es el directorio en donde colocaremos el script del paso 3.

2) En nuestro caso utilizaremos la configuración con dns ya que la configuración por DHCP no es reconocida por firefox solo por IE, una ves aclarado esto podemos continuar, vamos a las configuraciones del DNS, necesitamos una zona dedicada a la LAN en caso de tener en el mismo servidor zonas externas e internas, para el caso presente vamos a /var/named o en donde se tenga las configuraciones de las zonas DNS y agregamos los siguientes registros:

wpad IN A 192.168.0.1
IN TXT "service: wpad:!http://wpad.midominio.com:82/wpad.dat"
wpad.tcp IN SRV 0 0 80 wpad.midominio.com.

En esta configuración ya debemos tener varios aspectos en cuenta, primero es en donde va a estar ubicado el archivo de configuración "http://wpad.midominio.com:82/wpad.dat" la razón para que el puerto sea el 82 es que el webconfig de clearOS escucha por este puerto, lo otro es que la ip a la que apunta el registro wpad debe ser en donde este el servidor web (casi lógico) recargamos el servicio dns y con esto ya terminamos esta sección.

3) Ahora la parte mas importante es el script que autoconfigurará el navegador, este script en este caso se llama wpad.dat, estará ubicado en /var/webconfig/htdocs/ de ClearOS y tendrá el siguiente contenido:

function FindProxyForURL(url, host) 
{
return "PROXY fw.midomonio.com.co:8080"; 


Con esto terminamos este minihowto el cual nos ahorrará mucho tiempo en la administración de las maquinas así como tiempo de los técnicos de soporte.

Referencias: http://boticati.wordpress.com/2009/11/04/implementar-wpad-dat-en-linux/
http://www.findproxyforurl.com/pac_functions_explained.html

jueves, 20 de octubre de 2011

REDIRECCIÓN DE TRAFICO ENTRE SERVIDORES INTERNOS

En la constante mejora que se lleva en la empresa a nacido la necesidad de redirigir trafico que llegaba a un servidor, la redirección no solamente es de puertos si no de ip..

entonces el trafico llega a un servidor 192.168.x.20 al puerto 8080 en este servidor no existe servicio en ese puerto. a lo cual hay que redirigir el trafico al servidor 192.168.x.30 al puerto 80

las reglas quedarian de la siguiente forma:

iptables -t nat -A PREROUTING -d 192.168.x.20 -p tcp --dport 8080 -j DNAT --to 192.168.x.30:80
iptables -t nat -A POSTROUTING -d 192.168.x.30 -j MASQUERADE

Es necesario también tener habilitado el reenvío de paquetes (en este caso para ipv4):

echo 1 > /proc/sys/net/ipv4/ip_forward

ó en /etc/sysctl.conf (para que tome los cambios sysctl -p)

agregar o modificar la siguiente linea y dejarla de la siguiente forma:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Seguidamente vamos a dejar las reglas para que sean permanentes, en este caso estamos trabajando con CentOS (RedHat) asi que procedemos a modificar el script de inicio de iptables /etc/sysconfig/iptables

y al final del archivo o en su respectiva sección de NAT agregamos (si ya tenemos la sección de nat, debemos omitir desde la linea 1 hasta la 4 y la ultima linea)

*nat
:PREROUTING ACCEPT [114:6773]
:POSTROUTING ACCEPT [628:39550]
:OUTPUT ACCEPT [628:39550]
-A PREROUTING -d 192.168.100.13 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.100.23:80
-A POSTROUTING -d 192.168.100.23 -j MASQUERADE
COMMIT

Una ves hecho esto ya debe redireccionar el trafico que llegue al puerto 8080 al segundo host al puerto 80.


fuentes:
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables
http://adminuser.wordpress.com/2008/03/17/redirecting-network-traffic-to-a-new-ip-using-iptables/

martes, 12 de julio de 2011

GNU/Linux - Bloquear Ctrl + C y Ctrl + Z

Por estos días reviviendo viejos tiempos en donde me defendía un poco con bash me encuentro con la necesidad de hacer un menú de selección básico con el detalle de no permitir al usuario escapar de ese mené si no obligarlo a entrar a un programa.

Buscando en inet me encuentro con que esto se puede hacer con la instrucción "trap" que básicamente lo que hace es capturar una señal del sistema (algunas se llaman a través de combinaciones de teclas como las que queremos bloquear) y ejecuta una orden.

claro esto, la orden quedaría de la siguiente forma

trap "" 2 20

Colocamos esta instrucción al inicio del script que se quiera ejecutar y listo.

A continuación se deja la tabla de señales del sistema:

1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGABRT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM
15) SIGTERM
16) SIGSTKFLT
17) SIGCHLD
18) SIGCONT
19) SIGSTOP
20) SIGTSTP
21) SIGTTIN
22) SIGTTOU
23) SIGURG
24) SIGXCPU
25) SIGXFSZ
26) SIGVTALRM
27) SIGPROF
28) SIGWINCH
29) SIGIO
30) SIGPWR
31) SIGSYS
34) SIGRTMIN
35) SIGRTMIN+1
36) SIGRTMIN+2
37) SIGRTMIN+3
38) SIGRTMIN+4
39) SIGRTMIN+5
40) SIGRTMIN+6
41) SIGRTMIN+7
42) SIGRTMIN+8
43) SIGRTMIN+9
44) SIGRTMIN+10
45) SIGRTMIN+11
46) SIGRTMIN+12
47) SIGRTMIN+13
48) SIGRTMIN+14
49) SIGRTMIN+15
50) SIGRTMAX-14
51) SIGRTMAX-13
52) SIGRTMAX-12
53) SIGRTMAX-11
54) SIGRTMAX-10
55) SIGRTMAX-9
56) SIGRTMAX-8
57) SIGRTMAX-7
58) SIGRTMAX-6
59) SIGRTMAX-5
60) SIGRTMAX-4
61) SIGRTMAX-3
62) SIGRTMAX-2
63) SIGRTMAX-1
64) SIGRTMAX

Extraído del siguiente post: http://nixcraft.com/shell-scripting/12605-shell-script-disable-ctrl-c-ctrl-z.html

lunes, 14 de febrero de 2011

Extraer información de una maquina

Esta ves me ha tocado crear un sencillo script que extrae información de una maquina, probadlo a ver que tal va, si tienes algun comentario por favor hacerlo saber.

---------------------------------------------------------------inicio del script---------------------------------------------------------------

#!/bin/bash

# Script desarrollado por Andrey Amado, usted es libre de realizar cualquier modificación sobre el archivo siempre y cuando mencione al autor o autores de dicho script, o en su defecto gastando una pola al creador del script.

if [ `id -u` -ne 0 ]; then

{

echo "El script debe ejecutarse como root"

exit 1

}

fi

if [ -e dump.txt ]; then rm dump.txt ; fi

echo "Bienvenido al script de informe del sistema\n"

pedir_tecla()

{

read -p "presione cualquier tecla" /dev/null

clear

hola

}

opt1_nm()

{

echo "El nombre del host es: " `hostname`

}

opt2_nm()

{

if [ -e /etc/debian_version ] ; then

echo "el sistema es Debian versión: " `cat /etc/debian_version`

else

if [ -e /etc/redhat-release ]

then

echo "el sistema es: " `cat /etc/redhat_version`

fi

fi

}

opt3_nm()

{

echo "El kernel del sistema operativo es: " `uname -r`

}

opt4_nm()

{

echo "El dominio al cual pertenece es: " `hostname -d`

}

opt5_nm()

{

echo "Las ips de la maquina son: "

ip addr show

}

opt6_nm()

{

echo "Las rutas son: "

ip route show

}

opt7_nm()

{

echo "los dns son: "

cat /etc/resolv.conf

}

opt8_nm()

{

echo "los discos conectados al sistema son: "

fdisk -l

}

opt9_nm()

{

echo "las particiones y uso son: "

df -kh

}

opt10_nm()

{

echo "El tamaño y uso de la RAM es: "

free -m

}

opt11_nm()

{

echo "El uso del procesador es: "

vmstat 2 10

}

opt12_nm()

{

echo "El procesador es: "

cat /proc/cpuinfo | grep 'model name'

}

opt13_nm()

{

echo "Los procesos corriendo son: "

ps xa | less

}

opt14_nm()

{

echo "Los puertos abiertos son: "

netstat -toanp | grep 'LISTEN'

}

opt15_nm()

{

echo "Los ultimos accesos son: "

last | tail -10

}

opt16_nm()

{

if [ `cat /proc/sys/net/ipv4/ip_forward` -eq 0 ] ; then

echo "El reenvio de paquetes esta desactivo"

else

echo "El reenvio de paquetes esta activado"

fi

}

opt17_nm()

{

echo "Los usuarios con acceso de root son: "

cat /etc/passwd | grep ':0:'

}

opt18_nm()

{

echo "Los usuarios con acceso al sistema son: "

cat /etc/passwd | grep 'bash'

}

opt19_nm()

{

echo "Actualizaciones: "

if [ -e /etc/debian_version ] ; then

apt-get update

apt-get upgrade -s

else

if [ -e /etc/redhat_version ]

then

yum update

fi

fi

}

opt20_nm()

{

echo "El estado de SELinux es: " `getenforce`

}

opt21_nm()

{

echo "Las reglas de iptables son: "

iptables -nL

iptables -t nat -nL

}

opt22_nm()

{

which chkrootkit

x=$?

if [ $x -eq 1 ] ; then

{

echo "Chkrootkit NO esta instalado en su sistema"

}

else

{

echo "Chkrootkit esta instalado en su sistema"

}

fi

}

opt23_nm()

{

echo "Los dispositivos scsi conectados al sistema son: "

lsscsi

}

opt24_nm()

{

echo "Los dispositivos usb conectados al sistema son: "

lsusb

}

opt25_nm()

{

echo "El archivo en donde se esta guardando la información es dump.txt en el directorio en: " `pwd`

for i in `seq 1 24`;

do

opt`echo $i`_nm >> dump.txt

echo "\n" >> dump.txt

done

}

sel_opcion()

{

read -p "Seleccione una opción: " opc

echo "\n"

case $opc in

1)

opt1_nm

pedir_tecla

;;

2)

opt2_nm

pedir_tecla

;;

3)

opt3_nm

pedir_tecla

;;

4)

opt4_nm

pedir_tecla

;;

5)

opt5_nm

pedir_tecla

;;

6)

opt6_nm

pedir_tecla

;;

7)

opt7_nm

pedir_tecla

;;

8)

opt8_nm

pedir_tecla

;;

9)

opt9_nm

pedir_tecla

;;

10)

opt10_nm

pedir_tecla

;;

11)

opt11_nm

pedir_tecla

;;

12)

opt12_nm

pedir_tecla

;;

13)

opt13_nm

pedir_tecla

;;

14)

opt14_nm

pedir_tecla

;;

15)

opt15_nm

pedir_tecla

;;

16)

opt16_nm

pedir_tecla

;;

17)

opt17_nm

pedir_tecla

;;

18)

opt18_nm

pedir_tecla

;;

19)

opt19_nm

pedir_tecla

;;

20)

opt20_nm

pedir_tecla

;;

21)

opt21_nm

pedir_tecla

;;

22)

opt22_nm

pedir_tecla

;;

23)

opt23_nm

pedir_tecla

;;

24)

opt24_nm

pedir_tecla

;;

25)

opt25_nm

pedir_tecla

;;

default)

exit 0

;;

esac

}

hola()

{

echo "---------------------Menu principal------------------\nPresione el numero de la opción que desea ver\n"

echo "1. Nombre del sistema"

echo "2. Version del sistema operativo"

echo "3. Version del kernel"

echo "4. Nombre del dominio"

echo "5. Ips de la maquina"

echo "6. Primeras 10 rutas de la maquina"

echo "7. Dns de la maquina"

echo "8. Discos del sistema"

echo "9. Particiones del disco duro y uso"

echo "10. Tamaño y uso de ram"

echo "11. Uso de procesador"

echo "12. Tipo de procesador"

echo "13. Procesos corriendo"

echo "14. Puertos abiertos"

echo "15. Ultimos accesos"

echo "16. Reenvio de paquetes"

echo "17. Usuarios root en el sistema"

echo "18. Usuarios con acceso al sistema"

echo "19. Tiene actualizaciones?"

echo "20. SELinux activado?"

echo "21. Reglas de iptables"

echo "22. Tiene chkrootkit?"

echo "23. Dispositivos scsi"

echo "24. Dispositivos usb"

echo "25. Si usted quiere realizar todas operaciones de testo y guardarlas en un archivo"

echo "Presione cualquier otra tecla para salir\n"

sel_opcion

}

hola

------------------------------------------------------------------------------------------fin del script-----------------------------------------------------------------

jueves, 14 de octubre de 2010

FTP no funciona con Iptables?

Esta ves el problema es con iptables y con ftp.

el caso concreto es que permite conexiones a través de telnet pero cuando se utiliza un cliente ftp este arroja error, el problema radica en que iptables cuando hace NAT no soporta nativamente muy bien a FTP por lo que hay que activar el siguiente modulo:

modprobe ip_nat_ftp

aqui la fuente original del asunto:
http://tldp.org/HOWTO/IP-Masquerade-HOWTO/forwarders.html

miércoles, 25 de agosto de 2010

Samba "smbd interrumpido pero existe un archivo pid"

Al ataque con debian y samba como PDC, muy bonito y todo, en los afanes de configurar una maquina con samba y en el tema de enganchar el samba al ldap se instaló todo de una ves sin iniciar el samba.. se configuró todo y pomba se revienta el samba al iniciarlo y esto por: (NPI)?

En el log nos muestra lo siguiente:

[2010/08/25 17:00:20, 3] smbd/uid.c:push_conn_ctx(358)

push_conn_ctx(0) : conn_ctx_stack_ndx = 0

[2010/08/25 17:00:20, 3] smbd/sec_ctx.c:set_sec_ctx(241)

setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1

[2010/08/25 17:00:20, 3] smbd/sec_ctx.c:pop_sec_ctx(356)

pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0

[2010/08/25 17:00:20, 3] lib/util_seaccess.c:se_access_check(250)

[2010/08/25 17:00:20, 3] lib/util_seaccess.c:se_access_check(251)

se_access_check: user sid is S-1-1-0

se_access_check: also S-1-5-2

se_access_check: also S-1-5-7

[2010/08/25 17:00:20, 0] services/services_db.c:svcctl_init_keys(420)

svcctl_init_keys: key lookup failed! (WERR_ACCESS_DENIED)

[2010/08/25 17:00:20, 3] smbd/sec_ctx.c:push_sec_ctx(208)

push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 1

[2010/08/25 17:00:20, 3] smbd/uid.c:push_conn_ctx(358)

push_conn_ctx(0) : conn_ctx_stack_ndx = 0

[2010/08/25 17:00:20, 3] smbd/sec_ctx.c:set_sec_ctx(241)

setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1

[2010/08/25 17:00:20, 3] smbd/sec_ctx.c:pop_sec_ctx(356)

pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0

A primera vista se ve un (WERR_ACCESS_DENIED) esto se debe a que sencillamente no se había inicializado el samba con las bd locales.

lo que se debe hacer es: en el archivo de configuración del samba colocar o cambiar a:

passdb backend = tdbsam

se para el samba y luego se inicia, ahora si ya se puede cambiar el parámetro para que busque el ldap:

passdb backend = ldapsam:ldap://127.0.0.1

y eso es todo.. ajustado este pequeño inconveniente y una ves mas demostrado que del afan no queda si no el cansancio. :p

domingo, 30 de mayo de 2010

Herramientas de comunicación sincrona y Asincrona

Introducción

La necesidad de comunicarse entre seres humanos a sido una de las grandes motivaciones para que se desarrolle tecnología, llámese tecnología a cualquier elemento innovador construido por el hombre, esta construcción de tecnología nos a hecho llegar hasta al era digital, pasando por tecnologías como el teléfono u el correo convencional, señales sonoras...etc.En la era digital se han encontrado multitud de formas para comunicarnos a través del mismo medio, he aqui la ubicación de tiempo en donde se abordara algunas de las herramientas para comunicarse en su mayoría a través de internet o internet2 (llámese redes metropolitanas privadas).




En los vídeos veremos algunos aportes mas detallados para el proceso de creación y surgimiento de estas herramientas.

Herramientas asincronas:


Correo Electrónico: La forma digital de comunicación mas popularizada en la sociedad de hoy en día, la cual consiste en enviar un mensaje a un buzón digital y esperar a que el destinatario lo lea.

Foro y variantes: Básicamente consiste en una pagina en donde después de haberse registrado se le permite generar discusiones las cuales son controladas en la mayoría de los casos por un moderador.

Redes sociales: Este tipo de comunidad es la evolución de los foros en donde se alimenta a un ritmo exponencial de información en donde su mayoría es contenido sin peso intelectual, solo pocas redes sociales se excluyen de esta clasificación y son aquellas que se dedican a un tema en especifico y no el ocio en general.




Blog: Quiza un derivación de un foro con la diferencia radica en que el contenido rico en contenido visual en la mayoría de los casos es administrado por el dueño del blog a su ves los visitantes pueden aportar en menor medida que en un foro a través de los comentarios.

Microbloogin: Como su nombre lo indica es un blog en versión miniatura, desaparece la abundancia de contenido visual y se centra en la información especifica que se quiere transmitir.

Herramientas sincronas:

Mensajería Instantánea (Chat, IRC): Es un servicio en su mayoría popularizado por MSN Messenger, Yahoo Messenger, estos no hubiesen sido posibles sin el IRC el cual fue el primera forma digital de comunicarse de forma caso instantánea con otra persona conectada a una terminal que fuese miembro de la misma red, hoy en día los servicios de mensajería instantánea incluyen otros métodos de comunicación sincrona como lo es, vídeo chat, vídeo conferencia, callVoIP (llamadas a través de Internet), transferencia de archivos y Compartir juegos.

Telefonía IP: Lejos de ser algo desconocido por la mayoría de los internautas servicios como Skype marcan el inicio de la no dependencia de la telefonía análoga y permitiéndonos llamar a celulares, teléfonos fijos, otros números de skype, números de internet, con todas las características que nos ofrece la telefonía y mas; en skype también encontramos servicios de chat, transferencias de archivos y sus fuertes que son las llamadas VoIp y Tele-conferencia.



Espero que esto sea de la mínima utilidad y utilidad intelectual posible.

Gracias.