Implementando um kernel GNU/Linux mais seguro
Nesse artigo iremos mostrar como é possível implementar pequenas filtragens através da compilação do kernel GNU/Linux utilizando o pseudo-sistema de arquivos /proc sem ter um conhecimento avançado de ferramentas específicas de firewalling, como o Netfilter/Iptables, Ipchains, Ipfwadm entre outras.
Parte 2: O pseudo-sistema de arquivos
O diretório /proc é chamado de pseudo-sistema de arquivos,
porque na verdade as informações contidas ali são utilizadas
pelo kernel para interfacear o mesmo com as estruturas de dados
do sistema [2]. O que é encontrado dentro do diretório /proc
não é real, ou seja, as informações são geradas conforme a
situação em que o sistema se encontra naquele momento pelo kernel [2].
Muitas das configurações que podem ser realizadas nos arquivos encontrados dentro do /proc são valores binários, ou seja, 0 (zero) e 1 (um), representando falso (disable) e verdadeiro (enable) respectivamente [3]. Um exemplo seria o arquivo /proc/sys/net/ipv4/tcp_syncookies. Também são encontrados valores com textos legíveis (ASCII), como é o caso do arquivo /proc/sys/kernel/hostname.
É possível alterar esses arquivos com editores de texto, com o comando sysctl ou com um simples redirecionamento de entrada e saída de dados[1] como descrito no exemplo abaixo:
# echo "casa >" /proc/sys/kernel/hostname
Se agora executarmos:
# cat /proc/sys/kernel/hostname
casa
Obteremos o nome do hostname local que acabamos de modificar. Porém como o diretório /proc/ é alterado quando reiniciamos o sistema, tudo que foi configurado é perdido, é necessário que essas configurações feitas sejam armazenadas em um script para que quando o sistema iniciar, o script possa executar os comandos para que se tornem permanentes no kernel até que o mesmo seja reiniciado. Existem dois métodos para isso: [1]
Os arquivos que iremos modificar as variáveis se encontram dentro do diretório /proc/sys/net/ipv4/, onde os mesmos são responsáveis pelas filtragens de informações de entrada.
O interessante é que o efeito das configurações das variáveis dos arquivos dentro do diretório /proc são instantâneas, a partir do momento que o arquivo é salvo, as mudanças já entram em produção, não sendo necessário executar algum comando de reinício de serviço ou até mesmo o reinício do GNU/Linux. Essa é uma das grandes vantagens de configurar o kernel através dos parâmetros do diretório /proc/.
Lembrando que para executar esses comandos para a configuração do kernel, é necessário o usuário possuir permissões de root.
Muitas das configurações que podem ser realizadas nos arquivos encontrados dentro do /proc são valores binários, ou seja, 0 (zero) e 1 (um), representando falso (disable) e verdadeiro (enable) respectivamente [3]. Um exemplo seria o arquivo /proc/sys/net/ipv4/tcp_syncookies. Também são encontrados valores com textos legíveis (ASCII), como é o caso do arquivo /proc/sys/kernel/hostname.
É possível alterar esses arquivos com editores de texto, com o comando sysctl ou com um simples redirecionamento de entrada e saída de dados[1] como descrito no exemplo abaixo:
# echo "casa >" /proc/sys/kernel/hostname
Se agora executarmos:
# cat /proc/sys/kernel/hostname
casa
Obteremos o nome do hostname local que acabamos de modificar. Porém como o diretório /proc/ é alterado quando reiniciamos o sistema, tudo que foi configurado é perdido, é necessário que essas configurações feitas sejam armazenadas em um script para que quando o sistema iniciar, o script possa executar os comandos para que se tornem permanentes no kernel até que o mesmo seja reiniciado. Existem dois métodos para isso: [1]
- Utilizar um dos scripts rc.d encontrados em /etc/.
- Utilizar "variável=valor" em /etc/sysctl.conf. Está linha funcionará como sysctl -w.
Os arquivos que iremos modificar as variáveis se encontram dentro do diretório /proc/sys/net/ipv4/, onde os mesmos são responsáveis pelas filtragens de informações de entrada.
O interessante é que o efeito das configurações das variáveis dos arquivos dentro do diretório /proc são instantâneas, a partir do momento que o arquivo é salvo, as mudanças já entram em produção, não sendo necessário executar algum comando de reinício de serviço ou até mesmo o reinício do GNU/Linux. Essa é uma das grandes vantagens de configurar o kernel através dos parâmetros do diretório /proc/.
Lembrando que para executar esses comandos para a configuração do kernel, é necessário o usuário possuir permissões de root.
Parabéns!