Mostrando las entradas con la etiqueta firewall. Mostrar todas las entradas
Mostrando las entradas con la etiqueta firewall. Mostrar todas las entradas

Servidor OpenSuSE en modo consola

                               (P) Hugo Napoli, 2019                              

Imagen: https://www.networkworld.com/article/3334781/suse-releases-enterprise-linux-for-all-major-arm-processors.html

Esta instalación fue concebida para una máquina portátil convencional, de prestaciones básicas.
También fue muy importante que el tiempo invertido en la concreción de este proyecto no fuera excesivamente "largo".
La idea, es presentar una guía rápida y útil, y a su vez, también rápidamente, poner un servidor Linux a funcionar, sin mucho trámite ni burocracia.
Para la preparación de un servidor de mayor "potencia", habría que hacerle un montón de ajustes a este artículo, o bien, escribir otro, únicamente para ello.

Hemos tenido en cuenta a aquellos procedimientos que representan un trabajo muy tedioso al ser realiozados desde la consola, y para alivianar la carga laboral, los realizaremos sirviéndonos del entorno gráfico que facilita OpenSuSE durante la fase de instalación.

Es importante aprovechar el entorno gráfico, sin desmerecer al resto de las herramientas disponibles. Luego, todo se reducirá a una pantalla negra y un teclado.

Dejaremos para después, entonces, únicamente aquello que sea más o menos sencillo de realizar en modo consola.


Parte I/III: preparación de OpenSuSE.

                  MODO "GRÁFICO"                 

Particionado.

Considerando que el servidor poseerá una partición especialmente dedicada a datos (fuera de "home"), reduciremos el tamaño de home a un mínimo aceptable, cuando en realidad debería ser mucho más grande en una instalación estandarizada.

Tamaños para las particiones:

boot:  512 MB,
root:  20 GB,
tmp:   10 GB,
swap:  4 GB (o igual de "grande" que la cantidad de memoria RAM instalada en el equipo),
home:  8 GB,
datos: todo el espacio restante libre.

La partición "datos", deberá ir montada en "/datos", con la opción "el usuario puede montar la partición".


Arranque.


Marcaremos la opción en Grub2 acerca de proteger con contraseña el cargador de arranque (es recomendable utilizar una contraseña diferente a la del usuario root, para aumentar la seguridad del sistema).
Si este paso no se realiza en este momento (durante la instalación), será bastante difícil llevarlo a cabo después, puesto que no habrá escritorio ni ventanas en donde hacer clic, buscar información, etc.

Desmarcaremos la opción de "buscar sistemas operativos foráneos", ya que OpenSuSE será el único en este ordenador.

Repositorios.


Repositorios no oficiales y no open source se han desestimado.
Por consiguiente, únicamente se han utilizado los dos oficiales y de código abierto (no packman, ni libdvdcss, ni ningún otro).


Puertos y servicios.


Puerto y servicio SSH: abiertos

Red.

Podemos configurar la IP estática del servidor durante esta fase, así también como el encaminamiento y los distintos atributos del nombre de "host", pero lo explicaremos breve y detalladamente más abajo, en "modo consola".

Software adicional.

Marcar para instalar mysql-workbench
Los servicios más utilizados, probablemente sean samba y este que acabamos de citar.

Finalizar la instalación.


                  MODO "CONSOLA"                 

          Iniciar sesión como usuario root antes de proseguir         

Más ajustes en el cargador de arranque.

Reducción del tiempo de espera para la carga del sistema.

El tiempo "por omisión" del cargador de arranque (Grub) en OpenSuSE es de 8 segundos.
Durante este tiempo (y si no se pulsa Enter) Grub espera a que el usuario pulse la tecla "e" para pasarle parámetros de inicio al sistema.
Esto puede ser útil una vez cada cierto tiempo, o bien puede no ser necesario en absoluto.
Lo cierto, es que no es útil para el día a día, por lo tanto, lo reduciremos a 1 segundo.
A partir de ahora, si alguien necesita pasarle parámetros a Grub, será mejor que se preocupe por estar muy atento a la pantalla de arranque.

Escribiremos, entonces:

nano /etc/default/grub (y daremos "Enter")

Cambiaremos GRUB_TIMEOUT=8 por GRUB_TIMEOUT=1

CTRL + O y ENTER para confirmar los cambios y guardar, y
CTRL + X para finalizar la edición del archivo de arranque.

No buscar sistemas operativos foráneos.

Cuando hay más de 1 sistema instalado en la misma máquina, es correcto mantener esta configuración tal como viene por omisión, pero, tratándose de la búsqueda de la reducción máxima de los tiempos de arranque del servidor, cambiaremos la línear GRUB_DISABLE_OS_PROBER="false" por GRUB_DISABLE_OS_PROBER="true"
Con esto, nos aseguraremos que OpenSuSE será el único sistema que Grub "verá"; por lo tanto, no "perderá tiempo" buscando a otros.

Adicional.

Se puede emitir un pitido al iniciarse Grub (muy recomendable para máquinas que no van a tener conectado un monitor para poder comprobar visualmente su estado), activando la línea GRUB_INIT_TUNE="480 440 1".
Para ello, simplemente debemos quitarle (a dicha línea) el símbolo # (y posiblemente el espacio) que la misma posee al inicio.

Al finalizar con estos cambios, debemos escribir en la consola lo siguiente:

grub2-mkconfig -o /boot/grub2/grub.cfg

Pulsaremos "Enter", entonces, para terminar de reconfigurar Grub.

Creación de usuarios del sistema.

Se puede crear un usuario, darle nombre, directorios personales y descripción, todo en una sola línea.
El comando necesario para ello, es "useradd". Los parámetros "-m" y "-d", hacen que el usuario sea creado con directorio home incluido (y, por consecuencia, con sus directorios personales "Descargas", "Documentos", Escritorio", "Imágenes", etc.). A la misma línea, puede agregársele un comentario (atributo --comment), el cual será el "nombre fantasía" del usuario en cuestión.
Así se escribe:

useradd -m -d /home/estudiante estudiante --comment "Estudiante Liceo IEP"

Inmediatamente, habrá que establecer una contraseña para el inicio de sesión en OpenSuSE, y para ello, ejecutaremos lo siguiente:

passwd estudiante

Crearemos, de este modo, todos los usuarios de sistema que sean necesarios.

Al finalizar, será necesario registrar la contraseña de cada usuario del sistema en Samba, para permitir a los usuarios del sistema conectarse con equipos de la intranet (o red a la cual ya estén conectados), o a equipos "remotos" (hacia y desde Internet).

Para esto, escribiremos lo siguiente y pulsaremos "Enter":

smbpasswd -a estudiante

Y así haremos con todos los usuarios del sistema (OpenSuSE) que queramos que posean las capacidades que acabamos de comentar, es decir, que puedan conectarse desde y hacia otras máquinas (Samba), ya sean estas "cercanas" o "remotas".

Dar nombre al equipo.

En Linux, el "nombre de host" o "nombre de equipo", puede poseer más de una denominación.
Lo que generalmente se considera, es el "host name" (o "static name"), pero existen también el "pretty name", el "icon name" (o "transient name") y otros.

El "host name", es el clásico "nombre de red" del equipo: es el nombre por el cual la máquina será identificada en la red.

hostnamectl set-hostname "servidor-linux" --static

El "pretty name" es mas bien la descripción del equipo, es decir, una idea del uso que se le da a ese ordenador (o del tipo de trabajo que en él se desempeña), expresada en pocas palabras.

hostnamectl set-hostname "Máquina del proyecto ITEX" --pretty

El "icon name" es el nombre de... no sé, pero existe XD
Generalmente, se utiliza para indicar el tipo de computadora, por ejemplo: servidor de datos, servidor http, servidor dhcp, máquina de escritorio, etc.
También, generalmente, no se dejan espacios al crear este nombre. Los mismos se sustituyen por guiones (signos de "menos").

hostnamectl set-icon-name "servidor-local-de-datos"

Para ver los cambios (o para consultar todos los nombres de un equipo), podemos ejecutar el comando:

hostnamectl



Conectar a través de la terminal a redes inalámbricas.

A través del servicio wicked (el que ya se está ejecutando en OpenSuSE):

* * * PROCESO PENDIENTE * * *

A través de Gnome Network Manager:

nmcli d wifi connect <SSID> password <CONTRASEÑA> iface <INTERFAZ_DE_RED>

Dar IP estática al equipo.

Para ver las conexiones físicas de red (es decir: ver con qué nombres lógicos OpenSuSE identifica a las conexiones físicas), ejecutaremos:

ip link show (o ip link)

Con esto, obtendremos algo parecido a lo que aparece aquí:


lo = loopback.

El dispositivo de red loopback es una interfaz de red virtual. La (...) dirección (...) [que] se utiliza, de forma mayoritaria, [es] la '127.0.0.1' (...), [añadiéndose] '::1' para el caso de IPv6 ('127.0.0.1::1').
Las direcciones de loopback pueden ser redefinidas (...), y son usualmente utilizadas para probar la capacidad de la tarjeta interna [y ver] si se están enviando datos BGP [Border Gateway Protocol]. 
[BGP] es un protocolo mediante el cual se intercambia información de encaminamiento entre sistemas autónomos. (...) Los proveedores de servicio registrados en Internet [,] suelen componerse de varios sistemas (...) [de este tipo].

Texto tomado de Wikipedia, con modificaciones del autor del post.

eth0 = ethernet 0

Conexión física tipo "RJ45" (cableada común).

wlan0 = wireless lan 0

Conexión física tipo "wifi" (inalámbrica común).

Una vez que sepamos a qué dispositivo (lo, eth0, wlan0, etc.) queremos asignarle una dirección IP fija, ejecutaremos:

ip addr add xxx.xxx.xxx.xxx/yy dev zzz

Siendo:

xxx.xxx.xxx.xxx = bits de la dirección de red, tales como 192.168.6.100

yy equivale a la máscara de red, y normalmente es "/24" (por "8 x 3 = 24"), lo cual equivale a los 3 primeros bit "encendidos" (en 255) y el último "apagado" (en 0): 255.255.255.0.

zzz es uno de los nombres que aparece cuando ejecutamos ip link show, y responde al dispositivo físico con el cual queremos trabajar.

Ejemplo general:

ip addr add 192.168.6.100/24 dev eth0

Luego de esto, habrá que apagar y encender la conexión de red, a los efectos de actualizarla:

ip link set eth0 down
ip link set eth0 up

Para visualizar esta información y comprobar que todo está bien, podemos ejecutar:


ip addr show zzz

Ejemplo:

ip addr show eth0

También es útil el comando ip route para esto mismo.

Habilitar e iniciar demonios Samba y NetBios.

Generalmente, los protocolos "Server Message Block" (smb) y "NetBios Message Block" (nmb), no están habilitados al inicio del sistema (y por consiguiente, tampoco están encendidos).

Lo que debemos hacer, es correr los siguientes comandos, para habilitarlos:

systemctl enable smb
systemctl enable nmb

Ahora que están habilitados, hay que encenderlos:

systemctl start smb
systemctl start nmb

Para comprobar el estado de actividad de ambos protocolos:

service smb status
service nmb status

Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual no se le habían habilitado ni activado los protocolos smb y nmb previamente:


Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual se le acaban de habilitar (pero no de activar) los protocolos smb y nmb:


Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual se le acaban de habilitar y activar los protocolos smb y nmb. Ahora sí, el sistema está listo para comenzar a actuar como servidor de datos:



Parte II/III: preparación de Samba y NFS.

Creación y preparación de directorios.

Anteriormente, habíamos creado un directorio en el directorio raíz del sistema:

/datos

Algo bien importante es tener en claro que los permisos de acceso debería otorgarlos samba, según la información dentro de "smb.conf", no el sistema (OpenSuSE).
Imaginemos los casos siguientes:

Linux permite acceder a /datos, pero Samba no. Resultado: fracaso.
Linux no permite acceder a /datos, pero Samba sí. Resultado: fracaso.
Linux permite acceder a /datos, y Samba también. Resultado: éxito.
Evidentemente, quien obligatoriamente debe permitir el acceso es Samba, ya que los equipos que se conectarán al servidor, lo harán a traves de su protocolo.
Se pueden establecer credenciales de acceso a través de permisos de Linux y Samba, conjuntamente, pero eso implicaría un trabajo más pormenorizado que tendría que ver con la asignación de permisos diversos (lectura, ejecución, escritura) por usuario y por grupo en Linux, que no veremos en este artículo.
Por consiguiente, dejaremos "via libre" (en Linux) al directorio "/datos", y controlaremos su acceso únicamente a través de Samba, solo por temas de practicidad.

Como solamente el usuario "root" puede escribir en el mencionado directorio, haremos:

chmod 777 /datos

chmod = change mode.

Luego de esto, crearemos los directorios "00_info" y "datos_de_usuario", dentro de /datos:

cd /datos
md 00_info
md datos_de_usuario

cd = change directory.
md = make directory.

De nuevo, daremos via libre (en Linux) a los directorios recientemente creados, para que Samba controle totalmente el acceso al mismo:

chmod 777 00_info
chmod 777 datos_de_usuario


Respaldo y modificación del archivo Samba.

Conviene -siempre antes de manipular un archivo esencial para el sistema- realizar una copia del mismo (con otro nombre, lógicamente).
Haremos una copia, entonces, de "smb.conf", y la llamaremos "smbANT.conf":

cd /etc/samba
cp smb.conf smb_ANT.conf

cp = copy

Ahora que estamos trabajando sobre seguro, utilizaremos el editor "nano" para editar el archivo Samba:

nano smb.conf

Traduciremos los encabezados al español.

Cambiaremos [homes] por [directorios_home].

Cambiaremos [profiles] por [perfiles], y así con todos los encabezados.
Luego, continuamos con la primera línea de cada encabezado:

workgroup = WORKGROUP, por workgroup = aula (puede ser cualquier palabra, no precisamente debe ser "aula").
comment = Home Directories, por comment = Directorios 'home'.
comment = All users, por comment = Usuarios, y así con todas las líneas "comment" que haya.


Al final de todo, agregaremos:

[00_info]
          comment = Reglamentación e información del uso del servidor.
          path = /datos/00_info
          readonly = yes
          valid users = root,estudiante,sololectura

[datos_de_usuario]
          comment = Directorio de datos del servidor OpenSuSE Linux.
          path = /datos/datos_de_usuario
          readonly =no
          valid users = root,estudiante,sololectura

CTRL + O     ENTER
CTRL + X

Ahora es momento de ejecutar systemctl restart nmb (reinicio de NetBios), puesto que hemos alterado información en el encabezado [global] y hay que informárselo a toda la intranet (o a la red).

debido a que todos los demás encabezados también han sido editados, también debemos ejecutar systemctl restart smb para el reinicio de Samba. 

Ahora, pondremos un archivo de texto dentro del directorio 00_info (opcional).

cd /datos/00_info

Con "echo" escribiremos cada línea, y con ">>" nos aseguraremos de que lo que previamente existía en el archivo, no sea borrado por lo que estemos escribiendo a continuación.

Ejemplos.

I

echo "Hola." > info.txt
echo "¿Qué tal?" > info.txt

Resultado:

El archivo "info.txt" posee el contenido "¿Qué tal?", el cual sobreescribió (y por lo tanto, borró) al contenido "Hola." que existía previamente. ">", implica "sustituír".

II

echo "Hola." >> info.txt
echo "¿Qué tal?" >> info.txt

Resultado:

El archivo "info.txt" posee el contenido

Hola.
¿Qué tal?

Esto es así, porque el indicador ">>" implica "agregar".

Para crear un archivo con varias líneas de texto dentro, escribiremos cada una de las líneas siguientes, pulsando ENTER al final de cada una de ellas.


echo "Reglamentación e información importante." >> info.txt
echo "---------------------------------------- >>" info.txt
echo "Al utilizar este servidor de datos, ud se compromete a no alojar archivos" >> info.txt
echo "que no sean de trabajo, tales como películas, álbumes musicales, respaldos" >> info.txt
echo "personales, etc." >> info.txt
echo "Ud. también entiende que este es un servicio que no posee garantía, ya que" >> info.txt
echo "se brinda únicamente para la seguridad y flexibilidad del usuario." >> info.txt
echo "La no lectura de este documento, no es causa para que se efectúen reclamos" >> info.txt
echo "por falta del servicio, pérdida o alteración de datos, etc." >> info.txt
echo "Por otra parte, le aseguramos que mantendremos en condiciones el servidor." >> info.txt
echo "Al mismo, se le realizarán tareas de mantenimiento y respaldo de la información," >> info.txt
echo "de ser posible. Se lo protegerá de ataques externos, pero no del mal uso" >> info.txt
echo "de los usuarios habilitados." >> info.txt
echo "Disfrute a Linux. Sea bienvenido, and have a lot of fun!" >> info.txt





Parte III/III: configuración del cortafuegos.

Cortafuegos o firewall.


Habilitar e inhabilitar el cortafuegos.

systemctl enable firewalld
systemctl disable firewalld

Iniciar y detener el cortafuegos.

systemctl start firewalld
systemctl stop firewalld



Algunos comandos más a tener en cuenta.

init 6: reiniciar equipo
init 0: apagar el equipo

Este artículo está dedicado al grupo de 3er. año de Informática (egreso 2019) de Liceo IEP.

1era. actualización: 22/10/2019.
2a. actualización: 24/10/2019.
3a. actualización: 28/10/2019.



Fuentes consultadas:

Centro Linux

https://cubiclenate.com/linux/system-configuration/simple-samba-setup/

https://www.freedesktop.org/software/systemd/man/hostnamectl.html

https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.grub2.html

https://unix.stackexchange.com/questions/422104/make-grub-boot-on-default-without-waiting

https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-daemons.html

https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

https://www.initpals.com/suse/how-to-enable-or-disable-firewall-in-sles-15/

https://upcloud.com/community/tutorials/troubleshoot-network-connectivity-linux-server/

https://www.tecmint.com/linux-networking-commands/

https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-servers.html

https://www.sergio-gonzalez.com/doc/10-ldap-samba-cups-pykota/html/samba-configuracion-estructura-smb.conf.html

https://es.wikipedia.org/wiki/Loopback

https://es.wikipedia.org/wiki/Border_Gateway_Protocol

https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/



Prácticas con sistemas Linux para curso de introducción a redes y servidores.

Prácticas con sistemas Linux para curso de introducción a redes y servidores.

Asignatura: Redes II, Bachillerato Tecnológico, UTU, año 2019 en adelante.

Trabajo de autoría del profesor Hugo Napoli.


Instalación de paquetes (ejemplos con firewalld).

 Sistemas basados en Debian:

    sudo apt install firewalld

Sistemas basados en Arch:

    sudo pacman -S firewalld

OpenSUSE:

    sudo zypper install firewalld

NOTA: para instalar firewalld bajo OpenRC, por ejemplo, la sintaxis no es "firewalld", sino "firewalld-openrc". Lo mismo puede suceder con otros init y otros paquetes.

Manejo de demonios y servicios (ejemplos con firewalld).

    Visualizar estado del cortafuegos:
        systemd : systemctl status firewalld
        openrc  : rc-service firewalld status
        sysvinit: service firewalld status
        Windows : netsh advfirewall show currentprofile

Listar.

    Activos/inactivos:
        systemd : systemctl list-units
        sysvinit: service --status-all # +: activos; -:inactivos (¿ se podrá hacer "grep +" ?)
        openrc  : rc-update -v show

    Fallidos:
        systemd : systemctl --failed
        sysvinit:
        openrc  : rc-status --crashed
        
Encender.
    systemd : sudo systemctl start firewalld
    openrc  : sudo rc-service firewalld start
    sysvinit: sudo service firewalld start

Detener.
    systemd : sudo systemctl stop firewalld
    openrc  : sudo rc-service firewalld stop
    sysvinit: sudo service firewalld stop

Reiniciar.
    systemd : sudo systemctl restart firewalld
    openrc  : sudo rc-service firewalld restart
    sysvinit: sudo service firewalld restart

Habilitar.
    systemd : sudo systemctl enable firewalld
    openrc  : sudo rc-update add firewalld
    sysvinit: sudo update-rc.d firewalld defaults
    Windows : netsh advfirewall set currentprofile state on

Inhabilitar.
    systemctl: sudo systemctl disable firewalld
    openrc   : sudo rc-update del firewalld
    sysvinit : update-rc.d -f firewalld remove
    Windows  : netsh advfirewall set currentprofile state off

Habilitar e inhabilitar icmp en Linux/Windows


WINDOWS
    netsh advfirewall firewall add rule name="NOMBRE_DE REGLA" protocol=icmp4:8,any dir=in action=allow/block
    netsh advfirewall firewall add rule name="NOMBRE_DE REGLA" protocol=icmp6:8,any dir=in action=allow/block

    netsh advfirewall firewall show rule name=all

LINUX
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    iptables -A INPUT -p icmpv6 --icmp-type echo-request -j DROP

Encender, detener, habilitar, inhabilitar y consultar estado de ssh.


misma sintaxis que para el cortafuegos, sustituyendo por 'sshd'.

Práctica con la cual solamente habilitando ssh en Linux se pueda acceder a un usuario determinado del sistema (ssh <USUARIO>@<IP>)

Probar qué sucede con Windows. ¿Cómo activar ssh en Windows?


Abrir puertos en el firewall (sin permanencia).

Observar la zona que se está utilizando en el firewall.

sudo firewall-cmd --list-all

sudo firewall-cmd --zone <ZONA> --add-port=8000/tcp
sudo firewall-cmd --zone <ZONA> --add-port=8000/udp

sudo firewall-cmd --reload

Donde <ZONA> representa el nombre de una zona válida (la zona se escribe sin los signos de menor y mayor).

Para que la regla quede guardada (permanencia), agregar el parámetro:

--permanent

Consultar zonas existentes:

firewall-cmd --get-zones

Cambiar de zona:

firewall-cmd --set-default-zone public

                                        Ver cómo abrir puertos en Windows.

Gestionar usuarios conectados por ssh

1. Visualizar qué equipos están conectados por ssh:
    who
    (también probar "who -u")
    (tomar nota del renglón con el "pts" correspondiente)
2. Enviar un mensaje a la terminal del equipo conectado, antes de expulsarlo:
    echo "ATENCIÓN: en 60 seguntos, finalizará su conexión con el servidor." | write prueba_redes pts/<ID> && sleep 60
3. Listar el IDentificador del proceso que está permitiendo que dicho equipo esté conectado:
    ps -t pts/<ID>
4. Finalizar la conexión, según el ID correspondiente:
    sudo kill <ID>

Iniciar aplicaciones gráficas por ssh en máquina destino.

Lo primero a tener en cuenta, es que es necesario iniciar con el parámetro "-X" para poder controlar el servidor gráfico:

ssh -X usuario@ip

Luego:

export DISPLAY=:0

kolourpaint

Ejecutar iperf en modo cliente y servidor:

Máquina SERVIDOR:
iperf3 -s -p yyyy
siendo "yyyy" el número de puerto. Ejemplo:
iperf3 -s -p 5201

Máquina CLIENTE:
iperf3 -c xxx.xxx.xxx.xxx -p yyyy
siendo "xxx.xxx.xxx.xxx" la IP de la máquina servidor, e "yyyy", nuevamente, el número de puerto de la máquina servidor. Ejemplo:
iperf3 -c 192.168.44.155 -p 5201

ping

Averiguar ip de sitio:
ping www.google.com

Hacer ping a nivel individual:
ping <IP>

Hacer ping a nivel de broadcast:
ping -b X.X.X.255

Hacer ping con el máximo tamaño de paquete posible:
ping 192.168.1.1 -s 65507

ip

Agregar una dirección IP secundaria a un dispositivo:
sudo ip address add 192.168.1.254/24 dev wlan0

mtr

Consultar la ruta utilizada hasta llegar a un sitio específico (no funciona sin privilegios root):
sudo mtr www.google.com
sudo mtr www.wikipedia.org

Misma consulta, pero mostrando las IPs de todos los hosts involucrados:
sudo mtr -b www.wikipedia.org

tcpdump

Listar las interfases disponibles para el comando:
sudo tcpdump -D

Capturar tráfico de una determinada interfaz:
sudo tcpdump -i wlan0

Capturar tráfico de un determinado host:
sudo tcpdump -i wlan0 host 10.30.175.36

Capturar tráfico de una determinada red:
sudo tcpdump -i wlan0 net 10.30.172.0 mask 255.255.255.0

Capturar tráfico de un determinado puerto:
sudo tcpdump -i wlan0 port 80

Capturar tráfico de un determinado puerto de un determinado host:
sudo tcpdump -v -i wlan0 host 10.30.175.36 and port 48478
("v" = "verbose")

ss

Para que "ss" funcione, hay que revisar que esté instalado el paquete iproute2, o en su defecto, iproute.

Visualizar todas las conexiones de un host en particular:
ss src 10.30.175.36

Visualizar todos los PIDs (útil con ssh):
ss -p

nmap y arp-scan

Obtener IPs de la LAN:
nmap -sP X.X.X.0/24

Un método más agresivo:
sudo arp-scan --localnet
sudo arp-scan --interface wlan0 --localnet

Menos ético:
sudo arp-scan --interface wlan0 --localnet | grep Apple/Xiaomi/Samsung/HUAWEI, etc.

Obtener fingerprint e información del sistema a través de su IP:
sudo nmap -O <IP>
Si el equipo no responde, probar:
sudo nmap -O <IP> -Pn

Obtener información de puertos y dirección MAC de un host:
nmap -sV <IP>
sudo nmap -sV <IP>
Si el equipo no responde, probar:
sudo nmap -sV <IP> -Pn

El comando nmap, ¿escanea todos los puertos? (¿Qué sucede con los 1000 puertos "raíz")


Comprobar si un determinado puerto está abierto, aunque no esté activo:
nmap -p 8000 127.0.0.1
nmap -p 8000 localhost


Probar con la propia IP de la máquina y también con la IP de localhost. ¿Qué puede deducirse?

sudo nmap -p 0-65535 127.0.0.1
sudo nmap -p 0-65535 <IP>

Los servicios que solo están vinculados a "localhost" solo se muestran con el comando nmap en 127.0.0.1 (muchas veces sucede con motores de bases de datos, tales como mariaDB, etc.), y los asociados a la IP del mismo host, haciendo nmap a ésta.

lsof

sudo lsof -i:<PUERTO>
sudo lsof -i -P -n | grep LISTEN

Cerrar puertos.
sudo ss --kill state listening src :8000

Listar proceso corriendo en un determinado puerto:
fuser 8080/tcp
Matar proceso corriendo en un determinado puerto:
fuser -k 8080/tcp

nslookup

Obtener IP WAN:
nslookup myip.opendns.com resolver1.opendns.com
cual-es-mi-ip.net

Obtener ip de sitio:
nslookup www.wikipedia.org

Ejemplos nslookup:
https://www.thegeekstuff.com/2012/07/nslookup-examples/

Encender y apagar tarjeta de red.
ip link set <NOMBRE_TARJETA> up
ip link set <NOMBRE_TARJETA> down

Obtener MAC ADDRESS
arp-scan a <IP>

Revisar (I), abrir (II) y cerrar (III) puertos.

I)

Con lsof.

Para 1 puerto específico (el 3891).

sudo lsof -nP -i:3891
sudo lsof -nP -iTCP:3891
sudo lsof -nP -iUDP:3891

Para todos los puertos.

sudo lsof -nP -iTCP -sTCP:LISTEN

-n: sin "host names"
-P: sin "port names"
-i: IP v4 o v6
-s: "size"

Con ss.

sudo ss -tunpl

-t: TCP
-u: UDP
-n: "numeric"
-p: "process"
-l: "listening"

Con nmap.

nmap localhost -p 38911
sudo nmap -n -PN -sT -sU -p- localhost

-n:
evita resolución de DNS.
-PN: se saltea la fase de "descubrimiento".
-sT and -sU - "scan" modo TCP y UDP.
-p: todos los puertos.

Con netcat.

nc -z -u -v localhost 1-65535 

-z: modo "zero-I/O".
-u: UDP | -t: TCP.
-v: "verbose", verborragia.

Con netstat (en desuso).

sudo netstat -tunpl

-t: TCP
-u: UDP.
-n: evita búsqueda de DNS y muestra solo direcciones IP, haciendo más rápida la ejecución.
-p: despliega el ID del proceso y el nombre del programa que está utilizando el puerto.
-l: puertos en estado "listening".

II)

sudo iptables -A INPUT -p tcp --dport 3891 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 3891 -j ACCEPT

-A: "append", agregar.
INPUT: regla de entrada.
-p: "protocol", protocolo (tcp/udp).
--dport: "destination port", puerto de destino.
-j: "jump target", saltar hacia el objetivo, hacer inmediatamente.
ACCEPT: aceptar el tráfico.

En lugar de INPUT, se pueden utilizar para otras acciones: OUTPUT y FORWARD.
En lugar de ACCEPT, se pueden utilizar para otras acciones: DROP y RETURN.

III)

Para 1 puerto específico.

sudo ss --kill state listening src :3891

fuser -k -n tcp 3891
fuser -k -n udp 3891

iptables -I INPUT -p tcp --dport 3891 -j DROP

sudo netstat -ap | grep :3891
kill <PID_SALIDA_NETSTAT>

Si la línea anterior no funciona, utilizar "kill -9" en lugar de "kill".

Para todos los puertos (2 maneras).

iptables -F INPUT;iptables -P INPUT REJECT

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

-F equivale a "--flush", y sirven ambos atributos para eliminar todas las reglas preexistentes.
-P: "policy", política predeterminada.

ACCEPT: permite el paso de paquetes sin realizar acciones adicionales.
DROP: descarta paquetes sin enviar notificaciones.
REJECT: descarta paquetes, enviando mensajes de rechazo al remitente.

Se recomienda leer:

https://phoenixnap.com/kb/linux-check-open-ports
https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux

Flag Counter Visitas previas a la existencia de este contador: 3433

Artículos aleatorios

    Páginas: