Портал доступу в Linux

текст перекладу
Привіт, спільното!

Я вже деякий час намагаюся створити модульний і простий у налаштуванні портал для доступу до інтернету через Wi-Fi.

Нарешті, я досяг задовільного результату, використовуючи:

  • Linux
  • iptables
  • Node.js (Веб-сервер)

Що таке Captive Portal?

Captive Portal — це веб-сторінка, яка з'являється перед тим, як користувач отримає доступ до інтернету через публічну Wi-Fi мережу.

Як це працює?

Щоразу, коли пристрій підключається до мережі Wi-Fi або дротової мережі, відбувається HTTP-запит на певну адресу, як, наприклад:
На Android 5 або новіших версіях тест здійснюється через connectivitycheck.gstatic.com. Це може змінюватися в залежності від виробника чи моделі пристрою.
В деяких випадках перевірка відбувається через протокол DHCP. Наприклад, при підключенні до мережі DHCP може містити параметр dhcp-option=114, що примусово перенаправляє до captive portal.

Зауваження:

Це не блокує мережевий трафік, а лише інформує користувача, що доступний портал для доступу до інтернету.

Після запиту, на основі статусу коду, можна визначити, чи доступний інтернет. Щоб визначити captive portal, статус запиту має бути рівним 307 - Temporary Redirect. Це повідомляє пристрою, що з'єднання з інтернетом не завершене і що існує портал для доступу.

Як зробити перенаправлення?

Перенаправлення просте. Уявімо мережу з базовим IP 192.168.1.1.
Необхідно перехопити весь трафік на комп'ютері з Linux. Це можна зробити за допомогою hotspot, Ettercap або будь-якого іншого інструменту, який дозволяє налаштувати пристрій як шлюз або виконувати атаки типу Man-in-the-Middle (MitM).

Погнали: Налаштування iptables

Щоб перенаправити весь трафік з мережі 192.168.1.0/24, використовуючи протокол TCP на порт 80 до машини 192.168.1.1:80, використовуйте такий команду:

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to 192.168.1.1:80

Примітка:

  • Пам'ятайте, що порт 80 або 8080 використовується протоколом HTTP.
  • Правила в iptables виконуються в тому порядку, в якому вони були створені, тому перші правила мають пріоритет.

Щоб додати порт 443 (HTTPS):

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 443 -j DNAT --to 192.168.1.1:443

Хоча перший запит зазвичай є HTTP, це може змінюватися між пристроями.

Блокування всього трафіку:

Щоб заблокувати весь трафік одразу, можна використати:

iptables -t nat -A PREROUTING -j DNAT --to 192.168.1.1

Щоб переглянути всі створені правила:

iptables -t nat -L

Веб-сервер з Node.js

Використання Node.js як веб-сервера для captive portal має кілька переваг, таких як:

  • Використання сучасних фреймворків.
  • Портали з адаптивними та сучасними макетами.
  • Інтеграція з базою даних для перевірки.
  • Кращий моніторинг метрик (час доступу, наприклад).

Приклад реалізації:

Можна створити маршрут у додатку для надання доступу користувачеві після входу.

Команда для надання доступу певному IP, наприклад 192.168.1.130, буде така:

iptables -t nat -I PREROUTING 1 -s 192.168.1.130 -j ACCEPT

Параметр -I вставляє правило на перший рядок PREROUTING, що забезпечує прийом усього трафіку з зазначеного IP.

Приклад на Node.js

Нижче наведена функція для надання доступу користувачу після перевірки на сервері:

const { exec } = require('child_process');
async function ReleaseUser(clientIp) {  
 try {  
 const Comando = `iptables -t nat -I PREROUTING 1 -s ${clientIp} -j ACCEPT`;  
 exec(Comando, (err, stdout, stderr) => {  
 if (err) {  
 console.error(err)  
 } else {  
 console.log(`Acesso ip tables liberado para ${clientIp}`);  
 }  
 });  

 return true;  
 } catch (err) {  
 return false  
 }  

}

Як хакери використовують фальшиві портали доступу?

Фальшиві портали доступу

Хакери створюють фальшиві портали доступу в публічних Wi-Fi мережах.
текст перекладу
При підключенні користувачі перенаправляються на фальшиву сторінку входу, яка збирає інформацію, таку як:

  • Облікові дані соціальних мереж.
  • Адреси електронної пошти та паролі.
  • Платіжні дані, якщо запитуються.

Атаки Man-in-the-Middle (MitM)

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

Як захиститися від шкідливих порталів доступу?

Перевірте мережу:

Переконайтеся, що ви підключені до правильної Wi-Fi мережі (перевірте її назву у закладі).

Мережі з загальними назвами або підозрілою орфографією можуть бути шахрайськими.

Увімкніть HTTPS

Переконайтеся, що URL порталу починається з “https://” і відображає дійсний сертифікат.

Уникайте введення чутливої інформації

Не вводьте банківські дані чи важливу інформацію на порталах доступу.

Використовуйте VPN

VPN шифрує ваш трафік, захищаючи його від атак Man-in-the-Middle.

Будьте обережні з незвичними запитами

Портали, що просять надмірну кількість інформації, наприклад, номери кредитних карток, слід уникати.

Перекладено з: Linux Captive Portal

Leave a Reply

Your email address will not be published. Required fields are marked *