Olá amigos! Esse é mais um artigo onde vamos abordar um conteúdo útil para a certificação Linux LPIC-1! Mais especificamente da prova LPI-102, combinado?
Um administrador de sistemas Linux possui à disposição uma série de ferramentas que podem (e devem) ser utilizadas para verificar quaisquer portas abertas por serviços que estejam em execução em um dado momento na máquina local – além daquelas que encontram-se localizadas na rede.
Você já deve saber que o comando netstat consegue exibir várias informações importantes relacionadas à rede, como as portas abertas pelos serviços em execução na máquina, a tabela de roteamento configurada, estatísticas relacionadas às interfaces de rede, etc.
Deve saber também que sua documentação é bastante densa mas, para o exame, basta que você se concentre basicamente nas opções -naltp:
root@ubuntu18-04:~# netstat -naltp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp0 0 127.0.0.53:53 0.0.0.0:* LISTEN 299/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 638/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 638/cupsd
Note que, através da opção -l, filtramos para que sejam exibidos apenas sockets que estejam em estado LISTEN – ou seja, aguardando por conexões através das portas lógicas – utilizando tcp (opção -t).
É importante ressaltar que esses sockers somente são exibidos caso a opção -a também seja utilizada.
A opção -p é utilizada para exibir o PID do processo (além do nome) relacionado. Lembre-se que a opção -n foi utilizada para que os endereços IP fossem exibidos (e não os nomes associados).
Dentre as conexões abertas no sistema, perceba a existência daquela que encontra-se ouvindo a porta local 631 (serviço de impressão de Internet), utilizando conexão tcp, através do localhost (endereço 127.0.0.1), que poderá receber solicitações de conexão a partir de qualquer fonte (0.0.0.0:*). Trata-se do daemoncupsd!
Se instalarmos o MTA postfix, por exemplo (apt-getinstallpostfix) e rodarmos novamente o comando netstat, veremos que o MTAjá abre a porta 25:
root@ubuntu18-04:~# netstat -naltp
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.53:53 0.0.0.0:* LISTEN 299/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 638/cupsd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 8229/master
tcp6 0 0 ::1:631 :::* LISTEN 638/cupsd
tcp6 0 0 :::25 :::* LISTEN 8229/master
Pesquisando pelo processo 8229, verificamos que se trata do postfix:
root@ubuntu18-04:~# ps aux | grep 8229
root 8229 0.0 0.2 67372 4196 ? Ss 18:56 0:00 /usr/lib/postfix/sbin/master -w
Caso o administrador preferisse que fossem listadas as conexões udp ativas, bastaria substituir a opção -t por -u:
root@ubuntu18-04:~# netstat -nalup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:38567 0.0.0.0:* 579/avahi-daemon: r
udp 0 0 127.0.0.53:53 0.0.0.0:* 310/systemd-resolve
udp 0 0 0.0.0.0:5353 0.0.0.0:* 579/avahi-daemon: r
udp 0 0 0.0.0.0:631 0.0.0.0:* 678/cups-browsed
udp6 0 0 :::55182 :::* 579/avahi-daemon: r
udp6 0 0 :::5353 :::* 579/avahi-daemon: r
Por fim, se desejarmos visualizar a tabela de roteamento, utilizamos a opção -r:
root@ubuntu18-04:~# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irttIface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Caso a opção -n não seja especificada, nomes são mostrados no lugar dos endereços IP:
root@ubuntu18-04:~# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irttIface
default roteador 0.0.0.0 UG 0 0 0 enp0s3
link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Já o comando lsof é responsável por listar os arquivos abertos – e, tome nota: no Linux, uma conexão, uma biblioteca em uso, etc., são todos exemplos de arquivos abertos! Observe uma breve saída do comando:
root@ubuntu18-04:~# lsof -u pedro
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1623 dltec cwd DIR 8,1 4096 2 /
systemd 1623 dltec rtd DIR 8,1 4096 2 /
systemd 1623 dltec txt REG 8,1 1595792 4587610 /lib/systemd/systemd
systemd 1623 dltec mem REG 8,1 1700792 4592571 /lib/x86_64-linux-gnu/libm-2.27.so
continua…
Se, por exemplo, o usuário dltec estiver editando um arquivo e, no mesmo momento, o administrador lançar o comando lsof, este arquivo será exibido em sua saída:
dltec@ubuntu18-04:~$vi Arquivos/Documentos/Listadecompras.txt
root@ubuntu18-04:~# lsof -u dltec
vi 2468 dltec 3u REG 8,1 12288 4721154 /home/dltec/Documentos/.Listadecompras.txt.swp
bash 2472 dltec cwd DIR 8,1 4096 4721450 /home/dltec
bash 2472 dltec rtd DIR 8,1 4096 2 /
bash 2472 dltec txt REG 8,1 1113504 786439 /bin/bash
bash 2472 dltec mem REG 8,1 47568 4592598 /lib/x86_64-linux-gnu/libnss_files-2.27.so
bash 2472 dltec mem REG 8,1 97176 4592592 /lib/x86_64-linux-gnu/libnsl-2.27.so
bash 2472 dltec mem REG 8,1 47576 4592609 /lib/x86_64-linux
continua…
Para que o comando exiba os arquivos abertos relacionados a conexões de rede, podemos utilizar a opção -i:
root@ubuntu18-04:~# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 310 systemd-resolve 12u IPv4 15842 0t0 UDP 127.0.0.53:domain
systemd-r 310 systemd-resolve 13u IPv4 15843 0t0 TCP 127.0.0.53:domain (LISTEN)
cupsd 566 root 6u IPv6 19392 0t0 TCP ip6-localhost:ipp (LISTEN)
cupsd 566 root 7u IPv4 19393 0t0 TCP localhost:ipp (LISTEN)
avahi-dae 579 avahi 12u IPv4 19094 0t0 UDP *:mdns
avahi-dae 579 avahi 13u IPv6 19095 0t0 UDP *:mdns
avahi-dae 579 avahi 14u IPv4 19096 0t0 UDP *:38567
avahi-dae 579 avahi 15u IPv6 19097 0t0 UDP *:55182
cups-brow 678 root 7u IPv4 19549 0t0 UDP *:ipp
master 1309 root 13u IPv4 21161 0t0 TCP *:smtp (LISTEN)
master 1309 root 14u IPv6 21162 0t0 TCP *:smtp (LISTEN)
Também podemos especificar quais portas desejamos visualizar. Por exemplo, para visualizarmos as portas relacionadas ao smtp, podemos escolher uma das seguintes formas:
root@ubuntu18-04:~# lsof -i :smtp
# Ou
root@ubuntu18-04:~# lsof -i :25
O comando nmap é responsável por realizar um escaneamento geral das portas/serviços abertas(ativas) no sistema (ou alguma outra máquina da rede). Além disso, o comando também informa a quantidade de portas fechadas no sistema.
O comando nmap possui diversas opções. Para o exame, basta conhecer apenas as mais elementares.
Caso não esteja instalado no sistema, basta rodar o comando apt-getinstallnmap. Observe:
root@ubuntu18-04:~# nmap localhost
Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-20 22:37 -03
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000017s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
25/tcp open smtp
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds
Da mesma forma, o nmap também consegue escanear algum outro hostpresente na rede. Por exemplo, vamos rodar no Ubuntu o comando nmap para que sejam escaneadas as portas abertas/fechadas no endereço IP 192.168.0.11:
root@ubuntu18-04:~# nmap 192.168.0.11
Nmap scan report for 192.168.0.11
Host is up (-0.0068s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
MAC Address: 08:00:27:6F:47:A3 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 14.89 seconds
Podemos inclusive verificar detalhes sobre o sistema operacional instalado na máquina (além de outras informações úteis), através da opção -O:
root@ubuntu18-04:~# nmap -O localhost
Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-21 09:12 -03
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000019s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
25/tcp open smtp
631/tcp open ipp
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.7 – 3.10
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.00 seconds
Agora, se o objetivo for escanear todas as máquinas presentes na rede 192.168.0.0, podemos lançar o seguinte comando:
root@ubuntu18-04:~# nmap 192.168.0.1/24
Por fim, o comando fuser é responsável por informar qual processo encontra-se utilizando determinada porta. Por exemplo, se informarmos ao comando a porta 53/tcp, o comando retorna o processo correspondente:
# A opção -u é responsável por exibir o usuário dono do processo
root@ubuntu18-04:~# fuser 53/tcp
53/tcp: 297
A partir desta informação, podemos rodar o comando ps para verificar o processo correspondente:
root@ubuntu18-04:~# ps aux| grep 297
systemd+ 297 0.0 0.2 70616 4788 ? Ss 09:03 0:00 /lib/systemd/systemd-resolved
Com isso finalizamos mais um artigo com conteúdo para a certificação Linux LPIC-1 e espero você em um próximo artigo!
Não esqueça de usar o campo de comentário abaixo para deixar sua dúvida, sugestão ou até mesmo um elogio!
One Response
Ótimo artigo!!!