Shorewall é uma ferramenta que ajuda a configurar o IPTABLES, com ele você cria regras facilmente e facilita a gerencia do seu firewall
Primeiro vamos instalar (debian e derivados)
#apt-get install shorewall
depois de instalar, vai ser criado o diretorio /etc/shorewall em seu sistema, mas os arquivos de configuração ainda não estão la..
para copiar os arquivos padrões:
#cp /usr/share/doc/shorewall/examples/two-interfaces/* /etc/shorewall/
no comando acima , estamos copiado os arquivos de configuração de exemplo para um servidor com duas internfaces (normalmente rede local e internet, como um gateway, se esse não for seu caso, procure o caso mais parecido em /usr/share/doc/shorewall/examples/)
Começando as configurações:
Primeiro vamos editar o arquivo interfaces, para definir qual interface é responsavel pela rede local e qual é responsavel pela internet:
vamos editar o arquivo /etc/shorewall/interfaces:
net ppp0 detect dhcp,tcpflags,nosmurfs,routefilter,logmartians
loc eth0 detect tcpflags,nosmurfs,routefilter,logmartians
no exemplo estamos dizendo que a rede da INTERNET esta ligada na placa de rede ppp0 (no caso um link 3G) e a rede local esta ligada na placa de rede eth0, as demais opções são filtros adotados para cada interfaces, para mais informações desses filtros use man shorewall-interfaces
com nosso arquivo de interfaces pronto, vamos configurar as zonas:
edite o arquivo /etc/shorewall/zones
fw firewall
net ipv4
loc ipv4
no exemplo estamos dizendo que a interface net e a interface loc estão usando ipv4, a zona firewall esta definindo a propria maquina.
configurando as politicas padrões:
Essas politicas, serão a ação tomada por padrão caso não tenha uma regra especifica para a determinada ação, se você tem intimidade com o IPTABLES ela faz o mesmo papel das cadeias (CHAINS).
edite o arquivo /etc/shorewall/policy
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
loc net DROP info
loc fw REJECT info
loc all DROP info
net fw DROP info
net loc DROP info
net all DROP info
fw loc ACCEPT
fw net ACCEPT
fw all ACCEPT info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
O arquivo segue o padrão: origem , destino , ação a ser tomada.
exemplo:
a linha:
loc net DROP info
diz que os pacotes originados na interface loc (rede local) com destino net (internet) vão ser bloqueados e as informações sobre esse pacote serão logadas no formato info ( /var/log/messages )
Finalmente vamos configurar as regras
as regras são responsaveis pelas ações a serem tomadas
edite o arquivo /etc/shorewall/rules
#ACTION SOURCE DEST PROTO DEST(port) SOURCE(port)
esse é o padrão que o arquivo obedece, vamos a alguns exemplos para ficar mais facil de entender:
ACCEPT $FW loc icmp
#pacotes originados no firewall com destino a rede local o qual usam o protocolo ICMP (ping) serão aceitos
ACCEPT loc net tcp 22
#todos os pacotes originados na rede local com destino a internet usando o protocolo TCP na porta 22 serão aceitos
ACCEPT net fw tcp 80
#todos os pacotes originados na interface net (internet) com destino o proprio firewall usando o protocolo tcp na porta 80 serão aceitos
DROP net fw tcp 22
#todos os pacotes originados na interface net (internet) com destino o proprio firewall usando TCP com destino a porta 22 serão bloqueados
Proto! nosso firewall esta configurado, personalize as regras conforme sua necessidade.
depois disso podemos verificar as configurações do shorewall usando o comando:
#shorewall check
se tudo estiver OK, voçê pode iniciar o shorewall usando o comando:
#shorewall start
para segurança, por padrão o debian não deixa você iniciar o shorewall sem que isso seja definido dentro do arquivo /etc/default/shorewall
apenas altere a opção startup=0 para startup=1
Você pode obter mais informações em www.shorewall.net , a documentação esta em ingles mas é bem clara e simples.