Я планирую собрать Raspberry Pi, служащий только одной цели.
- Открыт только один порт.
- Каждый должен иметь возможность подключиться к этому порту.
- Приложение, прослушивающее этот порт, не имеет прав root.
- Он не маршрутизирует. То есть нет других ПК, доступных через этот Raspberry Pi.
- Нет исходящих соединений. То есть Raspberry Pi не будет активно подключаться к другому ПК
- Я проведу сканирование портов, чтобы убедиться, что других открытых портов нет.
Итак, нужен ли мне брандмауэр, работающий на этом устройстве?
решение1
Ну, я бы все равно настроил (конечно, существующий) брандмауэр Netfilter — если вы находитесь в публичной сети.
А именно, я бы заблокировал любые другие типы трафика, такие как ICMP и т. д. Более того, большинство сканеров портов/систем определяют типы систем по всем видам сообщений об ошибках («порт недоступен») и т. д., поэтому вы определенно уменьшаете поверхность атаки; ваша цель — слить как можно меньше информации о вашей системе.
Более того, ICMP-ответы ("ping") будут возвращаться, если вы их активно не блокируете. И я думаю, что вы тоже этого не хотите (по крайней мере, я бы хотел).
решение2
Работу брандмауэра выполняет netfilter/iptables на Linux.
Таким образом, брандмауэр просто приводит к тому, что конфигурация iptables отбрасывает все входящие TCP-соединения. (И, возможно, блокирует исходящие соединения.)
Я бы лично не создавал такую конфигурацию брандмауэра. Это не обязательно, если вы знаете, что у вас запущено только одно серверное приложение.
Бегать
netstat -ltw
чтобы увидеть, есть ли у вас только одно приложение, прослушивающее tcp-соединения. Возможно, есть некоторые предустановленные серверные приложения, которые вы хотите исключить.
-l means listen
-t means tcp
-w means raw (will show the ping server)
Вам также следует проверить свой IP-адрес привязки. Возможно, вы захотите принимать только клиентов в той же локальной сети и игнорировать клиентов из интернета (да, интернета).