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
inicial [2024/03/07 15:04]
marcosm [Criação do servidor telecentro]
inicial [2024/03/07 15:37] (atual)
marcosm [Versões documentadas]
Linha 1: Linha 1:
 ~~NOCACHE~~ ~~NOCACHE~~
-===== Objetivos ​=====+===== Desenvolvimento da Libertas ​=====
  
-Este wiki tem por objetivo reunir toda a documentação relacionada ao desenvolvimento da distribuição //​GNU/​Linux// ​usada nos computadores dos telecentros Comunitários da Prefeitura de Belo Horizonte e também, naqueles que forem para doação. Ele possuirá áreas comuns acessíveis a todas as pessoas e áreas restritas a determinados grupos de trabalho. Aqui será documentado o processo de configuração e uso da distribuição //Linux Mint//.+Este wiki tem por objetivo reunir toda a documentação relacionada ao desenvolvimento da distribuição //Libertas Debian ​GNU/​Linux//​. Ele possuirá áreas comuns acessíveis a todas as pessoas e áreas restritas a determinados grupos de trabalho. Aqui será documentado o processo de produção ​da distribuição, de forma a permitir que qualquer um consiga reproduzir a aparência e as funcionalidades da //Libertas//.
  
 +[[justificativa_sl|Justificativa para o uso de softwares livres na educação]]
  
 +==== Versões documentadas ====
  
- +  * [[desenvolvimento_CRC:debian11_inicial|Versão 11]] (bullseye)
-===== Servidor telecentros ===== +
-==== Criação do servidor telecentro ==== +
-A criação de um servidor é feita a partir de uma máquina equipada com telecentro. +
-Para que essa máquina funcione como servidor é necessário acrescentar uma placa de rede, ficando assim com duas placasuma onboard e outra no barramento. A placa de rede onboard funcionará como rede local nomeada para eth0(instruções mais adiantea outra funcionará como rede wan e estará conectada à rede RMI e também será renomeada para eth1. +
-===Preparação da máquina telecentro=== +
- +
-== Desabilitando IPv6 == +
- +
-A máquina servidora, assim como as máquinas de telecentro, não possuem acesso ou endereços IPv6. para que isso seja possível ​ altera-se a linha  +
- +
-  GRUB_CMDLINE_DEFAULT=”ipv6.disable=1” no arquivo /​etc/​default/​grub. +
- +
-== Nomeação das placas de rede == +
- +
-Para conformidade com o firewall as placas de rede devem ser renomeadas para eth0 e eth1, pois o linux alterou a sistemática de nomeação das placas de rede nas versões atuais usando o barramento e slot onde a placa esta conectada. Para driblar essa regras acrescenta-se,​ no arquivo /​etc/​default/​grub na opção ''​GRUB_CMDLINE_LINUX_DEFAULT''​ os valores: ​ "​net.ifnames=0 biosdevname=0"​. +
-assim essa linha ficaria no final como:  +
- +
-  GRUB_CMDLINE_LINUX_DEFAULT="​ipv6.disable=1 net.ifnames=0 biosdevname=0"​ +
- +
-=== Instalação do daemon dhcp === +
- +
-A disponibilização do serviço dhcp visa oferecer endereços da rede 192.168.80.0 às maquinas conectadas à rede local, ou seja eth0. +
-A instalação do daemon dhcp é feita pela instalação do utilitário isc-dhcp-server. Para isso digita-se na linha do bash: +
- +
-  # apt install isc-dhcp-server +
- +
-Para checar se ele foi instalado digite: +
- +
-  # 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. +
-    +
-Com a instalação do servidor dhcp deve-se, primeiramente, ​ alterar no arquivo /​etc/​default/​isc-dhcp-server as opções INTERFACESv4=”eth0” e INTERFACESv6=”eth0” +
-Após isso ter sido feito, substituir o conteúdo do arquivo /​etc/​dhcp/​dhcpd.conf por: +
- +
-  # option definitions common to all supported networks... +
-  # option domain-name "​crc.pbh";​ +
-  option domain-name-servers 8.8.8.8, 1.1.1.1; +
-  #option domain-name-servers 192.168.80.1;​+
   ​   ​
-  ​# Em segundos +  ​* [[desenvolvimento9:libertas9_inicial|Versão 9]] (stable) (descontinuada
-  default-lease-time 86400; +  ​[[desenvolvimento:​libertas8_inicial|Versão 8]] (old) - restrito ​(descontinuada
-  max-lease-time 604800; +  * [[desenvolvimento6:​inicial|Versão 6]] (old- restrito ​(descontinuada)
-   +
-  ddns-update-style none; +
-   +
-  authoritative;​ +
-   +
-  subnet 192.168.80.0 netmask 255.255.255.0 { +
-    range 192.168.80.2 192.168.80.50;​ +
-    option subnet-mask 255.255.255.0;​ +
-    option routers 192.168.80.1; ​  +
-    option broadcast-address 192.168.80.255;​ +
-  } +
- +
-Para verificar se a configuração está correta digite: +
-  # dhcpd -t  +
-Se houver erros eles serão reportados no terminal. +
-Estando tudo ok basta reiniciar o daemon dhcpd: +
-  # systemctl restart isc-dhcp-server.service +
-ele subirá sem erros. +
- +
-=== Troubleshooting do daemon dhcpd === +
- +
-Para verificar os logs gerados pelo servidor dhcpd digite: +
-  # journalctl -xeu isc-dhcp-server +
- +
-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 (eth0aos 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 filterde 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 squidtem 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.+
  
 +==== Documentação interna ====
  
 +  * [[smed:​inicial_smed|Orientações para a SMED]] (em desenvolvimento)
 +  * [[interno:​libertas9_terceiros| Orientações para a GMRI-PB]]
 +  * [[dev:​inicial| Desenvolvimento Libertas]] ​
 +  * [[tc:​inicial| Desenvolvimento dos telecentros]] (em desenvolvimento)