Я хотел бы заблокировать каждый порт, кроме 80, 443, 1005, для определенного пользователя (владельца) с помощью iptables.
Какую команду мне использовать?
Вы можете использовать совпадение «хозяин». Например:
iptables -A OUTPUT -o eth0 -m owner --uid-owner nikesh -j ПРИНЯТЬ
Читать далее: http://linuxpoison.blogspot.it/2010/11/how-to-limit-network-access-by-user.html#ixzz3UOJ2glqS
В любом случае, простой поисковый запрос «iptables match owner» вернет много результатов. Пожалуйста, проведите собственное исследование, прежде чем размещать вопросы.
ОБНОВИТЬ Чтобы заблокировать каждый порт, у вас есть два разных варианта.
1. Измените цепную политику. Например, для цепочки INPUT:
iptables -P INPUT REJECT
2. Оставьте политику цепочки по умолчанию (ПРИНЯТЬ), но создайте правило последнего сопоставления, чтобы запретить весь трафик. Пример:
iptables -A INPUT -j REJECT
После этого вы можете повторно включить необходимые порты, выполнив несколько правил ACCEPT. Например:
iptables -I INPUT 1 -m owner --dport 80 --uid-owner nikesh -j ACCEPT
iptables -I INPUT 1 -m owner --dport 443 --uid-owner nikesh -j ACCEPT
iptables -I INPUT 1 -m owner --dport 1005 --uid-owner nikesh -j ACCEPT
Это только примеры. Найдите время, чтобы спланировать свой набор правил. И превыше всего, ПРОЧИТАЙТЕ СТРАНИЦУ РУКОВОДСТВА IPTABLES. Попытка настроить любую критически важную службу (в качестве сетевого брандмауэра) без чтения руководства - это верный путь к катастрофе.