jueves, 30 de enero de 2014

Permisos correctos solo a directorios ó archivos en web-servers

Es muy común para los Administradores de sistemas estar instalando CMS (Content Management System) en servidores web y por lo general, la practica no recomendable es establecer todos los permisos a directorios y archivos (777) para evitar algunos problemas con plugins, cache o archivos que se modifican frecuentemente.

Esta practica es un grave error de seguridad permitiendo a personas con el suficiente conocimiento para vulnerar tu CMS y con ello hacer defacement o infectar tu servidor para ser usado como envío de SPAM.

Los permisos recomendados para CMS son los siguientes:

755 para directorios, esto significa que:

El propietario puede: leer, escribir, ejecutar
El grupo puede: leer, ejecutar
Otros pueden: leer, ejecutar

644 para archivos, esto significa que:

El propietario puede: leer, escribir
El grupo puede: leer
Otros pueden: leer

Y para hacerlo de la manera convencional pueden aplicar el típico:

chmod -R 644 /var/www/mipagina/docs/*
O aplicar solo a directorios y archivos (RECOMENDADO)  de la siguiente forma:

Solo a directorios:
find . -type d -exec chmod -R 0755 {} \;

Solo a archivos:
find . -type f -exec chmod -R 0644 {} \;

puedes cambiar el punto (.) por la ruta donde se encuentre tu directorio web ejemplo: /var/www/mipagina/

miércoles, 29 de enero de 2014

Parametro Qualify en Asterisk (Monitorizar peers)


Todos los que manejamos Conmutadores digitales con software libre hemos configurado alguna vez el parámetro qualify en los archivos de configuración para iax, y sip. Pero ¿que función tiene este parámetro? ¿Que sucede en nuestro conmutador cuando lo activamos o lo desactivamos ?.

Archivos:

la configuración de este parámetro se encuentra en los archivos iax.conf y sip.conf que afecta a todas las extensiones si se encuentra en el contexto [general] ó en extensiones independientes en estos dos protocolos de comunicación.

Tipos de formato:

* qualify=xxx
* qualify=yes
* qualify=no

Si lo que queremos es modificar este parámetro únicamente a ciertas extensiones, podemos configurarlo modificando la extensión:

[ext105]
type=friend
host=dynamic
secret=M1p4ssw0rD
qualify=yes
disallow=all
allow=ulaw
allow=gsm

* Con qualify= yes

Asterisk monitoriza el estado de la extensión en periodos ( por default 60s)
¿Como sucede esto?

Astersk realiza peticiones de tipo "SIP OPTIONS" cada 60 segundos hacia la extensión y espera una respuesta del mismo, algo asi como un PING , por defecto Asterisk espera 2000ms (2s) para dar por buena una respuesta y con esta poder determinar:

1.- Estado
2.- Latencia o tiempo de retardo en la conexión con la extensión

*Con qualify=no

Asterisk deja de monitorizar el estado de la extensión y de esta forma omite las peticiones hacia sus destinos y hace las llamadas telefónicas sin importar latencia, ya que si hay latencia puede ser que la extensión sea marcada como no disponible.

* Con qualify=xxx

esto es un tipo de qualify=yes pero en este caso nosotros establecemos el tiempo máximo en milisegundos para recibir la respuesta (Por default son 2000ms)

Recomendaciones:

* Personalmente yo activo este parámetro en todas las extensiones
* En las extensiones con grandes latencias lo desactivo
* Si lo quieres tener activado y reducir los indeseados UNREACHABLE puedes establecer un tiempo máximo menor


Espero les sirva esta información para una mejor implementación de sistemas telefónicos digitales :D

miércoles, 22 de enero de 2014

Acceso a notas, howtos y directorio telefónico desde terminal

DESCRIPCIÓN

Cuando no tenemos ambiente gráfico, o no se usa frecuentemente y queremos ver algún numero telefónico o algún dato de archivos de texto que frecuentemente uso, es un poco engorroso estar acordándote del directorio + el nombre de los archivos donde se encuentra lo que busco.

Con este Script en BASH podemos hacer esto de manera rápida . el cual tiene las siguientes caracteristicas:

* utiliza los programas de linux:  less, vim, cat, grep dependiendo de los argumentos
      -c:  usa cat
      -e:  usa vim
      -l:   usa less
      -n:  usa grep
* Uiliza un directorio por default en donde se alojarán los archivos creados y por crear
     ejemplo: "/home/villatux/archivos_dse/"
* El script está guardado en "/usr/bin/dse" con permisos de ejecución 

EL CÓDIGO

#!/bin/bash
# By Oswaldo Villa
# @villatux
# USO:
#       dse -l archivo
#       dse -e archivo
directorio="/home/villatux/archivos_dse/"
case "$1" in
        -l)
                less $directorio$2
                ;;
        -e)
                vim $directorio$2
                ;;
        -c)
                if [ $3 == "-n" ]; then
                        cat $directorio$2 | grep -i $4
                else
                        cat $directorio$2
                fi
                ;;
        -h|--help)
                echo $"Uso: $0 [-c|-l|-e|-h] [ARCHIVO]"
                echo ""
                echo "Permite el facil acceso a el contenido de archivos para ver o editar su contenido"
                echo "  -c      Muestra Todo el documento"
                echo "          *  -n  muestra solo la linea donde está el texto deseado"
                echo "  -l      Permite visualizar el documento con solo presionar arriba, abajo y q para salir"
                echo "  -e      Permite editar el documento con el editor vim"
                echo "  -h      Muestra ayuda"
                echo ""
                echo "Ejemplo: "
                echo "$0 -l servidores"
                echo ""
                echo "Puede incluir los siguientes archivos:"
                ls -l $directorio | awk '{print $9}'
                ;;
esac


EJEMPLO EN USO:

villatux@vuach:~$ dse -c servidores -n vegito
vegito  1X.61 archivos.midominio.mx

villatux@vuach:~$ dse -c directorio -n oswaldo
  172X dse sysadmin oswaldo villa

villatux@vuach:~$ dse -c datos -n ldap
ldap  midominio.mx  P4ssw0rd LDAP General

villatux@vuach:~$ dse -c proxys -n .16
nacho  148.229.XXX.16  148.229.XXX.141 new

a quien le sea de utilidad puede copiarlo con toda libertad :D

viernes, 17 de enero de 2014

Importar script .sql a MySQL

Los usuarios de MySQL al querer importar un archivo .sql lo hacer a travez de phpMyAdmin, la cual solo soporta subir archivos menores a 2.048Kb (2Mb), que es la configuración default de php.ini, y cuando esto sucede algunos otros lo hacen por pequeños pedazos de script (peor aún), Esto incrementará la dificultad, el tiempo y las probabilidades de falla en la importación, Para cuando esto sucede es dificil reparar el error y es necesario comenzar de nuevo.

La mejor manera de importar bases de datos, tablas y datos a mysql es por consola(terminal), esto nos permite importar archivos mas grandes de lo normal de la siguiente manera

1)
mysql -u USUARIO -p BASEDEDATOS < /home/miusuario/script.sql

NOTA: Para poder subir el script de este modo ya deberá estar creada la Base de Datos.

Para no tener que crear la base de datos podemos crearla en la misma importación del script agregando las siguientes lineas al mismo:

1.2)
CREATE DATABASE `NOMBRE_DE_LA_BASEDEDATOS`;
USE `NOMBRE_DE_LA_BASEDEDATOS`;


Una vez hecho esto ejecutamos de nuevo el comando para importar el script que mencionamos en el paso 1

miércoles, 15 de enero de 2014

Publicar Código fuente resaltado en blogger y paginas web

Varios de nosotros los bloggers o webmasters hemos deseado publicar código fuente y que no se vea distorcionado o mal formado.

SyntaxHighlighter nos permite hacerlo añadiendo colores resaltados según el lenguaje que queramos mostrar de una manera limpia y llamativa.

SyntaxHighlighter es de codigo libre y en la pagina oficial :     ofrece la versión online o también a descarga si lo prefieres.  En este caso usaremos la version online ya que blogger no nos permite subir archivos.

Para agregar código  primero modificaremos nuestra plantilla de blogger o el código fuente de nuestra web,  entre las etiquetas HEAD debemos poner el siguiente código:





Debemos insertar todos los tipos de lenguajes que va a soportar nuestra pagina para publicar,  tambien se pueden quitar los que no creas utilizar para no hacer más extenso nuestro head

Ahora para publicar cualquier código debemos poner las etiquetas :



La siguiente tabla indica los lenguajes que soporta, además de el modo de uso en las publicaciones:

Brush nameBrush aliasesFile name
ActionScript3as3, actionscript3shBrushAS3.js
Bash/shellbash, shellshBrushBash.js
ColdFusioncf, coldfusionshBrushColdFusion.js
C#c-sharp, csharpshBrushCSharp.js
C++cpp, cshBrushCpp.js
CSScssshBrushCss.js
Delphidelphi, pas, pascalshBrushDelphi.js
Diffdiff, patchshBrushDiff.js
Erlangerl, erlangshBrushErlang.js
GroovygroovyshBrushGroovy.js
JavaScriptjs, jscript, javascriptshBrushJScript.js
JavajavashBrushJava.js
JavaFXjfx, javafxshBrushJavaFX.js
Perlperl, plshBrushPerl.js
PHPphpshBrushPhp.js
Plain Textplain, textshBrushPlain.js
PowerShellps, powershellshBrushPowerShell.js
Pythonpy, pythonshBrushPython.js
Rubyrails, ror, rubyshBrushRuby.js
ScalascalashBrushScala.js
SQLsqlshBrushSql.js
Visual Basicvb, vbnetshBrushVb.js
XMLxml, xhtml, xslt, html, xhtmlshBrushXml.js

Nota. Si queremos publicar código xml, xhtml, xslt, html y xhtml debemos considerar que dentro de las etiquetas pre no debemos utilizar los caracteres < ni > en vez de ello utilizaremos < y > respectivamente, todo esto para no confundir al código html.

martes, 14 de enero de 2014

Comprobar extensiones de SQLServer para PHP (mssql, msql)

Aveces es necesario conectar nuestros desarrollos a bases de datos en SQLServer ya que son aplicaciones desarrolladas por externos o por X causa,  pues en este tenor  podemos comprobar si realmente tenemos instaladas las extensiones necesarias en nuestro php para realizar las conexiones a las bases de datos.

Con el siguiente script en PHP podemos hacerlo rápidamente y saber si tenemos que instalarlas :



if (function_exists('mssql_connect')){ 
 echo "mssql_connect SI "; 
} else { 
 echo "mssql_connect NO "; 
} 
if(extension_loaded("mssql")) { 
 echo "MSSQL SI "; 
} else { 
 echo "MSSQL NO"; 
}  
if(extension_loaded("msql")) { 
 echo "MSQL SI "; 
} else { 
echo "MSQL NO "; 
}   
$ext = get_loaded_extensions(); 
if(in_array('mssql', $ext)) 
 echo ': Tienes mssql correctamente instalado '; 
else 
 echo ': NO tienes mssql instalado '; 
phpinfo();  






Si es necesario instalarlas  las podemos hacer de la siguiente manera (en Debian y derivados) :

aptitude install php5-sybase php-db


jueves, 9 de enero de 2014

Buscar todos los correos de usuarios en LDAP pasandole una lista de numero de empleado (UID)

Este script sirve para obtener una lista de correos electronicos que pertenecen a los numeros de empleados (UID) contenidos en el archivo "lista.txt"

La busqueda se hace en LDAP (Lightweight Directory Access Protocol) en un equipo con sistema Solaris: SunOS 5.10


#!/bin/bash
#
echo "" > correos.txt
while read linea
do
        echo "buscando : " $linea
        ldapsearch -h correo.midominio.mx -b o=midominio.mx -D "cn=Directory Manager" -w m1P4ssw0rD123 cn="$linea" | grep uid: | awk '{print $2"@midominio.mx"}' >> correos.txt

done < lista.txt

martes, 7 de enero de 2014

Consejos para el buen vivir en tu trabajo y vida personal

Les comparto una publicación del blog toxicore BLOG la cual me parece un excelente repaso de consejos para que siempre nos vaya bien en trabajo y vida personal:

¿Que lecciones he aprendido en casi 10 años de experiencia laboral? En este milestone lo resumiría así:
  • Comparte con los demás el conocimiento
  • Comparte tus experiencias a los demás como si fueran al mejor de tus amigos
  • Plasma tus ideas y no solamente las plasmes, aterrízalas
  • El tiempo es un recurso escaso, úsalo sabiamente
  • Toma riesgos, sal de tu área de confort
  • Toma la propiedad de las cosas, hazte dueño de lo que sabes hacer bien
  • Conoce tus límites y no tomes más comida de la que puedes digerir
  • Usa tu tiempo ocioso en algo útil (Hacker howto:Boredom and drudgery are evil.)
  • Relacionate bien con todos, no sabes cuando y dónde te encontrarás a los demás en otros lugares
  • Respeta los demás puntos de vista y las otras maneras de hacer las cosas
  • Empatía, empatía, empatía
  • El trabajo se hace en equipo, a veces hay que apoyar y a veces hay que dejarse apoyar
Y bueno, una reflexión muy al estilo TVNotas si quieren, pero me ha funcionado.

Decodificar / Codificar URL's para acceder a publicaciones, archivos, vídeos embebidos en paginas web

Algunos sitios como noticias de esas que salen en facebook en donde le tienes que dar like a la publicación para poder ver el vídeo/enlace "gracioso",  o simplemente hay paginas con videos embebidos y los quieres descargar.

Algunos de estos sitios no es necesario hacer este procedimiento, pero les dejo este howto por si lo requieren.

Para poder ver estos vídeos de algunas paginas de este tipo  hay que ver el código fuente de la pagina  y copiar la URL codificada y decodificarla.


Ejemplo de URL codificada:
http%3A%2F%2Fmipagina.com%2Fsitios.php%3Fid%3Dcategoria%26tag%3D14

URL Decodificada:
http://mipagina.com/sitios.php?id=categoria&tag=14 


Para decodificar puedes hacerlo automáticamente en el sitio  : http://meyerweb.com/eric/tools/dencoder/   o también puedes hacer tu script para sustituir los caracteres necesarios en las URL's.

viernes, 3 de enero de 2014

Obtener el numero de un chip GSM (En México)

Les comparto esta información para saber el numero de un chip cuando este no tiene saldo (EN MÉXICO):

Buscando si es Movistar:

Marca *102# y la tecla SEND, de ahí te mostrará un menú y seleccionas la opción 4  y le das OK . También lo puedes marcar seguido de esta manera:
*102#4#+SEND
Con esto te devuelve el numero de teléfono que tiene ese chip GSM


Buscando si es Telcel:

Marca a un numero telcel de tu propiedad, antemponiendo "033" de esta manera:
033+NUMERO
con esto se enviará un mensaje por cobrar y en el dirá el numero del remitente

Para buscar de las demás compañías de telefonía celular también funciona con el envío de mensajes por cobrar con la marcasión 033+NUMERO.