WBA1134_V1.
ADMINISTRAÇÃO DE REDES
LINUX
2
Allan Crasso Naia de Souza
ADMINISTRAÇÃO DE REDES LINUX
1ª edição
São Paulo
Platos Soluções Educacionais S.A
2022
3
© 2022 por Platos Soluções Educacionais S.A.
Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou
transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo
fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de
informação, sem prévia autorização, por escrito, da Platos Soluções Educacionais S.A.
Head de Platos Soluções Educacionais S.A
Silvia Rodrigues Cima Bizatto
Conselho Acadêmico
Alessandra Cristina Fahl
Ana Carolina Gulelmo Staut
Camila Turchetti Bacan Gabiatti
Camila Braga de Oliveira Higa
Giani Vendramel de Oliveira
Gislaine Denisale Ferreira
Henrique Salustiano Silva
Mariana Gerardi Mello
Nirse Ruscheinsky Breternitz
Priscila Pereira Silva
Coordenador
Henrique Salustiano Silva
Revisor
Paulo César Monteiro Nunes
Editorial
Beatriz Meloni Montefusco
Carolina Yaly
Márcia Regina Silva
Paola Andressa Machado Leal
Dados Internacionais de Catalogação na Publicação (CIP)
_____________________________________________________________________________
Souza, Allan Crasso Naia de
Administração de redes linux / Allan Crasso Naia de
S729a
Souza. – São Paulo: Platos Soluções Educacionais S.A., 2022.
34 p.
ISBN 978-65-5356-331-5
1.Administração de redes. 2. Linux. 3. Sistema
operacional. I. Título.
CDD 003.72
_____________________________________________________________________________
Evelyn Moraes – CRB 010289/O
2022
Platos Soluções Educacionais S.A
Alameda Santos, n° 960 – Cerqueira César
CEP: 01418-002— São Paulo — SP
Homepage: https://www.platosedu.com.br/
4
ADMINISTRAÇÃO DE REDES LINUX
SUMÁRIO
Apresentação da disciplina ___________________________________ 05
Conhecendo o Linux __________________________________________ 07
Comandos e estrutura de diretórios __________________________ 17
Linhas de comando, interface do usuário e administração de
tarefas ________________________________________________________ 28
Configuração e monitoramento de serviços __________________ 39
5
Apresentação da disciplina
Seja bem-vindo à disciplina Administração de Redes Linux! Nosso objetivo
é apresentar os princípios da Administração em Redes Linux de acordo
com as documentações dos principais sistemas operacionais baseados
no Kernel do Linux.
Durante nossas aulas, abordaremos o funcionamento da arquitetura
Linux e falaremos sobre sua instalação, partindo de uma determinada
distribuição. Além disso, estudaremos as diferenças entre
gerenciamento do sistema operacional via interface gráfica e linha de
comando, conhecido por CLI.
Depois de aprendermos sobre a instalação e abordarmos os princípios
básicos do Linux, partiremos para a apresentação dos comandos
introdutórios para gerir o sistema operacional e seus recursos, bem
como o interpretador de comandos Shell. Conhecido pela famosa “tela
preta”, existem vários ambientes Shell no GNU Linux. Por padrão, muitas
das distribuições do Linux utilizam o Bash, mas também citaremos
outros Shells existentes e listados dentro do arquivo /etc/shells. Cabe
ressaltar que cada Shell possui uma particularidade, e a maioria dos
usuários se sente mais à vontade com o Bash.
Falando do gerenciamento de redes Linux, inicialmente é necessário
recapitular alguns conceitos introdutórios sobre redes de computadores,
visto que termos como IP, roteamento e endereçamento são necessários
para o bom andamento da disciplina e você precisa estar com eles
claros. A partir daí, iniciaremos com comandos como ping, route e
ifconfig, todos eles com um exemplo para nortear sua utilização.
6
É importante informar que a gerência do Kernel envolve operações que
podem ser complexas e delicadas, principalmente quando um usuário
depende de uma infra de redes, por exemplo, funcionando. Porém,
frisamos que os conhecimentos abordados durante esta disciplina serão
suficientes para solucionar alguns problemas enfrentados no cotidiano
de um administrador de redes Linux.
Diante dessa explanação resumida da disciplina, nós o convidamos a
ler os materiais teóricos, assistir às videoaulas, fazer os exercícios e
acompanhar os podcasts disponibilizados. Bons estudos!
7
Conhecendo o Linux
Autoria: Allan Crasso Naia de Souza
Leitura crítica: Paulo César Monteiro Nunes
Objetivos
• Conhecer o funcionamento da arquitetura Linux.
• Realizar a instalação do Sistema Operacional Linux.
• Realizar a administração de pacotes.
8
1. S. O. Linux
Seja bem-vindo ao universo dos softwares livres. Aprender sobre Linux é
uma excelente maneira de ramificar seus conhecimentos em tecnologia
da informação. Antes de iniciarmos a conversa sobre gerenciamento de
redes utilizando o Linux, vamos falar sobre os recursos que tornam esse
sistema operacional importante.
Você sabia que utiliza o Linux, ou já o utilizou, em seu celular? Ele é a
base do Android. Isso quer dizer que ele não se limita à execução apenas
em desktops ou servidores e outros dispositivos. Inclusive essa é uma
das principais razões para aprendermos Linux, pois ele é utilizado em
muitos dispositivos.
O Linux não é tão popular quanto o Windows, porque utiliza uma
interface diferente. O Windows utiliza uma interface gráfica, chamada
de Interface Gráfica do Usuário (GUI), enquanto o Linux ainda é bastante
utilizado via interface baseada em linha de comando (CLI) e, por esse
motivo, segmenta seus usuários a um nicho bem específico. O que
poucas pessoas sabem é que o Windows utiliza comandos quando os
usuários “clicam” em ícones, comandos estes que no Linux você precisa
optar, devido à utilização por interfaces GUI ter aumentado bastante,
por digitar no terminal.
A Figura 1 apresenta a imagem da interface gráfica da distribuição
Ubuntu e a Figura 2, a interface do terminal do Linux.
9
Figura 1 – Interface gráfica da distribuição UBUNTU/LINUX
Fonte: acervo do autor.
Figura 2 – CLI Linux–Terminal
Fonte: https://commons.wikimedia.org/wiki/File:1-Apt-get_command.png. Acesso em: 10
jun. 2022.
10
1.1 Interface Gráfica GUI Linux (Graphical User Interface)
As interfaces gráficas do Linux têm o intuito de proporcionar aos
usuários uma interação com o sistema operacional sem a necessidade
de utilização de linhas de comando. Assim como os outros sistemas
já conhecidos pelas suas respectivas interfaces, como o Windows e o
Android, o Linux também permite acessar funcionalidades e opções de
gerenciamento por meio de suas GUIs.
A interface Linux é essencial para que qualquer usuário consiga
manusear e ser atendido pelo sistema operacional. O intuito é
aproximar mais usuários com suas distribuições baseadas no Kernel do
Linux.
Seguem as distribuições Linux conhecidas por suas interfaces:
• Ubuntu.
• Kurumin KDE.
• Gnome CentOS.
É importante frisar que a utilização por linhas de comando do Linux,
ainda nos dias de hoje, visa otimizar recursos e melhorar a performance
do gerenciamento de recursos.
1.2 Linha de comando Linux
A linha de comando do Linux é uma interface baseada em texto que
aceita comandos digitados nela. Esses comandos controlam as ações
que os usuários desejam realizar no sistema computacional controlado
pelo Linux. Sua utilização, dessa forma, é um dos motivos de o Linux
ser considerado mais rápido do que o Windows. Cabe ressaltar que
11
suas distribuições possuem interface gráfica, mas, por opção, mais
comumente é usado por linha de comando.
O que inicialmente era uma barreira, hoje passa a ser uma vantagem,
já que seu uso tem crescido no meio corporativo, com empresas
como NASA e McDonald’s utilizam o Linux em seus servidores. Um dos
motivos para isso é o fato de ser um Sistema Operacional Open Source,
ou seja, livre e de código aberto, e, com isso, essas empresas e outras
corporações, como o próprio governo brasileiro, não precisam gastar
muito dinheiro com licenças proprietárias.
1.3 Demanda de utilização do Linux
Hoje todos nós, enquanto usuários, estamos gerando e consumindo
um grande volume de dados, o que causa um problema que precisa
de solução, que é a segurança de acessos e armazenamento de dados.
Logo, habilidades técnicas para analisar, processar, proteger e transmitir
dados estão em alta. Dessa forma, o aprendizado em Linux pode trazer
uma vantagem para o profissional no mercado. Trazemos a seguir
alguns exemplos de profissões que necessitam de conhecimentos em
Linux:
• Engenharia de rede: os engenheiros de rede são responsáveis
pelo gerenciamento dos computadores da rede, e a maioria dos
sistemas operacionais de rede é baseada em Linux, como IOS da
Cisco.
• Cibersegurança: profissionais de cibersegurança monitoram e
investigam ameaças de segurança aos dados em vários sistemas.
O Linux é usado nesses casos para realizar testes de penetração
do sistema e avaliar a vulnerabilidade nas redes.
• Desenvolvimento/Programação: desenvolvedores projetam
aplicativos para rodarem em diversas plataformas. Logo, pelo
12
fato de ser open source e ter seu código aberto, permite que
desenvolvedores criem scripts e funções para executar ações
complexas em um computador. O Linux também é usado nesse
campo porque somente ele permite que os usuários acessem seu
código-fonte, dando a eles a capacidade de experimentá-lo.
• Análise de Dados: analistas de dados e cientistas classificam
e analisam conjuntos de dados para encontrar padrões para
relacionar e prever tendências e comportamentos. Dessa forma,
eles usam o Linux devido à grande variedade de ferramentas e
comandos disponíveis para a análise de dados, como MySQL e
muito mais.
Como já dito anteriormente, o Linux também é usado por ser gratuito,
em distribuições que atendam às necessidades dos usuários, e
distribuído em várias versões, uma para cada finalidade. Assim, por
exemplo, distribuições como o Ubuntu são recomendadas para usuários
iniciantes, pois sua interface gráfica é bem consolidada, enquanto para
ambientes servidores são indicadas distribuições como o RedHat.
1.4 Instalação e configuração do Linux
A instalação do Linux é similar a uma instalação do Windows. Os
primeiros passos já são conhecidos nossos:
• Faça download de uma distribuição Linux.
• Crie uma mídia “inicializável”, ou, como o jargão utilizado na TI,
“bootável”.
• Insira a mídia no sistema computacional desejado e comece o
passo a passo.
13
O foco do material não é mostrar a instalação a fundo, principalmente
pelo fato de consumir muito espaço e as instalações poderem sofrer
alguma mudança de acordo com a distribuição adotada.
1.5 Memória principal
Não podemos deixar de abordar a memória quando estamos falando
sobre um sistema operacional que tem como um dos pontos fortes a
velocidade de processamento. Em âmbito geral, a memória é somente
uma grande área de armazenamento para um conjunto binário. Assim
como a memória, o Kernel, que é o núcleo do Sistema Operacional,
também fica nessa área de códigos binários, e os processos concorrem
para executarem suas operações em ambos.
Dito isso, as entradas e saídas dos dispositivos periféricos passam pela
memória principal, reforçando o que foi dito anteriormente de ser tudo
em binário. Logo, a memória é um grande aliado da CPU, pois é nela que
a CPU lê as instruções a serem processadas e, após o processamento,
escreve novamente nela.
Levando em consideração que a maioria das operações é executada a
partir da CLI, essas rotinas acabam sendo mais leves, pois temos menos
operações para realizar a mesma operação. Por exemplo, a instalação
de um software no Windows pode ser mais demorada do que no Linux,
pois os cliques realizados vão fazer as mesmas solicitações em linha de
comando, enquanto, ao utilizarmos a CLI das distribuições dos Linux, já
fazemos isso diretamente.
1.6 Gerenciamento de pacotes
O gerenciamento de pacotes é um recurso pelo qual o Linux realiza a
instalação de outros softwares no sistema computacional, podendo
instalar, atualizar, consultar ou remover outros aplicativos. Existem
14
vários gerenciadores de pacotes, porém eles são baseados em duas
distribuições apenas, o Debian e RedHat. Isso impactará em alguns
comandos utilizados por cada distribuição, visto que o Debian utiliza
o “apt-get”, enquanto o RedHat utiliza o “yum” para fazer o mesmo
procedimento.
Alguns comandos são substituídos por outros para facilitar sua utilização
pelos usuários. Chamamos a atenção para o fato de que o intuito não é
dificultar a rotina dos usuários, e sim auxiliá-los. Por isso, um comando
utilizado a nível mais baixo, como o “dpkg”, tem o seu equivalente mais
simples, porém desenvolve a mesma tarefa, nesse caso o “apt-get”, que
acaba sendo uma interface que facilita a rotina do usuário.
É importante observar que muitos dos comandos utilizados para
o gerenciamento de pacotes requerem um privilégio, um acesso
administrativo. No Linux, é utilizado o comando SUDO para acessar esse
perfil com privilégios elevados, mas nem todo usuário possui perfil para
fazer alterações de instalação ou atualizações nos softwares. Fazendo
uma comparação com o Windows, se você está em um ambiente com
mais controle, como um ambiente corporativo, não tem permissão,
muitas das vezes, nem para consultar a sua interface de redes. Da
mesma forma, no Linux, enquanto usuário, você deverá possuir perfis de
administração. Assim, ao elevar o nível de usuário, você usa o comando
“Sudo Su” e logo em seguida é solicitada a senha de acesso.
1.7 Instalando pacotes
Os pacotes, ou softwares, são instalados a partir de fontes confiáveis
disponíveis em servidores na internet. O usuário poderá enviar o pacote
a ser instalado via FTP ou baixar diretamente utilizando o “apt-get”.
Uma boa prática antes de optar pela instalação de um determinado
pacote é realizar o update deste. Como exemplo, podemos citar a
instalação de um pacote PHP para que a instalação do Moodle possa
15
ser realizada. Para a instalação do pacote Moodle, é necessário que os
softwares PHP e MySQL estejam disponíveis. Porém, antes de instalar
ambos os softwares, realize um update, pois ele já pode estar disponível.
Se já estiverem instalados na sua versão mais recente, no CLI aparecerá
uma mensagem informando essa condição, conforme mostrado na
Figura 3.
Figura 3 – Exemplo de pacote já instalado
Fonte: acervo do autor.
Seguem os comandos mencionados:
• Sudo apt-get update: atualiza todos os pacotes e sua execução
pode demorar um pouco.
• Apt-cache search [palavra-chave]: pesquisa palavras-chaves
dentro dos pacotes.
• Apt-get install [pacote]: instala um pacote desejado.
Uma observação importante sobre o comando apt-get install é que ele
também pode ser utilizado para a atualização de pacotes. Vale lembrar
que toda atualização precisa ser feita em duas etapas, isto é, primeiro
é necessário atualizar o cache com o comando apt-get update e, em
seguida, atualizar as dependências por meio do comando apt-get
upgrade.
16
Referências
CISCO. Networking Academy. NETACAD, 2022. Disponível em: www.netacad.com.
Acesso em: 10 jun. 2022.
MARTINS, J. F. et al. Sistemas operacionais de redes abertas. Porto Alegre: SAGAH,
2021.
OLONCA, R. L. Administração de Redes Linux: Conceitos e práticas na
administração de Redes em Ambientes Linux. São Paulo: Novatec, 2015.
RAMOS, J. Guia Prático do Servidor Linux: Administração Linux para Iniciantes. São
Paulo: Casa do Código, 2018.
17
Comandos e estrutura de
diretórios
Autoria: Allan Crasso Naia de Souza
Leitura crítica: Paulo César Monteiro Nunes
Objetivos
• Conhecer e executar os comandos Linux e Unix.
• Conhecer a estrutura de diretórios do Kernel Linux.
• Dar exemplos para o dia a dia do profissional.
18
1. Comandos GNU Linux
Neste Tema, vamos estudar sobre os comandos do GNU Linux e sobre
Unix, sistemas de arquivos e padrão FHS.
A definição sobre os sistemas Linux dependerá do contexto abordado,
pois Linux quer dizer o kernel do sistema operacional que irá controlar
todo o sistema computacional. Então, sempre que nos referimos ao
Linux, na verdade estamos nos referindo a uma combinação de software
chamada GNU/Linux.
GNU é um software livre que fornece diretórios de código aberto
de muitos comandos comuns do Unix. A partir desses diretórios, a
parte Linux dessa combinação é o kernel Linux, que é o núcleo do
sistema operacional, identificando os pacotes GNU. O kernel é carregado
no momento da inicialização e permanece em execução para gerenciar
todos os aspectos do sistema em funcionamento.
Segundo as bibliografias disponíveis sobre a história desse sistema
operacional, o Linux é baseado em Unix, um sistema operacional
desenvolvido na AT&T Bell Labs na década de 1970. O Unix é escrito
na linguagem C, o que o torna portátil entre os sistemas operacionais
concorrentes, que costumavam ser desenvolvidos especificamente
ao hardware para o qual eram escritos, como acontece hoje com os
sistemas operacionais da Apple. Ele rapidamente ganhou popularidade
em ambientes acadêmicos, bem como entre os programadores atraídos
por sua modularidade. Com o tempo, foi modificado e bifurcado (ou
seja, as pessoas o modificaram e essas modificações serviram de
base para outros sistemas), de modo que atualmente existem muitas
variantes diferentes. No entanto, Unix é agora uma marca registrada
e uma especificação, de propriedade de um consórcio da indústria
chamado Open Group. Dessa forma, somente softwares certificados
pelo Open Group podem se chamar Unix.
19
Como na maioria dos sistemas operacionais, o Linux pode ser utilizado
em dois modos: com interface gráfica (GUI) e por linha de comando (CLI).
Utilizando o modo CLI, que é uma interface baseada em texto, o usuário
interage por meio de comandos interpretados pela CPU, os quais são
executados em um software conhecido como Terminal, como mostra a
Figura 1.
Figura 1 – Terminal Linux
Fonte: https://www.informatique-mania.com/pt/applications/liberez-la-puissance-de-linux-
avec-les-meilleurs-programmes-terminal/. Acesso em: 20 set. 2022.
O terminal recebe o que o usuário digita e passa para um Shell, que,
por sua vez, é responsável por interpretar as instruções e permite que a
CPU execute o que foi digitado e retorne as respostas. Se os comandos
digitados estiverem corretos, no próprio terminal é mostrada a execução
solicitada, podendo ser a instalação de um pacote, software ou mesmo
uma consulta de diretórios.
A CLI começa com um log-in em texto. Se o log-in for bem-sucedido,
após solicitados usuário e senha, você é levado a um Shell CLI
personalizado para o seu usuário especificamente. A seguir trazemos
20
uma ilustração copiada do terminal da distribuição Linux e colado aqui
com o intuito de mostrar como a CLI é apresentada ao usuário.
ubuntu 18.04 ubuntu tty2
ubuntu login: platos
Senha:
Os programas incluídos no sistema Ubuntu são
softwares livres;
os termos exatos de distribuição para cada programa
estão descritos nos arquivos individuais em /usr
share/doc/*/copyright.
sue@ubuntu:~$ w
17:27:22 até 14 min, 2 usuários, carga média: 1,73, 1,83, 1,69
USER TTY DE LOGIN@ IDLE JCPU PCPU O QUE
sue tty2 20:08 14,35 0,05s 0,00sw
O ambiente Linux permite o uso de Shells, que é a famosa tela preta.
Existem vários ambientes Shell no ambiente GNU/Linux. Por padrão, a
maioria das distribuições utiliza o Bash. No entanto, existem outros tipos
de Shell e todos estão listados no arquivo “etc/shells”. Cada um dos Shell
possuem suas particularidades. Por já vir nas distribuições, a grande
maioria dos usuários se dá bem com o Bash.
O Bash possui alguns recursos mais populares, como os apresentados a
seguir:
21
• Scripting: a capacidade de colocar comandos em um arquivo e
depois interpretá-los, utilizando efetivamente o Bash para executar
o bloco de conteúdo do arquivo, o que resulta na execução
de todos os comandos. Este recurso também possui algumas
ferramentas de programação, como instruções condicionais e a
capacidade de criar funções (sub-rotinas AKA).
• Alias: permite abreviar ou criar apelidos para comandos longos.
• Variáveis: usadas para armazenar informações para o Shell Bash
e para o usuário. Podem ser usadas para modificar o modo de
funcionamento de comandos e recursos, além de fornecerem
informações cruciais para o sistema.
1.1 Prompt
Além destes, o Bash possui uma lista de recursos maior. Foram listados
apenas os mais populares. Esses comandos são executados no Shell, por
meio da abertura de um terminal, que por sua vez utiliza o prompt como
interface para a utilização dos comandos.
A estrutura do prompt pode variar entre as distribuições, mas
normalmente contém informações sobre o usuário e o sistema. A seguir
trazemos a estrutura de prompt comum:
sysadmin@localhost: ~ $
O prompt mostrado contém as seguintes informações:
Nome de usuário:
sysadmin @localhost : ~ $
22
Nome do sistema:
sysadmin@ localhost : ~ $
Diretório atual:
sysadmin@localhost: ~ $
O símbolo “~“ é usado como abreviação para o diretório inicial do
usuário. O mais comum é que o diretório inicial esteja no “/home” e
tenha o nome da conta de usuário. Como um exemplo da estrutura
mencionada temos: /home/sysadmin.
1.2 Comandos
Iniciamos este tópico trazendo a informação de que o que parece um
simples comando pode ser mais do que isso. Um comando pode ser
uma chamada de um software, que, quando chamado por meio da CLI,
executa uma ação específica escrita para um fim específico.
O primeiro passo é digitar o nome do comando. Para isso, é necessário
abrir o terminal e iniciar pelo “LS”, com mostrado no exemplo a seguir:
ysadmin@localhost: ~ $ ls
Desktop Documentos Downloads Músicas Imagens Modelos Públicos Vídeos
O “LS” lista os arquivos e diretórios contidos na estrutura em que se está
trabalhando. A utilização de qualquer comando segue um padrão base
que está dividido em dois: [opções] + [argumento].
23
A seguir, trazemos o formato padrão:
comando [opções] [argumentos]
As opções são usadas para modificar o comportamento principal de
um comando, enquanto os argumentos são usados para fornecer
informações adicionais, como nome de um arquivo ou de usuário.
É importante frisar que cada opção e argumento normalmente são
separados por espaço e, dependendo do que se deseja realizar, são
combinados para que o sistema realize o que for desejado.
1.3 Argumentos
Um argumento pode ser usado para especificar algo para o comando
agir. Por exemplo, se o comando “LS” receber o nome do diretório como
argumento, ele listará o conteúdo desse diretório. No exemplo a seguir,
o “/etc/pppdiretório” é usado como argumento, e a saída resultante é
uma lista de arquivos contidos nesse diretório:
sysadmin@localhost : ~ $ ls /etc/ppp
ip-down.d ip-up.d
1.4 Opções
As opções podem ser usadas para alterar o comportamento de um
comando. Por exemplo, o comando “LS” é utilizado para listar o
conteúdo de um diretório. Associado ao LS, podemos usar o “-L”, que,
por sua vez, resulta em uma listagem longa de informações sobre os
arquivos disponíveis em um determinado diretório, como mostrado a
seguir:
24
sysadmin@localhost: ~ $ ls -l
total 0
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Desktop
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Documentos
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Downloads
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Música
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Imagens
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Público
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Modelos
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 20:13 Vídeos
1.5 Tipos de comandos
É importante salientar que em uma estrutura com os comandos
digitados existem informações que dizem muito sobre o que vai ser
executado, sendo possível, inclusive, sabermos de onde o comando vem.
Existem várias fontes diferentes de comandos dentro do Shell de sua
CLI, e a seguir trazemos os tipos existentes:
• Comandos internos: são incorporados ao próprio Shell. Como
exemplo temos o “cd”. Quando um usuário digita o “cd”, o Shell
Bash já está em execução e sabe como interpretá-lo, não exigindo
que programas adicionais sejam iniciados.
sysadmin@localhost: ~ $ type cd
cd is a shell builtin
• Comandos externos: são executáveis binários armazenados em
diretórios pesquisados pelo
Shell.
25
• Alias: permite que o usuário utilize abreviações ou apelidos
para comandos mais longos. Quando o Shell vê um alias sendo
executado, ele substitui a sequência mais longa antes de continuar
a interpretar os comandos.
Para saber quais alias estão disponíveis no Shell utilizado, digite “alias”
no terminal, como mostrado no exemplo a seguir:
sysadmin@localhost: ~ $ alias
alias egrep=’egrep --color=auto’
alias fgrep=’fgrep --color=auto’
alias grep=’grep --color=auto’
alias l=’ls -CF’
alias la =’ls -A’
alias ll=’ls -alF’
aliás ls=’ls --color=auto’
1.6 FHS (Filesystem Hierarchy Standard)
O FHS (padrão para sistemas de arquivos hierárquicos) mantém o
sistema de arquivos nas distribuições Linux organizado. Essa prática
não é fácil, tendo em vista que a maior experiência dos usuários é com
o Windows, em que definimos o sistema de arquivos de acordo com a
conveniência do próprio usuário. Por exemplo, se você quiser usar uma
pasta em “Meus Documentos” para guardar a instalação de um software,
será possível. Porém, essa prática livre traz uma desorganização no
sistema de arquivo. Por esse motivo, sempre que você acessa uma
distribuição Linux, é possível encontrar as mesmas pastas, com o
mesmo nome e, aparentemente, com a mesma função no sistema de
arquivos.
26
Antes de prosseguirmos, cabe ressaltar que FSH não é um programa,
e sim um conjunto de boas práticas não obrigatórias, mas muito
respeitadas. Uma das principais implementações do FSH foi dividir os
arquivos por tipos, entre os quais:
• Arquivos Compartilháveis (Shareable): são arquivos que,
mesmo localizados em uma determinada máquina, podem ser
disponibilizados pelo usuário para que outras pessoas acessem via
rede.
• Arquivos Não Compartilháveis (Nonshareable): ao contrário dos
compartilháveis, estes não podem ser compartilhados.
Também existem os arquivos segmentados por modificação:
• Variáveis (Variable): são arquivos que frequentemente sofrem
alterações, como os arquivos de log.
• Estáticos (Static): não são alterados com frequência, ou
quase nunca, como os arquivos que guardam informações dos
programas, que somente são acessados quando esses programas
são atualizados.
Além das categorias, a seguir listamos os principais diretórios:
• /bin (Binarious – Binários essenciais dos usuários): guarda
os principais programas do sistema computacional. No modo
monousuário, por exemplo, os arquivos de inicialização ficam
nesse diretório.
Como exemplo, os navegadores são localizados no diretório “/usr/
bin”.
• /dev (Device – Arquivos de dispositivos): concentra pontos de
acesso para os dispositivos. Isso porque no Linux os dispositivos
são representados com arquivos. Logo, nesse diretório são
27
armazenados os arquivos que auxiliam no reconhecimento dos
hardwares quando utilizados no sistema computacional.
Como exemplo, pense em um disco rígido; nos sistemas Linux, ele é
representado como “/dev/sda”.
Existem outros diretórios que fazem parte da estrutura de arquivo do
Linux, porém, por serem muitos, trouxemos apenas uma visão geral
sobre FHS. Essa estrutura pode mudar um pouco de distribuição para
distribuição, mas tende a seguir as boas práticas preconizadas pelo FHS.
Referências
ARLEI. Usando o terminal. Prof. Suzano, 2007. Disponível em: https://sites.google.
com/site/profsuzano/sistemas-operacionais/linux/ubuntu/usando-o-terminal.
Acesso em: 20 set. 2022.
NEGUS, Christopher. Linux – A bíblia: o mais abrangente e definitivo guia sobre
Linux. 8. ed. Rio de Janeiro: Alta Books, 2014.
OLONCA, Ricardo Lino. Administração de Redes Linux: Conceitos e Práticas na
Administração de Redes em Ambiente Linux. São Paulo: Novatec, 2015.
28
Linhas de comando, interface
do usuário e administração de
tarefas
Autoria: Allan Crasso Naia de Souza
Leitura crítica: Paulo César Monteiro Nunes
Objetivos
• Criar linhas de comando utilizando Shell Script.
• Conhecer as interfaces de usuários baseadas em
Linux.
• Automatizar tarefas administrativas.
29
1. Shell
Neste Tema, vamos estudar sobre Shell, Shell Script, interfaces e tarefas
administrativas.
Para iniciar, vamos falar sobre Shell. Como você já deve ter lido ou
ouvido, o Shell é um interpretador de comandos utilizados em várias
tarefas administrativas em sistemas operacionais. No caso desta
disciplina, vamos abordá-lo como interpretador para o Linux.
Segundo Jargas (2008), o Shell executa a aplicação de um software que
conecta e interpreta os comandos digitados por um usuário. É a conexão
que esse usuário utiliza para mandar comandos para que a CPU possa
executar.
Por meio do Shell, podemos desenvolver comandos que automatizem
tarefas para sistemas operacionais, no nosso caso o Linux, para serem
executados de tempos em tempos. Como exemplo, podemos citar a
inicialização de sistema, que pode ser automatizada utilizando um script
desenvolvido utilizando o Shell.
Como já vimos, existem alguns tipos de Shell. No caso de sistemas
baseados no Kernel do Linux, um dos mais comuns é o Bash.
O Shell pode ser de dois tipos, baseado em CLI ou em GUI. Como
exemplo, podemos utilizar o Windows Shell, que provê aos usuários do
Windows ferramentas com o desktop environment, a barra de tarefas
e outras ferramentas utilizadas para gerenciar funções do sistema
operacional.
No mundo Linux, podemos citar o GNOME Shell, que, assim como no
Windows, possui a funcionalidade de realizar a interface entre usuário e
sistema operacional. Uma grande diferença entre o Linux e o Windows
30
é que naquele as aplicações costumam funcionar com Shells diferentes,
sejam eles gráficos ou via terminal.
Cada tipos diferentes de Shell pode conter seus próprios conjuntos
de ferramentas e reconhecer blocos de comandos específicos. Nas
distribuições Linux, comumente temos o Bash, que já vem instalado na
maioria delas, bem como o ZSH e o Fish, o que nos leva ao Shell Script,
que vamos abordar no próximo tópico.
1.1 Shell Script
Segundo Neves (2008), é uma ferramenta para automatizar uma
determinada tarefa, definição que remete ao conceito de algoritmos.
O Shell Script é utilizado para programar e escrever uma estrutura,
logicamente coerente, de instruções para realizar uma determinada tarefa.
Como as tarefas referidas aqui são para automatizar rotinas do sistema
operacional, é necessário ter um cuidado referente às permissões
de execução desses scripts, já que eles são arquivos que podem ser
executados. O sugerido é que sejam permissões de usuário comum,
e não como root, levando em consideração que as execuções podem
trazer danos ao próprio sistema operacional.
Para escrever um script, é necessário escolher a forma, se via terminal
ou modo gráfico. Lembre-se de dar a permissão de escrita para o
arquivo, e, para isso, é necessário utilizar o comando “!chmod777%”
– o comando “chmod” é utilizado para configurar as permissões
em arquivos, e o valor “777” concede os direitos necessários para a
utilização de um determinado arquivo, como leitura, escrita e execução
(read, write e execute).
Como mencionado anteriormente, um Shell inicia, mas não
obrigatoriamente, sinalizando qual o interpretador está utilizando. A
seguir temos um exemplo de sintaxe inicial padrão:
31
#!/bin/SHELL_ATUAL
Segue um exemplo utilizando o BASH:
#!/bin/bash
Como exemplo, vamos escrever um script para trazer algumas informações
do usuário, da máquina utilizada e do armazenamento do script:
#!/bin/bash
echo “Seu nome de usuário é:”
whoami
echo “Info de hora atual e tempo que o computador está ligado:”
uptime
echo “O script está executando do diretório:”
pwd
Depois de escrevermos os scripts, será necessário executá-los, e, para
isso, há duas maneiras. A primeira é para se você estiver no mesmo
diretório; nesse caso, basta utilizar o caminho a seguir:
./exemplo1.sh
Para executar o script de outro diretório, será necessário informar o
caminho completo até onde ele está armazenado, como no exemplo a
seguir, considerando que o arquivo está salvo em “/tmp/scripts”.
/tmp/scripts/exemplo1.sh
32
No próximo tópico, vamos abordar sobre o comando utilizados no script,
a fim de elucidar o caminho e sua funcionalidade. Antes, temos que
dizer que infelizmente não vamos conseguir trazer todos os comandos
utilizados para desenvolver tarefas automatizadas via Shell Script e, por
esse motivo, sugerimos que você busque em outras bibliografias para se
aprofundar nesses conhecimentos.
1.2 Comandos
A seguir vamos comentar sobre os comandos utilizados para
desenvolver o script mostrado no tópico anterior.
• Comando “echo”: exibe na tela a string entre aspas duplas.
• Comando “whoami”: é utilizado para mostrar o usuário logado no
sistema.
• Comando “uptime”: é utilizado para exibir a hora atual, o tempo
desde que o computador foi ligado, o número de usuários
logados e uma média do número de processos carregados nos
últimos um, cinco e 15 minutos. É muito útil quando se trata de
gerenciamento de servidores ou gerenciamento de redes, porque
muitos dispositivos, como roteadores Cisco, têm seus sistemas
operacionais baseados no Kernel Linux, o que permite mensurar
pontos como período de manutenção preventiva, ou se acontecem
interrupções constantes.
• Comando “pwd”: é responsável por exibir em qual diretório o
arquivo está sendo executado.
Como em toda linguagem de programação, como boa prática, faz-
se necessário comentar seu código. Em Shell Script, não é diferente,
e, para isso, você deve utilizar o caractere “#”, como no exemplo a
seguir:
33
#!/bin/bash
#A partir daqui você pode inserir um comentário
#Este é um outro comentário para lembrá-lo de que eles são úteis para
nortear os desenvolvedores.
1.3 Interfaces de usuário e desktop
Vamos iniciar com as distribuições. No mundo Linux, esse termo
é destinado sempre para nos referirmos a sistemas operacionais
baseados no Kernel do Linux. Como exemplo de “distro”, podemos citar
Ubuntu, Fedora e Debian.
Cada distribuição possui um terminal, que é uma aplicação utilizada
para darmos comandos ao sistema. Como já mencionamos por aqui,
precisamos fazer uma introdução para falarmos de interfaces.
Para isso, devemos diferenciar interfaces gráficas e desktop environment.
Segundo Brito (2017), a interface gráfica é uma aplicação, em se tratando
de sistemas operacionais. Logo, tudo que você faz nela é interpretado
por um Shell. Então, as interfaces surgem com o intuito de facilitar o uso
dos sistemas computacionais por usuários com menos conhecimentos
técnicos específicos. Já o desktop environment é um conceito mais
complexo, composto por várias aplicações, como calculadora, calendário
e navegadores, incluindo a interface gráfica. Como exemplo podemos
citar o projeto KDE e o Linux Mint, que utiliza como interface o
Cinnamon, com aplicações GNOME como monitor do sistema.
Então, perceba que o trunfo para a popularização dos sistemas
operacionais, e consequentemente da utilização de computadores por
34
qualquer usuário, foi trazer as interfaces como tradutores de linguagem
de alto nível para linguagem de baixo nível. Dessa forma, com um clique
e sem se preocupar com comandos que aquele “clique” vai utilizar para
se comunicar com a CPU, qualquer usuário pode utilizar os sistemas
computacionais. Dessa forma, o Android transformou o Linux em um
dos sistemas operacionais mais utilizados no mundo, quando o assunto
é mobile.
A Figura 1 ilustra um exemplo de interface com o aplicativo do
calendário, mostrando uma parte do conjunto do desktop environment.
Figura 1 – Interface gráfica da distribuição UBUNTU
Fonte: acervo do autor.
1.4 Administrando tarefas
Para a realização de tarefas em sistemas operacionais, é necessário
possuir privilégios que permitam ao usuário executar certas tarefas.
Para isso, são definidos níveis de usuários, a fim de fornecer segurança
em um sistema operacional, no nosso caso o Linux. Cada usuário no
sistema deve fazer log-in usando uma conta que permite que ele acesse
arquivos e diretórios específicos, com determinadas permissões de
35
arquivo e diretório concedidas pelo sistema a usuários, grupos e todos
os outros que efetuem log-in. Essas permissões podem ser editadas pelo
usuário root.
Existem muitas maneiras diferentes de executar um comando que
requer privilégios administrativos, ou de root. Realizar log-in no sistema
como um usuário root permite que você execute comandos como
administrador. Porém, este é um acesso delicado, visto que você passa
a ter privilégios para executar tarefas que podem, inclusive, danificar o
sistema operacional.
Nos sistemas operacionais Linux, como o Ubuntu, os comandos
administrativos podem ser executados usando o comando “sudo”, o
qual também permite que os usuários executem comandos como outro
usuário, de forma semelhante ao comando “SU”. Dessa forma, você
assume como root. Como exemplo, podemos citar a linha de comando a
seguir:
~ $ sudo head /etc/shadow
Depois de digitar o comando, será solicitada a senha de root.
Uma das vantagens de utilizar o “sudo” é a diminuição do risco de
utilização de comandos acidentalmente como root.
Essa introdução sobre contas de usuários se faz necessária para
entendermos que podemos configurar tarefas para serem executadas
automaticamente em um período definido. Cada usuário possui um
arquivo que serve para agendamento de tarefas. A seguir vamos
abordar sobre esse executável, chamado de Cron.
Segundo Lewis e Drake (2020), o Cron é um software DAEMON de
agendamento de tarefas, encontrado em sistemas operacionais do tipo
36
Unix, incluindo as distribuições do Linux. Ele executa em background as
tarefas configuradas.
Por meio do Cron, podemos estipular ações a serem realizadas
periodicamente pelo sistema, utilizando como parâmetros os
seguintes dados: mês, dia do mês, dia da semana, hora e minuto. Esses
parâmetros serão informados em uma linha, em um determinado
arquivo que mencionaremos mais adiante.
Vamos à prática? De acordo com Lewis e Drake (2020), a seguir é
mostrada a sequência de comandos necessários para a instalação do
Cron em uma máquina com o Ubuntu:
• sudo apt update – Atualiza o índice de pacotes locais.
• sudo apt install cron – Instala o Cron.
• sudo systemctl enable cron – Habilita o Cron.
Segundo Lewis e Drake (2020), as tarefas do Cron são registradas e
gerenciadas em um arquivo especialmente conhecido como “crontab”.
Cada conta de usuário no sistema pode ter seu próprio arquivo
“crontab”, no qual poderá agendar as tarefas.
A configuração do Cron se dá pelo comando “crontab” com as seguintes
chaves:
• Crontrab -l: mostra o “crontab” do usuário atual.
• Crontrab -r: remove todo o “crontab” do usuário atual.
• Crontrab -e: edita o “crontab” do usuário atual.
Assim como em todas as linguagens de programação, o Cron possui
caracteres reservados e destinados a fins específicos dentro de seu
escopo. São eles:
37
• * (asterisco) – Em expressões Cron, um asterisco é uma variável
crua que representa “todos”. Assim, uma tarefa agendada com * *
* * *... será executada a cada minuto, de cada hora, de cada dia, de
cada mês.
• , (vírgula) – Vírgulas fragmentam os valores do agendamento para
formarem uma lista. Se quiser executar uma tarefa no início e na
metade de cada hora, em vez de escrever duas tarefas separadas
(por exemplo, 0 * * * * ... e 30 * * * * ...), pode conseguir a mesma
funcionalidade com um (0,30 * * * * ...).
• - (hífen) – Um hífen representa um intervalo de valores no campo
da agenda. Em vez de ter 30 tarefas agendadas realizadas em um
comando que você quer executar nos primeiros 30 minutos de
cada hora (como em 0 * * * * ..., 1 * * * * ..., 2 * * * * ... e assim por
diante), bastaria que você as agendasse como 0-29 * * * *.
• / (barra) – Podemos utilizar uma barra com um asterisco para
expressar um valor de etapa. Por exemplo, em vez de escrever
oito tarefas Cron separadas para executar um comando a cada
três horas (como em: 0 0 * * * ..., 0 3 * * * ..., 0 6 * * * ... e assim
por diante), você poderia agendá-las para executar da seguinte
maneira: 0 */3 * * *.
Cabe destacar uma opção importante referente à execução do Cron:
não é necessário que ele seja parado ou reinicializado para que as
informações sejam lidas pelo “crontab”. Após sua edição, as novas
tarefas já estarão valendo.
Ainda segundo Lewis e Drake (2020), esses são os comandos básicos
utilizados para a visualização e a edição de uma tarefa no Linux. Existem
muitos outros comandos que servem para o agendamento de tarefas,
mas infelizmente não cabem todos aqui, e por isso sugerimos que
você aprofunde seus conhecimentos fazendo uso das bibliografias
disponíveis.
38
Referências
BRITO, Samuel Henrique Bucke. Serviços de Redes em Servidores Linux. São
Paulo: Novatec, 2017.
FILHO, João Ediberto. Descobrindo o Linux: Entenda o Sistema Operacional GNU/
Linux. 3. ed. São Paulo: Novatec, 2012.
JARGAS, Aurélio Marinho. Shell Script Profissional. São Paulo: Novatec, 2008.
LEWIS, Shaun; DRAKE, Mark. Como usar o Cron para automatizar tarefas no
Ubuntu 18.04. Digital Ocean, 2020. Disponível em: https://www.digitalocean.com/
community/tutorials/how-to-use-cron-to-automate-tasks-ubuntu-1804-pt. Acesso
em: 20 set. 2022.
NEVES, Júlio Cezar. Programação Shell Linux. 7. ed. São Paulo: Brasport, 2008.
39
Configuração e monitoramento
de serviços
Autoria: Allan Crasso Naia de Souza
Leitura crítica: Paulo César Monteiro Nunes
Objetivos
• Configurar ativos de redes, conforme especificações.
• Configurar a segurança da rede local e de seus ativos
de acordo com a política de segurança da empresa.
• Monitorar serviços de redes de acordo com as
especificações e as necessidades locais.
40
1. Serviços essenciais do sistema
No ambiente de computação atual, é raro ter
uma máquina autônoma. Em quase todos os casos, um computador
será conectado a uma rede para fornecer o acesso de que os usuários
precisam.
O acesso à rede é crítico por vários motivos. Normalmente, as
atualizações do sistema operacional são feitas pela rede usando
repositórios de software. Se o sistema for um servidor que fornece
serviços, como compartilhamento de arquivos ou páginas da web, uma
conexão de rede é essencial.
Fornecer acesso à rede é responsabilidade do usuário root no
sistema. Infelizmente, isso às vezes pode ser uma tarefa difícil, pois
as placas de rede não são todas padronizadas, e, portanto, uma
configuração adicional pode ser necessária. Além disso, há vários
componentes que precisam ser configurados para que o sistema se
conecte à rede, incluindo configurações de endereço IP, configurações
de gateway e configurações de DNS (Domain Name System).
1.1 Fundamentos de rede
Cada computador e cada dispositivo em uma rede possuem um
identificador exclusivo. Assim, da mesma forma que você endereçaria
uma carta para enviar pelo correio, os computadores usam o
identificador exclusivo para enviar dados para computadores e
dispositivos específicos em uma rede. A maioria das redes atuais,
incluindo todos os computadores na internet, usa o protocolo TCP/
IP desenvolvido pela Internet Engineering Task Force (IETF) como padrão
de comunicação na rede. Nesse modelo, o identificador exclusivo de
um computador é seu endereço IP, o qual pode ser estático, atribuído
41
manualmente, ou dinâmico, atribuído pelo protocolo DHCP (Dynamic
Host Configuration Protocol), executado como um serviço na rede.
Uma tabela de roteamento é um pequeno banco de dados na memória
gerenciado por todos os dispositivos da rede (ou seja, computador,
roteador etc.). Ele é usado para calcular a jornada ideal através de
outros roteadores na mesma ou em outras redes para mensagens que é
responsável por encaminhar para um endereço de destino.
TCP/IP é uma combinação dos dois protocolos mais
populares. O protocolo TCP (Transmission Control Protocol) é utilizado
para entrega confiável de dados entre computadores conectados através
de uma LAN (Local Area Network) ou da internet, enquanto o protocolo IP
(Internet Protocol) é o principal responsável pelo roteamento dos pacotes
de dados até o destino Morada.
Existem duas versões do protocolo IP usadas na internet: o IP versão
4 (IPv4) e, o mais atual, IP versão 6 (IPv6). O IPv4 é a versão usada na
maioria dos sistemas atuais.
1.2 IPv4 público e privado
Existem dois tipos de endereços IP usados em
uma
rede: público e privado. O InterNIC (Network Information Center) é o órgão
global responsável pela atribuição de endereços públicos. Ele atribui IPs
de rede com base em classe, sendo sempre exclusivos. Os endereços
públicos estão disponíveis com roteadores de internet para que os
dados possam ser entregues corretamente.
A maioria das organizações usa a internet para enviar e-mail e navegar
na web. Para fazer isso, apenas sistemas como servidores de e-mail,
servidores web e proxies (que tratam de solicitações intermediárias
de clientes que buscam recursos de outros servidores) precisam de
conectividade direta com a internet para que usuários fora da LAN
42
possam se conectar a esses servidores. Em algumas ocasiões, serviços
adicionais, como servidores de compartilhamento de arquivos,
precisarão ter um endereço IP público para conexão direta com a
internet.
Por outro lado, os usuários que trabalham em suas próprias máquinas
e desejam se conectar à internet não precisam de um endereço IP
globalmente exclusivo. Em vez disso, podem receber endereços IP
privados, que são convertidos em endereços IP públicos pelo gateway/
roteador.
Na RFC 1918, uma parte do espaço de endereço IP foi designada como
“endereços privados”. Esse intervalo de endereços não se sobrepõe aos
endereços públicos. Os endereços privados podem ser reutilizados, o
que significa que o risco de ficar sem endereços na internet foi mitigado.
O espaço de endereço privado não é acessível diretamente pela internet.
Dessa forma, para acessar dispositivos utilizando o espaço de endereço
privado, um roteador usando NAT (Network Address Translation) precisará
ser configurado.
Existem três blocos de endereços privados:
• 10.0.0.0/8 – Este endereço Classe A permite o intervalo de
endereços de 10.0.0.1 até 10.255.255.254. Os 24 bits do ID do host
estão disponíveis para a sub-rede.
• 172.16.0.0/12 – Esta rede Classe B permite o intervalo de
endereços de 172.16.0.1 até 172.31.255.254. Os 20 bits do ID do
host estão disponíveis para sub-rede.
• 192.168.0.0/16 – Esta rede Classe C permite o intervalo de
endereços de 192.168.0.1 até 192.168.255.254. Os 16 bits do ID do
host estão disponíveis para sub-rede.
43
1.3 Roteamento
A função do roteamento é enviar um pacote IP, composto por um
cabeçalho (endereço de origem e destino) e dados encapsulados, de um
ponto a outro. Todos os dispositivos possuem tabelas de roteamento,
as quais contêm rotas utilizadas para calcular o melhor caminho das
mensagens que ele é responsável por encaminhar através de outros
roteadores na mesma ou em outras redes.
Assim, quando um computador envia pacotes para outro computador,
ele consulta sua tabela de roteamento. Se um pacote estiver sendo
enviado para um destino na mesma sub-rede, nenhum roteamento será
necessário e o pacote será enviado diretamente ao computador. Por
outro lado, se um pacote estiver sendo enviado para a internet ou
outra rede, então o primeiro “salto” ou lugar que um pacote irá é para o
que estiver no campo gateway padrão (uma configuração de rede com
o endereço IP do roteador de rede), permitindo que o roteador (um
dispositivo de rede que encaminha pacotes IP) decida o caminho ideal a
seguir.
O roteador da rede terá sua própria tabela de roteamento, incluindo
sua própria rota padrão (para qual roteador enviar pacotes quando o
destino estiver em outra rede ou sub-rede). A tabela de roteamento
é uma lista de outros roteadores que estão conectados ao roteador
atual. Se o roteador recebe um pacote para um destino de rede que
possui em sua tabela de roteamento (normalmente esta será outra rede
local), ele simplesmente o encaminha. Caso contrário, enviará o pacote
para sua rota padrão (normalmente esta será a maneira de acessar a
internet).
Para visualizar a tabela de roteamento existente, execute o comando
“route”:
44
root@localhost:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
192.168.1.0 * 255.255.255.0 UG 0 0 0 eth1
192.168.2.0 * 255.255.255.0 UG 0 0 0 eth0
Na saída da tabela de roteamento do Kernel, a primeira coluna
contém o Destination, endereço de rede. A palavra default significa
a rota padrão. A segunda coluna contém o definido Gateway para o
destino especificado. Caso apareça um asterisco (*), significa que não
é necessário um gateway para acessar a rede de destino. A coluna
Genmask mostra a máscara de rede para a rede de destino. Na
coluna Flags, “U” significa que a rota está ativa e disponível, enquanto “G”
significa que o gateway especificado deve ser usado para essa rota. A
coluna Metric define a distância até o destino, o que geralmente é
listado no número de saltos (o número de roteadores entre a origem e
o destino). A coluna Ref não é usada pelo Kernel Linux, e a coluna Use
é usada para definir o número de pesquisas para a rota. Finalmente,
a coluna Iface é usada para definir a interface de saída para essa rota.
A rota padrão nesse exemplo foi configurada para usar a interface eth1,
a segunda placa de rede do sistema. O dispositivo de rede com um
endereço IP de 192.168.1.1 é designado como o gateway padrão, que
é um roteador que passará pacotes dessa rede para outra rede. O
endereço especificado para o gateway padrão deve estar em uma rede à
qual seu sistema esteja conectado.
45
Para entender melhor a saída anterior, considere o seguinte:
1. Se os endereços de designação do pacote de rede estiverem na
rede 192.168.2.0/24, o pacote será transmitido na rede à qual
a placa de rede eth0 está conectada. O endereço IP de origem do
pacote será 192.168.2.1 (o endereço IP atribuído à placa de
rede eth0).
2. Se os endereços de designação do pacote de rede estiverem na
rede 192.168.1.0/24, o pacote será transmitido na rede à qual
a placa de rede eth1está conectada. O endereço IP de origem do
pacote será 192.168.1.106 (o endereço IP atribuído à placa de
rede eth0).
3. Todos os outros pacotes de rede são enviados ao roteador com o
endereço IP 192.168.1.1,através da placa de rede eth1.
root@localhost:~ # route add default gw 192.168.1.1 eth1
Agora, se alguma das rotas na tabela de roteamento não
corresponder ao endereço especificado, o pacote será encaminhado
para 192.168.1.1 (a rota padrão).
1.4 Segurança de redes Linux
O comando “nmap” (network mapper) é uma ferramenta de código
aberto usada por administradores de sistema para auditoria de redes,
verificação de segurança e localização de portas abertas em máquinas
host. Ele é capaz de escanear um host ou toda a sub-rede para encontrar
portas TCP e UDP abertas. Essa ferramenta também é usada por
invasores para encontrar portas vulneráveis.
46
Se o “nmap” for executado sem nenhuma opção, verificará as portas TCP
abertas e relatará as portas abertas junto com o serviço em execução
nelas. Por exemplo, execute o seguinte comando:
root@localhost:~# nmap example.com
Starting Nmap 6.40 ( http://nmap.org ) at 2015-03-13 22:02 UTC
Nmap scan report for example.com (192.168.1.3)
Host is up (0.000013s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 2.49 seconds
Para verificar as portas TCP e UDP que podem estar abertas, o “nmap”
pode ser executado com as opções -sT e -sU:
root@localhost:~# nmap -sT -sU example.com
Starting Nmap 6.40 ( http://nmap.org ) at 2015-03-13 22:07 UTC
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.03 seconds
Para verificar quais hosts estão disponíveis em uma rede, o
comando “nmap” fornece uma opção que executará ping efetivamente
em todos os hosts na rede especificada. Por exemplo:
47
root@localhost:~# nmap -sP 192.168.1.3/24
Starting Nmap 6.40 ( http://nmap.org ) at 2015-03-13 22:10 UTC
Nmap scan report for example.com (192.168.1.3)
Host is up.
Nmap done: 256 IP addresses (1 host up) scanned in 10.46 seconds
O comando network status “netstat” fornece muitas informações sobre
conexões de rede, estatísticas de interface, tabelas de roteamento e
muitos outros detalhes da configuração de rede que foram discutidos
anteriormente. Ele foi projetado para ser executado no sistema local, ou
seja, não verifica portas em sistemas remotos.
Na avaliação da segurança da rede, as opções mais úteis do “netstat” são
aquelas que mostram as portas de rede que estão abertas no momento
e o estado das conexões. Para visualizar todas as portas abertas e os
processos que as abriram, execute o seguinte comando:
root@localhost:~:~# netstat -lunpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 127.0.0.11:33314 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.2:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
-
48
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
16/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp6 0 0 :::53 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
16/sshd
tcp6 0 0 ::1:953 :::* LISTEN
udp 0 0 192.168.1.2:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp 0 0 127.0.0.11:38117 0.0.0.0:*
udp6 0 0 :::53 :::*
O protocolo, o número da porta, o nome do processo e o PID são os
campos-chave na saída anterior.
Cabe ressaltar que a gerência do Kernel envolve operações complexas.
Por esse motivo, é importante ter ciência de que é necessário muito
estudo para contemplar uma gerência que atenda à necessidade do
usuário. No entanto, as noções trazidas durante nossa aula serão
suficientes para sanar as necessidades introdutórias.
Os comandos de redes existentes no Linux trazem muitos recursos que
possibilitam uma análise detalhada do tráfego da rede. Dessa forma, é
possível testar e auditar a maioria das situações de redes.
49
Referências
BRITO, Samuel Henrique Bucke. Serviços de Redes em Servidores Linux. São
Paulo: Novatec, 2017.
FILHO, João Ediberto. Descobrindo o Linux: Entenda o Sistema Operacional GNU/
Linux. 3. ed. São Paulo: Novatec, 2012.
JARGAS, Aurélio Marinho. Shell Script Profissional. São Paulo: Novatec, 2008.
NEVES, Júlio Cezar. Programação Shell Linux. 7. ed. São Paulo: Brasport, 2008.
50