Правила Iptables в зависимости от сети, подключенной к

333
Nisalon

Я боролся за то, что я хотел бы поставить на место. Я использую свой ноутбук Ubuntu 18.04 на работе и дома.

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

Я действительно не уверен, как справиться с этой проблемой, так как я не знаю, как определить тот факт, что я нахожусь дома непосредственно в правиле iptables. Я думал о попытке запустить скрипт при подключении к сети, пинговать удаленный сервер, чтобы получить мой публичный IP-адрес, а затем сбросить iptables / установить новые правила. Мне не нравится это решение, потому что оно не чистое и что у меня могут быть открыты некоторые порты на несколько секунд (сразу после подключения / до получения внешнего IP-адреса), что мне не нравится

У вас есть идеи о том, как я могу справиться с этим?

Спасибо

1

1 ответ на вопрос

0

Вы можете идентифицировать «быть дома» по вашему сетевому адресу и сделать:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -j DROP 

Где вы обменяете 192.168.0.0/24 с адресом вашей локальной сети дома. Это все равно откроет порт, когда вы находитесь в сети с тем же сетевым адресом и подсетью, что и ваша домашняя сеть, хотя вы должны выбрать тот, который не очень распространен.

Но это было только для того, чтобы ответить на ваш вопрос о том, как определить «дом». Это не правильный и не безопасный метод, на который вы должны полагаться при защите SSH-сервера (подумайте об IP-спуфинге). Лучше следовать проверенным рекомендациям по безопасности, например, 2FA, изменение общих портов, использование аутентификации по ключу, отключение корневых входов, блокировка неудачных попыток и т. Д.

Смотрите это: https://blog.devolutions.net/2017/04/10-steps-to-secure-open-ssh

Подход, который вы предлагаете, будет работать намного лучше с IPv6. Это все еще не полностью надежно, но в сочетании с надлежащей защитой сервера ssh это было бы весьма разумно. Идентификация трафика локального хоста по IP-адресу, вероятно, не лучший способ сделать это. Вместо этого я бы начал с правила, говорящего `-A INPUT -i lo -j ACCEPT`. kasperd 5 лет назад 0
Это именно то, что я сказал, это плохой способ сделать это и абсолютно небезопасно, я просто ответил на вопрос, а затем дал свои 2 цента, что будет лучше. Спасибо за отрицание, хотя. 5 лет назад 0