Назад | Перейти на главную страницу

Iptables: блокировка исходящего трафика, кроме определенных IP-адресов.

Используя iptables, мне нужно заблокировать весь исходящий трафик на моем сервере, кроме:

Кто-нибудь может показать мне подходящий свод правил?

Спасибо.

iptables -I OUTPUT -d <remote_ip> -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -s <remote_ip> -p tcp --sport 22 -j ACCEPT
iptables -I OUTPUT -d <remote_ip> -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s <remote_ip> -p tcp --sport 443 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

Вам нужно будет ввести первые 4 правила для каждого IP-адреса. Однако будьте осторожны, потому что вам нужно будет войти в систему через консоль на этой машине; весь другой доступ к нему будет заблокирован.

Теперь я понимаю контекст вашего вопроса, попробуйте:

iptables -P OUTPUT DROP
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 8.8.8.8 --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -s 8.8.8.8 --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 443 -j ACCEPT

И так далее. Это установит политику по умолчанию на DROP, а затем разрешит доступ только к IP-адресам (или диапазонам). Вторая строка разрешает связанный трафик (например, исходящие пакеты для текущего сеанса SSH), третий и четвертый примеры - для ваших запросов DNS.

Не забывайте, что вам понадобится правило INPUT, подобное строке 2.

Вышеупомянутые сообщения будут блокировать весь исходящий трафик, кроме SSH и HTTPS, но они не будут соответствовать указанной выше (в комментариях) цели:

Я хочу, чтобы пользователи, входящие в систему через SSH, не могли отправлять данные с этого компьютера.

Примите во внимание следующее: если бы у меня был SSH-доступ к вашему ящику, я мог бы просто загрузить любые данные в ненадежное место с помощью SSH-туннеля и пройти через одно из мест назначения, для которого вы разрешаете исходящий трафик. Таким образом, я не думаю, что проблема может быть решена только правилами iptable на вашем хосте, содержащими конфиденциальные данные, если вы хотите, чтобы конфиденциальные данные никоим образом не копировались за пределы вашей сети.