Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
inicial [2024/03/07 14:54] 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 placas: uma onboard e outra no barramento. A placa de rede onboard funcionará como rede local nomeada para eth0(instruções mais adiante) a 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 (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 | + | |
+ | ==== 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) |