7.2. Usando o IPTables

O primeiro passo para usar o serviço IPTables é iniciá-lo. Isto pode ser feito com o comando:

service iptables start

AtençãoAtenção
 

Os serviços IP6Tables devem ser desligados para usar o serviço IPTables, com os seguintes comandos:

service ip6tables stop
chkconfig ip6tables off

Para fazer com que o IPTables inicie por default sempre que a máquina for iniciada, você deve alterar o status do nível de execução (runlevel) do serviço, usando chkconfig.

chkconfig --level 345 iptables on

A sintaxe do IPTables é separada em camadas. A camada principal é a corrente (chain). Uma corrente especifica o estado no qual um pacote será manipulado. O uso é o seguinte:

iptables -A chain -j target

O -A acrescenta uma regra no fim de um conjunto de regras existentes. A chain é o nome da corrente para uma regra. As três correntes embutidas do IPTables (ou seja, as correntes que afetam todos os pacotes que trafegam pela rede) são INPUT, OUTPUT e FORWARD. Estas correntes são permanentes e não podem ser deletadas.

ImportanteImportante
 

Ao criar um conjunto de regras do IPTables, é crucial lembrar que a ordem é importante. Por exemplo: uma corrente especifica que todos os pacotes da sub-rede local 192.168.100.0/24 sejam derrubados. E então a corrente é adicionada (-A), o que permite pacotes do 192.168.100.13 (que está dentro da sub-rede restrita derrubada); então a regra adicionada é ignorada. Você deve definir uma regra para permitir 192.168.100.13 primeiro, e então definir uma regra para derrubar na sub-rede.

Para inserir uma regra arbitrariamente em um conjunto de regras existentes, use -I, seguido pelo conjunto no qual deseja inserir a regra e pelo número da regra (1,2,3,...,n) onde você deseja que a regra resida. Por exemplo:

iptables -I INPUT 1 -i lo -p all -j ACCEPT

A regra é inserida como a primeira no conjunto INPUT para permitir o tráfego do dispositivo loopback local.

7.2.1. Normas Básicas de Firewall

Algumas normas básicas estabelecidas desde o começo podem auxiliar na construção de regras detalhadas definidas pelo usuário. O IPTables usa normas (-P) para criar regras default. Administradores com foco na segurança geralmente escolhem derrubar todos os pacotes como uma norma e só permitem pacotes específicos, analisando-os caso-a-caso. As seguintes regras bloqueiam todos os pacotes entrando e saindo de uma porta de comunicação (gateway) de rede:

iptables -P INPUT DROP
iptables -P OUTPUT DROP

Adicionalmente, é recomendado que qualquer pacote encaminhado — tráfego de rede roteado do firewall para seu nódulo de destino — seja negado também, para restringir clientes internos de exposição inadvertida à Internet. Para fazer isso, use a seguinte regra:

iptables -P FORWARD DROP 

NotaNota
 

Há uma distinção entre as ações REJECT (rejeitar) e DROP (derrubar) um alvo quando estamos lidando com regras adicionais. REJECT um alvo nega acesso e retorna um erro conexão negada (conexão negada) para usuários que tentarem se conectar ao serviço. A DROP, como o nome sugere, derruba os pacotes sem nenhum aviso para usuários do telnet. Administradores podem usar sua própria prudência ao lidar com estes alvos; entretanto, para evitar a confusão do usuário e tentativas para continuar a conexão, a REJECT alvo é recomendada.

Após definir os cojuntos de normas, crie novas regras para a sua rede e seu requisitos de segurança em particular. As seguintes seções descrevem algumas regras que você talvez queira implementar enquanto constrói seu firewall IPTables.

7.2.2. Salvando e Restaurando Regras IPTables

Regras de firewall são válidas somente enquanto o computador estiver ligado. Se o sistema for reinicializado, as regras serão automaticamente eliminadas e restauradas. Para salvar as regras de modo que elas sejam carregadas posteriormente, use o seguinte comando:

/sbin/service iptables save

As regras são armazenadas no arquivo /etc/sysconfig/iptables e são aplicadas sempre que o serviço é iniciado, reiniciado ou quando a máquina é reinicializada.