Lista de permissões de IPs permitidos (entrada / saída) usando iptables

21

Eu tenho alguns intervalos de IP nos quais desejo que meu servidor possa se conectar e que os usuários se conectem. Tudo o resto deve ser bloqueado.

Como devo fazer isso com o iptables?

Meu sistema operacional é uma distribuição Linux baseada no Debian.

Frank Bannister
fonte

Respostas:

27

Eu sugiro pegar uma ferramenta de configuração de firewall, como o Firestarter , e partir daí. Aqui estão alguns princípios básicos para você, no entanto.

#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT
Zenham
fonte
3
Você sabe que pode formatar seu código em postagens de falha do servidor, usando o botão 101010. Dessa forma, seus comentários não serão exibidos como gritos. Basta selecionar (arraste o mouse sobre) o código e clique no botão 101010 acima do campo de texto.
23411 Jason Tan
2
Ahhh obrigado, eu não percebi isso. Agora eu sei :)
Zenham
11
+1 para EXISTENTE, RELACIONADO - muitas pessoas não fazem isso.
Alnitak
11
Pelo amor de Deus, defina a regra DROP padrão ÚLTIMO! Tranquei-me (e tudo mais!) De uma máquina seguindo essa ordem de operações.
Bendoh 11/08/16
11
Terrível resposta. O OP não diz nada sobre eliminar todas as conexões atuais. Agora estou bloqueado porque presumi que a resposta principal fazia sentido.
omikes 11/09/16
14
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

Isso transformará seu sistema em um sistema inexistente para computadores não permitidos.

Kevin M
fonte
7

Se você deseja permitir intervalos arbitrários em vez de sub-redes inteiras, pode usar o módulo iptables 'iprange':

iptables -P INPUT DROP

iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT

por exemplo, permitirá o tráfego proveniente de todas as máquinas com endereços entre 192.168.1.30 e 192.168.1.50.

Se você deseja permitir o tráfego de entrada e saída no mesmo intervalo de IPs, sugiro que você crie uma cadeia específica que permita esses IPs e direcione todos os destinos de entrada e saída para ele:

--define as políticas padrão a serem eliminadas no everithing:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

- crie a nova cadeia:

iptables -N allowed_ips

- se a fonte fizer parte do intervalo permitido, aceite

iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT

- caso contrário, retorne à cadeia de chamadas para continuar processando

iptables -A allowed_ips -j RETURN

- faça todo o tráfego entrar e sair da máquina passar por nossa nova cadeia

iptables -A INPUT -j allowed_ips

iptables -A OUTPUT -j allowed_ips

e é isso! é claro que você pode precisar de regras adicionais, como uma que permita todo o tráfego da / para a interface lo, etc.

Thiagodrv
fonte
1

Quando estiver satisfeito com suas regras, você provavelmente deseja salvá-las . Os comentários neste link têm várias opções sobre como fazer isso.

Um gerador de regras do iptables fácil de usar para necessidades simples é o ufw . O pacote está disponível no debian instável.

Tente também o Firestarter . Disponível em lenny.

Agora não
fonte
0

Você também pode usar o ferm, que eu também uso no ano passado, e me ajudou muito em casos como regras de firewall condicional.

giomanda
fonte