miércoles, 27 de diciembre de 2017

Pasos para verificar la correcta configuración de un DNS

Primero iniciamos con el comando Host
Devuelve los registros DNS configurados para un dominio.
No incluye los registros configurados para los subdominios.

Sintaxis
#host [modificadores] dominio

#host google.com
google.com has address 172.217.2.78
google.com has IPv6 address 2607:f8b0:4008:80c::200e
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.

⧫ Configuración de correo
⧫ Dirección Ip

Para mostrar los registros de un tipo MX:
#host -t MX google.com
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

⧫ Configuración de correo

Para obtener la dns inversa
#host 172.217.2.78
78.2.217.172.in-addr.arpa domain name pointer ord08s13-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer mia09s01-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer mia09s01-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer ord08s13-in-f14.1e100.net.

#host -t PTR 172.217.2.78
78.2.217.172.in-addr.arpa domain name pointer mia09s01-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer ord08s13-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer ord08s13-in-f14.1e100.net.
78.2.217.172.in-addr.arpa domain name pointer mia09s01-in-f14.1e100.net.

#host -t A google.com
google.com has address 172.217.0.174


Ahora pasamos al comando dig, el cual es mas versátil que el host

#dig google.com

; <<>> DiG 9.9.5-9+deb8u9-Debian <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53622
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 299 IN A 172.217.2.78

;; Query time: 212 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Dec 27 15:31:40 VET 2017
;; MSG SIZE  rcvd: 55


#dig -t MX google.com

; <<>> DiG 9.9.5-9+deb8u9-Debian <<>> -t MX google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39792
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 599 IN MX 20 alt1.aspmx.l.google.com.
google.com. 599 IN MX 40 alt3.aspmx.l.google.com.
google.com. 599 IN MX 10 aspmx.l.google.com.
google.com. 599 IN MX 50 alt4.aspmx.l.google.com.
google.com. 599 IN MX 30 alt2.aspmx.l.google.com.

;; Query time: 61 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Dec 27 15:32:08 VET 2017
;; MSG SIZE  rcvd: 147


dig @172.217.2.78 google.com

Ahora para saber si el DNS está resolviendo correctamente los nombres y las IPs


#nslookup 172.217.2.78
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
78.2.217.172.in-addr.arpa name = ord08s13-in-f14.1e100.net.
78.2.217.172.in-addr.arpa name = mia09s01-in-f14.1e100.net.
78.2.217.172.in-addr.arpa name = ord08s13-in-f14.1e100.net.
78.2.217.172.in-addr.arpa name = mia09s01-in-f14.1e100.net.

Authoritative answers can be found from:


#nslookup mail.google.com
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: google.com
Address: 172.217.2.78


jueves, 23 de noviembre de 2017

Instalación de Apache Tomcat en Centos 7 y Debian


1.- Actualización del Sistema
Centos7 
yum update

Debian
apt update

2.- Instalación de Java

En el siguiente paso debemos realizar la instalación de Java para que Apache Tomcat pueda ejecutar todas aquellas aplicaciones basadas en Java. 

Para realizar este paso de instalación usaremos el siguiente comando:

Centos7
yum install java-1.8.0-openjdk-devel

El paquete java-1.8.0-openjdk contiene solo Java Runtime Environment. Si desea desarrollar programas Java, instale el paquete java-1.8.0-openjdk-devel.


Debian
apt install openjdk-8-jdk

El paquete openjdk-8-jre contiene solo Java Runtime Environment. Si desea desarrollar programas Java, instale el paquete openjdk-8-jdk.

Nota: Ahora procedemos aceptar la descarga y posteriormente esperamos que la misma sea instalada. 

Por defecto la ruta y el directorio donde se ha instalado Java es /usr/lib/jvm/jre, debemos tomarlo en cuenta para la configuración de Apache Tomcat.

3.- Creación de usuario para Tomcat

Una vez que se instala Java de manera correcta, procedemos a realizar la creación de un usuario que gestionara todo lo relacionado con Apache Tomcat (ESTE USUARIO NO PUEDE SER ROOT)

Primero creamos el grupo
sudo groupadd tomcat

Ahora procedemos a crear el usuario tomcat y añadiremos los siguientes ajustes a dicho usuario:

-Primero hacerlo miembro del grupo tomcat
-Crearemos un directorio en la ruta opt/tomcat (Es donde se instalara Apache Tomcat)
-Agregaremos el parametro /bin/false (Con esto nadie accedera a la cuenta)

Luego procedemos a ejecutar el comando 
sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

Una vez realizado este paso podemos descargar e instalar Apache Tomcat 

4.- Descarga e Instalación de Tomcat

Entramos en home para luego iniciar la descarga en ese directorio

cd ~

Posteriormente instalamos el paquete wget y luego iniciamos la descarga de tomcat desde el siguiente link

Link de descarga -> http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz

Centos7
yum install wget

Debian
apt install wget

wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz

Esperamos unos minutos que la descarga concluya y sea instalada de manera correcta.

Como lo mencionamos anteriormente vamos a instalar Apache Tomcat 8 en la ruta /opt/tomcat pero por defecto esta ruta no existe, para crearla debemos usar el siguiente comando

sudo mkdir /opt/tomcat

Una vez creado el directorio /opt/tomcat procedemos a extraer el archivo que descargamos .tar.gz en la ruta /opt/tomcat con el uso del siguiente comando

sudo tar xvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

Esperamos unos minutos que se extraiga Apache Tomcat en la ruta de /opt/tomcat.
Una vez que se extraigan todos los archivos se procede a la asignación de permisos correspondientes

5.- Actualizar permisos al usuario Tomcat

Con la finalidad de que el usuario tomcat pueda acceder a la ruta de la instalación de Tomcat vamos a realizar el siguiente paso. Debemos ir a la ruta donde se instalaron todos los archivos de Apache Tomcat (/opt/tomcat) usando el siguiente comando

cd /opt/tomcat

Una vez que estamos dentro de la ruta vamos a ingresar los siguientes parametros con la finalidad de conceder los permisos de escritura y lectura en dicha ruta

sudo chgrp -R tomcat conf 
sudo chmod g+rwx conf
sudo chmod g+r conf/*

Finalmente vamos a permitir que el usuario tomcat sea el propietario de los logs de aplicaciones web y demas componentes del archivo conf, para ello ingresamos lo siguiente:

sudo chown -R tomcat webapps/ work/ temp/ logs

Ahora procedemos a instalar el archivo system

6.- Instalar el archivo system

En este paso debemos instalar el archive systemd ya que Apache Tomcat va a correr como un servicio, es por eso que ingresaremos lo siguiente para crear el archivo tomcat.service

Creando el archivo
sudo nano /etc/systemd/system/tomcat.service

Aqui podemos observar que se despliega un archivo en blanco por lo cual debemos agregar lo siguiente:

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target


Guardamos los cambios utilizando Ctrl + O y salimos del editor usando Ctrl + X

sudo systemctl daemon-reload

Una vez que se reinicio el servicio iniciamos la hacilitación del tomcat

7.- Habilitar el servicio de Apache Tomcat

Una vez hayamos conluido el proceso anterior vamos a iniciar el servicio de Apache con el siguiente comando

sudo systemctl start tomcat

Luego habilitamos Apache Tomcat usando el siguiente comando

sudo systemctl enable tomcat

Una vez que se inicio el servicio se puede verificar la instalación de Tomcat en el navegador, para ello debemos conocer la dirección IP de nuestra maquina o servidor, en el caso de ser local http://127.0.0.1:8080 o http://localhost:8080

Abrimos el navegador y colocamos lo siguiente

http://IP-Servidor:8080

Como vemos se accede a la pantalla inicial de Apache y a partir de allí gestionar lo que consideremos necesario.


miércoles, 15 de noviembre de 2017

Instalacion de DHCP en Debian 9

Primero procedemos actualizar el sistema
#apt-get update 

Luego procedemos a buscar el paquete del servicio de DHCP en Debian 9
#apt search isc-dhcp

Una vez indentificado el paquete procedemos a instalar el DHCP para el servidor Debian 9
#apt install isc-dhcp-server

El archivo de configuración principal del servidor DHCP es dhcpd.conf, el cual se encuentra en el directorio /etc/dhcp/. 
El archivo de configuración contiene una variedad de comentarios, reflejados por el símbolo hash (#) y todas las demás líneas no comentadas son parámetros del servidor dhcp (las cuales son usadas para las características generales de configuración del demonio dhcpd) o declaraciones, que describen los rangos de IP de red y las direcciones IP u otros valores de red que el servidor puede enviar a los dispositivos del cliente.

Una buena practica es que antes de editar dicho archivo de configuracion se respalde, para esto será necesario crear una copia de seguridad del archivo original ejecutando los siguientes comandos:

#cd /etc/dhcp/dhcpd.conf
#cp /etc/dhcp/dhcpd.conf{,.backup}
#cat /dev/null > /etc/dhcp/dhcpd.conf

Entramos en el archivo dhcpd.conf y configuramos las siguientes lineas
#nano /etc/dhcp/dhcpd.conf

ddns-update-style none;
#Es un número entero que establece el tiempo de conexión predeterminado en segundos
default-lease-time 600;
#Es un número entero que establece el tiempo máximo de conexión, en segundos
max-lease-time 7200;
#Es una verificación booleana, Si es true, el servidor graba una dirección antes de asignar una concesión en esa dirección a un cliente
#ping true;
#La dirección IP o las direcciones de los servidores DNS que pueden usar los clientes
option domain-name-servers 172.27.15.2, 10.72.81.2;
#El nombre del dominio que será otorgado a los clientes para usar
option domain-name "example.com";
#El servidor es autoritario, este servidor DHCP debería enviar mensajes DHCPNAK a clientes que están mal configurado
authorative;
#Envía registros a syslog facility local7
log-facility local7;
#máscara de red 255.255.255.0: Hace referencia a la subred para la red 192.168.0.10
subnet 192.168.0.1 netmask 255.255.255.0 {
Define el rango de direcciones IP que el servidor DHCP otorgará a los equipos
range 192.168.0.10 192.168.0.20;

option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.254, 10.128.254.254;
option domain-name “example.com”;
#Define la dirección IP de la puerta de enlace o el punto de salida de la red
option routers 192.168.0.1;
#Indica las direcciones IP de los servidores de servicio de nombres NetBIOS (NBNS) o los servidores de servicios de nombres de Internet de Windows (WINS) que utilizan los protocolos SMB / CIFS para compartir archivos en Windows
option netbios-name-servers 192.168.0.11;
#Es un código sobre cómo los clientes de NetBIOS deben intentar la resolución de nombres
option netbios-node-type 8;
get-lease-hostnames true;
use-host-decl-names true;
default-lease-time 600;
max-lease-time 7200;
}

Allí debemos reemplazar las direcciones IP con las adecuadas según sea el caso. Después de editar el archivo de configuración principal y declarar los propios rangos de IP, debemos abrir el archivo /etc/default/isc-dhcp-server y reemplazar el parámetro INTERFACESv4 con el nombre de la interfaz de red que se configurará para la red:

#nano /etc/default/isc-dhcp-server

ctrl+W colocamos INTERFACESv4

y modificamos INTERFACESv4="enp0s3"

luego guardamos

NOTA: -> Recordemos que este nombre o valor lo obtenemos ejecutando el comando ifconfig. 

Una vez completo este punto ejecutaremos los siguientes comandos para reiniciar y ver el estado de ISC
#systemctl restart isc-dhcp-server
#systemctl status isc-dhcp-server

luego evaluamos el status del servicio
#services isc-dhcp-server status

Una vez configurado los clientes con asignación de ip por DHCP ahora deberían comenzar a recibir las respectivas direcciones IP de parte del servidor dhcp.

NOTA: Como reservar direcciones IP Linux para equipos o servidores en la red

En algunas ocasiones será necesario reservar en el DHCP una dirección IP fija para dispositivos de red especiales de la red, como servidores o equipos especiales.

Para ello debemos usar una declaración con el nombre del host al cual se desea otorgar una dirección IP fija y el Control de acceso a medios (MAC). Esta dirección IP reservada se asignará al cliente cada vez que arranque. Debemos reservar una dirección IP fija desde el rango IP que haya sido declarado para la red en el servidor DHCP. La declaración de la dirección IP fija debe estar incluida en las líneas que han sido definidas para el rango de red, accederemos usando nano:

#nano /etc/dhcp/dhcpd.conf
Debemos añadir lo siguiente:

subnet 192.168.0.1 netmask 255.255.255.0 {
range declarations….

host WIN-SERVER {
  hardware ethernet 00:0c:19:bc:2e:e1;
  fixed-address 192.168.0.12;}
}

Guardamos los cambios
restauramos el servicio ejecutando lo siguiente

#systemctl restart isc-dhcp-server

y de esta manera hemos configurado un servidor DHCP con ISC DHCP en Debian 9.

jueves, 2 de noviembre de 2017

Comando PS en Linux

ps

Muestra una instantánea de los procesos actuales. Esta orden admite opciones de las versiones ps propias de System V (precedidas por un guión), de BSD (sin guiones) y de GNU (precedidas por dos guiones).

Algunas de sus opciones son:

-e visualiza información sobre "todos" los procesos del sistema.

-A idem a la opción -e

-j visualiza información sobre el PGID y SID.

 l visualiza "mucha" información sobre los procesos(difiere a poner el signo menos delante).

-f visualiza los parámetros con los que se levanto el proceso.

-a muestra también los procesos de otros usuarios.

-N niega el efecto de cualquier opción que se haya especificado.

-x muestra procesos que no están controlados por ninguna terminal.

-u pepe visualiza información de los procesos del usuario pepe.


Ejemplos de uso:

ps -u root -N visualiza todos los procesos que no sean del usuario root.

ps -aux visualiza información detallada de todos los procesos.


Ejemplos de salidas del comando ps:

Se ejecuta el comando ps con la opción -l

usuario@Laptop-Debian:~$ ps -l

F S   UID   PID     PPID  C PRI  NI ADDR SZ WCHAN  TTY         TIME    CMD
0 S  1000  3308  3301   0  80   0 -  5861  -                     pts/0    00:00:00 bash
0 R  1000  3902  3308   0  80   0 -  2672  -                     pts/0    00:00:00 ps


F PROCESS FLAGS

   1 bifurcado pero no ejecutado.

   4 tiene privilegios de root.

UID ID de usuario.

PID ID del proceso padre

PPID ID del proceso padre.

PGID ID de grupo de un proceso.

PRI Prioridad del proceso.

NI valor de bondad, más elevado menor prioridad.

VSZ Tamaño de la memoria virtual del proceso en Kb.

RSS Tamaño de la memoria física usada en Kb.

WCHAN para los procesos que esperan o dormidos, enumera el evento que espera.

STAT Estado del proceso:

   R Ejecutable.

   D Interrumpió.

   S Suspendido.

   s Es el proceso líder de la sesión.

   T Detenido.

   Z Zombie.

   N Tiene una prioridad menor que lo normal.

   < Tiene una prioridad mayor que lo normal.

TTY nombre de la terminal a la que esta asociado al proceso.

TIME tiempo que lleva en ejecución.

miércoles, 25 de octubre de 2017

Cómo saber los datos de DNS de un dominio


DNS o Domain Name System (Sistema de Nombres de Dominios), es un sistema jerárquico y complejo que ayuda a correlacionar las direcciones IP de Internet con sus respectivas máquinas o servidores, a través de toda la red.

Es decir, cuando escribimos en cualquier buscador un dominio, por ejemplo: https://marketing-digital.com, el sistema de nombres de dominios es el encargado de traducir dicha URL a su correspondiente dirección IP, para así poder realizar el enrutamiento de la petición a través de la red, hasta llegar al servidor destino.

Cada sistema operativo tiene sus propias herramientas para poder conocer las distintas informaciones acerca de un dominio y, en este caso, de las DNS. 

Nosotros vamos a ver como podemos ver esta información en sistemas operativos Linux.

En Linux existe una utilidad de consola llamada host la cual nos permite saber información sobre el dominio que queramos. En este caso vamos a ver como podemos solicitar la información de DNS de un dominio en particular:

Primero procedemos abrir un terminal como root

Luego procedemos a ejecuta el siguiente comando
#host -t NS dominio.com

En función de la información acerca de las DNS que quieras saber, puedes modificar el valor NS para conocer otros valores: A, AAAA, TXT, …

Los distintos registros aplicables a las DNS son:

A – o de direcciones, se encarga de correlacionar una IP con una máquina específica donde están alojados los servicios para el mismo. Se usan para direcciones IP v.4.
AAAA – similar al anterior, enlazan una IP con una determinada máquina, solo que las IPs son direcciones IP v.6, que son la nueva generación de IPs, debido a que la anterior versión, IP v.4, ha llegado al límite de máquinas que puede soportar.
MX – o Mail Exchange (Intercambio de correo), se encargan de redirigir el correo electrónico, de un determinado dominio, a los servidores encargados de su gestión.
CNAME – o Canonical Name, se encarga de enlazar los distintos alias del dominio a su respectivo nombre canónico. Se usa para los subdominios.
NS – o Servidores de Nombres, son los encargados de determinar qué servidores tendrán la información de DNS del dominio. Normalmente suele haber dos, uno principal y otro secundario, para evitar imposibilidades de acceso en el caso de que alguno se encuentre inoperativo.
TXT – proporciona información, en formato de texto, legible o no por una persona, acerca del dominio, a fuentes externas al mismo.
Si necesitas cualquier tipo de información sobre las DNS de un dominio, simplemente puedes usar el comando host anteriormente comentado, junto con alguno de los registros de los que quieras obtener dicha información.

martes, 24 de octubre de 2017

Instalar (LAMP) Linux, Apache, MySQL, PHP en CentOS 7


1.- Instalación de Apache

Apache, es un servidor web HTTP de código abierto para distintas plataformas, que implementa el protocolo HTTP y sitios virtual

Apache se puede instalar con facilidad mediante el gestor de paquetes de CentOS “yum”.

Instalamos de la siguiente manera
#yum install httpd

Una vez que instalamos el apache procedemos a iniciar el servicio en nuestro Cloud Server
#systemctl start httpd.service

Procedemos a verificar que el servicio este funcionando sin novedad
Para esto, escribimos la dirección IP de nuestro Cloud Server en nuestro navegador web
http://IP_del_servidor/

Podremos ver la página por defecto de Apache para CentOS
Si visualizamos bien esta página, significa que el servidor web se instaló correctamente.
Para garantizar que el servicio se ejecute con cada inicio del sistema operativo, es necesario activarlo al inicio, ejecutando:
#systemctl enable httpd.service

2.- Instalación de PHP

PHP es el acrónimo recursivo de PHP: Hypertext Preprocessor, que es un lenguaje enfocado para el desarrollo web que permite ejecutar scripts, conectarse con bases de datos de MySQL/MariaDB y muchas otras características mas.



Para instalar PHP ejecutamos el siguiente comando
#yum install php

Ahora procedemos a reiniciar el servidor web Apache en nuestro Cloud Server para que Apache trabaje con PHP
#systemctl restart httpd.servi
ce

Para nuestro Cloud Server, vamos a instalar el módulo php-mysql ejecutando
#yum install php-mysql

Ahora debemos comprobar que el servidor web Apache trabaje correctamente con nuestra configuración de PHP.

Vamos a crear para esto, un script llamado prueba.php en el directorio web por defecto en la instalación del servidor web Apache.

Por defecto, en un sistema operativo CentOS, debemos guardar nuestro script en la carpeta “/var/www/html/”

Instalación Opcional
-Instalación de PHP 7.0 (optional)

#yum-config-manager --enable remi-php70

#yum -y install php php-opcache

-Instalación de PHP 7.1 (optional)

#yum-config-manager --enable remi-php71


#yum -y install php php-opcache

#nano /var/www/html/prueba.php

En este archivo, agregamos el siguiente contenido y guardamos el archivo:

<?php phpinfo(); ?>

Nuevamente, accedemos a nuestro servidor web Apache desde nuestro navegador web tecleando la siguiente dirección:

http://IP_del_servidor/prueba.php

NOTA: 

Como medida de seguridad, es importante borrar el archivo creado, ya que contiene información sobre el servidor y su configuración que no deben ser públicos.


#rm /var/www/html/prueba.php

3.- Instalación de MariaDB / MySQL

Por ultimo procedemos a realizar la instalación de la base de datos de la siguiente manera

#yum install mariadb-server mariadb

Iniciamos MariaDB con el siguiente comando:

#systemctl start mariadb

Adicionalmente, con la finalidad de seguridad la instalación de MariaDB, ejecutamos el script de seguridad:

#mysql_secure_installation

Una vez que corremos este comando nos solicita una serie de información, como:
-un cambio de contraseña para el usuario root (por default no cuenta con password)
-eliminar el usuario “anonymous”
-negar el acceso remoto al usuario root
-eliminar la base de datos “test”,
-finalmente recargar los privilegios.

#Enter current password for root (enter for none): “ENTER”

OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password: “TECLEAR LA CONTRASEÑA NUEVA
Re-enter new password: “NUEVAMENTE TECLEAR LA CONTRASEÑA NUEVA
Password updated successfully!
Reloading privilege tables..
… Success!

Remove anonymous users? [Y/n] Y
… Success!

Disallow root login remotely? [Y/n] Y
… Success!

Remove test database and access to it? [Y/n] Y
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!

Reload privilege tables now? [Y/n] Y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Como todo servicio, es necesario establecerlo como activo al iniciar nuestro Cloud Server, ejecutando:

#systemctl enable mariadb.service






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

Análisis de Vulnerabilidades de WordPress con WPScan


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.

Descarga de WpScan
#wget https://github.com/wpscanteam/wpscan/archive/master.zip

Copiar al directorio /usr
#cp -R /home/usuario/Descarga/wpscan-master/ /usr/share/

Instalacion de dependencias de WpScan
#aptitude install ruby ruby-dev rubygems curl zlib1g-dev liblzma-dev 

Instalacion de WpScan
#gem install wpscan

Entrando a WPScan
#cd /usr/share/wpscan

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

        WordPress Security Scanner by the WPScan Team
                       Version 3.4.4
          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.

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --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

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --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.

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --url http://www.dominio.com --enumerate vt

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --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.

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --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.

#cd /usr/share/wpscan-master
#cd wpscan
#wpscan --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