À primeira vista, as regras do iptables pode parecer enigmática.
Neste artigo, eu dei 25 regras de iptables práticas que você pode copiar / colar e usá-lo para as suas necessidades.
Estes exemplos atuará como modelos básicos para que você possa ajustar essas regras que atendam às suas necessidades específicas.
Para facilidade de referência, todas estas 25 regras do iptables são em formato de script shell:iptables-rules
1. Excluir regras existentes
Antes de iniciar a construção de novo conjunto de regras, você pode querer para limpar todas as regras padrão e regras existentes. Use o comando iptables nivelado como mostrado abaixo para fazer isso.
iptables -F
2. Definir Políticas Cadeia Padrão
A política de cadeia padrão é ACCEPT. Altere isso para soltar para todas as entradas, FORWARD, e as cadeias de saída como mostrado abaixo.
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
Quando você faz tanto INPUT, e política padrão da chain OUTPUT como DROP para cada necessidade de regras de firewall que você tem, você deve definir duas regras. ou seja, uma para entrada e outra para saída.
Em todos os nossos exemplos abaixo, temos duas regras para cada cenário, como já definido GOTA como política padrão para entrada e chain OUTPUT.
Se você confiar em seus usuários internos, você pode omitir a última linha acima. ou seja, não deixe cair todos os pacotes de saída por padrão. Nesse caso, para cada necessidade de regras de firewall que você tem, você só tem que definir apenas uma regra. ou seja, definir regra apenas para entrada, como a saída é aceitar para todos os pacotes.
Nota: Se você não sabe o que um meio de cadeia, você deve primeiro se familiarizar com os fundamentos do IPTables .
3. Bloquear um endereço IP específico
Antes de prosseguir irá outros exemplos, se você quiser bloquear um endereço IP específico, você deve fazer isso primeiro, como mostrado abaixo. Altere o "xxxx" no exemplo a seguir para o endereço IP específico que você gostaria de bloquear.
BLOCK_THIS_IP = "xxxx" iptables-A INPUT-s "$ BLOCK_THIS_IP"-j DROP
Isso é útil quando você encontrar algumas atividades estranhas de um endereço IP específico em seus arquivos de log, e você deseja bloquear temporariamente que endereço IP enquanto você fazer mais pesquisas.
Você também pode usar uma das seguintes variações, que bloqueia apenas o tráfego TCP na conexão eth0 para este endereço IP.
iptables-A INPUT-i eth0-s "$ BLOCK_THIS_IP"-j DROP iptables-A INPUT-i eth0-p tcp-s "$ BLOCK_THIS_IP"-j DROP
4. Permitir que todos os entrada SSH
As seguintes regras permitem que TODAS as conexões ssh de entrada na interface eth0.
iptables-A INPUT-i tcp eth0-p - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-tcp o eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
Nota : Se você gosta de entender exatamente o que todos e cada um dos argumentos significa, você deve ler como adicionar regras de firewall IPTables
5. Permitir SSH de entrada apenas de uma rede sepcific
As seguintes regras permitem conexões ssh recebidas apenas de 192.168.100.X rede.
iptables-A INPUT-i eth0-p tcp-s 192.168.100.0/24 - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-tcp o eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
No exemplo acima, ao invés de / 24, você também pode usar a máscara de sub-rede completo.ou seja, "192.168.100.0/255.255.255.0".
6. Permitir HTTP e HTTPS de entrada
As seguintes regras permitem que todo o tráfego web de entrada. ou seja, o tráfego HTTP para a porta 80.
iptables-A INPUT-i tcp eth0-p - dport 80-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-tcp o eth0-p - sport 80-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem que todas as chamadas recebidas tráfego web segura. ou seja, o tráfego HTTPS para a porta 443.
iptables-A INPUT-i tcp eth0-p - dport 443-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 443-m state - state ESTABLISHED-j ACCEPT
7. Combine várias regras em conjunto, utilizando MultiPorts
Quando você está permitindo conexões de entrada de mundo exterior a várias portas, em vez de escrever regras individuais para cada porta, você pode combiná-los usando a extensão de múltiplas como mostrado abaixo.
O exemplo a seguir permite que todos SSH de entrada, tráfego HTTP e HTTPS.
iptables-A INPUT-i eth0-p tcp-m multiport - dports 22,80,443-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-o eth0-p tcp-m multiport - Esportes 22,80,443-m state - state ESTABLISHED-j ACCEPT
8. Permitir SSH Outgoing
As seguintes regras permitem a conexão ssh saída. ou seja, quando você ssh de dentro para um servidor externo.
iptables-A OUTPUT-o eth0-p tcp - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A INPUT-i tcp eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
Por favor note que este é um pouco diferente do que a regra de entrada. ie Nós permitimos que tanto o novo estado e estabelecida com chain OUTPUT, e único estado ESTABELECIDO na chain INPUT. Para a regra de entrada, que é vice-versa.
9. Permitir SSH saída apenas para uma Rede Específico
As seguintes regras permitem a conexão ssh de saída apenas para uma rede específica. ou seja, você um ssh apenas para 192.168.100.0/24 rede pelo lado de dentro.
iptables-A OUTPUT-o eth0-p tcp-d 192.168.100.0/24 - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A INPUT-i tcp eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
10. Permitir saída HTTPS
As seguintes regras permitem o tráfego seguro de saída web. Isso é útil quando você quer permitir o tráfego de internet para seus usuários. Em servidores, essas regras também são úteis quando você quer usar o wget para baixar alguns arquivos de fora.
iptables-A OUTPUT-o eth0-p tcp - dport 443-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A INPUT-i tcp eth0-p - sport 443-m state - state ESTABLISHED-j ACCEPT
Nota: Para o tráfego HTTP web saída, adicionar duas regras adicionais, como o acima, e mudar 443-80.
11. Carregar saldo a receber o tráfego da Web
Você também pode carregar equilibrar o seu tráfego web da usando regras de firewall iptables.
Este usa o iptables extensão enésima. O seguinte exemplo de carga equilibra o tráfego HTTPS para três endereço IP diferente. Para cada pacote 3 º, é balanceamento de carga para o servidor apropriado (usando o contador 0).
iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 0-j DNAT - to-destination 192.168.1.101:443 iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 1-j DNAT - to-destination 192.168.1.102:443 iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 2-j DNAT - to-destination 192.168.1.103:443
12. Permitir Ping de fora para dentro
As seguintes regras permitem que os usuários de fora para ser capaz de executar ping seus servidores.
iptables-A INPUT-p icmp - icmp-type echo-request-j ACCEPT iptables-A OUTPUT-p icmp - icmp-type echo-reply-j ACCEPT
13. Permitir Ping de dentro para fora
As seguintes regras permitem que você pingar de dentro para qualquer um dos servidores externos.
iptables-A OUTPUT-p icmp - icmp-type echo-request-j ACCEPT iptables-A INPUT-p icmp - icmp-type echo-reply-j ACCEPT
14. Permitir Loopback Acesso
Você deve permitir o acesso de auto-retorno completo em seus servidores. ou seja, acesso usando 127.0.0.1
iptables-A INPUT-i lo-j ACCEPT iptables-A OUTPUT-o lo-j ACCEPT
15. Permitir rede interna para a rede externa.
No servidor de firewall, onde uma placa ethernet está ligado ao externo, e outra placa de rede conectada aos servidores internos, use as seguintes regras para permitir conversa da rede interna para a rede externa.
Neste exemplo, eth1 está ligado à rede externa (internet), e eth0 está ligado à rede interna (por exemplo: 192.168.1).
iptables-A FORWARD-i eth0-o eth1-j ACCEPT
16. Permitir DNS saída
As seguintes regras permitem conexões DNS saída.
iptables-A OUTPUT-p udp-o eth0 - dport 53-j ACCEPT iptables-A udp-i eth0 INPUT-p - sport 53-j ACCEPT
17. Permitir conexões NIS
Se você estiver executando o NIS para gerenciar suas contas de usuário, você deve permitir que as conexões NIS. Mesmo quando a conexão SSH é permitido, se você não permitir que o NIS relacionado conexões ypbind, os usuários não poderão se autenticar.
As portas do NIS são dinâmicas. ou seja, quando o ypbind começa ele aloca as portas.
Primeiro faça uma rpcinfo-p, como mostrado abaixo e obter os números de porta. Neste exemplo, verificou-se através da porta 853 e 850.
rpcinfo-p | grep ypbind
Agora, permita conexão de entrada para a porta 111, e as portas que foram usadas por ypbind.
iptables-A INPUT-p tcp - dport 111-j ACCEPT iptables-A INPUT-p udp - dport 111-j ACCEPT iptables-A INPUT-p tcp - dport 853-j ACCEPT iptables-A INPUT-p udp - dport 853-j ACCEPT iptables-A INPUT-p tcp - dport 850-j ACCEPT iptables-A INPUT-p udp - dport 850-j ACCEPT
O texto acima não irá funcionar quando você reiniciar o ypbind, como ele vai ter diferentes números de porta nesse momento.
Há duas soluções para isso: 1) Usar endereço IP estático para o seu NIS, ou 2) Use algumas técnicas inteligentes shell script para pegar automaticamente o número de porta dinâmica da saída do comando "rpcinfo-p", e usá-las no acima regras de iptables.
18. Permitir Rsync de uma rede específica
As regras a seguir permite rsync apenas a partir de uma rede específica.
iptables-A INPUT-i eth0-p tcp-s 192.168.101.0/24 - dport 873-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 873-m state - state ESTABLISHED-j ACCEPT
19. Permitir apenas conexão com o MySQL a partir de uma rede específica
Se você estiver executando o MySQL, normalmente você não quer permitir a ligação directa do exterior. Na maioria dos casos, você pode ter servidor web rodando no mesmo servidor onde o banco de dados MySQL é executado.
No entanto DBA e os desenvolvedores podem precisar entrar diretamente para o MySQL a partir de seu laptop e desktop usando o cliente MySQL. Nesses casos, você pode querer permitir que sua rede interna para falar com o MySQL diretamente, como mostrado abaixo.
iptables-A INPUT-i eth0-p tcp-s 192.168.100.0/24 - dport 3306-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 3306-m state - state ESTABLISHED-j ACCEPT
20. Permitir Sendmail ou Postfix Tráfego
As seguintes regras permitem o tráfego de correio. Pode ser sendmail ou postfix.
iptables-A INPUT-i tcp eth0-p - dport 25-m state - Estado Novo, ESTABLISHED-j ACCEPT iptables-A OUTPUT-tcp o eth0-p - sport 25-m state - state ESTABLISHED-j ACCEPT
21. Permitir IMAP e IMAPS
As seguintes regras permitem o tráfego IMAP/IMAP2.
iptables-A INPUT-i tcp eth0-p - dport 143-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 143-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem o tráfego IMAPS.
iptables-A INPUT-i tcp eth0-p - dport 993-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 993-m state - state ESTABLISHED-j ACCEPT
22. Permitir POP3 e POP3S
As seguintes regras permitem o acesso POP3.
iptables-A INPUT-i tcp eth0-p - dport 110-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 110-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem o acesso POP3S.
iptables-A INPUT-i tcp eth0-p - dport 995-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 995-m state - state ESTABLISHED-j ACCEPT
23. Prevenir Ataque Dos
A seguinte regra de iptables irá ajudá-lo a evitar a negação de serviço (DoS) ataque em seu servidor web.
iptables-A INPUT-p tcp - dport 80-m limit - limit 25/minute - limit-burst 100-j ACCEPT
No exemplo acima:
- -M limit: Este usa a extensão iptables limite
- -Limite 25/minute: Isso limita apenas máximo de 25 conexão por minuto. Altere este valor com base em sua exigência específica
- -Burst-limit 100: Esse valor indica que o limite / minuto será aplicada somente depois que o número total de conexão tenham atingido o nível-limite de ruptura.
24. Port Forwarding
As seguintes vias exemplo todo o tráfego que vem da porta 442-22. Isto significa que a ligação ssh entrada pode vir tanto a porta 22 e 422.
fila-A PREROUTING iptables-t-p TCP-d 192.168.102.37 - dport 422-j DNAT - to 192.168.102.37:22
Se você fizer o acima, você também precisa permitir explicitamente conexão de entrada na porta 422.
iptables-A INPUT-i tcp eth0-p - dport 422-m state - Estado Novo, ESTABELECIDO-j ACCEPT iptables-A OUTPUT-o eth0-p tcp - sport 422-m state - state ESTABLISHED-j ACCEPT
25. Registrar pacotes descartados
Você também pode querer registrar todos os pacotes perdidos. Estas regras devem ser na parte inferior.
Primeiro, crie uma nova corrente chamada de registro.
iptables-N REGISTRO
Em seguida, verifique se todas as conexões de entrada restantes saltar para a cadeia de log como mostrado abaixo.
iptables-A INPUT-j REGISTRO
Em seguida, registrar esses pacotes, especificando um costume "log-prefix".
iptables-A limite REGISTRO-m - limite 2/min-j LOG - log-prefix "IPTables Packet Dropped:" - log-level 7
Finalmente, soltar esses pacotes.
iptables-A REGISTRO-j DROP
Todas as 25 regras do iptables acima estão em formato de script shell: iptables-rules
Nenhum comentário:
Postar um comentário