Ferramentas do usuário

Ferramentas do site


compilar_o_kernel_freebsd_para_ativar_o_firewall_ipfw

Procedimento para compilar o Kernel FreeBSD e ativar o Firewall IPFW:

Para essa instalação, é pré-requisito que você tenha instalado os arquivos do Kernel presentes no diretório /usr/src. Caso não tenha instalado durante a instalação normal do sistema, você pode baixar no link http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/, escolha de acordo com a arquitetura do seu processador e a versão do SO FreeBSD que você instalou, no meu caso estou usando a versão 13.1.

Links de auxílio:
https://www.freebsd.org/doc/handbook/firewalls-ipfw.html
https://www.cyberciti.biz/faq/howto-setup-freebsd-ipfw-firewall
https://www.freebsd.org/doc/handbook/kernelconfig-building.html
https://acme.com/firewall.html
https://sempreupdate.com.br/freebsd-como-configurar-um-firewall-usando-ipfw
https://www.freebsd.org/doc/pt_BR/articles/linux-users/firewall.html

1 - Inicialmente vamos instalar em uma máquina a versão mais recente do FreeBSD (no meu caso 13.1). Durante a instalação não esquecer de marcar para instalação os arquivos do diretório src:

2 - Depois da instalação do Sistema Operacional, efetuar as configurações de rede de acordo com sua necessidade no seu /etc/rc.conf:

3 - Entrar no diretório /usr/src/sys/amd64/conf:

# cd /usr/src/sys/amd64/conf

4 - Copiar o arquivo GENERIC (kernel padrão que vem no SO) com o nome do seu novo kernel:

# cp GENERIC NOVOFW

5 - Agora que você já fez o backup do kernel principal, retire ou acrescente as linhas necessárias para habilitar ou retirar um serviço do SO:

– No nosso caso vamos recompilar o kernel para ativar o firewall IPFW:

– Edite o arquivo NOVOFW:

# ee NOVOFW

– A primeira linha que você vai editar será a linha “ident”, ela fica sempre abaixo da linha “cpu”. Esta linha você vai por o nome do seu novo Kernel, como pode ver ela mantem o nome do antigo Kernel “GENERIC”.

– Vamos alterar esta linha:

cpu             HAMMER
ident           NOVOFW 			# Linha que deve ser alterada

6 - Depois que terminar de alterar o nome do Kernel (ident), vamos acrescentar as linhas que vão ativar o firewall no SO, pode acrescentar no final do arquivo, segue abaixo um exemplo:

### IPFirewall
options    IPFIREWALL			# enables IPFW
options    IPFIREWALL_VERBOSE		# enables logging for rules with log keyword to syslogd(8)
options    IPFIREWALL_VERBOSE_LIMIT=400	# limits number of logged packets per-entry
options    IPFIREWALL_DEFAULT_TO_ACCEPT # sets default policy to pass what is not explicitly denied
options    IPFIREWALL_NAT		# enables basic in-kernel NAT support
options    LIBALIAS			# enables full in-kernel NAT support
options    IPFIREWALL_NAT64		# enables in-kernel NAT64 support
options    IPFIREWALL_NPTV6		# enables in-kernel IPv6 NPT support
options    IPFIREWALL_PMOD		# enables protocols modification module support
options    IPDIVERT			# enables NAT through natd(8)
options    IPSTEALTH
options    ROUTETABLES=10

### Packet Filter
device          pf
device          pflog
device          pfsync
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

### Bridge interfaces
device          if_bridge

### CARP
device          carp

### IPSec
device          enc

### Granularidade de Processamento
options         HZ=2000

### Tunning Apache
options         ACCEPT_FILTER_DATA
options         ACCEPT_FILTER_HTTP

– Salve o arquivo e vamos para o próximo passo:

7 - Depois de salvar o arquivo, vamos compilar nosso novo Kernel. Vamos usar o comando config:

# config novofw 

– Se tudo estiver correto, você receberá a seguinte saída:

root@frw1:/usr/src/sys/amd64/conf # config NOVOFW
Kernel build directory is ../compile/NOVOFW
Don't forget to do ``make cleandepend && make depend''

– Nesta parte você irá seguir os passos da saída:

# cd ../compile/NOVOFW
# make cleandepend && make depend

– Se tudo estiver correto você não receberá nenhuma mensagem de erro. Caso receba, volte para o Kernel que você customizou e verifique as novoas configurações. Terminando esse passo, siga para o próximo;

# make

– Se tudo estiver correto você não receberá nenhuma mensagem de erro. Caso receba, volte para o Kernel que você customizou e verifique as novoas configurações. Terminando esse passo, siga para o próximo;

# make install 

– Se tudo estiver correto você não receberá nenhuma mensagem de erro. Caso receba, volte para o Kernel que você customizou e verifique as novoas configurações, terminando esse passo, siga para o próximo;

– Terminando este último passo, vamos ativar o firewall no /etc/rc.conf e acrescentar o diretório onde ficará nosso arquivo que conterá as regras do firewall. Para que sempre que o computador for reiniciado, ele carregue as regras no firewall.

8 - Vamos editar o rc.conf e acrescentar as linhas:

# ee /etc/rc.conf
firewall_enable="YES"				## inicia o ipfw quando o computador é reiniciado
firewall_script="/usr/local/etc/ipfw.regras" 	## local onde se encontra o arquivo que conterá nossas regras de firewall (ipfw.regras)

9 - Feito isso, vamos criar nosso arquivo que conterá as regras do nosso firewall:

# touch /usr/local/etc/ipfw.regras

10 - Depois de criado, vamos acrescentar nossas regras. Por segurança qualquer regra que venha a ser criada futuramente é aconselhavel que, todas, sejam acrescentada também no arquivo. Caso o computador reinicie todas as regras são carregadas na hora do boot, se não criarmos este arquivo, quando o computador é inicializado as regras que antes estavam na memoria se perderão.

– Abaixo segue o conteúdo básico de um arquivos contendo regras do firewall

#!/bin/sh
#
# regras do firewall
#



## exemplo de criacao de variaveis

fw="/sbin/ipfw" ## substitui o comando /sbin/ipfw dentro do arquivo

#
# exemplo de utilizacao de variavel
#

## comando serve para limpar todas as regras o firewall

$fw -f flush    ## seria a mesma coisa que usar o comando /sbin/ipfw -f flush

## comando liberando todo o acesso via ssh para o firewall. Em modo stateless

$fw add 100 allow tcp from any to me 22
$fw add 101 allow tcp from me 22 to any

## exempo de outra regra que liberaria o acesso via ssh de qualquer lugar para o firewall. Em modo stateful

#$fw add 100 allow tcp from any to me keep-state

#
# Liberar icmp de todo lugar para todo lugar
#

$fw add 300 allow icmp from any to any

## comando que bloqueia tudo, exceto o que estiver liberado acima desta regra

$fw add 65500 deny all from any to any ## funciona como um firewall de politica fechada, bloqueia tudo exceto o que ja esta liberado acima desta regra

11 - Feito isso, agora é só reiniciar o computador e efetuar os testes no ipfw:

compilar_o_kernel_freebsd_para_ativar_o_firewall_ipfw.txt · Última modificação: 2024/05/25 12:02 por dhiemeson.nascimento