Firewall e NAT em FreeBSD com controle de banda e redirecionamento de portas e IPs
Neste artigo vou mostrar todos os passos de como criar um servidor firewall e NAT em FreeBSD com opções interessantes como redirecionamentos de portas e/ou IPs.
Parte 2: Compilando o kernel
Primeiramente é necessário que você possua uma máquina
com FreeBSD instalado com os pacotes de
Kern-Developer, para que tenhamos os fontes do kernel para recompilá-lo.
Veja mais em:
Com os fontes do kernel em mãos, entre como root e vá até /usr/src/sys/i386/conf:
$ cd /usr/src/sys/i386/conf
Se ele retornar que a pasta destino não existe é porque os fontes do kernel não estão instaladas. Para adicionar as funções do NAT no kernel é interessante que façamos isto em uma cópia do kernel:
$ cp GENERIC SERVER
Agora edite o novo kernel. O editor nativo do Free é o ee:
$ ee SERVER
Altere a linha ident GENERIC para ident SERVER.
Você pode fazer alterações para que o kernel não tenha suporte e hardware inexistente. Com o comando dmesg você encontra todo o hardware instalado na sua máquina, vá para o kernel e comente as linhas que representam os hardwares que você não possui.
PS: Faça isso com atenção, pelo contrário você poderá ter que reinstalar o seu Free. Sugiro que só faça este procedimento após ter um pouco de prática com o FreeBSD.
Encontre as linhas options e adicione estas que tratam do NAT:
Veja mais em:
- http://wwwsr.unijui.tche.br/~heini/freebsd/instalacao.html
- http://wwwsr.unijui.tche.br/~heini/freebsd/kernel.html
Com os fontes do kernel em mãos, entre como root e vá até /usr/src/sys/i386/conf:
$ cd /usr/src/sys/i386/conf
Se ele retornar que a pasta destino não existe é porque os fontes do kernel não estão instaladas. Para adicionar as funções do NAT no kernel é interessante que façamos isto em uma cópia do kernel:
$ cp GENERIC SERVER
Agora edite o novo kernel. O editor nativo do Free é o ee:
$ ee SERVER
Altere a linha ident GENERIC para ident SERVER.
Você pode fazer alterações para que o kernel não tenha suporte e hardware inexistente. Com o comando dmesg você encontra todo o hardware instalado na sua máquina, vá para o kernel e comente as linhas que representam os hardwares que você não possui.
PS: Faça isso com atenção, pelo contrário você poderá ter que reinstalar o seu Free. Sugiro que só faça este procedimento após ter um pouco de prática com o FreeBSD.
Encontre as linhas options e adicione estas que tratam do NAT:
options INCLUDE_CONFIG_FILE options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPDIVERT options DUMMYNET options TCP_DROP_SYNFIN
Com as opções acima é criado um firewall aberto, ou seja, toda máquina que tem ele como gateway vai conectar, a não ser que seja bloqueado o acesso daquele IP no rc.local (veremos isto mais tarde). Se você trocar a opção IPFIREWALL_DEFAULT_TO_ACCEPT por IPFIREWALL_DEFAULT_TO_REJECT, o firewall ficará fechado, bloqueando o acesso de qualquer PC, a não ser que regras liberem a acesso para aquele IP.
Fica então a critério do administrador criar um firewall aberto ou fechado. Minha sugestão é criar ele aberto e colocar uma regra no rc.local bloqueando o acesso para IPs não permitidos (veremos mais tarde).
Salve o arquivo:
digite ESC, selecione a opção leave editor e após save changes.
Agora digite:
$ config SERVER
Ele irá retornar uma mensagem parecida com esta:
Don't forget to do a ``make depend''
Kernel build directory is ../../compile/SERVER
Traduzindo seria: não esqueça do make depend e a configuração do kernel está em ../../compile/SERVER.
Então vamos lá:
$ cd ../../compile/SERVER
$ make depend
$ make
$ make install
Se em nenhum destes passos ocorreu algum erro, seu kernel está compilado e deverá funcionar, então reinicie o seu servidor.
$ reboot
valeuuuuuuu... agora sim, aprendendo essa parte de firewall vou poder migrar alguns servidores da empresa pra freebsd.