it-swarm-ru.tech

iptables: разрешить определенные ips и заблокировать все остальные соединения

Как разрешить определенные ips и заблокировать все остальные соединения в iptables?

27
David

Я написал сообщение в блоге об основных правилах Iptables для пользователей настольных компьютеров давно, и вам, вероятно, следует прочитать его и связанную с ним статью о Stateful firewall design . Но до ядра 2.6.39 (который включает в себя ipset, и вы можете использовать его для белых IP-адресов, если у вас есть более 10 в белый список (где 10 произвольно)).

Сначала обработайте состояния, которые мы знаем, что мы хотим принять или отбросить, и интерфейсы.

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

Если вы хотите разрешить только по IP, без указания состояния

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

хотя вы, вероятно, столкнетесь с проблемами при этом, и я предлагаю использовать состояние, чтобы облегчить вашу жизнь. Например, не позволяя -i lo а также -o lo, безусловно, вызовет проблемы для определенных приложений.

29
xenoterracide

Вот (непроверенный!) Пример, который блокирует только входящие соединения. Соединения через интерфейс обратной связи, поступающие из 192.168.3.x, ICMP или к порту SSH, разрешены. Все остальные соединения отклоняются.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
10
Gilles 'SO- stop being evil'

Приведенное ниже правило разрешает только ваш IP-адрес и блокирует все другие IP-адреса через порт 22 или ssh. Проверьте с новым терминалом перед отключением.

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
7
Ishtiyaque Noori

Вот полный рабочий пример.
Также заставляет работать приложения (мой комментарий о том, что keepass не запускается)

https://github.com/skironDotNet/linux-allow-only-single-ip

0
Pawel Cioch