SISTEMAS OPERACIONAIS ABERTOS SISTEMA OPERACIONAL LINUX Conceitos e implementação do Squid PLATAFORMA: VIRTUAL BOX Prof. Ricardo Barcelar http://www.ricardobarcelar.com
Conceitos Um administrador de redes ou sistema Linux, deve se preocupar antes de mais nada com a segurança no sistema. Para isso ele deve ser capaz de criar usuário, senhas e definir permissões para então ele começar a configurar seu servidor.
Conceitos Em algumas situações será necessário montar o CDRom, onde estão alguns fontes. Para isto use o seguinte comando: mkdir /mnt/cdrom se não houver este diretório mount t iso9660 /dev/cdrom /mnt/cdrom
Usuários e Grupos Além de usuários, um SO de rede possui também uma entidade conhecida como grupo. Um grupo de usuários são conjuntos de um ou mais usuários com características comuns. São utilizados para facilitar a administração de usuários.
Usuários e Grupos Como qualquer sistema UNIX, o Linux utiliza um arquivo para a guarda de informações sobre usuários. /etc/passwd Para os grupos de usuários: /etc/group Estes arquivos podem ser lidos com qualquer editor de texto, contudo pode-se observar que o campo senha não poderá ser lido, visto que recebe uma criptografia baseado em um algoritmo unidecional.
Usuários e Grupos É possível criar usuário e grupos simplesmente editando estes arquivos. Contudo, não é a maneira mais segura. O comando que utilizaremos para criar usuários é o adduser ou useradd. Estes comandos admitem flags como podemos observar abaixo: Para excluir um usuário basta usar o comando userdel. -d Indica o diretório do usuário -m Indica se o diretório do usuário não existir, ele deverá ser criado. -g Especifica o grupo do usuário -e Indica a data quando a conta expirará -f Quantos dias após a senha expirar a conta será desabilitada.
Usuários e Grupos Para adicionar o grupo basta usar o comando groupadd, que pode adminitir flags Groupadd grpteste É importante notar que todo arquivo ou diretório em um sistema de arquivos UNIX pertence a um usuário e detém determinadas regras de permissionamento.
Permissionamento de arquivos e diretórios O comando utilizado para conceder ou remover permissões em um arquivo UNIX é o chmod. -r Leitura -w Gravação -x Execução -s Execução como usuário proprietário Estes atributos podem ser observados em qualquer arquivo ou diretório.
Permissionamento de arquivos e diretórios O chmod atua basicamente sobre três níveis: usuário 'u grupo 'g outros 'o'. Tanto pode usar letras como o modo octal para permissões. O modo octal usa números de 0 (zero) a 7 (sete). Usa também letras para designar 'r' leitura, vem do Inglês 'read', 'w' gravação, vem do Inglês 'write' e 'x' vem do Inglês 'execute'
Permissionamento de arquivos e diretórios Para arquivos (-) 0 (zero) permissão negada 1 permissão de execução 2 permissão de gravação 3 permissão de gravação e execução 4 permissão de leitura 5 permissão de leitura e execução 6 permissão de leitura e gravação 7 soma de todas as permissões
Permissionamento de arquivos e diretórios Para diretórios (d) 0 (zero) permissão negada 1 permissão para entrar no diretório 2 permissão para gravar dentro do diretório 3 permissão de entrar e gravar no diretório 4 permissão para listar o conteúdo do diretório 5 permissão de listar e entrar no diretório 6 permissão de listar e gravar no diretório 7 soma de todas as permissões
Permissionamento de arquivos e diretórios Outra maneira de se realizar o permissionamento é através da numeração binária. Octal Binário Permissão 0 000 Sem permissão 1 001 Execução 2 010 Escrita 3 011 Escrita e Execução 4 100 Leitura 5 101 Leitura e Execução 6 110 Leitura e Escrita 7 111 Leitura, Escrita e Execução
Permissionamento de arquivos e diretórios Outra maneira de se realizar o permissionamento é através da numeração binária. Octal Binário Permissão 0 000 Sem permissão 1 001 Execução 2 010 Escrita 3 011 Escrita e Execução 4 100 Leitura 5 101 Leitura e Execução 6 110 Leitura e Escrita 7 111 Leitura, Escrita e Execução
O que é um Firewall No sentido literal da palavra: Parede ou barreira de fogo. É um dispositivo de hardware, software ou híbrido que tem por objetivo proteger informações e/ou filtrar o acesso a elas. Pode servir ainda como elemento de ligação entre redes distintas.
Firewall Dividem-se em duas grandes classes: Filtro de pacotes: Endereço de origem; Endereço de destino; Tipo de protocolo: TCP, UDP, ICMP; Porta; Etc. Exemplo: Firewalldual homed host
Firewall Servidores Proxy: Permite executar a conexão entre redes e são utilizados como cache de conexão e filtros de páginas de Internet. Exemplo: Squid
Software de Firewall em Linux IPTables e o Netfilter Mais utilizado na atualidade, implementa uma séries de facilidades como NAT e filtragem de pacotes. IPFilter Muito utilizado no OpenBSD, FreeBSD, Solaris, porém portado para o Linux utilizado por muitos administradores.
Portas mais utilizadas que devemos saber Serviço Portas FTP 20, 21 SSH 22 Telnet 23 DNS 53 HTTP 80 POP3 110 IRQ 6667
O que devemos ter em um Firewall? Monitoramento de banda com software MRTG; Proxy transparente com software SQUID; Monitoramento de sites acessados e criação de relatórios com software SARG; Controle de acesso com software iptables com suporte a layer 7
Implementação
Configurações para acesso a Internet através de um Proxy Caso esteja usando a conexão com a Internet passando por um proxy é necessário realizar algumas configurações no apt-get. Caso o acesso seja direto não há necessidade. Siga os seguintes passos: Altere o arquivo /etc/environment adicionando as linhas abaixo: $ su # vi /etc/envirnment http_proxy="http://10.0.0.1:8080" ftp_proxy="http://10.0.0.1:8080" Acquire { HTTP::Proxy 10.0.0.1:8080; FTP::Proxy 10.0.0.1:8080; }; alias wget="wget -Y on" # observe que a porta usada foi a 8080; #padrão de #alguns servidores proxy.
Faça o mesmo em /etc/apt/apt.conf # vi /etc/apt/apt.conf E adicione as seguintes linhas: Configurações Necessárias Acquire{ HTTP::proxy "http://10.0.0.1:8080"; FTP::proxy "http://10.0.0.1:8080 "; } # observe novamente a configuração das portas Faça o mesmo em /etc/profile: #vi /etc/profile Adicione as seguintes linhas em /etc/profile: export http_proxy ftp_proxy
Configurações Necessárias O próximo passo é configurar a lista de fontes do apt-get: Altere o arquivo /etc/apt/sources.list adicionando as linhas abaixo: # vi /etc/apt/sources.list deb http://linorg.usp.br/debian/ etch main deb-src http://linorg.usp.br/debian/ etch main Comente as linhas já existentes com que começam com deb colocando um # na frente da linha. Dica para o VI Esc i insere caracteres após o cursor Esc o insere uma linha abaixo do cursor Esc dd apaga uma linha Esc :x salva e fecha
Configurando o Ambiente Executando o comando netstat -na é possível verificar os serviços que estão rodando e, tratando-se de um firewall, é recomendável que tais serviços não estejam disponíveis. Assim, é preciso removê-los da inicialização e deixar somente o ssh (para acesso remoto). Entre no diretório /etc/rc2.d e renomeie os scripts de inicialização: # cd /etc/rc2.d # mv S20exim4 K20exim4 # mv S18portmap K18portmap # mv S20inetd K20inetd # mv S21nfs-common K21nfs-common # mv S20lpd K20lpd # mv S14ppp K14ppp E outros se for necessário.
Configurando o Ambiente Agora entre em /etc/rcs.d e renomeie o portmap: # cd /etc/rcs.d # mv S43portmap K43portmap Ao renomear os links para os scripts de inicialização de S para K você está dizendo ao sistema que não quer que esses scripts rodem durante a inicialização da máquina. Quando reiniciar a máquina nenhum dos serviços estará mais disponíveis.
Aumentando a Segurança do Firewall Edite o arquivo /etc/ssh/sshd_config: # vi /etc/ssh/sshd_config Altere ou adicione a linha abaixo: PermitRootLogin no Salve, saia do arquivo e reinicie o serviço para as alterações serem carregadas. # killall -HUP sshd Esta opção define que o SSHD não vai aceitar conexão remota do usuário root.
Instalando o SQUID Execute o comando de instalação do squid através do apt-get ou do aptitude: # apt-get install squid-2.6.stable7 Para configurá-lo não é necessário prática nem habilidade, é extremamente simples. Anexo segue uma configuração bem básica: Todas as máquinas ficarão com acesso http liberado, exceto os sites que são bloqueados por palavra-chave; Há as opções de liberar completamente algumas máquinas, nada mais. Baixe o arquivo squid.conf de configuração no site no link donwloads, colocando-o no diretório /etc/squid. # cd /etc/squid # wget www.ricardobarcelar.com/arquivos/squid.conf
Configurando o SQUID Altere as seguintes linhas neste arquivo de configuração: Coloque o hostname da sua máquina, o mesmo definido na instalação: visible_hostname hostname.dominio Coloque o ip do seu servidor DNS: dns_nameservers 10.0.0.1 Definir de quanto em quanto tempo o squid vai ir na internet verificar se houveram alterações: refresh_pattern ^ftp: 1 20% 2280 refresh_pattern ^gopher: 1 0% 2280 refresh_pattern. 1 20% 2280 Definir a faixa de sua rede: acl redelocal src 10.0.0.0/8 No squid.conf são essas as alterações a serem realizadas.
Crie os diretórios onde vão ficar as acl s # mkdir /etc/squid/acls Configurando o SQUID Crie os arquivos que vão conter as acls: # touch /etc/squid/acls/diretoria # touch /etc/squid/acls/permitidos # touch /etc/squid/acls/bloqueados Descrição dos arquivos: Diretoria -> deve conter as máquinas que tem acesso total a qualquer site. Coloque o endereço IP das estações. Permitidos -> são sites que contém palavras chave bloqueadas, mas que podem ser acessados. Bloqueados -> são os sites que contém palavras-chave que devem ser bloqueadas.
Configurando o SQUID Após colocar o squid.conf dentro de /etc/squid, d ê permissão para o squid escrever na pasta var: # chmod -R 777 /usr/local/squid/var Agora criaremos os arquivos de swap do squid: # squid z Tudo pronto, execute o squid com o comando: # squid Caso deseje, adicione o squid à inicialização editando o arquivo /etc/init.d/bootmisc.sh inserindo ao final do arquivo: # Inicializando o squid if [ -x /etc/init.d/squid ]; then. /etc/init.d/squid fi
Configurando o SQUID Agora crie um arquivo com nome squid dentro de /etc/init.d: # vi /etc/init.d/squid E adicione o seguinte conteúdo dentro do arquivo: /usr/sbin/squid Salve e saia. Dê permissão de execução ao arquivo: # chmod +x /etc/init.d/squid Finalizada a configuração do SQUID.