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
Última revisão Ambos lados da revisão seguinte
inicial [2024/03/07 15:06]
marcosm [Servidor telecentros]
inicial [2024/03/07 15:22]
127.0.0.1 edição externa
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 ====
  
- +  * [[desenvolvimentoCRC:debian11_inicial|Versão 11]] (bullseye)
-===== Servidor telecentros ===== +
-Segue adiante procedimentos para a criação de um servidor telecentro +
-==== 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)