lunes, 23 de octubre de 2017

Comandos para comprobar puertos abiertos en PC/Servidor remoto

NMAP Es una herramienta de exploración de redes y de sondeo de puertos.
En caso de que no deseen hacer un scaneo detallado, sino que simplemente deseen saber si en el ordenador o servidor está abierto un determinado puerto, sería así:

1.- nmap {IP_O_DOMINIO} -p {PUERTO} | grep -i tcp

Ejemplo:

nmap localhost -p 22 | grep -i tcp

O bien:

nmap 127.0.0.1 -p 22 | grep -i tcp

2.- nmap {IP_O_DOMINIO} | grep -i tcp

Ejemplo:

nmap localhost | grep -i tcp

O bien:

nmap 127.0.0.1 | grep -i tcp

3.- nmap -sV {IP_O_DOMINIO} | grep -i tcp

Ejemplo:

nmap -sV localhost | grep -i tcp

O bien:

nmap -sV 127.0.0.1 | grep -i tcp

Lo que hace esto es simple, pregunta a la IP o Host si el puerto dado está abierto o no, luego el grep filtra y solo muestra la línea que desean leer, la que les indica si está abierto (open) o cerrado (closed) ese puerto.

nc

nc o netcat, es una opción mucho más simple para saber si un puerto está o no abierto:

1.- nc -zv {IP_O_DOMINIO} {PUERTO}

El -zv lo que hace es simple, la v nos permite ver si está abierto o no el puerto, mientras que la z cierra la conexión tan pronto se comprueba el puerto, de no poner la z entonces tendríamos que hacer un Ctrl + C para cerrar el nc.

telnet

Esta es la variante que hace un tiempo usaba (por desconocimiento de las antes mencionadas), a su vez telnet nos sirve para mucho más que solo saber si un puerto está abierto o no.

telnet {IP_O_HOST} {PUERTO}


El problema de telnet es el cierre de la conexión. Es decidir, en varias ocasiones no podremos cerrar la solicitud de telnet y nos veremos obligados a cerrar esa terminal, o de lo contrario en otra terminal hacer un killall telnet o algo similar. Es por eso que evito usar telnet a no ser que me sea muy necesario.

jueves, 19 de octubre de 2017

WPScan: Analisis de Vulnerabilidades de WordPress


WPScan

Una herramienta que permite realizar analisis de vulnerabilidad en sitios web que fueron creadas en WordPress, puedes saber si hay vulnerabilidades en cores, plugins y temas. También puede detectar si tienes contraseñas débiles y problemas de configuración de seguridad. Se usa la base de datos de wpvulndb.com para comprobar vulnerabilidades de software y el equipo de WPScan tiene una lista de nuevas vulnerabilidades siempre en expansión.

Entrando a WPScan
cd /usr/share/wpscan

Actualizando WPScan
root@kali-kim:/usr/share/wpscan# ruby wpscan.rb --update
_______________________________________________________________
        __          _______   _____                
        \ \        / /  __ \ / ____|               
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9.3
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.

Buscando vulnerabilidades

Con el siguiente comando realizaremos la busqueda de vulnerabilidades en un sitio con WordPress esto permite verificar vulnerabilidades en temas, plugins y usuarios. Nos hara saber si el sitio corre alto riesgo de ser infectado.
Partiendo de esto se deben tomar medidas apropiadas que permita garantizar la seguridad del sitio mediante actualizaciones y/o mediante la desactivación de problemas de seguridad señalados.

ruby2.3 ./wpscan.rb --url http://www.dominio.com

Comprobando vulnerabilidades en los plugins

Para comprobar vulnerabilidades en los plugins que se encuentran en el sitio web creado en WordPress se debe agregar el siguiente argumento -enumerate vp el cual permite comprobar el estado en el que estan los plugins del sitio

ruby2.3 ./wpscan.rb --url http://www.dominio.com --enumerate vp

Si se encuentra alguna vulnerabilidad en plugins, usted verá iconos con un signo de exclamación rojo y referencias para información adicional. Cualquier plugin vulnerable debe ser removido y reemplazado si no se puede actualizar para eliminar esta vulnerabilidad.

Comprobando temas vulnerables 

De manera similar al ejemplo anterior, al añadir –enumerate vt al comando inicial, se comprueba si hay vulnerabilidades en los temas de sitios WordPress.

ruby2.3 ./wpscan.rb --url http://www.dominio.com --enumerate vt
ruby2.3 ./wpscan.rb --url http://www.dominio.com --enumerate t

Comprobando la Enumeración de Usuario
Cuando los hackers conocen sus nombres de usuario de WordPress, un ataque de fuerza bruta se realiza con éxito ya que se hace más fácil.

Para descubrir los logins de usuario de su sitio, utilize el argumento –enumerate u en el fin del comando.

ruby2.3 ./wpscan.rb --url http://www.dominio.com --enumerate u


En un escenario ideal, no se debería ser capaz de obtener la lista de logins de los usuarios de su sitio de WordPress.

Adivinación de Contraseñas

Ahora vamos a intentar usar una variedad de contraseñas. Si usted tiene una lista de contraseñas, WPScan puede utilizarla para tratar de iniciar sesión con cada usuario que se encuentra. A través de este método, se puede ver si alguno de sus usuarios están usando contraseñas débiles.

Se puede crear una lista de palabras, es simplemente un archivo de texto con contraseñas en cada línea. Los hackers tienen enormes colecciones de scontraseñas, pero usted puede crear un simple documento de texto con un número de contraseñas significante. Es necesario que el archivo se coloque en su directorio wpscan para que el WPScan pueda utilizarlo fácilmente.
Cuando usted tiene una lista de palabras en el directorio WPScan, puede agregar un argumento –wordlist con el nombre del archivo de la lista de palabras. También puede especificar el número de threads que se utiliza al mismo tiempo para realizar la lista. Dependiendo del tamaño de la lista, usted puede tomar mucho tiempo para ejecutar la tarea.

ruby2.3 ./wpscan.rb --url http://dominio.com --wordilist passwords.txt threads 50


Aqui les coloco mas ejemplos de esta gran herramienta
Examples :

-Further help ...
ruby ./wpscan.rb --help

-Do 'non-intrusive' checks ...
ruby ./wpscan.rb --url www.example.com

-Do wordlist password brute force on enumerated users using 50 threads ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
ruby ./wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
ruby ./wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
ruby ./wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby ./wpscan.rb --url www.example.com --enumerate tt

-Use a HTTP proxy ...
ruby ./wpscan.rb --url www.example.com --proxy 127.0.0.1:8118

-Use a SOCKS5 proxy ... (cURL >= v7.21.7 needed)
ruby ./wpscan.rb --url www.example.com --proxy socks5://127.0.0.1:9000

-Use custom content directory ...
ruby ./wpscan.rb -u www.example.com --wp-content-dir custom-content

-Use custom plugins directory ...
ruby ./wpscan.rb -u www.example.com --wp-plugins-dir wp-content/custom-plugins

-Update the DB ...
ruby ./wpscan.rb --update

-Debug output ...
ruby ./wpscan.rb --url www.example.com --debug-output 2>debug.log

miércoles, 27 de septiembre de 2017

Cómo saber los puertos abiertos o conexiones establecidas por nuestro servidor

Para evaluar las conexiones establecidas a un servidor o equipo mediante ssh y verificar que puertos estan a escuchas de un servidor se puede verificar con el siguiente comando

Vamos a un terminal -> entramos como root -> y colocamos el siguiente comando

sudo netstat -punta

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp         0      0 127.0.0.1:25             0.0.0.0:*               LISTEN      2101/exim4    
tcp         0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      17132/zabbix_agentd
tcp         0      0 127.0.0.1:3306         0.0.0.0:*               LISTEN      1477/mysqld    
tcp         0      0 0.0.0.0:51598           0.0.0.0:*               LISTEN      928/rpc.statd  
tcp         0      0 0.0.0.0:111               0.0.0.0:*               LISTEN      919/rpcbind    
tcp         0      0 0.0.0.0:80                 0.0.0.0:*               LISTEN      1037/nginx -g daemo
tcp         0      0 0.0.0.0:45296           0.0.0.0:*               LISTEN      947/sshd      
tcp         0      28 106.135.9.105:45296     186.185.69.207:38690    ESTABLISHED 17227/sshd: kimha [
tcp6       0      0 ::1:25                  :::*                             LISTEN       2101/exim4    
tcp6       0      0 :::43967              :::*                             LISTEN       928/rpc.statd  
tcp6       0      0 :::10050              :::*                             LISTEN      17132/zabbix_agentd
tcp6       0      0 :::111                  :::*                             LISTEN       919/rpcbind    
tcp6       0      0 :::45296              :::*                             LISTEN       947/sshd      
udp        0      0 0.0.0.0:111              0.0.0.0:*                                  919/rpcbind    
udp        0      0 0.0.0.0:670              0.0.0.0:*                                  919/rpcbind    
udp        0      0 127.0.0.1:680          0.0.0.0:*                                  928/rpc.statd  
udp        0      0 0.0.0.0:41696          0.0.0.0:*                                  928/rpc.statd  
udp6      0      0 :::40337             :::*                                                  928/rpc.statd  
udp6      0      0 :::111                 :::*                                                  919/rpcbind    
udp6      0      0 :::670                 :::*                                                  919/rpcbind    

lunes, 21 de agosto de 2017

Instalar JBoss Application Server en Linux



1.- Descarga de JBoss Application Server (JBoss AS)

wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip

2.- Instalación de JAVA JDK

Nota: CentOS por defecto en su instalación base trae Java instalado. se puede verificar con el siguiente comando

# java -version

# rpm -qa | grep jdk

Si no lo tiene instalado se realiza la instalación de la siguiente manera

# yum install java-1.7.0-openjdk

3.- Instalación de JBoss

La intalación a partir del paquete precompilado (binary.zip) es sencilla y se realiza de la siguiente manera

# mv jboss-as-7.1.1.Final.zip /opt
# cd /opt/ && unzip jboss-as-7.1.1.Final.zip
# ln -s /opt/jboss-as-7.1.1.Final /opt/jboss
# ls -l /opt/

4.- Configuración de JBoss

El servidor de aplicaciones no va correr como root, se deben crear usuarios especificos para la ejecución de JBoss

# adduser jboss
# passwd jboss

Configuramos las variables de entorno necesarias para que se pueda ejecutar el servidor de aplicaciones

# su - jboss
$ vi ~/ .bashrc

Las variables necesarias son JAVA_HOME , PATH (Añadir el path de java y de JBoss) y JBOSS_HOME


# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
        
export JBOSS_HOME=/opt/jboss
export PATH=$PATH:$JBOSS_HOME/bin

Se puede recargar las variables de entorno ejecutando

$ bash



source .bashrc

como root, se debe cambiar el propietario del directorio JBoss al nuevo usuario creado

# chown -R jboss.jboss /opt/jboss-as-7.1.1.Final

5.- Iniciar el JBoss

Hay varias modalidades de arrancar el JBoss, se puede inicar una unica instancia en modo (standalone) o como (managed domain)

El standalone: permite una instancia local unica
El managed domain: permite controlar y configurar multiples instancias de JBoss de varias maquinas.


Para arrancar el modo standalone ejecutamos el siguiente comando.
standalone:
# su - jboss
$ $JBOSS_HOME/bin/standalone.sh

managed domain
# su - jboss
$ $JBOSS_HOME/bin/domain.sh

Si todo ha salido bien, la ejecución mostrará lo siguiente:

=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss

  JAVA: /usr/lib/jvm/jre-1.7.0-openjdk/bin/java

  JAVA_OPTS:  -server -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml

=========================================================================

21:46:04,082 INFO  [org.jboss.modules] JBoss Modules version 1.1.1.GA
21:46:06,487 INFO  [org.jboss.msc] JBoss MSC version 1.0.2.GA
21:46:07,130 INFO  [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting
21:46:18,898 INFO  [org.xnio] XNIO Version 3.0.3.GA
21:46:18,951 INFO  [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
21:46:19,451 INFO  [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA
21:46:19,638 INFO  [org.jboss.remoting] JBoss Remoting version 3.2.3.GA
21:46:20,265 INFO  [org.jboss.as.configadmin] JBAS016200: Activating ConfigAdmin Subsystem
21:46:20,310 INFO  [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers
21:46:20,635 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 44) JBAS013101: Activating Security Subsystem
21:46:20,630 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 38) JBAS011800: Activating Naming Subsystem
21:46:20,632 INFO  [org.jboss.as.osgi] (ServerService Thread Pool -- 39) JBAS011940: Activating OSGi Subsystem
21:46:20,899 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
21:46:22,029 INFO  [org.jboss.as.security] (MSC service thread 1-2) JBAS013100: Current PicketBox version=4.0.7.Final

[...]
21:46:31,249 INFO  [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:4447
21:46:31,836 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
21:46:32,138 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
21:46:32,145 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 30736ms - Started 133 of 208 services (74 services are passive or on-demand)


La consola de administración y el servicio sólo estan disponibles en local:

21:46:31,249 INFO  [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:4447
21:46:32,138 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990

Para modificar y que escuche por otras IP de la maquina se debe realizar el cambio en el siguiente archivo:

# nano /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

<interface name="management">
 <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
 </interface>
 <interface name="public">
 <inet-address value="${jboss.bind.address:127.0.0.1}"/>
 </interface>

Si queremos que escuche por todas las IP:

<interface name="management">
 <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
 </interface>
 <interface name="public">
 <inet-address value="${jboss.bind.address:0.0.0.0}"/>
 </interface>


miércoles, 12 de julio de 2017

Hyperterminal en Linux


Para las personas que manejan los dispositivos de hardware, tales como el almacenamiento, routers y muchos más utilizando Microsoft Windows, el hiper terminal plazo es una cosa familiar. Ellos usan hiper terminal para conectarse a todos los dispositivos mencionados anteriormente, utilizando un cable serie. Pero lo que si usted tiene que manejar todos los dispositivos usando linux? 

La respuesta es, linux tiene 2 alternativas a la hiper terminal; uno es de línea de comandos basada en y el otro es basado en GUI. Permítanme empezar con la herramienta de línea de comandos primero. Se llama minicom. Puede instalar esta herramienta utilizando el gestor de paquetes de su máquina Linux. En Fedora / RedHat / Debian / CentOS:

 # yum install minicom

Aquí es donde puede configurar la velocidad de transmisión, el dispositivo de serie que desee utilizar, etc Después de terminar con el ajuste, guardarla para que usted no tiene que hacerlo todo el tiempo. Usted puede guardar por defecto. Dfl archivo, con el nombre de. Minirc.dfl en la carpeta de inicio, o puede especificar el nombre y ubicación ustedes mismos. Para cambiar la configuración guardada, sólo tiene que utilizar el comando anterior de nuevo. 

La segunda herramienta se llama cutecom, un terminal serie gráfica. Para instalarlo en Fedora, CentOS, Debian o redhat:

 # yum install cutecom

Es más fácil de usar ya que cuenta con interfaz gráfica de usuario. La imagen siguiente muestra cutecom pantalla principal, donde se puede configurar el dispositivo, paridad, velocidad de transmisión, etc

martes, 27 de junio de 2017

Evitar que wordpress solicite datos ftp al instalar plugin / template / widget



Cuando vamos a instalar varios temas para probar, varios plugins y widgets nos ralentiza bastante el tener que estar introduciendo los datos de ftp para cada uno de los componentes a instalar, para evitarlo podemos probar lo sigiuente.

Editamos el fichero wp-config.php y añadimos esta línea:

define('FS_METHOD', 'direct');



Reinicias el servicio web y listo

Listar conexiones TCP y UDP establecidas


Utilizando la herramienta netstat es posible listar las conexiones TCP y UDP establecidas en un sistema GNU/Linux. De esta manera es posible tener una noción del número de clientes conectados con nuestro servidor. Aunque, jugando un poco con la salida de netstat, también es posible determinar exactamente el número total de conexiones establecidas y el número de clientes únicos por IP.

Listar todas las conexiones TCP y UDP
# netstat -tun


Listar todas las conexiones TCP y UDP con sus procesos y nombre del programa
# netstat -tun -p


Listar todas las conexiones TCP y UDP con sus procesos, nombre del programa y si es establecida
netstat -tun -p | grep EST


Para mostrar solo la cantidad de conexiones establecidas
# netstat -tun -p | grep EST | wc -l



Un cliente puede establecer varias conexiones simultáneamente. Por ejemplo, al momento de cargar una página Web, cada cliente establece varias conexiones en simultáneo con el servidor HTTP, para descargar los recursos de la página en paralelo (y de esta forma acelerar la descarga de la página).
Eliminando los espacios en blanco repetidos y cortando la IP remota (Foreign Address), es posible obtener el listado de clientes únicos (por IP)
# netstat -tun | grep EST | tr -s '[:space:]' | cut -d':' -f2 | cut -d' ' -f2 | sort | uniq

Con la opción -e es posible visualizar información adicional como el ID de usuario y número de i-nodo



Con -s, netstat muestra estadísticas para cada protocolo. Por ejemplo, para ver las estadísticas del protocolo ICMP



miércoles, 14 de junio de 2017

Tipos de Sitemap

Los mapas del sitio no sólo ayudan a los buscadores a encontrar simples páginas, sino también videos, imágenes, noticias y contenidos para móviles.

La extensión del protocolo de Sitemaps admite:

Sitemaps de vídeo – Puedes aumentar las posibilidades de que tus videos sean descubiertos por los buscadores si los incluyes en un mapa del sitio. Los Sitemaps de vídeo te permiten incluir la URL donde se encuentra el video, pero también el título, la descripción la localización del thumbnail.

Sitemaps de imágenes – Al igual que ocurre con los Sitemaps de vídeo, también puedes mejorar la indexación de tus imágenes si las añades a un Sitemap.

Sitemaps de noticias – Permiten controlar el contenido que envías a Google Noticias.

Sitemaps de móviles – Indica la ruta donde se encuentran los contenidos para móviles de tu sitio.

Qué es un Sitemap XML


Sitemap es un archivo escrito en el lenguaje de marcas extensible (extensible Markup Language o XML) que proporciona una lista de las páginas del sitio junto con otros datos. Esta información ayuda a los buscadores a identificar las páginas que pueden rastrear y los caminos que conducen a ellas.

Por ello, cuando tienes problemas para indexar ciertas páginas, un Sitemap hace más probable que el buscador las encuentre y pase a visitarlas, aunque no lo garantiza.

Matt Cutts, jefe del departamento de web spam de Google, lo explica así:

Imagina que tienes en tu sitio las páginas A, B, y C. Nosotros encontramos las páginas A y B mediante el seguimiento natural de tus enlaces. Entonces creas un mapa del sitio con las páginas B y C. Ahora hay una posibilidad (pero no una promesa) de que exploremos la página C. No eliminaremos la página A sólo porque no esté listada en tu Sitemap. Y sólo porque incluiste una página que no conocíamos tampoco garantiza que la vayamos a rastrear.

viernes, 14 de abril de 2017

20 de los comandos imprescindibles para un Sysadmin

/PROC: Como podréis comprobar no es un comando, sí, está en la lista de los 20 que he comentado pero veo muy interesante comentar que aquí se encuentran archivos muy interesantes para el sistema como 'meminfo' o 'cpuinfo' por mencionar un par de ellos, que nos mostrarán información muy relevante sobre los componentes de nuestro equipo. Un simple 'cat' a estos archivos y podremos ver toda la información que contienen sin salir del prompt de la consola.

CACTI: Realizará gráficas de rendimiento en los diferentes dispositivos que envíen información vía SNMP.

FREE: Este comando mostrará el estado y uso de la memoria de nuestro equipo o sistema.

GNOME SYSTEM MONITOR: Monitoriza el rendimiento de nuestro sistema, y nos lo muestra en una interfaz muy amigable.

IOSTAT: Informa de los datos en entrada/salida de nuestra CPU y discos.

IPTRAF: Monitoriza todo el tráfico que entra y sale de nuestro equipo (interfaces, puertos, etc...). Es algo más que un comando, en realidad se trata de una aplicación muy lograda.

JFFNMS: Genera gráficas para monitorizar equipos a gran escala.

MPSTAT: Muy útil para procesadores Multi-Core, ya que permite ver el rendimiento de cada núcleo del procesador de forma independiente. 

NAGIOS: Sistema de monitorización muy versátil, puesto que por la cantidad de comandos que acompañan a la aplicación, y la infinidad de plugins existentes para la misma, se puede llevar el seguimiento de grandes cantidades de equipos, servidores y redes. Además mediante un SMS gateway podremos configurar el sistema para que nos alerte al móvil de cualquier incidencia.

NETSTAT: Muestra las conexiones abiertas en nuestro equipo.

PMAP: Informa sobre el rendimiento de la memoria del sistema, tanto en general como la memoria que consume un proceso concreto.

PS: Muestra los procesos que se están ejecutando en nuestro sistema, y según los parámetros que le pasemos al comando, también el consumo de memoria y procesador de cada uno de los listados.

SAR: Realiza reportes de la actividad del sistema.

SS: Muestra diferentes estadísticas de los sockets de nuestro equipo. Su función es similar a Netstat.

STRACE: Realiza debugs de servidores web, Apache, Httpd, lighthttp, entre otros.

TCPDUMP: Muestra todo el tráfico que circula por un puerto concreto en tiempo real.

TOP: Nos informa en tiempo real del estado de nuestro servidor. Por defecto si no le pasamos ningún parámetro nos mostrará el uso de CPU, con un muestreo cada 5 segundos.

UPTIME: Muestra información similar a la del comando TOP, además de otros datos interesantes como el tiempo que lleva encendido el equipo, la carga de procesos, el número de usuarios, etc.

VMSTAT: Informa del estado del equipo o sistema, tanto el hardware como los procesos que se están ejecutando, y todo en tiempo 'casi' real.

W: Muestra qué usuarios están conectados al equipo y además, podremos saber qué están haciendo en ese momento.

Monitorizar cambios en las carpetas Linux con Pyinotify

Qué es Pyinotify
Pyinotify es un paquete de Python el cual provee herramientas, entre las cuales tenemos variables, señales y condiciones, las cuales harán de la tarea de gestión algo mucho más específico sobre los posibles cambios efectuados en un directorio. Estas tres herramientas cumplen un rol fundamental así:
  • Variables: Contienen objetos Python
  • Señales: Son básicamente listas de manejadores los cuales son activados al momento de emitirse una señal.
  • Condiciones: Estas son variables booleanas ligadas a una señal que se emite cuando su estado cambia.

Requisitos para la instalación de Pyinotify

Para que pyinotify funcione de la forma correcta será necesario contar con dos requisitos fundamentales los cuales son:
Linux kernel 2.6.13 o superior
Python 2.4 o superior

Para conocer que versión tenemos de cada uno de estos requisitos ejecutaremos los siguientes comandos:
uname -r (Versión del kernel)
python -V (Versión de Python)

root@debian# uname -r
3.16.0-4-amd64
root@debian# python -V
Python 2.7.9

1. Cómo instalar y ejecutar Pyinotify en Linux
Paso 1

Para instalar la aplicación haremos uso de pip y para ello ejecutaremos los siguientes comandos dependiendo de la distro de Linux usada:
CentOS
sudo yum install python-pip
Debian / Ubuntu
sudo apt install python-pip
Fedora
sudo dnf install python-pip

Aceptamos la descarga y se procede a instalar pyinotify

Instalacion de Pyinotify

Para respectiva instalación de pyinotify ejecutamos el siguiente comando para la instalación de la aplicación:

sudo pip install pyinotify

2. Cómo usar Pyinotify 
Paso 1

Para usar pyinotify en el monitoreo de un determinado directorio ejecutaremos el siguiente comando:

python -m pyinotify -v /home/Kim

Paso 2

Con esto analizaremos los cambios en el directorio /home.

Paso 3

Podemos ver que la estructura de pyinotify es:
Fecha y hora del evento.
Tamaño del evento.
Tipo de evento.
Ruta donde ocurrió el evento.

Paso 4

Para salir del monitoreo de pyinotify usaremos la combinación de teclas siguiente. Si no especificamos un directorio a analizar la herramienta usara el directorio /tmp por defecto.
ctrl + c

viernes, 17 de marzo de 2017

Instalación de VirtualBox en Debian Jessie 8


Agregue la siguiente línea a su /etc/apt/sources.list
Para esto ingresamos de la siguiente manera nano /etc/apt/sources.list

deb http://download.virtualbox.org/virtualbox/debian jessie contrib

(Hasta la versión 3.2, los paquetes se encontraban en la sección no libre, comenzando con la versión 4.0, se encuentran en la sección contrib).

Luego procedemos a descargar la clave publica

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

La clave pública de Oracle para apt-secure puede descargarse de la siguiente forma
root@Laptop-Debian:~# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
OK
root@Laptop-Debian:~# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
OK

La huella digital clave de oracle_vbox_2016.asc es
B9F8 D658 297A F3EF C18D 5CDF A2F6 83C5 2980 AECF
 Oracle Corporation (clave de firma de archivo de VirtualBox) <info@virtualbox.org>

La huella digital clave de oracle_vbox.asc es
7B0F AB3A 13B9 0743 5925 D9C9 5442 2A4B 98AB 5139
 Oracle Corporation (clave de firma de archivo de VirtualBox) <info@virtualbox.org>

Por ultimo actualizamos el sistema 
Sudo apt-get update

Y luego instalamos VirtualBox-5.1
Sudo apt-get install virtualbox-5.1

viernes, 3 de marzo de 2017

Cómo desactivar ciertos comandos a un usuario específico


Con la finalidad de aprender mas sobre políticas en estaciones de trabajo linux se realiza este post, donde se explicara como desactivar ciertos comandos como chmod, chown y rm a un usuario especifico en el equipo y tomando en cuenta que ni en su propio home “/home/nom_usuario” pueda ejecutarlo.

Primero lo intente con visudo pero luego desistí de esa idea ya que se usa “sudo” para darle poder de “root” a un usuario en ciertas circunstancias, es decir, se puede negar un comando usando exclamación, por ejemplo “!/bin/ls”, obviamente cuando haga “sudo ls” no va poder ejecutar el comando, pero si lo hace en su home si lo va poder hacer sin hacer uso de “sudo”, entonces esto no era lo que se necesitaba. Se quería que no lo ejecutara en ningún y por ningún lado.

Al investigar me encontré con “lshell”, esta herramienta permite bloquear comandos a usuarios permitiendo así mejorar las políticas dentro de sus equipos con Linux. 

A continuación se detallan los pasos de instalación y uso de esta herramienta:

Debian 8

Instalación
root@Laptop-Debian:/home/usuario# aptitude install lshell


Configuración
Luego de instalar se procede a editar este archivo “/etc/lshell.conf”



Una vez que se ingresa al archivo "/etc/lshell.com" se procede a ingresar al final del archivo el usuario que queremos bloquearle el uso de ciertos comandos:

[nombre-usuario]
allowed = 'all' - ['chmod', 'chown', 'rm']

allowed = Permite
all = todo los comandos
- = menos
['chmod', 'chown', 'rm'] = comandos a bloquear


Por ultimo se guardan los cambios y ejecutar el siguiente comando 

root@Laptop-Debian:/home/usuario# chsh -s /usr/bin/lshell nombre-usuario


Si todos los pasos fueron realizados satisfactoriamente, el usuario “nombre-usuario” no podrá ejecutar chmod, chown y rm de ninguna manera

Ref: https://technomoreblog.wordpress.com/2016/08/30/como-desactivar-cierto-comandos-a-un-usuario-especifico/

martes, 21 de febrero de 2017

Datos que puedes obtenerde una IP


Que es una IP
IP es la sigla de Internet Protocol o, en nuestro idioma, Protocolo de Internet. Se trata de un estándar que se emplea para el envío y recepción de información mediante una red que reúne paquetes conmutados. El IP no cuenta con la posibilidad de confirmar si un paquete de datos llegó a su destino.

Que es una IP publica
Una dirección IP publica es un número que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente un ordenador) dentro de una red, en este caso el numero identifica tu punto de enlace con internet.

Que es una IP privada
Las direcciones IP (siglas de Internet Protocol) son etiquetas numéricas utilizadas para identificar cada uno de los ordenadores u otros dispositivos que están conectados a una red, ya sea una red de trabajo privada o una red pública como es la red World Wide Web.

¿Ahora nos preguntamos que datos puedo optener de una ip?

Puedo sacar la ciudad y el país de la ip usando geolocalización y las bases de datos públicas, usare la ip de yahoo (206.190.36.45) de prueba:

http://aruljohn.com/ip/206.190.36.45
http://www.myiptest.com/staticpages/index.php/IP-Lookup
https://iplookup.flagfox.net/
http://www.ip2location.com/demo
de este listado recomiendo el ip2location que es la que más información me arroja, además que su servicio es el de vender las bases de datos de ips, por tanto es de los más actualizados.

Puedo saber que se han descargado vía torren de esa dirección IP

http://iknowwhatyoudownload.com/en/peer/?ip=206.190.36.45
Puedo saber que dominios hay asociados a esa IP

http://www.yougetsignal.com/tools/web-sites-on-web-server/
http://www.ip-address.org/reverse-lookup/reverse-ip.php
http://www.ip2hosts.com/
Puedo saber qué servicios corren en una dirección ip:

http://nmap.online-domain-tools.com/
https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap
¿que otra información puedo sacar de una dirección ip?, recuerden que no estamos teniendo en cuenta los dominios, ni subdominios

miércoles, 25 de enero de 2017

Ejecutar un script de PostgreSQL

Un script de posgtgreSQL se ejecuta desde línea de comandos. El comando es

psql -h host -U usuario -W -f fichero.sql BaseDatos

donde:
-h host indica al nombre del servidor (localhost si no se especifica esta opcion)
-U indica el usuario de base de datos
-W es para que nos pida la password
-f indica el fichero.sql que queremos ejecutar y BaseDatos el nombre de la base de datos. 

viernes, 13 de enero de 2017

Instalar LAMP en Debian Jessie


LAMP consiste en el sistema operativo basado en Linux, el servidor web Apache, base de datos MySQL y el lenguaje de scripting PHP, es una gran base para la web o el desarrollo de aplicaciones. Instalado en conjunto, esta pila de software permite a su servidor para alojar sitios web dinámicos y aplicaciones web.

Instalar aptitude
$ sudo apt-get install aptitude

Actualizar el Sistema
$ sudo aptitude update

Instalar Apache
$ sudo aptitude install apache2

Instalar MySQL
$ sudo aptitude install mysql-server php5-mysql

Esto instalará MySQL y otros paquetes requeridos. Tenga en cuenta que la rutina de instalación le pedirá que introduzca una nueva contraseña para el usuario root de MySQL

Para mantener a su nuevo servidor de base de datos seguro, hay una secuencia de comandos adicional que necesita para funcionar. Escriba lo siguiente para empezar:
$ sudo mysql_secure_installation

En este punto, el script ahora le hará unas cuantas preguntas. Cuando se le solicite, siga adelante e introduzca la contraseña para la cuenta MySQL root. 

El sistema le pedirá que:
Cambiar la contraseña de root? [Y/n] n
Puesto que ya pusimos la contraseña MySQL root en la instalación, se puede decir que no a este punto. 

El script le preguntará:
Remove anonymous users? [Y/n] y
Responda afirmativamente para eliminar la opción de los usuarios anónimos para mayor seguridad. Usted puede responder sí al resto de las preguntas, introduciendo “y”.

A continuación, la secuencia de comandos le pedirá que si desea permitir o no logins remotos para la cuenta de root. Por razones de seguridad, no permitir logins remotos para root a menos que su entorno requiera esto.

Por último, la secuencia de comandos le pedirá que retire la base de datos de prueba y vuelva a cargar la tabla de privilegios. Conteste sí a ambas cosas. Esto eliminará la base de datos de prueba y procesará los cambios de seguridad.

Si todo es correcto, una vez hecho, el script devolverá con:
All done! If you have completed all of the above steps, your MySQL installation should now be secure.

Instalar PHP
$ sudo aptitude install php5-common libapache2-mod-php5 php5-cli

Acepte la instalación y luego reinicie apache
sudo service apache2 restart

Todos los sitios que cree deberá colocarlos en la carpeta
/var/www/html

Para ver los sitios creados digite su IP pública y estática en el navegador ó si es una máquina local digite localhost