TCC Seguranca -1.0
-
Upload
adriano-santos -
Category
Documents
-
view
126 -
download
1
Transcript of TCC Seguranca -1.0
Faculdade Eniac
Graduação Tecnológica em Tecnologia de Redes de Computadores
Adriano José dos Santos
Luan Moreno
Segurança Em Redes Linux- SRL
Servidores Críticos
Guarulhos
2013
Segurança Em Redes Linux- SRL
Servidores Críticos
Trabalho de Conclusão de Curso
apresentado à Faculdade Eniac, como
requisito parcial para a obtenção do título de
Graduação Tecnológica em Tecnologia de
Redes de Computadores
Orientador: Prof. Andreia Pereira
Guarulhos
2013
Dedico este TCC a minha Família, pois sem
a união e apoio não seria possível acreditar
no melhor que podemos alcançar.
Agradeço primeiramente a Deus e as pessoas que
nos incentivaram ao longo desta trajetória da vida.
“Você pode encarar um erro como uma besteira a
ser esquecida ou como um resultado que aponta
uma nova direção.”
Steve Jobs
Sumário
Introdução .......................................................................................................................................... 8
1. A Internet ................................................................................................................................. 10
1.1 O TCP/IP e a Internet .......................................................................................................... 11
1.2 Um breve histórico ............................................................................................................... 12
2. Segurança em Redes ................................................................................................................ 13
2.1 O que é segurança na rede ................................................................................................ 13
2.2 Criptografias ......................................................................................................................... 14
2.3 Sistemas de Detecção de Invasão .................................................................................... 18
2.4 Ataques e segurança .......................................................................................................... 21
2.5 Mecanismo de segurança .................................................................................................. 22
3. Segurança com servidores Linux ............................................................................................ 24
3.1 História do Linux .................................................................................................................. 24
3.2 Servidores Linux .................................................................................................................. 24
3.3 Servidores de rede local ..................................................................................................... 25
3.4 Servidores de internet ......................................................................................................... 26
4. Firewall......................................................................................................................................... 27
4.1 Níveis de segurança ............................................................................................................ 28
4.2 Configurações de um Firewall no Linux ........................................................................... 28
4.3 Filtragens de pacotes .......................................................................................................... 29
5. Servidor Proxy Squid ................................................................................................................. 30
5.1 Configuração Proxy Squid .................................................................................................. 30
6. Políticas de Segurança ............................................................................................................. 32
6.1 Procedimentos de segurança ............................................................................................ 33
7. Revisão Bibliográfica ................................................................................................................. 34
8. Conclusão ................................................................................................................................... 35
9. Referências Bibliográficas ........................................................................................................ 36
10. Anexos ....................................................................................................................................... 37
10.1 Arquivo de configuração de um Firewall (Iptables) ..................................................... 37
10.2 Arquivo do de configuração do Proxy (Squid)............................................................... 45
11. Termo de compromisso e responsabilidade ........................................................................ 50
8
Introdução
Trata-se de um trabalho de conclusão de curso como requisito parcial para obtenção
de titulação em tecnólogo do curso de Tecnologia Redes de Computadores. O tema
deste estudo foi escolhido em função do grande crescimento da internet e a falta de
segurança. A que hoje em dia é fundamental para que os computadores e
servidores estejam protegidos para combater invasões e outros tipos de ameaça.
Ameaças como as de spam, vírus e hackers são muito comum em redes internas e
externas, e sem conhecimento adequado e com ferramentas adequadas fica
praticamente impossível detectar e eliminar algo do gênero.
O problema que as empresas andam sofrendo hoje em dia é a falta de segurança
dentro da rede local, ocasionando problemas como ataques por de hackers e
grandes problemas com acesso indevido do próprio usuário que infringem regras de
política de segurança da empresa constantemente e com isso prejudicando e
expondo e dados que ficam armazenados e a integridade da empresa, também mais
um dos grandes problemasé sem dúvida obter o controle e impedir acessos a sites
indesejáveis, poremfuncionários diariamente esta diariamenteacessando sites que
não são de conduta da empresa com isso ocasionando em certos momentos do dia
lentidão da internet e insegurança contra vírus.
O projeto é sobre implantação de segurança por meio de servidores com sistema
operacional Linux aonde serão instalado alguns serviços que tem um ponto muito
forte na segurança com aplicações como o Firewall (Iptables) e Proxy (Squid), com
esses serviços citados e mais alguns é possível obter ponto muito positivo para uma
rede, assim teremos grande controle para rede local e rede externa e diminuindo a
vulnerabilidade acabando com problemas já citados anteriormente, Além de tudo e
primordial ter controle de todo e qualquer acesso aos sites visualizados, impedindo o
uso indevido e tendo controle do que os funcionários da empresa estão acessando
em tempo real assim mesmo bloqueando e limitando certos sites como
(facebook,uol,terra,globo,etc).
É importante fazer levantamentos de quais problemas, ou seja, quem poderá ter
acesso total ou quem vai ter acesso limitado para utilizar a internet, também será
levantado como e o que os hackers estão invadindo.
9
Esse projeto é de alta relevância para toda e qualquer empresa, pois nossa rede
interna até o momento não tem uma segurança adequada impedindo que hackers
tentem invadir a mesma, e também não temos controle diário dos sites que os
funcionários estão acessando com a implantação dos servidores esses problemas
serão controlados. O objetivo é implantar servidores Linux para ter controle de sites
acessados por funcionários diariamente, e assim bloqueando tudo que não faz parte
da política da empresa e também vamos trabalhar para deixar a rede interna da
empresa com segurança evitando que hackers tentem invadir a mesma. Nosso
objetivo é ter esses controles para posteriormente não temos problemas com
invasões e também para que nossa internet não sofra com lentidão por uso indevido
dos funcionários. O intuito da pesquisa é apresentar uma visão ampla sobre a
importância da segurança em rede e como implantá-la, além de apresentar os
diversos tipos de ameaças às quais uma organização está sujeita na internet e no
dia a dia.
10
1. A Internet
A internet não é de modo algum uma rede, mais sim um conjunto vasto de
redes diferentes que trabalham com protocolos comuns e também fornecem certos
serviços. Também é um sistema usual no sentindo de não ter tido um planejamento
adequado e não possui um controle adequado por ninguém. Através da internet
podemos fazer muitas coisas e temos vários recursos aonde citaremos alguns.
(TANENBAUM ANDREW, 2001)
Trocar correspondências com qualquer pessoa dentre os milhões de
usuários na rede espalhados pelo mundo;
Discutir assuntos específicos com grupos de pessoas que têm os
mesmos interesses;
Obter programas e arquivos de textos, imagens, sons, animação e
vídeos;
Ter acesso a banco de dados, notícias de jornais, dados financeiros,
boletins meteorológicos, entre outros;
Fazer pesquisas bibliográficas;
Navegar em páginas com informações sobre empresas ou pessoas;
Divertir-se em sites de entretenimento;
Fazer compras ou requisitar serviços;
A internet pode parecer estranha mais não possui um dono, ou seja, não existi uma pessoa que possa dizer que é proprietária, a internet pertence a todos que estejam conectados nela. Dessa forma, na internet cada um é responsável pela parte que utiliza. (TANENBAUM ANDREW, 2001)
11
1.1 O TCP/IP e a Internet
Ajunção de protocolos TCP/IP foi criadapropriamente para ser um protocolo utilizado
diretamente na Internet, e tem como característica principal o suporte direto a
comunicação de redes de diferentes tipos. Neste caso a arquitetura do TCP/IP é
independente da infra-estrutura de rede física ou lógica usada. Efetivamente, toda
tecnologia de rede pode ser empregada como meio de transporte dos protocolos
TCP/IP. O protocolo TCP/IP e a internet compartilham junta uma história que
retrocede a várias décadas.
O sucesso da internet se deve em grande parte do design elegante do TCP/IP e ao fato que ele é uma família de protocolos aberta e não proprietária. Por outro lado, a alavancagem fornecida pela internet ajudou o TCP/IP prevalecer sobre várias famílias de protocolo concorrentes que foram favorecidas num momento ou em outro por razoes políticas e comerciais. (EVI NEMETH, 2004)
Os protocolos e o modelo TCP/IP também tiveram os seus problemas. Em primeiro lugar, o modelo não diferencia com a necessária clareza os conceitos de serviço, interface e protocolo. A boa pratica da engenharia de software exige uma diferenciação entre especificação e implementação algo que o OSI faz com muito cuidadoao contrário do TCP/IP. Consequentemente, o modelo TCP/IP não é o melhor dos guias para criação de novas redes com base em novas tecnologias. Em segundo lugar, o modelo TCP/IP não é nem um pouco abrangente e não consegue descrever outras pilhas de protocolos que não a pilha TCP/IP. Por exemplo, seria praticamente impossível tentar descrever a Bluetooth usando o modelo TCP/IP. Em terceiro lugar, a camada host/rede não é realmente uma camada no sentido que o termo é usado no contexto dos protocolos hierarquizados. Trata-se na verdade, de uma interface (entre as camadas de rede e de enlace de dados). A distinção entre uma interface e uma camada é crucial e você deve considerá-la com cuidado. Em quarto lugar o modelo TCP/IP não faz distinção (nem sequer menciona) entre as camadas física e de enlace de dados. Elas são completamente diferentes. A camada física está relacionada ás características de transmissão do fio de cobre, dos cabos de fibra óptica e da comunicação sem fio. A tarefa da camada de enlace de dados é delimitar o início e o final dos quadros e enviá-los de um lado ao outro com o grau de confiabilidade desejado. Um modelo mais adequado deve incluir as duas camadas como elementos distintos, modelo TCP/IP não faz isso”. Tanenbaum, Andrew, (2001)
12
1.2 Um breve histórico
A internet foi desenvolvida a muito tempo atrás com intuito de pesquisa destinadas a
bases militares dos estados unidos, daí então após guerra a ArphaNet não foi mais
útil para utilização dos mesmos ocasionando acesso a cientistas que mais tarde
disponibilizaram a rede para universidades e assim repassando a outras
universidades do mundo todo, foi por esse meio que a rede internet passou a ser
utilizada por usuários domésticos até chegar a grande quantidade de mais de 5
milhões de acesso e assim mais e mais usuários se conectavam com a rede que
gerou uma comunicação mundial. Assim que a World Wide Web nasceu e veio à
tona tudo ficou mais bonito e atraente atraindo cada vez mais utilizadores chamados
de internautas, com seu conteúdo grande e abrangente disponibilizou tecnologias
com diversos sistemas que pode gerar um ambiente que contem endereço próprio e
que e possível ser encontrado por qualquer usuário que esteja conectado na rede,
isso e a internet de todos que de fato e um mundo sem fim que cresce cada dia mais
e mais, em termos de segurança não pode ser deixada de lado pois como tudo tem
seu lado bom e ruim.
A internet não é um produto da Microsoft ou de outra empresa do tipo, O progenitor da internet moderna foi uma rede chamada ARPNET estabelecida em 1969 pela DARPA (Defence Advanced Research Agency), o braço de P&D do Departamento de Defesa dos Estados Unidos. A ARPANET tornou-se eventualmente o backbone NFSNET que conectava em vários pontos denominados peer. (NEMETH, 2011).
13
2. Segurança em Redes
Com a popularização da internet, a proteção da privacidade se tornou extremamente
importante para cada cidadão, pois os seus dados pessoais trafegam na internet, e
podem ser invadidos. Criptografia é a chave que permite solucionar
tecnologicamente este problema. Para tornar seguro o comércio eletrônico há
necessidade de se ter criptografia de alto nível, tanto de segurança como de
eficiência, nas várias plataformas. Os algoritmos de chave pública vêm resolver os
problemas de autenticação e integridade.Além disso, um problema ocorrido na
criptografia de chave simétrica (apresenta a mesma chave para cifrar e decifrar) é
resolvido, pois, propõem um modelo onde são utilizadas duas chaves, uma para
cifrar outra para decifrar. Com a modernização dos sistemas surgiu possibilidade da
criação de assinatura digital, assim usando o que cada pessoa tem como único
como as digitais, leitura da retina, leitura facial além de outros métodos eletrônicos.
2.1 O que é segurança na rede
Conforme James F. Kurose& Keith W. Ross (2005), a Segurança em redes tem
como foco proteger a comunicação entre dispositivos, assim assegurando que a
informação não seja alterada ou vista por quem não deveria. Com isso foi adotado o
método de criptografar/criptar as informações. Suponhamos que exista dois
roteadores que precisam se comunicar com segurança, eles são roteador 01 e
roteador 02. O roteador 01 quer que suas informações sejam entendidas apenas
pelo roteador 02, onde os dois estão se comunicando por uma rede insegura, á
internet. O roteador 02 quer ter certeza que a informação que chegou a ele, foi de
fato enviada pelo roteador 01 e vice e versa, além de precisarem saber se a
informação transmitida é integra, que não tenha sido alterada no caminho. O
fundamental para que tudo isto ocorra é ter certeza que os dispositivos possam
realmente se comunicar garantindo que não tenha nada que possa negar essa
transição de informação. A seguir os principais itens desejáveis para uma
comunicação segura:
14
Confidencialidade: Somente quem enviou e recebeu a informação é quem deve
interpretar, pois essa informação poder ser interceptada no caminho, então por isso
a informação deve estar criptografada e somente quem tem a chave deve decifrar a
informação.
Autenticação do ponto final: A autenticação é quem vai envolver o roteador 01 e 02
em uma rede segura além de garantir a identidade de ambos as partes, assim
confirmando ser quem realmente diz que é.
Integridade de mensagens: Mesmo que haja uma comunicação entre as partes onde
a autenticação foi estabelecida, eles também querem assegurar que o conteúdo de
sua comunicação não seja alterado, por acidente ou intencional, durante a
transmissão. Para proporcional uma maior integridade na mensagem podem ser
utilizados protocolos na camada de transporte e de enlace, assim são utilizadas
técnicas de verificação de pacotes.
Segurança operacional: Se falando de organizações, sabemos que possuem redes
conectadas à Internet. Essas redes podem ser comprometidas potencialmente por
atacantes que ganham acesso a essas redes por meio da rede pública a internet.
Esses atacantes podem inserir Worms nos hospedeiros na rede, e então adquirir
segredos corporativos, mapear as configurações da rede interna e lançar ataques
DoS. Para este problema são implementados Firewall e sistemas de detecção de
invasão realizada na inspeção dos pacotes, o Firewall localizado entre a rede local e
a Internet pode barrar e alertar um administrador se a alguma suspeita.
2.2 Criptografias
Segundo James F. Kurose & Keith W. Ross (2005), a criptografia já são usadas a
muitos anos, para proteger nossas informações, até nos dias de hoje métodos
utilizados a anos, ainda estão inseridos nos sistemas. Como a Cifra de César, que
substitui as letras para esconder a informação, o nome do métodos foi uma
homenagem ao Júlio César que usou esta pratica para se comunicar com os
generais. Como grande parte dos estudos tecnológicos, a criptografia teve uma
grande evolução na guerra. A Cifra de César é o método de trocar uma letra por
15
outras, assim tornando ilegível para quem interceptar a informação, como todo
método de cifrar, pode ser decifrado. Existem duas situações que podem ser
consideradas ao decifrar o código de Cesar:
O interceptador conhece ou adivinha que algum tipo de cifra de substituição
simples foi utilizado, mas não especificamente que é um código de César;
O interceptador sabe que é a Cifra de César que foi utilizada para esconder a
mensagem e pode tentar descobrir o valor de troca das letras, seguindo o
alfabeto são 26 letras a serem decifradas.
Figura 1: Código de César com chave de 3 unidades
(Fonte: Wikipédia)
As técnicas de Criptografia permitem que o remetente modifique os dados de forma
que um elemento não autorizado tenha acesso a informação que foi interceptada.
Muito se evoluiu desde os códigos de encriptação usados na antiguidade até os dias
de hoje. No entanto, até a década de 1970, um conceito se manteve firme entre os
diversos métodos propostos. A mesma chave era usada para esconder e para
revelar os dados. É o que chamamos de criptografia simétrica. Com a evolução
desse paradigma de criptografia ao longo dos séculos, hoje temos mecanismos
seguros e eficientes, como o 3DES (Triple Data Encryption Standard) e o AES
(Advanced Encryption Standard), que são os algoritmos base para os protocolos
usados.Hoje os protocolos mais usados para proteção de dados na Internet, é o SSL
(Secure Sockets Layer) e o TLS (TransportLayer Security) utilizam a criptografia
simétrica para proteger os dados transmitidos e armazenados. No entanto, a
criptografia simétrica possui um desafio conceitual importante e impossível de ser
resolvido. Esse processo exige duas chaves de acesso para decifrar os dados, uma
está com que emite o dado e a outra deve estar com quem vai receber, para que
assim ela possa decifrar o que foi codificado do outro lado. Para uma comunicação
16
feita entre dois locais fixos que sempre vão estar se comunicando esse método é
eficaz, pois a troca da chave é feita no primeiro contato.
Figura 2: Esquema de funcionamento da criptografia simétrica
(Fonte: GTA.UFRJ)
Mas se tratando da comunicação feita através de duas pessoas na internet, esse
método não seria viável, pois não teria como uma enviar para outra a chave de
acesso. Para este caso a solução foi encontrada na criptografia assimétrica, na qual
utiliza-se duas chaves distintas, mas que se complementam. Por essa propriedade,
dá-se o nome de par de chaves, que é composto pela chave pública e pela chave
privada. A chave pública é liberada para todos que desejam se comunicar com o
emissor da chave enquanto a chave privada fica em poder de quem a emitiu.Assim a
Pessoa que envia a mensagem codifica a os dados com uma chave pública, e quem
recebe decodifica com a chave privada. Com esta técnica apenas quem possui a
chave privada poderá ter acesso a informação. Uma desvantagem dos algoritmos de
criptografia assimétrica existentes é o seu desempenho, que são algumas dezenas
de vezes mais lentos que os métodos simétricos. Sendo assim, na prática, a
criptografia assimétrica é utilizada para definir uma chave de sessão, que será
utilizada na criptografia simétrica durante a comunicação. Esse é o funcionamento
dos protocolos SSL e TLS, usados largamente na Internet. No entanto, na
criptografia assimétrica, as chaves públicas podem ser forjadas, fazendo com que o
emissor não obtenha a chave pública correta do destinatário. Para solucionar esse
problema, os engenheiros da Internet. Criaram a figura da Autoridade Certificadora,
que funciona como um cartório, autenticando as chaves públicas das pessoas. É
essa autenticação da chave pública do seu banco, por exemplo, que faz o seu
navegador exibir o singelo cadeado de segurança, fazendo com que você saiba que
o site é mesmo do banco e não de um criminoso.
17
Além do uso tradicional da criptografia para manter a confidencialidade dos dados,
como mostrado até aqui nesse artigo, a criptografia possui outras finalidades no
mundo dos computadores. Através da criptografia, pode-se implementar técnicas de
garantia de integridade dos dados e de autenticação das mensagens. A garantia de
integridade garante que se um dado for modificado, essa modificação é detectada,
informando ao destinatário que a mensagem foi comprometida. Já a autenticação
das mensagens é o que comumente chama-se de assinatura digital. Tal técnica
permite garantir que uma mensagem veio de quem diz ser o remetente. Para
garantir a origem, basta que o emissor codifique a mensagem utilizando a sua chave
privada. Assim, todos terão certeza que foi realmente aquele emissor quem enviou a
mensagem.
- Chave particular: a metade secreta de um par de chaves criptográficas que é
usada com um algoritmo de chave pública. As chaves particulares são usadas para
decriptografar uma chave de sessão simétrica, assinar dados digitalmente ou
decriptografar dados que foram criptografados com a chave pública correspondente.
- Chave pública:a metade não secreta de um par de chaves criptográficas que é
usada com um algoritmo de chave pública. As chaves públicas normalmente são
usadas ao criptografar uma chave de sessão, verificar uma assinatura digital ou
criptografar dados que possam ser decriptografados com a chave particular
correspondente.
- Autenticação do destino: visa esconder informações sigilosas das pessoas que
controlam as linhas de comunicação e os computadores intermediários (provedores).
- Integridade de informação: busca evitar que um mal-intencionado leia e altere parte
da informação transitando na linha de comunicação antes de chegar ao destino, ou
seja, o destinatário gostaria de detectar se alguma alteração parcial foi feita na linha.
- Autenticação da origem: é como evitar que um falso usuário (origem) envie uma
informação para destinatário, ou seja, o destinatário deseja ter certeza que foi o
usuário verdadeiro que enviou a informação.
- Integridade de banco de dados: é como evitar que alguma pessoa desautorizada
leia as informações já enviadas e armazenadas no computador do destinatário.
18
- Detecção de integridade de informação: evita que alguma pessoa desautorizada
leia e altere as informações já enviadas e armazenadas no computador do
destinatário.
Outra aplicação da criptografia pode ser vista em redes privadas virtuais. Em uma
VPN existe um túnel criptográfico entre duas ou mais redes que estão conectadas
utilizando como meio uma rede pública.
Uma VPN usa protocolos de criptografia por tunelamento que fornecem a
confidencialidade, autenticação e integridade necessárias para garantir a
privacidade das comunicações, possibilitando comunicações seguras através de
redes inseguras.
2.3 Sistemas de Detecção de Invasão
Para Coulouris, Dollimore, Kindberg, (2007), quando falamos em segurança da
informação, existem equipamentos e softwares essenciais para uma rede como
Antivírus e Firewall, com eles conseguimos o mínimo de segurança para a
comunicação de uma rede interna a uma rede externa. Com o Firewall podemos
implementar políticas de segurança, onde será controlado tudo que entra e sai da
rede, assim impedindo a entrada do que não está autorizado. A ferramenta utilizada
para monitorar o tráfego da rede e para detectar e alertar sobre ataques e tentativas
de acessos indevidos chama-se IDS (Sistema de Detecção de Intrusos). Na grande
maioria das vezes não bloqueia uma ação, mas verifica se esta ação é ou não uma
ameaça para um segmento de rede. Conforme Uchôa (2005), o complemento do
IDS, o IPS (Sistema de Prevenção de Intrusos), tem a capacidade de identificar uma
intrusão, analisar a relevância do evento e bloquear determinados eventos,
fortalecendo assim a técnica de detecção de intrusos. O IPS usa a capacidade de
detecção do IDS juntamente com a capacidade de bloqueio de um Firewall,
notificando e bloqueando de forma eficaz ações suspeitas ou indevidas em diversos
pontos de uma arquitetura de rede, sendo considerada uma das ferramentas de
segurança de maior abrangência. O IPS atua na camada de monitoramento, mas
pode ser configurado para gerar ações de bloqueio, de forma que, pode atuar
também na camada de controle de acesso ao sistema. O IDS e IPS devem ser
19
configurados de forma a reduzir o número de falsos positivos facilitando a análise
dos dados coletados. Configurado de forma incorreta, um IPS pode bloquear tráfego
legítimo. O IDS no seu sentido mais restrito se refere a aplicativos capazes de alertar
sobre 45 tentativas de invasão, como o aplicativo Snort, e em um sentido mais
amplo, também monitorar a integridade do sistema, como os aplicativos AIDE ou o
Tripwire.
Alguns aplicativos utilizados para detecção de intrusos, são capazes de desenvolver
análise de tráfego e registro de pacotes em tempo real. Estes aplicativos analisam
protocolos, buscam e associam padrões de conteúdo e podem ser usados para
detectar uma variedade de ataques. O Snort e o LIDS (Sistema de Detecção de
intrusos do Linux) são algumas ferramentas que merecem destaque. De acordo com
Uchôa (2005), o Snort possui uma base de assinaturas bastante completa e exige
pouco esforço computacional da máquina onde é instalado. Já o LIDS, adiciona
novas funcionalidades ao kernel do Linux para detecção de intrusos aumentando a
segurança do sistema. Porém, para sua utilização, é necessária a recompilação do
kernel. A grande parte dos sistemas comerciais de detecção de intrusão é baseada
em rede.Nesse tipo de IDS os ataques são capturados e analisados através de
pacotes de rede. Ouvindo um segmento de rede, o NIDS pode monitorar o tráfego
afetando múltiplas estações que estão conectadas ao segmento de rede, assim
protegendo essas estações. Os NIDS também podem consistir em um conjunto de
sensores ou estações espalhados por vários pontos da rede. Essas unidades
monitoram o tráfego da rede, realizando análises locais do tráfego e reportando os
ataques a um console central. As estações que rodam esses sensores devem estar
limitadas a executar somente o sistema de IDS, para se manterem mais seguras
contra ataques. Muitos desses sensores rodam num modo chamado "stealth", de
maneira que torne mais difícil para o atacante determinar as suas presenças e
localizações.
Segundo BECE, podemos destacar as vantagens do IDS baseados em rede:
A implementação de um NIDS tem pouco impacto sobre a performance da rede.
Eles geralmente ficam em modo passivo, apenas escutando o tráfego da rede sem
interferir no seu funcionamento. NIDS bem posicionados podem monitorar uma
20
grande rede. Os IDSs baseados em rede podem ser muito seguros contra a maioria
dos ataques, além de ficarem invisíveis aos atacantes.
E também as desvantagens:
Os NIDS podem ter dificuldade em processar todos os pacotes em uma rede que
possua um grande tráfego de dados. Eles não podem analisar o tráfego de
informações criptografadas Esse problema vem aumentando em função da
utilização de VPNs pelas organizações (e pelos atacantes também). Muitas
vantagens dos NIDSs não se aplicam mais as modernas redes baseadas em
switches. Os switches dividem as redes em pequenos segmentos (usualmente uma
estação por porta) e provêm ligações lógicas diretas entre as estações no mesmo
equipamento. A maioria dos switchs não tem um sistema de monitoramento de
portas e isso limita ao NIDS apenas analisar uma estação. Mesmo que o switch
possua o recurso de monitoramento, apenas uma porta não poderá receber todo o
tráfego passando pelo equipamento. A maioria dos NIDSs não pode reconhecer se
um ataque foi bem sucedido. Eles apenas apontam que um ataque foi iniciado.
Dessa maneira eles apenas detectam um ataque, sendo que o administrador de
sistemas deve verificar se o host apontado foi atacado. Alguns IDSs baseados em
rede têm problemas em lidar com pacotes de dados fragmentados. Esses tipos de
pacotes podem até tornar um NIDs instável ou mesmo travar o seu funcionamento.
Os HIDSs operam sobre informações coletadas em computadores individuais.
Através disso os HIDs podem analisar as atividades das estações com confiança e
precisão, determinando exatamente quais processos e usuários estão envolvidos em
um tipo particular de ataque no sistema operacional. Além disso, ao contrário dos
sistemas baseados em rede, os baseados em host (estação) podem ver as
conseqüências de uma tentativa de ataque, como eles podem acessar diretamente e
monitorar os arquivos e processos do sistema usualmente alvos de ataques. Alguns
HIDSs suportam um gerenciamento centralizado e relatórios que podem permitir que
um apenas um console possa gerenciar várias estações. Outros geram mensagens
em formatos que são compatíveis com os sistemas de gerenciamento de redes.
Segundo BECE, podemos descrever as vantagens dos IDSs baseados em host:
21
Esse tipo de IDS tem a capacidade de monitorar eventos locais de um host,
podendo detectar ataques que não poderiam ser detectados por um IDS de rede.
Eles podem operar em um ambiente onde o tráfego de rede é criptografado, a
informação é analisada antes de ser criptografada na origem, ou depois de ser
decriptada no destino. Quando o IDS de host opera em nível de sistema operacional,
ele pode ajudar a detectar 'Trojan Horses' ou outros tipos de ataques que envolvam
problemas de integridade nos programas.
E também as desvantagens:
Esse tipo de IDS é difícil de se gerenciar porque cada host monitorado precisa ser
configurado. Como as informações utilizadas para análise do HIDS estão
armazenadas no host, um atacante pode invadir o sistema e desabilitar essas
funcionalidades. Os HIDSs não podem reconhecer ataques que sejam destinados a
rede inteira porque apenas conseguem monitorar os pacotes de redes recebidos
pelo próprio host. Um IDS baseado em host consome recursos de processamento
do host monitorado, influenciando na sua performance.
2.4 Ataques e segurança
No entendimento de Uchôa (2005), o monitoramento de arquivos de registro é
importante para identificar falhas em serviços, tentativas de invasão e ações
anormais no sistema. Toda política de segurança deve ser implementada a partir de
um estudo que engloba toda a rede, softwares, hardwares, periféricos e até a cultura
da empresa. Também é importante configurar o nível de detalhamento de registro
das informações de acordo com a necessidade da empresa e criticidade do serviço.
Existem utilitários, como o logwatch, que permitem informar ao superusuário através
de e-mail sobre registros ligados à segurança do sistema.
É importante inspecionar arquivos de registro para verificar atividades suspeitas. Por
exemplo, nos arquivos de registro podem ser encontrados IP's que não deveriam
estar acessando a rede, ou registro de atividades suspeitas em horários incomuns.
Um atacante pode camuflar uma invasão substituindo arquivos de registro de um
computador. Para identificar ações realizadas pelo atacante, o administrador deve
22
utilizar ferramentas de verificação de integridade.
2.5 Mecanismo de segurança
O SNORT é uma ferramenta NIDS desenvolvido por Martin Roesch "open-source"
bastante popular por sua flexibilidade nas configurações de regras e constante
atualização frente às novas ferramentas de invasão. Outro ponto forte desta
ferramenta é o fato de ter o maior cadastro de assinaturas, ser leve, pequeno, fazer
escaneamento do micro e verificar anomalias dentro de toda a rede ao qual seu
computador pertence. O código fonte é otimizado, desenvolvido em módulos
utilizando linguagem de programação C e, junto, com a documentação, são de
domínio público. O Snort conta ainda, com o permanente desenvolvimento e
atualização, que são feitos diariamente, tanto em relação ao código propriamente
dito, como das regras de detecção. Os padrões utilizados na construção das regras
de detecção das subversões são introduzidos no sistema de configuração, tão
rápido quando são enviados os alertas originados pelos órgãos responsáveis, como
por exemplo o CERT, Bugtraq (lista de discussão), entre outros. Por ser uma
ferramenta peso leve, a utilização do Snort é indicada para monitorar redes TCP/IP
pequenas, onde pode detectar uma grande variedade do tráfego suspeito, assim
como ataques externos e então, fornece argumento para as decisões dos
administradores. Os módulos que compõe o Snort são ferramentas poderosas,
capazes de produzir uma grande quantidade de informação sobre os ataques
monitorados, dado que é possível avaliar tanto o cabeçalho quanto o conteúdo dos
pacotes, além de disponibilizar, por exemplo, a opção de capturar uma sessão
inteira. O Snort monitora o tráfego de pacotes em redes IP, realizando análises em
tempo real sobre diversos protocolos (nível de rede e aplicação) e sobre o conteúdo
(hexa e ASCII).
23
Outro ponto positivo desse software é o grande número de possibilidades de
tratamento dos alertas gerados. O subsistema de registro e alerta é selecionado em
tempo de execução através de argumentos na linha de comando, são três opções
de registro e cinco de alerta. O registro pode ser configurado para armazenar
pacotes decodificados e legíveis em uma estrutura de diretório baseada em IP, ou
no formato binário do tcpdump em um único arquivo. Para um incremento de
desempenho, o registro pode ser desligado completamente, permanecendo os
alertas. Já os alertas podem, ser enviados ao syslog, registrados num arquivo de
texto puro em dois formatos diferentes, ou ser enviados como mensagens WinPopup
usando o smbclient. Os alertas podem ser enviados para arquivo texto de forma
completa e o alerta rápido. O alerta completo escreve a mensagem de alerta
associada à regra e a informação do cabeçalho do pacote até o protocolo de
camada de transporte. A opção de alerta rápido escreve um subconjunto
condensado de informação do cabeçalho alerta. Por fim, uma última opção desabilita
os alertas completamente.Existe também, a possibilidade de utilizar métodos como o
Database Plug-in por exemplo, para registrar pacotes em uma variedade de bases
de dados diferentes (MySQL, PostgreSQL, entre outros), as quais contam com
recursos próprios para efetuar consultas, correlações e dispõem de mecanismos de
visualização para analisar dados.
24
3. Segurança com servidores Linux
A segurança com servidores Linux hoje e um dos pontos positivos entre os
administradores de rede por nos trazer uma segurança muito grande quando
falamos em serviços de sistemas críticos, a grande vantagem de trabalhar com
servidores Linux que os serviços que podemos utilizar têm como ponto positivo a
segurança que comparada a de outros sistemas operacionais não e tão forte quanto
aos agregados ao Linux, programas como vírus e outras pragas torna-se inúteis,
pois tem sua ação limitada pelas restrições de acesso que existe no sistema de
arquivos do Linux, o Linux também e vulnerável a vírus,mas devido a essa
separação de privilégios entre processos a segurança prevalece e por isso hoje as
empresas estão migrando para servidores com sistema operacional Linux.
3.1 História do Linux
O Linux nasceu em 1991 como um projeto pessoal de Linus Torvalds, o Linux e
projeto ramificado do antigo Minix, um sistema operacional escrito por Andrew
Tanenbaum, de fato o Linux gero para o mundo um grande interesse de estudo e
logo seu kernel assumiu vida própria. Apesar de o Linux ter grandes características
do UNIX não podemos apontar sua origem para ele, pois o UNIX vem de algumas
décadas atrás, o sistema criado foi em 1969 como um projeto de pesquisa no AT&T
Bell Labs e em 1976 o UNIX ficou gratuito nas universidades e assim tornou-se base
para diversas distribuições. O Linux é desenvolvido e mantido por muitas pessoas
ao redor do mundo como programadores, hackers de alguma forma contribuem para
manter o kernel gratuitamente.
3.2 Servidores Linux
Os servidores Linux hoje em dia nos traz uma grande gama de serviços que
podemos usar sem medo de ser feliz, por ser todos softwares livres e distribuídos
25
pela licença GPL (General Public Licence), sem dizer que temos várias distribuições
para escolher, as mais usadas são Debian, CentOS, Fedora, ou RedHat Enterprise,
para quem precisa de suporte comercial, Ubuntu.
De acordo com Morimoto, Carlos, (2008), - Servidores são maquinas que deve ficar ligadas o tempo todo, sempre executando a mesma coisa. Existem vários tipos de servidores, como servidores web, servidores de arquivos, Servidores de impressão, etc. sendo que uma única e exclusivamente máquina pode rodar vários serviços simultaneamente só dependendo da configuração de hardware e da demanda.
3.3 Servidores de rede local
De acordo com Tanenbaum Andrew, (2001) – As redes locais que são chamadas
muitas vezes de LANS, são exatamente redes privadas para certos lugares como
edifícios, campus universitário e empresa. Essa rede local abrange alguns
quilômetros de extensão. Elas são amplamente usadas para fazer a conexão de
computadores pessoais e estações de trabalho em escritórios e instalações
industriais de empresa. Utilizando esse recurso da rede LAN podemos fazer
compartilhamento de impressoras e a troca de informações em tempo real. A rede
LAN possui três características forte que distinguem de outros tipos de redes: (1)
tamanho, (2) transmissão, (3) topologia. A rede Lan tem um tamanho restrito, o que
significa que o pior tempo de transmissão é limitado e conhecido com bastante
antecedência. Também a rede Lan é composta por cabos que interligam aos
computadores com isso diminuindo os erros e mantendo a estabilidade da conexão
sempre boas.
Dentro de uma rede local, tudo começa com o cabeamento, onde
você pode empregar uma combinação de rede cabeada e pontos de
acesso wireless. As redes cabeadas oferecem como vantagem a
velocidade e a estabilidade da conexão, enquanto as redes wireless
primam pela praticidade, de forma que o ideal acaba sendo usar uma
combinação das duas. (MORIMOTO, CARLOS, 2011)
26
3.4 Servidores de internet
Os servidores de Internet são maquinas feitas para controlar o acesso de uma rede
ao acesso na Internet, a verificação de segurança baseada em pacotes, portas, mais
é feito no através do mesmo. Isto não significa que tais verificações também não
sejam feitas em outros locais, como nos firewalls das estações de trabalho. O
servidor de internet também pode implementar funções de cache de páginas de
internet, log de acessos ou conversas em chats. A principal vantagem de utilizar um
computador como servidor de internet é que há uma gama muito maior em termos
de serviços disponíveis, o que nem sempre é possível em dispositivos compactos
como os roteadores, que também podem fazer o papel de “servidores de internet”,
por assim dizer. Hoje em dia, com a popularização do Linux a maior parte dos
servidores de internet o utilizam. Além de oferecer maior segurança, é um sistema
gratuito com centenas de ferramentas também gratuitas à disposição. A internet e
formada por uma malha de cabos de fibra ótica, que interligam praticamente toso os
países. Mesmo em locais mais remotos, é possível se conectar via modem, via
celular ou algum tipo de rede sem fio de longa distância, ou até mesmo via satélite.
A peça central são os roteadores, que interligam diferentes segmentos da rede,
formando uma coisa só. Cada roteador conhece os vizinhos, sabe quais redes estão
conectadas a eles e sabe escolher o caminho mais curto para cada pacotes de
dados (MORIMOTO, 2008, p. 20.)
27
4. Firewall
Um servidor com que contém o serviço de Firewall tem como principal função
bloquear portas para evitar invasões e ataques de terceiros, pode ser definido como
um sistema que controla os pacotes e conexões de rede que passam por ele, seja
no sentido de entrada ou na saída Muitos administradores de rede prefere deixar
apenas a porta ssh aberta e fechando todas as outras portas e assim abrindo
conforme a necessidade da rede interna isso é de grande importância para a
segurança da rede interna. Uma definição bem básica diz que o Firewall tem como o
principal objetivo proteger uma ou mais redes internas de outras redes.
Figura 03: Funcionamento Firewall Iptables
Fonte: Elaborado pelo Autor.
Agora serão demonstradas algumas regras básicas do Firewall e logo em seguida
será demonstrado um script com passo a passo em pleno funcionamento. O
comando iptables é o responsável por ler todos os parâmetros que o script pode ter
e atualizar os mesmo, no decorrer do script será visto alguns comandos importante
como Accept que é quando algum pacote ou ip pode ser aceito na rede, também
28
tem o comando reject e Drop que é quando algum pacote deve ser bloqueado pelo
filtro do iptables assim o mesmo não pode passar para a rede interna.
A função básica de um firewall em um servidor é bloquear o acesso a portas que não estão em uso, evitando assim a exposição de serviços vulneráveis, ou que não devem receber conexões por parte da internet. (MORIMOTO, CARLOS, 2008),
4.1 Níveis de segurança
Os IPTABLES é um dos firewall em software livre mais utilizados, e como ele já vem
instalado por padrão, na maioria das distribuições Linux e pelo fato dele ser bom de
desempenho, ter um nível de segurança considerável e ser de fácil configuração ele
será utilizado para proteger o sistema operacional e a rede. Porem todos os
servidores em uma rede deve ser assegurado individualmente e monitorado com
ferramentas de segurança como o crack, tcpd, nmap, COPS e tripwire.
Com a existência dos firewall, nenhum risco estará associado, pois o firewall não permitirá que este serviço seja acessível via rede. Além disso, o firewall registra todos os acessos à máquina melhorando o nível de segurança e rastreabilidade; e ainda pode identificar e bloquear ataques mesmo em algumas portas liberadas, identificando
pacotes com formação anômala. (SILVA 2008 p. 201)
4.2 Configurações de um Firewall no Linux
Neste Capitulo será apresentada uma estrutura de um Firewall Iptables configurado
com base o sistema operacional Linux, ter um bom script de Firewall e muito
importante para obter uma rede segura e livre de ameaças, um arquivo de script
bem configurado com todas as regras implementadas de forma designada a serviços
necessários dentro da rede. As linhas de script abaixo são muito importantes pois
verifica tudo que entra e sai da rede, o arquivo e responsável pelo bloquei oi
liberação de todo acesso que trafega na rede, todas as configurações são inseridas
neste arquivo que fica encarregado por bloquear algum tipo de invasão e sites que
não devem ser acessados.
29
Além de proteger maquinas individuais, o firewall pode ser implementado com algumas precauções de segurança em nível de rede, há três categorias principais de firewall: são eles filtragem de pacotes, proxy de serviço e inspeção de estados. (NEMETH, 2004, p. 504)
Arquivo de configuração do Firewall movido para Anexo
4.3 Filtragens de pacotes
A filtragem de pacotes é relativamente a forma de bloquear ou liberar dados que
trafegam em uma determinada rede de uma forma seletiva conforme os dados
atravessam uma interface. Os critérios usados são os endereços de origem e
destino, porta de origem e destino e protocolo. A filtragem tem suas regras definidas
que especificam critérios em que o pacote deve se enquadrar, um Firewall
configurado para filtragem de pacotes tem a finalidade de limitar os tipos de trafego
que podem passar através de um gateway de Internet ou através de um gateway
interno que separa domínios dentro de uma empresa baseando em informações
contidas no cabeçalho do pacote. É bem semelhante atravessar um fronteira
internacional de carro passando por um posto alfandegário. Se especificado os
endereços de destino, números de portas e tipos de protocolos que são aceitáveis, o
gateway simplesmente descarta pacotes que não atendem ao perfil preestabelecido
(NEMETH, 2004,)
Em geral, os firewalls configurados para filtragem de pacotes oferecem um aumento muito significativo na segurança e com baixo custo em termos de desempenho ou de complexidade (NEMETH, 2004, p. 504.)
30
5. Servidor Proxy Squid
O serviço Squid permite compartilhar a conexão para vários computadores,
trabalhando como um intermédio entre os computadores e a internet. Ele faz o
trabalho de guardar os cachês mais acessados das páginas web assim deixando a
conexão mais rápida, pois o tempo de resposta é mais eficiente. O squid também
pode ser utilizado como um servidor Proxy, temos também a conexão via Nat, essa
conexão faz com que os computadores da rede acessam a internet diretamente,
sem restrições. O Proxy já é diferente ele é mais burocrático ele se limita a passar as
requisições antes ele analisa todo o trafego de dados e assim vai separando o que
pode ou não pode passar e guardando as informações para usar posteriormente.
Um servidor Webproxy é capaz de analisar pacotes na camada de aplicativo (camada 7). Isto oferece uma flexibilidade muito maior, porque permite que o trafego dentro de um serviço, como o trafego da porta 80 (http) possa ser filtrado. (RICCI, BRUNO, 2006, p. 02),
5.1 Configuração Proxy Squid
O Squid é composto por um único pacote com isso fica mais fácil a configuração e a
criação de regras de acesso para segurança da rede local, abaixo temos um
configuração completa feita para melhor desempenho em segurança da rede.
Figura 4: Funcionamento Proxy Web Squid
31
Fonte: Elaborado pelo autor
Toda a configuração do squid é feita nesse arquivo. A configuração descrita abaixo
está de forma transparente na rede ou seja assim que o serviço e ativado em modo
transparente na rede todas as maquinas já estão sendo filtradas pelas regras,
lembrando que o proxy trabalha em conjunto com Firewall.
Arquivo de configuração do Squid movido para anexo
32
6. Políticas de Segurança
Política de segurança e um quesito indispensável em qualquer rede, seja ela
pequena, média e grande, pois o impacto que traz para possíveis causas de quebra
de informações e vulnerabilidade e muito grande quando se diz respeito à usuário e
sistemas. Independente das ferramentas que esteja sendo usada para proteção de
uma rede é de grande importância uma que haja sempre uma boa política de
segurança implantada para minimizar riscos que possa vir a ocorrer, pois de fato boa
parte de causas que envolvem vírus, trojans e spywares e falhas nos sistemas e
devido ao uso incorreto de usuários sem conhecimento o qualquer tipo de malicia na
internet. Decisões relacionadas a políticas de segurança a ser tomada ou não tem
que determinar uma grande segurança da rede, porém não e de bom tom que
decisões sejam tomadas sem antes ter identificado as metas para segurança.
Seja lá qual for a política de segurança adotada, ela deve ser explicita, por escrito, entendida e assinada por todos os usuários e administradores de sistemas. O cumprimento da política deve ser consistente, até mesmo quando os usuários são clientes que estão pagando por serviços computacionais. A falha na aplicação de políticas enfraquece sua validade legal e perceptível. (NEMETH, 2004, p. 618.)
33
6.1 Procedimentos de segurança
Um procedimento de segurança deve definir:
Uma lista contendo todos serviços de rede que serão oferecidos;
Quais áreas e departamentos proverão os serviços;
Quem terá acesso a esses serviços;
Como será provido o acesso;
Quem administrara esses serviços
De acordo com NEMETH 2008 Outras questões de política importante que
podem ter um escopo mais abrangente do que simplesmente seu grupo de
administrador de sistema local são:
Tratamento de brechas de segurança
Controle de exportação de sistemas de arquivos
Critérios para seleção de senhas
Remoção de logins motivadas
Material envolvendo direitos autorais
34
7. Revisão Bibliográfica
TANENBAUM (2001, p. 54), em “Redes de Computadores”, citado nos capítulos 1
observa a que a internet tem por finalidade ser a tecnologia de todos e para tudo,
não existe um dono, parecer estranho mas é a realidade, a internet e o maior meio
de comunicação hoje em dia, o autor cita isso de forma clara, isso sem dúvida
fundamentou grande importância na abordagem SRL.
NEMETH (2004, p. 486), em sua obra “Manual Completo do Linux”, referenciado no
capítulo 21, define que as tecnologias atuais e de fato algo de extrema importância e
responsabilidade, isso com certeza traz garantia e segurança, confiabilidade e maior
comprometimento dos usuários.
MORIMOTO (2008, p. 16), em sua obra “Servidores Linux: Guia Prático”,
referenciado no capítulo 1, define que servidores Linux podem ser divididos em dois
grandes grupos, isso difere muito na segurança pois temos os servidores locais e
servidores de internet, cada um realizando sua devida missão e de fato é uma
importância enormena abordagem da segurança em redes Linux.
Ricci (2008, p. 1,), em sua obra “Squid: Solução Definitiva”, referenciado no capítulo
1,7 define que Proxy refere-se a um software que atua como gateway de aplicação
entre o cliente e o serviço a ser acessado, interpretando as requisições e
repassando-as ao servidor de destino, isso sem dúvida é fator primordial e uns dos
diversos pontos positivos de segurança para rede, assim os benefícios são maiores
ao ter a integração de proxy junto a solução de firewall, somando segurança mais
confiabilidade dentro da rede, protegendo a rede provada contra os acessos
indevidos de uma rede pública com esses pontos o autor me trouxe conhecimento
que foram fundamentais na abordagem dos servidores críticos.
35
8. Conclusão
A segurança em redes independente do sistema operacional e ferramentas
utilizadas requer significativamente grande grau de conhecimento e estudo, com a
rápida evolução da tecnologia e os diversos meios de comunicação que temos no
dia de hoje fica bem claro que de fato segurança e ponto que engloba muita coisa
quando se diz respeito a ambiente seja ele doméstico ou corporativo. Neste trabalho
foi desenvolvido e mostrado tecnologias que ajudam a minimizar a falta de
segurança e falta de conhecimento de usuários de diversos tipos de rede. Porem um
administrador de rede que utilizando sistema operacional Linux e implementa
aplicações como um bom firewall, servidor proxy, ferramentas de segurança e uma
política de segurança, tende a minimizar possíveis falhas que pode existir em uma
rede sem um gerenciamento correto. Após entender os riscos que a internet pode
trazer e com base em estudos realizados durante o desenvolvimento deste trabalho,
os benefícios que gera com a utilização de todas as aplicações mostradas foram as
principais contribuição para meu conhecimento. A utilização dessa ferramentas de
segurança torna possível proteger, monitorar e recuperar um sistema após um
possível ataque ou até mesmo descumprimento de políticas. Chegamos à conclusão
que, apesar de não ser possível proteger totalmente os servidores, os
administradores utilizando diversas técnicas e tecnologias como as descritas podem
garantir um alto nível de segurança.
36
9. Referências Bibliográficas
TANEBAUM, Andrew. Redes de computadores 4ª ed. Amsterdam: editora Campus.
2003
STALLING, Willian. Criptografia e Segurança de Redes: princípios e praticas – 4
ed. Editora person. 2007
NEMETH, Evi; SNYDER, Garth; Hein, Trent R. Manual Completo de linux: guia do
administrador – 2 ed. São Paulo: Pearson Makron Books, 2004.
KUROSE, James F.; ROSS, Keith W. - Redes de Computadores e a Internet: uma
abordagem top-down - 5 ed. São Paulo: Editora Pearson
RICCI, Bruno. Squid: solução definitiva. São Paulo: Editora Ciência Moderna. 2006 MORIMOTO, Carlos Eduardo - Servidores Linux: Guia prático. Porto alegre: Sul Editores. 2008 UCHÔA, Joaquim Quinteiro. Segurança Computacional. Lavras: UFLA/FAEPE, 2005. Outras Referências:
SILVA, Gilson Marques da. Segurança em Redes Linux: princípios e praticas – 1 ed. São Paulo: Editora Ciência Moderna, 2008
COULOURIS, Geoge; DOLLIMORE, Jean; KINDBERG, Tim. – Sistemas
Distribuídos: Conceitos e projetos – 4 ed. Porto Alegre: Bookman, 2007.
Referências Eletrônicas: Hammershmitt, Gisele. Breve História da internet. Disponível em <http://gihammer.wordpress.com/2008/03/07/breve-historia-da-internet/>. Acesso em 19 março 2013.
37
10. Anexos
10.1 Arquivo de configuração de um Firewall (Iptables)
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
### protecao contra flooding
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 > $f
done
### logar pacotes estranhos
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 0 > $f
done
###
firewall="/etc/firewall"
ip_interno="$(cat ${firewall}/ip_interno)"
ip_valido="$(cat ${firewall}/ip_externo)"
38
rede_interna="$(cat ${firewall}/rede_interna)"
iptables="/sbin/iptables"
caixa=$(nslookup -sil cmt.caixa.gov.br | grep -v \# |grep Address | awk '{print $2}' )
caixa=$(nslookup -sil conectividade.caixa.gov.br | grep -v \# |grep Address | awk
'{print $2}' )
orkut=$(nslookup -sil www.orkut.com.br | grep -v \# |grep Address | awk '{print $2}'
)
if [ "$1" != "blockip" ]; then
$iptables -F
$iptables -t nat -F
########
$iptables -X
$iptables -X FIREWALL >/dev/null 2>&1
########
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT
########
$iptables -N FIREWALL
$iptables -A FIREWALL -m limit --limit 20/minute -j LOG --log-level info --log-prefix
"FIREWALL: "
$iptables -A FIREWALL -j DROP
# Permitir pacotes de conexões estabelecidas
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
39
$iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopback local
$iptables -A INPUT -i lo -j ACCEPT
# Não permitir pacotes na interface errada
$iptables -A INPUT -s 192.168.0.0/16 -i eth0 -j DROP
$iptables -A FORWARD -s 192.168.0.0/16 -i eth0 -j DROP
# DNS
$iptables -A INPUT -p tcp --dport 53 -j ACCEPT
$iptables -A INPUT -p udp --dport 53 -j ACCEPT
# Regras de ICMP
$iptables -A INPUT -p icmp -j ACCEPT
$iptables -A INPUT -p icmp -i eth1 -j ACCEPT
$iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
$iptables -A INPUT -p icmp --icmp-type 5 -j ACCEPT
$iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
$iptables -A INPUT -p icmp -s $ip_valido -j ACCEPT
$iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
$iptables -A FORWARD -p icmp --icmp-type 3 -j ACCEPT
$iptables -A FORWARD -p icmp --icmp-type 5 -j ACCEPT
$iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT
##############################################################
40
#Regras de liberação por porta (interno e externo) - Arquivo
/etc/firewall/portas_entrada
entrada=$(cat ${firewall}/portas_entrada | awk '{print $1}' )
for port in $entrada; do
$iptables -A INPUT -p tcp -i eth1 -s $rede_interna -d $ip_interno --dport $port -j
ACCEPT
$iptables -A INPUT -p tcp -i eth0 -s ! $rede_interna -d $ip_valido --dport $port -j
ACCEPT
done
### Regras de liberação por porta (somente interno) - Arquivo
/etc/firewall/portas_interno
interno=$(cat ${firewall}/portas_interno | awk '{print $1}' )
for port in $interno; do
$iptables -A INPUT -p tcp -i eth1 -s $rede_interna -d $ip_interno --dport $port -j
ACCEPT
done
### Liberação acesso Samba ###
samba=$(cat ${firewall}/samba | awk '{print $1}' )
for ip in $samba; do
$iptables -A INPUT -i eth1 -s $ip -p udp -d $ip_interno -j ACCEPT
$iptables -A INPUT -i eth1 -s $ip -p tcp -d $ip_interno --dport 135:139 -j ACCEPT
$iptables -A INPUT -i eth1 -s $ip -p tcp -d $ip_interno --dport 445 -j ACCEPT
done
41
## Liberação acesso SSH ### - Arquivo /etc/firewall/ssh
ssh=$(cat ${firewall}/ssh | awk '{print $1}' )
for ip in $ssh; do
$iptables -A INPUT -i eth1 -s $ip -p tcp --sport 1024:65535 -d $ip_interno --dport 22 -j
ACCEPT
done
### Mascaramento de IP's ## - Arquivo /etc/firewall/masquerade
masquerade=$(cat ${firewall}/masquerade | awk '{print $1}' )
for ip in $masquerade; do
$iptables -A FORWARD -d $ip -j ACCEPT
$iptables -A FORWARD -s $ip -j ACCEPT
$iptables -A INPUT -s $ip -j ACCEPT
$iptables -t nat -A POSTROUTING -s $ip -j MASQUERADE
done
### Bloqueio de IP's #### - Arquivo /etc/firewall/blockip
fi
blockip=$(cat ${firewall}/blockip | awk '{print $1}' )
for ip in $blockip; do
$iptables -I INPUT -s $ip -j DROP
$iptables -I INPUT -s $ip -m limit --limit 18/minute -j LOG --log-level info --log-prefix
"IP Bloqueado: "
$iptables -I FORWARD -s $ip -j DROP
$iptables -I FORWARD -s $ip -m limit --limit 18/minute -j LOG --log-level info --log-
prefix "IP Bloqueado: "
42
done
if [ "$1" != "blockip" ]; then
#mascaramento local
masq_local=$(cat ${firewall}/masq_local | awk '{print $1}' )
for ip in $masq_local; do
$iptables -t nat -A POSTROUTING -o eth0 -s $rede_interna -d $ip -j MASQUERADE
$iptables -A FORWARD -s $rede_interna -d $ip -j ACCEPT
$iptables -A FORWARD -d $rede_interna -s $ip -j ACCEPT
done
# Redirecionamento para o squid
$iptables -t nat -A PREROUTING -p tcp -s 10.100.0.0/16 -m multiport -d ${caixa}/16 -
-dport 80,443 -j ACCEPT
$iptables -t nat -A PREROUTING -p tcp -s 10.100.0.0/16 -d 10.100.0.0/16 -j
ACCEPT
$iptables -t nat -A PREROUTING -p tcp -s 10.100.0.0/16 -d 200.139.97.224/28 -j
ACCEPT
$iptables -t nat -A PREROUTING -p tcp -s 10.100.0.0/16 -d 200.173.13.80/28 -j
ACCEPT
# Liberação para configuração do IE7, necessária na primeira inicialização do IE7
$iptables -t nat -A POSTROUTING -p tcp -s 10.100.0.0/16 -d 65.55.0.0/16 --dport 80
-j MASQUERADE
$iptables -A FORWARD -s 10.100.0.0/16 -d 65.55.0.0/16 -j ACCEPT
$iptables -A FORWARD -d 10.100.0.0/16 -s 65.55.0.0/16 -j ACCEPT
#----Redirecionamento para o sistema interno
43
#$iptables -t nat -I PREROUTING -p tcp -d 200.173.13.87 --dport 8080 -j DNAT --to
10.100.0.247:80
#$iptables -I FORWARD -p tcp -d 10.100.0.247 --dport 80 -j ACCEPT
#$iptables -I FORWARD -p tcp -s 10.100.0.247 --sport 80 -j ACCEPT
#Bloquear o site facebook
FACEBOOK_IP_RANGE=”31.13.64.0-31.13.127.255 31.13.24.0-31.13.31.255
74.119.76.0-74.119.79.255 69.63.176.0-69.63.191.255 69.171.224.0-69.171.255.255
66.220.144.0-66.220.159.255 204.15.20.0-204.15.23.255 173.252.64.0-
173.252.127.255”
Iptables –N FACEBOOK
# FACEBOOK DENY
For face in $FACEBOOK_IP_RANGE; do
Iptables –I FORWARD –M tcp –p tcp –m iprange –dst-range $face –dport 443 –j
Iptables –I FORWARD –m tcp –p tcp –m iprange –dst-range $face –dport 80 –j
Done
FACEBOOK_ALLOW=” 0x:30:67:3x:b9:ad zz:24:2c:aa:2d:55”
#MSR_LIBERADO
For MSR_LIBERADO in $FACEBOOK_ALLOW;
Do
Iptables –I FACEBOOK –m mac –mac-source $MSR_LIBERADO –j ACCEPT
Done
44
Iptables –A FACEBOOK –j reject
$iptables -I FORWARD -d $excessoes -s 207.46.0.0/16 -j ACCEPT
$iptables -I FORWARD -s $excessoes -d 207.46.0.0/16 -j ACCEPT
done
#-------Windows update
update=$(cat ${firewall}/winupdate | awk '{print $1}' )
for update in $update; do
$iptables -t nat -I POSTROUTING -s $rede_interna -d $update -j MASQUERADE
$iptables -I FORWARD -s $rede_interna -d $update -j ACCEPT
Fonte: Configuração retirada do local de trabalho (Mercatudo Casas André Luiz)
(firewall.sh) Rodando em um servidor com Linux CentOS 6 Server.
45
10.2 Arquivo do de configuração do Proxy (Squid)
# Porta onde o servidor ficará disponível e o Proxy transparente
HTTP_port 3128 transparent
Icp_port 3130
Htcp_port 0
Visible_hostname Mercatudo
Tcp_outgoing_adress 255.255.255.255
Udp_incoming_address 0.0.0.0
Udp_outgoing_address 255.255.255.255
Icp_query_timeout 0
Maximum_icp_query_timeout 2000
Mcast_icp_query_timeout 2000
Dead_peer_timeout 10 seconds
Hierarchy_stoplistcgi-bin ?
# Proibir Musica
Acl_proibir musica urlpath_regex –I “/etc/squid/proibir_musica”
Acl query urlpath_regexcgi-bin \?
No_cachedeny query
# Quantidade de memória Ram usada para cachê:
Cachê_mem 128 mb
# Porcetagem no qual o squid começará a descartar os arquivos mais antigos em
cachê:
Cachê_swap_low 90
Cachê_swap_high 95
# Quantidade de memória em disco usado para cachê:
Maximum_object_size 512 mb
Minumum_object_size 0 kb
46
# Determina o tamanho maximo dos arquivos que serão guardados no cachê feito
na memória RAM:
Maximum_object_size_in_memory 8 kb
Ipcache_size 1024
Ipcache_low 90
Ipcache_high 95
Fqdncache_size 1024
Cache_ replacement_policylru
Memory_replacement_policylry
# Monitorar o log usando o login no lugar do ip da máquina:
Log_fqdn on
Log_ip_on_direct on
Hosts_file /etc/hosts
# Caminho onde serão armazenados os arquivos de log.
# Quantidade de espaço no HD= 2048
Cache_dirufs /var/spool/squid 204816 256
Cache_acess_log /var/log/squid/acess.log
Cache_log /var/log/squid/store.log
# atualização do cache
Refresh_pattern ^ftp: 15 20% 2280
Refresh_pattern . 15 20% 2280
FTP_list_width 32
FTP_passive on
ftp_sanitycheck on
dns_retransmit_interval 5 seconds
dns_timeout 5 minutes
47
# Define as palavras que serão liberadas pelo squid:
acl whitelist url_regex “/etc/squid/whitelist”
# Define as palavras que serão bloqueadas pelo squid:
Acl blacklist url_regex “/etc/squid/blacklist”
# Regra mime
Acl streaming rep_mime_type –I “/etc/squid/mimeaplicativo”
# Login-internet-acl
# Regras-almoço-https
Aclalmoço-https-time time “/etc/squid/grupos/almoço-https.time”
Acl almoço-https-srcsrc “/etc/squid/grupos/almoco-https.src
Aclalmoço-https-dstdomain-allow dstdomain “/etc/squid/grupos/almoco-
https.dstdomain.allow”
Aclalmoco-https-url_regex-allow url_regex “/etc/squid/grupos/almoco-
https.url_regex.allow
Aclalmoco-https-dstdomain-deny dstdomain “/etc/squid/grupos/alomoco-
https.dstdomain.deny”
Aclalmoco-https-url_regex-deny url_regex “/etc/squid/grupos/almoco-
https.url_regex.deny”
http_acess deny almoco-https !almoco-https-time
http_acess allow almoco-https-srcalmoco-https-time almoco-https-dstdomain-allow
http_acess allow almoco-https-srcalmoco-https-time almoco-https-url_regex-allow
http_acess deny almoco-https-srcalmoco-https-time almoco-https-dstdomain-deny
http_acess deny almoco-https-srcalmoco-https-time almoco-https-url_regex-deny
# Regra-Faculdades
Acl faculdades-time time “/etc/squid/grupos/faculdades.time”
Acl faculdades-srcsrc “/etc/aquid/grupos/faculdades.src”
Acl faculdades-dstdomain-allowdstdomain
“/etc/squid/grupos/faculdades.dsrdomain.aloow”
Acl faculdades-url_regex-allowurl_regex
“/etc/squid/grupos/faculdades.url_regex.allow”
48
Acl faculdades-dstdomain-denydstdomain
“/etc/squid/grupos/faculdades.dstdomain.deny”
Acl faculdades-url_regex-denyurl_regex
“etc/squid/grupos/faculdades.url_regex.deny”
http_acessdeny faculdades-src !faculdades-time
http_acessallow faculdades-src faculdades-time faculdades-dstdomain-allow
http_acessallow faculdades-src faculdades-time faculdades-url_regex-allow
http_acessdeny faculdades-src !faculdades-time faculdades-dstdomain-deny
http_accessdeny faculdades-src !faculdades-time faculdades-url_regex-deny
# Regras geral-usuário
Acl usergeralsrc “/etc/squid/grupos/usergeral_src”
http_acess allow usergeral
# Configuração mínima recomendada
Aclallsrc 0.0.0.0/0.0.0.0
# Define o range da rede interna:
Aclminharedesrc 10.100.0.0/255.255.0.0
Acl manager protocachê_object
Acllocalhostsrc 127.0.0.1/255.255.255.255
Aclssl_ports port 443 563
Aclsafe_ports port 80 # http
Aclsafe_ports port 21 # ftp
Aclsafe_ports port 443 563 # https, snews
Aclsafe_ports port 70 # gopher
Aclsafe_ports port 210 # wais
Aclsafe_ports port 1025-65535 #-unregistered ports
Aclsafe_ports port 280 # http-mgmt
Aclsafe_ports port 488 # gss-http
Aclsafe_ports port 591 #filemaker
Aclsafe_ports port 631 #cups
Aclsafe_ports port 777 # multiling http
49
Aclsafe_ports port 901 # swat
Acl purge method PURGE
Acl CONNECT method CONNECT
# Only allow cachemgracess from localhost
http_acess allow manager localhost
http_acess deny manager
# Only allow purge requests from localhost
http_acess allow paurgelocalhost
http_acess deny purge
# Deny requests to unknown ports
http_acess deny !safe_ports
# Deny CONNECT to other than SSL ports
http_acess deny CONNECT !SSL_ports
# insert your own rule (s) here to allow acess from your clients
http_acess allow localhost
http_acess allow whitelist
#http_acess deny proibidos
http_acess deny blacklist
http_acess deny proibir_musica
http_acess allow minharede
#streaming
http_reply_acess deny streaming
#and finally deny all other acess to this proxy
http_acess deny all
#allow icp queries from everyone
Icp_acess allow all
#redirect_program /usr/bin/squidguard –c /etc/squid/squidguard.conf
Fonte: Elaborado pelo autor - Configuração retirada do local de trabalho (Mercatudo
Casas André Luiz, Rodando em um servidor com Linux CentOS 6 Server.
50
11. Termo de compromisso e responsabilidade
Autenticidade e exclusividade sob as penas da Lei 9610/98
Pelo presente, o abaixo assinado declara, sob as penas da lei, que o presente
trabalho é inédito e original, desenvolvido especialmente para os fins educacionais a
que se destina e que, sob nenhuma hipótese, fere o direito de autoria de outrem.
Para maior clareza, firmo o presente termo de originalidade.
Guarulhos, 08 de 09 de 2013