Я хочу ограничить порт 80, чтобы его мог использовать только один пользователь. Я хочу сделать это с помощью iptables. Я не нашел никакой документации о том, как это сделать.Как ограничить порт 80 только одним пользователем с iptables
ответ
Если вы имеете в виду «локальный пользователь с дискретной UID», то вы можете использовать модуль владельца (-m owner
) и --uid-owner #
.
Но есть некоторые проблемы здесь:
- Это работает только на исходящих пакетах.
- Некоторые пакеты не имеют владельцев.
Сам по себе они обычно не являются разрывами. Но вам нужно эффективно инвертировать условные и блокировать пакеты, не соответствующие пользователю. Я подозреваю, что это в значительной степени нарушит обработку протокола, что простая попытка сделать это не удастся.
Я бы сказал, что вывод на передний порт 80, который, как вы знаете, будет иметь ассоциацию пользователей с отдельной цепочкой, а затем фильтрует только эту цепочку пользователем. Это должно в значительной степени нарушить трафик другого пользователя, но не внутренний трафик, чтобы в целом удовлетворить ваши требования.
Я беспокоюсь только об исходящем, потому что я только хочу заблокировать запрос от его создания, а если запрос заблокирован, то как будет возникать какой-либо ответ. Не могли бы вы дать команду, которую мне нужно будет использовать? У меня нет большого опыта работы с iptables. –
Iptables имеет -m owner --uid-owner ###
матч «Спичка, если пакет был создан процессом с указанным действительным идентификатором пользователя»
Что пользователь? Вы имеете в виду IP-адрес с одним источником? –
no, локальный пользователь –