Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
inicial [2024/03/07 14:38]
marcosm [Criação do servidor telecentro]
inicial [2024/03/07 15:06]
marcosm [Servidor telecentros]
Linha 8: Linha 8:
  
 ===== Servidor telecentros ===== ===== Servidor telecentros =====
 +Segue adiante procedimentos para a criação de um servidor telecentro
 ==== Criação do servidor telecentro ==== ==== Criação do servidor telecentro ====
 A criação de um servidor é feita a partir de uma máquina equipada com telecentro. A criação de um servidor é feita a partir de uma máquina equipada com telecentro.
Linha 35: Linha 36:
 Para checar se ele foi instalado digite: Para checar se ele foi instalado digite:
  
- # systemctl status isc-dhcp-server+  ​# systemctl status isc-dhcp-server
  
 No início erros serão reportados pois os arquivos de configuração não estão definidos. Apesar de não estar funcionando ele está instalado. No início erros serão reportados pois os arquivos de configuração não estão definidos. Apesar de não estar funcionando ele está instalado.
Linha 75: Linha 76:
  
 nos logs estarão presentes todos os acontecimentos no dhcpd, inclusive os endereços atribuídos aos clientes. nos logs estarão presentes todos os acontecimentos no dhcpd, inclusive os endereços atribuídos aos clientes.
 +
 +=== Criação do firewall ===
 +
 +O firewall no servidor do telecentro tem por finalidade restringir o acesso da rede lan (eth0) aos serviços disponibilizados na rede wan (eth1), permitindo somente acesso à internet e proibindo os demais(RMI).
 +
 +Ele é criado usando-se o utilitário iptables que já vem instalado nas distribuições linux. A sua ‘criação’ segue os seguintes passos:
 + - uso de script para estabelecer as regras
 + - criação de um serviço no systemd para gerenciar o seu funcionamento.
 +
 +== script das regras ==
 + 
 +Esse script consiste de uma sequência de comandos que definem como o firewall irá funcionar. Ele é um arquivo texto comum e poderia ficar em qualquer lugar, mas por comodidade e obedecendo a hierarquia linux ele foi colocado em /​etc/​firewall/​loadFirewall.sh. Tanto o diretório quanto o arquivo devem ser criados antecipadamente. O arquivo deve ter privilégios de execução para o usuário root e o seu grupo. Segue abaixo o conteúdo do arquivo:
 +  #!/bin/bash
 +  ​
 +  IPT='/​sbin/​iptables'​
 +  TC='​192.168.80.0/​24'​
 +  TCS='​10.172.0.0/​16'​
 +  DNS='​10.0.24.151'​
 +  RMI1='​192.168.0.0/​16'​
 +  RMI2='​10.0.0.0/​8'​
 +  RMI3='​172.16.0.0/​12'​
 +  EAD1='​10.0.29.70'​
 +  EAD2='​201.54.223.111'​
 +  ​
 +  # Placa de rede ligada a internet
 +  wan='​eth1'​
 +  ​
 +  # Placa de rede que liga com a 'rede interna'​ (local)
 +  lan='​eth0'​
 +  ​
 +  # flush
 +  function flushFirewall() {
 + iptables -t nat -F POSTROUTING
 + iptables -t nat -F PREROUTING
 + iptables -t nat -F OUTPUT
 +  ​
 + iptables -F
 + iptables -X
 + iptables -Z
 +  }
 +  ​
 +  function stopFirewall() {
 + echo "​Desligando o firewall................................ [ >> ]"
 +  ​
 + # --------- POLITICAS -----------------------
 + iptables -P INPUT ACCEPT
 + iptables -P FORWARD ACCEPT
 + iptables -P OUTPUT ACCEPT
 +  ​
 + # Desabilita o roteamento entre as interfaces
 + #​--------------------------------------------
 + echo 0 > /​proc/​sys/​net/​ipv4/​ip_forward
 +  ​
 +  ​
 + echo "​Firewall DESATIVADO.................................. [ OK ]"
 +  }
 +  ​
 +  function startFirewall() {
 +  echo "​Iniciando o firewall................................. [ >> ]"
 +  ​
 +  # --------- POLITICAS -----------------------
 +  iptables -P INPUT DROP
 +  iptables -P FORWARD DROP
 +  iptables -P OUTPUT ACCEPT
 +  ​
 +  ​
 +  #​----------REGRAS ADICIONAIS DE SEGURANA ---------: ​
 +  iptables -A INPUT -m state --state INVALID -j DROP
 +  iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 +  echo 0 > /​proc/​sys/​net/​ipv4/​conf/​all/​accept_redirects
 +  echo 0 > /​proc/​sys/​net/​ipv4/​conf/​all/​accept_source_route
 +  echo 1 > /​proc/​sys/​net/​ipv4/​conf/​default/​rp_filter
 +  echo 1 > /​proc/​sys/​net/​ipv4/​icmp_echo_ignore_broadcasts
 +  echo 1 > /​proc/​sys/​net/​ipv4/​tcp_syncookies
 +  ​
 +  # Habilita o roteamento entre as interfaces
 +  #​------------------------------------------
 +  echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +  ​
 +  # Liberando acesso por SSH em todas as interfaces
 +  #​------------------------------------------------
 +  iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 +  iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
 +  ​
 +  # garante que o firewall permitira pacotes de conexoes ja iniciadas:
 +  #​-------------------------------------------------------------------
 +  iptables -A INPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +  iptables -A FORWARD -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +  iptables -A OUTPUT -m state --state ESTABLISHED,​RELATED -j ACCEPT
 + 
 + 
 +  # Regra para compartilhar a Internet (NAT)
 +  #​-----------------------------------------
 +  iptables -t nat -A POSTROUTING ​ -o $wan -j MASQUERADE
 + 
 +  iptables -A FORWARD -i $lan -d $EAD1 -j ACCEPT
 +  iptables -A FORWARD -i $lan -d $TC -j ACCEPT
 +  ​
 +  iptables -A FORWARD -i $lan  -d $RMI1 -j REJECT
 +  iptables -A FORWARD -i $lan  -d $RMI2 -j REJECT
 +  iptables -A FORWARD -i $lan  -d $RMI3 -j REJECT
 +  ​
 +  # Permitir resolução de DNS
 +  iptables -A FORWARD ​ -i $lan -p udp --dport 53 -j ACCEPT
 +  iptables -A INPUT  -i $lan -p tcp -d $RMI1 -j DROP
 +  iptables -A INPUT  -i $lan -p tcp -d $RMI2 -j DROP
 +  iptables -A INPUT  -i $lan -p tcp -d $RMI3 -j DROP
 +  ​
 +  ​
 +  # Permitir tudo com origem na rede local
 +  #​---------------------------------------
 +  iptables -A INPUT    -i $lan -j ACCEPT
 +  iptables -A FORWARD ​ -i $lan -j ACCEPT
 +  ​
 +  ​
 +  # --------- LOOPBACK ------------------------
 +  iptables -A INPUT -i lo -j ACCEPT
 +  ​
 +  ​
 +  ​
 +  # Compartilhamento - Porta 80 >> Proxy 3128
 +  #​--------------------------------------------------
 +  #iptables -t nat -A PREROUTING -i $lan -p tcp --dport 80 -j REDIRECT --to-port 3128
 +  ​
 +  ​
 +  ​
 +  ​
 +  ​
 +  ​
 +  ​
 +  echo "​Firewall Ativado..................................... [ OK ]"
 +  ​
 +  }
 +  ​
 +  ​
 +  case $1 in
 +      stop)
 +      stopFirewall  ​   ​
 +  flushFirewall
 +  ;;
 +     ​start)
 +  flushFirewall
 +     ​ startFirewall
 +  ;;
 +  ​
 +      restart)
 +  stopFirewall
 +  flushFirewall
 +  startFirewall
 +  ;;
 +      *)
 +  ​
 +  echo 'POR FAVOR USE "​stop|start|restart"'​
 +  ;;
 +  esac
 +
 +== Implementação do serviço firewall ==
 +
 +A criação do serviço no systemd consiste na criação de um script na pasta /​etc/​systemd/​system/​ que será chamado quando se decidir iniciar, reiniciar ou parar o firewall. Esse arquivo deve ter a extensão .service, deve ser executavel somente pelo root e seu grupo. O nome dado a esse arquivo foi firewall.service (naturalmente). Seu conteúdo é:
 +
 +''/​etc/​systemd/​system/​firewall.service:'' ​
 +
 +  [Unit]
 +      Description=firewall
 +      After=network.target
 +  ​
 +  [Service]
 +      RemainAfterExit=yes
 +      Restart=always
 +      RestartSec=10
 +      ExecStart=/​etc/​firewall/​loadFirewall.sh start
 +      ExecStop=/​etc/​firewall/​loadFirewall.sh stop
 +  #    ExecRestart=/​etc/​firewall/​loadFirewall.sh restart
 +      User=root
 +  ​
 +  [Install]
 +      WantedBy=multi-user.target
 +
 +Após todos esses passos serem concluídos deve-se reiniciar os daemons para que o systemd possa reconhecer os serviços:
 +
 +  # systemctl daemon-reload
 +
 +Com a recarga dos serviços o firewall já estará operando. Para checar basta digitar:
 +
 +  # systemctl status firewall.service
 +
 +para checar se o firewall está funcionando digite:
 +  # iptables -nvL
 +
 +Se estiver ativo as regras (tabela filter) de cada chain serão listadas. Caso contrário, nenhuma regra será listada apenas os nomes das chains. ​
 +
 +Ativando e desativando o firewall
 + Para ativar o firewall digite:
 +  # systemctl start firewall.service
 +
 +desativar: ​
 +  # systemctl stop firewall.service
 +
 +reiniciar: ​
 +  # systemctl restart firewall.service
 +
 +checar funcionamento:​
 +  # systemctl status firewall.service
 +
 +=== Instalação do proxy ===
 +
 +O proxy (no caso o squid) tem a função de filtrar conteúdo no acesso à internet. Essa funcionalidade esta sendo descontinuada porque a prodabel já implementa um proxy transparente que já filtra as páginas não permitidas.
 +
 +
 +=== Testes finais … ===
 +
 +Acesso à RMI = proibido
 +  # ping 10.0.24.1 ​
 +sem resposta/ inalcançável.
 +
 +Acesso internet = permitido
 +  # ping google.com
 +respondendo o ip da google e o tempo de busca, com isso testa-se também o dns.
 +
 +Acesso servidores RTP
 +  # chronyc status
 +resposta : lista de servidores de RTP.
 +