Правила Iptables залежно від мережі, до якої підключено


1

Я борюся навколо чогось, що хотів би поставити на місце. Я використовую свій ноутбук ubuntu 18.04 на роботі та вдома.

Я хотів би, щоб мої iptables припинили всі вхідні з'єднання (крім встановлених, звичайно), коли я не вдома, але це дозволило б, наприклад, отримати доступ до порту 22, коли я вдома.

Я дійсно не впевнений, як вирішити цю проблему, оскільки я не знаю, як визначити той факт, що я вдома безпосередньо за правилом iptables. Я думав про те, щоб спробувати запустити сценарій, коли підключена мережа, пінг на віддалений сервер, щоб отримати мою загальнодоступну ip адресу, а потім очистити iptables / встановити нові правила. Мені це рішення не подобається, тому що воно не є чистим і через те, що у мене можуть бути відкриті порти на кілька секунд (відразу після з'єднання / до отримання зовнішньої ip адреси), що мені не подобається

Чи маєте ви якесь уявлення про те, як я можу впоратися з цим?

Дякую

Відповіді:


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-Spoofing). Краще дотримуйтесь перевірених вказівок безпеки, наприклад, 2FA, зміна загальних портів, використання автентифікації ключів, відключення кореневих входів, блокування невдалих спроб тощо.

Дивіться це: https://blog.devolutions.net/2017/04/10-steps-to-secure-open-ssh


Запропонований вами підхід працював би набагато краще з IPv6. Це все ще не зовсім надійно, але якщо поєднатись із належним захистом ssh-сервера, це було б цілком розумно. Ідентифікація локального трафіку за IP-адресою, мабуть, не найкращий спосіб зробити це. Я б натомість почав із правила приказки -A INPUT -i lo -j ACCEPT.
kasperd

Це саме те, що я сказав, це поганий спосіб зробити це і абсолютно не безпечно, я просто відповів на питання, а потім дав свої 2 копійки на те, що було б краще. Дякую за голосування.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.