Skip to content

Seguridad informática, el eslabón débil

Seguridad informática, el eslabón débil

La seguridad informática a pasado de ser una término reservado para informáticos, a ser algo muy importante en nuestro día, ya sea para un uso particular o para un uso empresarial cada vez es más importante tener claro a que hace referencia este término de seguridad informática.

Veamos algunos puntos de la seguridad informática a tener en cuenta desde un punto de vista de sistemas y desarrollos.

  • Conexiones cifradas

  • Conexiones seguras solo las conexiones internas.

  • Conexiones externas mediante VPN.

  • Conexiones externas punto a punto.

  • Limitar al máximo las conexiones externas.

  • Limitar el número de conexiones a ser posible.

  • Redes separadas por departamentos.

  • Limitación en el tipo de tráfico de entrada y salida dependiendo del departamento.

  • Seguridad en los accesos(control de accesos) a los servidores.

  • Código limpio y sin accesos o contraseñas.

  • Antivirus para los usuarios de Windows.

  • Cortafuegos por Firewall.

  • Cortafuegos por Software.

  • Software y lenguajes lo más posible actualizados.

  • Backup discos y Backup de datos

Teniendo todos estos puntos en cuenta, además de alguna cosilla más dependiendo del tipo de instalación o servicio que se quiera crear, tendríamos un sistema seguro al 100%.

¿Pero estamos seguros que nuestra seguridad informática es 100% segura?¿Depende solo de nosotros?

La segunda pregunta responde la primera, y aunque no existiera la segunda pregunta la respuesta sería la misma NO.

Porque la seguridad informática nunca será 100% fiable. Esto va a depender del tipo de red del que estamos hablando, a más usuarios más posibilidades de fallo, a más servicios más posibilidades de error. Y es que entre las nuevas actualizaciones, las apariciones de errores en código, los nuevos errores en software, la potencia de hardware que crece exponencialmente, las nuevas velocidades de nuestras redes… Es normal que tengamos que estar detrás de la seguridad informática para que al menos estemos al 99.999% seguros de que es fiable.

Pero todo esto es controlable o por lo menos monitorizable, entonces ¿donde esta el eslabón débil? No busques muy lejos, eres tú mismo, somo confiados por naturaleza y nos conectamos a las redes que al menos parecen legales y no provechosas, redes de cafeterías, redes de empresas, redes de aeropuertos o redes “oficiales”.

Esto es un error grave, nunca deberías conectarte a una red de alguien desconocido, y mucho menos conectarte a un red pública. ¿Por qué?

  • No sabes quién ha creado esa red.

  • No sabes quién más hay conectado a esa red.

     

Y es que por ejemplo, una buena norma de seguridad sería no dar la clave wifi a nadie que no sea de ese núcleo familiar. Aunque tampoco sería una norma 100% fiable, alguien podría llegar con un dispositivo hackeado, comprometiendo la red y todos sus dispositivos.

La única buena solución para nuestros problemas de seguridad informática es la formación y educación en ciertos aspectos tanto para administradores, programadores, empleados de cualquier departamento, los jefes de departamento y de forma individual son conceptos que tenemos que intregar en nuestro día a día.

Reflexiones acerca del Posicionamiento web 2021

Posicinamiento SEO, El SERP
Posicinamiento SEO, El SERP

Reflexiones acerca del Posicionamiento Web

Hace ya años que tenemos empresarios cada vez más preocupados por su posicionamiento web y la apariencia de sus empresas en los principales buscadores.

Al igual que yo que llevo cerca de diez años estudiando las distintas formas de posicionamiento orgánico para empresas y sus productos o servicios. Como administrador de sistemas y programador, además de 17 años de experiencia como electricista, siempre he tenido otro punto de vista sobre la formación que debería tener alguien para ofrecer mejoras en nuestras web, ya que mi visión sobre la red siempre ha sido un conjunto gracias a las tres aptitudes, con el objetivo siempre de mejorar el posicionamiento web en las búsquedas de internet he continuado mi formación tanto en programación, como administración y Posicionamiento Web.

Y la verdad, si no tienes un buen equipo detrás, se me hace raro, que alguien que sabe soló de posicionamiento orgánico pueda recomendar ninguna mejora que salga de mejorar las cabeceras de la web, estrategia SEO de los textos, títulos y URL’s.

No lo veo revisando el incremento de gastos para mejorar las capacidades de un servidor, el utilizar o no utilizar WordPress para tú web o tú proyecto, así como en el uso de la web o herramienta a utilizar y la formación de quién la va ha utilizar. Hay tantos detalles en un servidor, su sistema operativo y su uso, que no se pueden dejar atrás y en manos de terceros.

Podemos tener la mejor estrategia SEO aplicada, pero si nuestra web tardá 6 segundos en cargar todo el trabajo no valdrá de nada, sí en nuestra web se hace difícil programar o publicar una serie de post, se nos hará un mundo este proceso. De que nos sirve tener un web hecha exclusivamente a código para nosotros, si luego no podemos tener un backend ameno y universal para facilitar a los editores la distintas publicaciones, la sincronización con redes sociales, automatización de sitemaps y utilizar las distintas herramientas que ya existen.

Un buen estratega SEO además de contar con experiencia en la visión de datos Analytics, controlar Google Search Console, tener un amplio conocimiento en vocabulario, ser una persona dinámica y adaptable a los cambios rápidos; Debe tener aptitudes y conocimientos de administración y programación, sino como crear campañas solventes y adaptables, como utilizar y dar justificaciones de nuestros servicios y servidores.

Un buen estratega SEO debería poder llevar tú máquina a trabajar al 100% de sus posibilidades.

Un buen estratega SEO debería ser capaz de crear un red de páginas y controlarla.

Un buen estratega SEO debe dar indicaciones claras y ser capaz de justificarlas.

Un buen estratega SEO debe tener conocimientos sobre machine-learning para poder tener otros puntos de vista, y es que, debe ser un DataScients debido a la gran cantidad de datos que debe manejar.

Un buen estratega SEO debe saber que herramientas utilizar en cada momento, ¿Estás seguro que tú problema es la competencia?. Primero asegurate de mostrar lo que quierés en la red y como lo estás mostrando actualmente.

El posicionamiento web, más concretamente el posicionamiento orgánico no aporta siempre las mejores estadísticas, el que trae un tráfico de calidad. Le mejora en el SERP no son tres puntos y miles de palabras clave, la mejora en el posicionamiento SEO consta de un conjunto, de un histórico y un trabajo que se aprecia con el tiempo y la constancia.

Ánimo y escuchen al Friki que tienen al lado.

Bosques aleatorios para regresión

Regresión con bosques aleatorios

Bosques aleatorios

Versión mejorada del árbol de regresión ya que es capaz de utilizar miles de árboles de regresión para obtener una mejor predicción.

Pasos a seguir

  1. Elegir un número aleatorio K de puntos de datos del conjunto de Entranamiento.
  2. Árbol de desición asociado a esos K puntos.
  3. Elegir el número de NTree de árboles que queremos construir y repetimos Paso 1 y Paso 2
  4. Cada uno de los árboles hace una predicción del valor Y, luego hacemos un promedio de esos NTree predicciones.

Árboles de decisión para Regresión Lineal

CART -> Classification and Regressión Tree

Una vez ejecutamos nuestro algoritmo árbol de decisión, el conjunto de datos de las variables independientes quedará dividido en segmentos.

Arbol de decision.png

Básicamente se fija en la entropia de los puntos para poder agruparlos, cada una de estas divisiones aporta una información realmente buena.

Arbol decision2.png

Podemos ver en verda la media de los segmentos y en la imagen de abajo el árbol de decisiones

Arbol decision3.png

 
 

Regresión con máquina de soporte vectorial

Regresión con máquina de soporte vectorial SVR

Sirven tanto para regresiones lineales como no lineales. La idea es ajustar una calle, he intentar mantener cuántas más obvervaciones posibles del conjunto de datos dentro de la calle, limitando unos márgenes máximos.

Hyper parámetro épsilon

La anchura del pasillo se controla mediante un hiper parámetro, épsilon. Cuánto mayor es ese valor, mayor es la anchura de la calle.

Objetivo

En la regresión lineal se intenta minimizar el error entre la predicción y los datos. En SVR el objetivo es que los errores no superen el umbral establecido.

Regresión Lineal Multiple

Restriciones de la Regresión Lineal

  1. Linealidad
  2. Homoceadasticidad
  3. Normalidad Multivariable
  4. Independencia de los errores
  5. Ausencia de multicolinealidad. El modelo es incapaz de distinguir los efectos de una variable dummy.

Variable Dummy

Cuando necesitemos construir un modelo con variables ficticias (variables dummy), hay que omitir uno de los factores, uno de los niveles de la variable ficticia. Es decir, si tenemos 100 países como variables ficticias, solo colocaríamos como dummy 99 en el modelo de regresión.

P-Valor

Que no es

  • El p-valor no es la probabilidad de que la afirmación sea cierta.
  • El p-valor no es la probabilidad de que la hipótesis nula sea cierta.

Nos indica que tan probable es obtener un resultado con una hipótesis nula verdadera.

[[1]]

Paso a paso en la regresión lineal multiple

Añadir todas las variables independientes

No, por dos razones:

  1. NO por añadir más variables vamos a tener más información. In Basura = Out Basura.
  2. Si el número de variables va creciendo hace díficil la explicación lógica del proceso.

5 métodos obtención de variables relevantes

Tenemos 5 métodos disponibles para obtener las variables importantes y que tendrán relevancia en el algoritmo de regresión lineal multiple.

Exhaustivo (All-in)

Metemos todas las variables en el modelo, razones por las que hacer esto:

  • Conocimiento previo de todas las variables. Todas son variables predictoras.
  • Por necesidad, nos obligan a utilizar todas las variables.
  • Preparación previa para realizar la eliminación hacia atrás.

Eliminación hacia atrás

  1. Selección del el nivel de significación en el modelo, normalmente SL=0.05
  2. Se calcula el modelo con todas las variables
  3. Se obtiene la variable predictoras con el p-valor más grande. Si P > SL, entonces pasamos al paso 4, sino vamos a fin.
  4. Se elimina la variable predictora.
  5. Reajuste del modelo sin dicha variable.

Con el nuevo modelo creado, las variables de ese tendrán una seria de p-valores y por tanto repetimos el paso 3, consideramos la variable predictora con p-valor más grande, si el p-valor es todavía mayor que el nivel de significación, se elimina y se reajusta el modelo otra vez.

Selección hacia adelante

  1. Seleccionamos un nivel de significación, pero en este caso será para entrar en el modelo.
  2. Ajustamos todos los modelos de regresión lineal simple. Elegimos el que tiene el menor p-valor.
  3. Conservamos esta variables y ajustamos todos los modelos con la variable extra añadida a la que ya tenga el modelo en ese momento.
  4. Consideramos la variable predictora con el menor p-valor. Si P < SL volvemos al paso 3.

Seguiremos sucesivamente añadiendo variables mientras el p-valor sean inferior al nivel de siginificación, en el caso que la variable que se acaba de añadir ya supere el SL, daremos por terminado el trabajo y conservaremos el modelo anterior como el correcto.

Eliminación bidireccional o regresión dual

  1. Seleccionamos dos niveles de significación para entrar y salir del modelo.
  2. Selección hacía delante p-valor < SLEnter
  3. Selección hacía atrás p-valor < SLStay
  4. No hay nuevas variables para entrar ni tampoco variables antiguas para salir

Comparaciones de puntos

  1. Seleccionar un criterio de la bondad de ajuste. Cuando un modelo será mejor que otro.
  2. Construir todos los Modelos: 2N – 1
  3. Selección del modelo con mejor criterio

OJO! -> 10 columnas de datos = 1023 modelos

Linux – Bash

Bash Script

Un Shell Script no es más que un fichero con sentencias para el intérprete que se vaya a utilizar. Entre los intérpretes más utilizados se encuentran: Bash,Perl, Python y PHP para los entornos web.

Argumentos posicionales

En un script se pueden especificar argumentos en una línea de comando, es decir un nombre_de_script+un directorio o más un número o una letra. El script en bash accede a estos parámetros mediante las variables $0, $1, etc.:

  • $0 Nombre del script
  • $1 Argumento uno
  • $2 Argumento dos
  • $3 Argumento tres, así hasta el nueve.
  • $# Número de argumentos total
  • $* Cadena con todos los argumentos
  • shift Desplaza hacia la izquierda los arguementos, el 10 pasa a ser 9 y así posteriormente.
  • $? Código de retorno

El código de retorno

Cada programa que se ejecuta en el shell cuando termina guarda su código de retorno en la variable $?. Este código es un valor numérico que determina si el programa ha terminado de forma correcta. El código de retorno de valor 0 para la correcta ejecucción, cualquier otra valor para la incorrecta ejecucción.ç

  • $? Código de retorno

Algunos scripts con los principales operadores de bash. comprobar ficheros y directorios, condicionales, bucles, while, until, funciones, etc.:

Redirecciones de entrada y salida

Redirección de salida estándar a un archivo

*hace que el descriptor de archivo 6 sea una copia de stdout (descriptor archivo 1)
exec 6>&1
*abre el archivo "test.data" para escritura
exec 1>test.data
*genera algún contenido
echo "data:data:data"
*recupera stdout original, al hacer que sea una copia del descriptor de archivo 6
exec 1>&6
*Cierra el descriptor de archivo 6
exec 6>&-

Abre y cierra archivos

# abre el archivo test.data para lectura
exec 6<test.data
# lee hasta el final del archivo
while read -u 6 dta
do
  echo "$dta" 
done
# cierra el archivo test.data
exec 6<&-

Salida de órdenes externas

VAR=$(find . -name "*h")

Condicionales con números

  • -lt menor que <
  • -gt mayor que >
  • -le menor o igual que <=
  • -gr mayor o igual que >=
  • -eq igual ==
  • -ne no igual !=

Condionales con texto

  • = cadenas de texto exactemente iguales

!= cadenas de texto no iguales

  • <
  • >
  • -n la cadena no está vacía
  • -z la cadena está vacía

Condicionales con archivos

  • -e existe
  • -f archivo normal, no es un directorio
  • -s no tiene tamaño 0
  • -d es un directorio
  • -r tiene permiso de lectura para el usuario que lanza el script
  • -w permiso de escritura para el usua…
  • -x permiso de ejecución

Manipulación de texto

${cadena:posicion:longitud}
Por ejemplo en la cadena string=abcABC123ABCabc:
echo ${string:0} : abcABC123ABCabc
echo ${string:0:1} : a (primer caracter)
echo ${string:7} : 23ABCabc
echo ${string:7:3} : 23A (3 caracteres desde posición 7)
echo ${string:7:-3} : 23ABCabc (desde posición 7 hasta el final)
echo ${string: -4} : Cabc (atención al espacio antes del menos)
echo ${string: -4:2} : Ca (atención al espacio antes del menos)

Linux – Comando Sed

Trucos de consola usando sed

Finales de linea tipo DOS (CR/LF) a formato Unix.

sed ‘s/.$//’ # asume que todas las lineas terminan con CR/LF sed ‘s/\x0D$//’ # funciona con ssed, gsed 3.02.80 o superior

Borrarado espacios en blanco al principio y el final de cada linea
sed 's/^[ \t]*//;s/[ \t]*$//'
Alineando el texto a una anchura de 79 columnas
sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space
Substituciones «foo» por «bar» en cada linea
  • sustituir solo la primera ocurrencia en la linea
    • sed ‘s/foo/bar/’
  • sustituir solo la cuarta ocurrencia en la linea
    • sed ‘s/foo/bar/4’
  • sustituir todas las veces que se encuentre
    • sed ‘s/foo/bar/g’
  • sustituir solo la anteultima ocurrencia
    • sed ‘s/\(.*\)foo\(.*foo\)/\1bar\2/’
  • sustituir solo la ultima ocurrencia
    • sed ‘s/\(.*\)foo/\1bar/’
  • sustituir "foo" por "bar" SOLO en las lineas que contengan "baz"
    • sed ‘/baz/s/foo/bar/g’
  • sustituir "foo" por "bar" EXCEPTO en las lineas que contengan "baz"
    • sed '/baz/!s/foo/bar/g'
Mostrar la linea numero 52
sed -n '52p'                 # metodo 1
sed '52!d'                   # metodo 2

sed '52q;d' # metodo 3, eficiente para ficheros grander

Quitar la mayoria de los tags HTML (reconoce tags multilinea)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

Emulación algunos comandos

Contar lineas (emula «wc -l»)
sed -n '$='
Ordenar lineas al reves (emula «tac»)
sed '1!G;h;$!d'               # metodo 1
sed -n '1!G;h;$p'             # metodo 2
Invierta cada caracter de la linea (emula «rev»)
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
Une pares de lineas lado a lado (emula «paste»)
sed '$!N;s/\n/ /'
Muestra las 10 primeras lineas (emula «head»)
sed 10q
Muestra la 10 ultimas filas (emula «tail»)
sed -e :a -e '$q;N;11,$D;ba'
Muestra solo las lineas que se ajustan a la expresion regular (emula «grep»)
sed -n '/regexp/p'           # metodo 1
sed '/regexp/!d'             # metodo 2
Borra lineas duplicadas consecutivas (emula «uniq»)
sed '$!N; /^\(.*\)\n\1$/!P; D'

Referencias:

http://sed.sourceforge.net/sed1line.txt
http://sed.sourceforge.net/sedfaq.html
https://www.gnu.org/software/sed/manual/sed.html  

Bash / sh

Bash Script

Un Shell Script no es más que un fichero con sentencias para el intérprete que se vaya a utilizar. Entre los intérpretes más utilizados se encuentran: Bash,Perl, Python y PHP para los entornos web.

Argumentos posicionales

En un script se pueden especificar argumentos en una línea de comando, es decir un nombre_de_script+un directorio o más un número o una letra. El script en bash accede a estos parámetros mediante las variables $0, $1, etc.:

  • $0 Nombre del script
  • $1 Argumento uno
  • $2 Argumento dos
  • $3 Argumento tres, así hasta el nueve.
  • $# Número de argumentos total
  • $* Cadena con todos los argumentos
  • shift Desplaza hacia la izquierda los arguementos, el 10 pasa a ser 9 y así posteriormente.
  • $? Código de retorno

El código de retorno

Cada programa que se ejecuta en el shell cuando termina guarda su código de retorno en la variable $?. Este código es un valor numérico que determina si el programa ha terminado de forma correcta. El código de retorno de valor 0 para la correcta ejecucción, cualquier otra valor para la incorrecta ejecucción.

  • $? Código de retorno

Algunos scripts con los principales operadores de bash. comprobar ficheros y directorios, condicionales, bucles, while, until, funciones, etc.:

Redirecciones de entrada y salida

Redirección de salida estándar a un archivo

  • Hace que el descriptor de archivo 6 sea una copia de stdout (descriptor archivo 1)
    • exec 6>&1
  • Abre el archivo «test.data» para escritura
    • exec 1>test.data
  • genera algún contenido
    • echo «data:data:data»
  • recupera stdout original, al hacer que sea una copia del descriptor de archivo
    • 6 exec 1>&6
  • Cierra el descriptor de archivo
    • 6 exec 6>&-

Abre y cierra archivos

  • abre el archivo test.data para lectura
    • exec 6

Salida de órdenes externas

VAR=$(find . -name «*h»)

Condicionales con números

  • -lt menor que <
  • -gt mayor que >
  • -le menor o igual que <=
  • -gr mayor o igual que >=
  • -eq igual ==
  • -ne no igual !=

Condionales con texto

  • = cadenas de texto exactemente iguales

!= cadenas de texto no iguales

  • <
  • >
  • -n la cadena no está vacía
  • -z la cadena está vacía

Condicionales con archivos

  • -e existe
  • -f archivo normal, no es un directorio
  • -s no tiene tamaño 0
  • -d es un directorio
  • -r tiene permiso de lectura para el usuario que lanza el script
  • -w permiso de escritura para el usua…
  • -x permiso de ejecución

Manipulación de texto

${cadena:posicion:longitud}

Por ejemplo en la cadena string=abcABC123ABCabc:

  • echo ${string:0} : abcABC123ABCabc
  • echo ${string:0:1} : a (primer caracter)
  • echo ${string:7} : 23ABCabc
  • echo ${string:7:3} : 23A (3 caracteres desde posición 7)
  • echo ${string:7:-3} : 23ABCabc (desde posición 7 hasta el final)
  • echo ${string: -4} : Cabc (atención al espacio antes del menos)
  • echo ${string: -4:2} : Ca (atención al espacio antes del menos