Как изолировать NAS от интернета, но сохранить доступ к LAN в системе Linux?

Вопрос или проблема

У меня есть сетевое хранилище (NAS), которое подключается к двум различным Wi-Fi сетям в зависимости от его местоположения (оно не всегда находится на одном и том же месте). NAS реализовано с использованием компьютера Raspberry Pi. Обычно эти Wi-Fi сети предоставляют доступ в интернет для подключенных к ним компьютеров. Я не могу изменить настройки Wi-Fi сетей. По соображениям безопасности я хотел бы настроить NAS так, чтобы

  1. оно полностью отвергало любое интернет-соединение в обоих направлениях, вне зависимости от того, к какой Wi-Fi сети оно подключено, и
  2. оставалось доступным из LAN Wi-Fi.

Идея заключается в том, чтобы только компьютеры, непосредственно подключенные к Wi-Fi, могли получить доступ к NAS.

Возможно ли это? Как лучше всего это сделать? Я не очень хорошо разбираюсь в сетях, извините, если это что-то очевидное.

Я пробую (источник)

iptables -A INPUT -s $NETWORK_ADDRESS/$MASK -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -d $NETWORK_ADDRESS/$MASK -j ACCEPT
iptables -A OUTPUT -j DROP

Однако, это блокирует не только доступ в интернет, но и доступ по LAN.

Ответ или решение

Теория

Для изоляции сетевого хранилища (NAS) от Интернета, сохраняя доступ к нему в локальной сети (LAN), требуется понимать, как управлять сетевыми пакетами на уровне операционной системы. Основной инструмент для управления подключениями в Linux — утилита iptables. Она позволяет фильтровать и контролировать сетевые пакеты на основе различных правил.

NAS на основе Raspberry Pi имеет подключение к двум различным Wi-Fi сетям, которые обеспечивают доступ в Интернет. Чтобы защитить устройство от внешних угроз, необходимо разрывать любое интернет-соединение, при этом гарантируя, что устройство останется доступным в локальных сетях Wi-Fi.

Примеры

Ваш подход с использованием iptables, указанный в вашем коде, концептуально верен, но немного неточен в реализации. Приведенные правила:

iptables -A INPUT -s $NETWORK_ADDRESS/$MASK -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -d $NETWORK_ADDRESS/$MASK -j ACCEPT
iptables -A OUTPUT -j DROP

действительно блокируют весь трафик, кроме указанного сетевого адреса. Однако, если вы неправильно определили переменные $NETWORK_ADDRESS и $MASK, устройство может решить, что LAN трафик также следует блокировать.

Нужно уточнить настройки сети и убедиться, что адрес и маска сети точно определены. Эти правила работают, только если параметры определены корректно.

Применение

  1. Узнать сетевой диапазон:
    Чтобы ограничить доступ вне локальной сети, сначала найдите IP адрес и маску сети в данных Wi-Fi сетях:

    ifconfig wlan0

    Посмотрите вывод и определите inet (ваш IP) и netmask для текущей сети. Например, 192.168.1.0/24.

  2. Правильная настройка iptables:
    Задам две стратегии для настройки iptables:

    A. Использовать маску сети и шлюзы:

    # Пропуск пакетов в пределах локальной сети
    iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
    iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
    
    # Отклонение остальных входящих/исходящих пакетов
    iptables -A INPUT -j DROP
    iptables -A OUTPUT -j DROP

    B. Использовать интерфейсы:
    Если вы точно знаете, через какой интерфейс идет подключение к Wi-Fi, например, wlan0:

    # Разрешение всех подключений через специфичный интерфейс
    iptables -A INPUT -i wlan0 -j ACCEPT
    iptables -A OUTPUT -o wlan0 -j ACCEPT
    
    # Отклонение всех остальных подключений
    iptables -A INPUT -j DROP
    iptables -A OUTPUT -j DROP
  3. Проверка и сохранение правил:
    После установления правил iptables, проверьте их работу:

    iptables -L -v

    Очень важно убедиться, что ваши правила iptables загружаются автоматически при запуске системы. Для этого используйте:

    iptables-save > /etc/iptables/rules.v4

    или используйте утилиты, например, netfilter-persistent.

Дополнительные Заметки

  • Отключение IPv6: Если ваше NAS не использует IPv6, отключите его внутренняя обработка с помощью sysctl или же через модули ядра.
  • Логирование: Чтобы иметь возможность анализировать попытки доступа и отладки, вы можете добавить правила журналирования после DROP:
    iptables -A INPUT -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
    iptables -A OUTPUT -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
  • Учтите, что настройки могут потеряться после перезагрузки, если вы не сохраните их.

Применяя эти техники, вы обеспечите, что ваше NAS может безопасно функционировать в любых условиях, подключаясь только к нужным локальным сетям без риска выхода в интернет.

Оцените материал
Добавить комментарий

Капча загружается...