Você está na página 1de 27

“DESENVOLVIMENTO E CONFIGURAÇÃO DE UM AMBIENTE DE REDE

CONTROLADO E MONITORADO, COM RECURSOS AVANÇADOS DO LINUX”

André Moichi Yabiku - N3862E-7


Lucas Gregório Torres - F012HC-8

SI6P12
Sumário
3. OBJETIVO DO TRABALHO .................................................................................................. 3
4. INTRODUÇÃO ....................................................................................................................... 4
5. Fundamentos dos principais recursos do Sistema Operacional ...................................... 6
5.1. PostgreSQL ..................................................................................................................... 6
5.2. Java Development Kit ..................................................................................................... 7
5.3. Squid e Proxy .................................................................................................................. 8
5.4. SARG ............................................................................................................................... 8
5.5. SAMBA 4 ......................................................................................................................... 9
5.6. Firewall ............................................................................................................................ 9
6. PLANO DE DESENVOLVIMENTO DA APLICAÇÃO .......................................................... 10
6.1. CADASTRAR PRODUTOS ............................................................................................ 10
6.2. LISTAR TODOS OS PRODUTOS .................................................................................. 11
6.3. LISTAR UM PRODUTO ESPECÍFICO ........................................................................... 12
6.4. DELETAR PRODUTO .................................................................................................... 13
7. Projeto (estrutura) do ambiente: ....................................................................................... 14
7.1. Arquivos de configuração de Rede: ............................................................................ 14
7.2. PostgreSQL Servidor01 ................................................................................................ 15
7.3 Firewall Servidor02 ........................................................................................................ 16
7.4. SAMBA 4 Servidor02 .................................................................................................... 17
7.5. SQUID Proxy Servidor02 .............................................................................................. 18
7.6. SARG Server02 ............................................................................................................. 20
8. Relatório código fonte. ....................................................................................................... 22
9. Bibliografia .......................................................................................................................... 25
3. OBJETIVO DO TRABALHO

O trabalho tem por objetivo simular um ambiente com diversas máquinas


conectadas em rede no qual uma loja lista seus produtos, atualiza seu estoque e dá baixa
nos mesmos dentro de um ambiente controlado, fazendo uso das ferramentas e técnicas
contidas nos ambientes Linux.
Por meio desta documentação, buscamos expor os conceitos utilizados,
aprendizado coletado, tecnologias envolvidas e estrutura elaborada para que fossem
cobertos os diversos pontos exigidos, que compilam diversas disciplinas já cursadas até
o momento.
4. INTRODUÇÃO

Podemos constatar a grande demanda por soluções tecnológicas atualmente


dentro dos mais variados contextos, fazendo com que seja possível a tais soluções
otimizar processos, reduzir custos e melhorar a forma com que as diferentes tarefas que
temos em nossos cotidianos. Muitas vezes, notamos que um bom piloto faz o melhor uso
do seu carro dentro de suas limitações, e ao mau piloto, uma Ferrari não seria o suficiente
para tirar o melhor dele. Trazendo essa comparação ao tema proposto desta discussão,
ao bom gestor/operador de TI de uma empresa basta uma infraestrutura capaz de
suportar o necessário para que os efeitos da automatização de processos,
incrementação de registros, otimização do tempo e recursos sejam visíveis.
Dentro do nosso trabalho buscamos trazer algumas soluções que são contidas
por default no sistema operacional Linux e incrementamos a solução como um todo
fazendo uso de algumas outras soluções tecnológicas, como, por exemplo: git¹
(versionamento de código), framework de persistência para bancos de dados (JPA),
framework para requisições HTTP e simular um micro serviço (Spring Boot), ferramenta
para virtualização de máquinas (HyperV), framework para comunicação entre clientes de
diferentes sistemas operacionais (SAMBA4), ferramenta para realizar requisições HTTP
(Postman), controle de acessos e restrições (squid).
Para ilustrar os itens citados acima, simulamos uma loja XPTO de um segmento
genérico, com o objetivo de apenas demonstrar um sistema que possui suas aplicações
rodando em um servidor local, recebendo e distribuindo as respectivas requisições HTTP
que chegam, para realizar consultas, alterações e deleções no banco de dados, como
mais abaixo será exposto.
A loja possui mais de uma máquina simulando um cliente, com restrições de
acesso, podendo se comunicar apenas com o servidor a ela designado e, também, uma
das funções desenvolvidas para exemplificar uma forma de gerir o sistema e criar regras
de restrições é a função de bloqueio ao acesso de redes sociais, de acordo com qual for
a política da empresa, sendo possível restringir o acesso somente a determinados
domínios.
Com o vasto conteúdo presente na internet atualmente, tudo foi possível devido a
horas dedicadas à pesquisa e leitura de documentações disponibilizadas pelas próprias
ferramentas já citadas, além de diversos testes realizados, os quais demonstrarão o
sistema e suas funcionalidades.
Buscamos nos ater ao necessário, fazendo com que apenas as demonstrações
das requisições e sua reflexão no banco de dados fossem evidências concretas do
sistema rodando sua aplicação.
5. Fundamentos dos principais recursos do Sistema Operacional

Todos os recursos foram virtualizados usando o a ferramenta Hyper-V do


Windows, ao total quatro máquinas foram virtualizadas, dois servidores e dois clientes,
sendo um cliente Windows 10 pro e outro Ubuntu Desktop 20.04 e os servidores foram
criados em cima do sistema operacional Ubuntu Server 20.04.
No trabalho os principais recursos do sistema operacional ficaram concentrados
em dois servidores, o primeiro servidor é o servidor de banco de dados, onde o banco
de dados PostgreSQL 10.19 está em funcionamento, já no segundo servidor é o servidor
de aplicação juntamente com o servidor de proxy e active directory, nesse servidor para
rodar a aplicação utilizamos o Java Development Kit 8, na parte de proxy foi utilizado o
Squid juntamente com o Sarg e Apache2, o Sarg e o Apache2 são utilizados para exibir
algumas informações de log do Squid em um site web e como active directory foi utilizado
o Samba 4.

5.1. PostgreSQL

PostgreSQL é um sistema gerenciador de banco de dados objeto-


relacional baseado no POSTGRES, Versão 4.2, desenvolvido na Universidade da
Califórnia no Departamento de Ciências da Computação em Berkeley, o qual foi pioneiro
em muitos conceitos que vieram a estar disponíveis em alguns bancos de dados
comerciais tempos depois.
O PostgreSQL é um banco de dados objeto-relacional (sem relação com
linguagens de programação orientadas a objetos), em que cada coisa criada é tratada
como um objeto, tais como bancos de dados, tabelas, views, triggers, etc.
O PostgreSQL também é 100% código aberto, assim fazendo com que
grandes empresas como EnterpriseDB, Fujitsu, Apple, Red Hat e VMWare e, até algum
tempo atrás, a Sun contribuíssem para seu desenvolvimento, mas nenhuma dessas
empresas é “dona” do PostgreSQL.
No mundo corporativo, onde o PostgreSQL sempre foi adequado, seu uso vem
crescendo sobre as alternativas proprietárias como Oracle Database, DB2 e Microsoft
SQL Server. Essas alternativas, além de muito caras, vêm perdendo em qualidade de
suporte especializado. A equação é simples: enquanto numa solução proprietária o
suporte é totalmente dependente de sua empresa (vendor lock-in), com o PostgreSQL
existe liberdade total de escolha de suporte, assim como, modificações no código feitas
por uma empresa podem beneficiar a todos, portanto, é possível “pressionar” uma
empresa que suporta o PostgreSQL com maior facilidade do que a Oracle, por exemplo,
pois o contrato de suporte é exclusivo dela. Para pressionar a Oracle, o cliente precisará
literalmente sair do Oracle Database e isso pode ser muito mais caro que o investimento
feito na compra da solução.

5.2. Java Development Kit

O Java Development Kit (JDK) é um pacote de software em que é usado


para desenvolver aplicativos baseados em Java, ou seja, ele contém um compilador, um
depurador e o próprio Java Runtime Environment (JRE) para que os programas possam
ser executados.
É o JDK em que provê o javac.exe, que compila códigos .java em bytecode,
assim, possibilitando a compilação em qualquer sistema operacional.
5.3. Squid e Proxy

O Squid é um proxy de cache para a Web que oferece suporte a HTTP, HTTPS e
FTP. Ele reduz a largura de banda e melhora os tempos de resposta ao armazenar em
cache e reutilizar as páginas da web solicitadas com frequência. O Squid possui
controles de acesso extensivos e é um ótimo acelerador de servidor. Ele roda na maioria
dos sistemas operacionais disponíveis, incluindo Windows e é licenciado sob a GNU
GPL.
O Squid é usado por centenas de provedores de Internet em todo o mundo para
fornecer a seus usuários o melhor acesso possível à web. O Squid otimiza o fluxo de
dados entre o cliente e o servidor para melhorar o desempenho e armazena em cache o
conteúdo usado com frequência para economizar largura de banda. O Squid também
pode rotear solicitações de conteúdo para servidores em uma ampla variedade de
maneiras para construir hierarquias de servidor de cache que otimizam o rendimento da
rede.

5.4. SARG

SARG é uma ferramenta de código aberto que permite analisar os arquivos


de log do Squid e gerar relatórios em formato HTML com informações sobre usuários,
endereços IP, sites mais acessados, uso total de largura de banda, tempo decorrido,
downloads, sites de acesso negado, relatórios diários, relatórios semanais e relatórios
mensais.
O SARG é uma ferramenta muito útil para ver quanta largura de banda da Internet
é usada por máquinas individuais na rede e pode ver em quais sites os usuários da rede
estão acessando.
5.5. SAMBA 4

Samba é o conjunto de programas de interoperabilidade padrão do Windows para


Linux e Unix.
Desde 1992, a Samba oferece serviços de impressão e arquivos seguros, estáveis
e rápidos para todos os clientes que usam o protocolo SMB / CIFS, como todas as
versões de DOS e Windows, OS / 2, Linux e muitos outros.
O Samba é um componente importante para integrar perfeitamente servidores e
desktops Linux / Unix em ambientes Active Directory. Ele pode funcionar como um
controlador de domínio ou como um membro regular do domínio.
Samba é um pacote de software que dá aos administradores de rede flexibilidade
e liberdade em termos de instalação, configuração e escolha de sistemas e
equipamentos. Por tudo o que oferece, a popularidade do Samba cresceu, e continua
crescendo, todos os anos, desde seu lançamento em 1992.

5.6. Firewall

No caso do software, a firewall é instalada numa máquina preparada para isso e


fica localizada entre a rede interna e a rede pública. Um firewall baseado em hardware
corre numa appliance que contém um sistema operativo especificamente desenhado
para esse tipo de tarefas. Claro que estes últimos têm um melhor desempenho, mas são
muito mais complexos na sua configuração e não são tão flexíveis.
Mas basicamente podemos dizer que um firewall é um programa ou a combinação
de um software com hardware (appliance) que filtra a informação que vem da Internet
para dentro da rede ou apenas um PC, ou seja contém regras que especificam o que
pode ou não passar em termos de tráfego. Portanto se um pacote é indicado ou marcado
pelo firewall não passa para dentro da rede interna. É uma boa medida de defesa contra
actividades maliciosas o colocar ou implementar um firewall num ponto de conexão entre
a rede interior com o mundo lá fora.
6. PLANO DE DESENVOLVIMENTO DA APLICAÇÃO

O micro serviço desenvolvido tem por objetivo simular um sistema de uma loja
genérica realizando as 4 funções básicas numa base de dados (CRUD). O serviço
permite ao usuário inserir o nome do produto, a quantidade e o valor.

6.1. CADASTRAR PRODUTOS


No primeiro exemplo abaixo, podemos ver uma requisição carregando no corpo
os dados que serão cadastrados do produto em questão.
6.2. LISTAR TODOS OS PRODUTOS

Após os devidos cadastros sendo realizados, ao realizarmos uma requisição do


tipo GET no endpoint “api/produtos/” podemos ter como retorno desta requisição a lista
de todos os produtos já cadastrados e seus respectivos valores.

get all

get one
6.3. LISTAR UM PRODUTO ESPECÍFICO

Ao ter uma requisição no endpoint “api/produtos/id” com o número do ID referente


à chave primária do objeto dentro da base de dados, podemos ter como response da
requisição apenas o produto desejado.
6.4. DELETAR PRODUTO

E para realizar uma deleção dentro da base de dados, ao realizar uma requisição
do tipo DELETE no endpoint “api/produto” com os dados do produto desejado dentro do
corpo da requisição, é possível remover da base de dados o produto referido.
7. Projeto (estrutura) do ambiente:

Diagrama de rede do sistema descrito anteriormente:

7.1. Arquivos de configuração de Rede:


7.2. PostgreSQL Servidor01
Configuração de restrição de acesso ao PostgreSQL assim restringindo o acesso
dos IP’s não listados:

7.3 Firewall Servidor02


Na imagem acima temos as configurações do firewall.sh, que é um script bash
que será executado sempre que o servidor ligar a partir do arquivo firewall.service como
se pode observar na imagem abaixo.

7.4. SAMBA 4 Servidor02

No servidor02 o Samba04 foi configurado como active directory para que


arquivos possam ser compartilhados entre o servidor02 e os Clientes para que se possa
de maneira fácil fazer a manutenção dos arquivos de configuração da aplicação.
Imagem do código adicionado ao arquivo de configuração do samba para
criar a pasta “dev” compartilhada com clientes Windows e Linux e a direita um cliente
Windows acessando a pasta dev pelo IP que está em modo bridge.
7.5. SQUID Proxy Servidor02

O SQUID foi configurado com dois grupos de usuários diretoria e


funcionários,
o grupo diretoria tem acesso a qualquer site, o grupo funcionários tem restrição
as redes sociais, usuários sem grupos não navega na internet como é possível visualizar
na imagem abaixo.

O controle de usuários e grupos com o SQUID é realizado a partir da configuração


auth_param. Na imagem abaixo é possível verificar sua implementação.
Na imagem abaixo o login foi efetuado com um usuário do grupo diretoria o qual
tem todas as redes sociais liberadas.

Na imagem abaixo o login foi efetuado com um usuário do grupo funcionários o


qual tem todas as redes sociais bloqueadas.
7.6. SARG Server02

O SARG utilizado junto ao Apache2 é um método eficiente de visualizar os


arquivos de log em que o SQUID gera sobre informações de acesso e uso de banda de
cada usuário. Abaixo um exemplo de como o SARG junto com o Apache2 exibe os
dados.
8. Relatório código fonte.
9. Bibliografia

¹https://github.com/LucasGTorres/REST-API-Java
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
https://documentation.suse.com/sles/12-SP3/html/SLES-all/cha-squid.html
https://docs.microsoft.com/pt-br/virtualization/
https://learning.postman.com/docs/getting-started/introduction/
https://www.postgresql.org/docs/

Você também pode gostar