Мне известно, что Ubuntu Server можно использовать в качестве шлюза для подключения к локальной сети через Интернет.
Затем мы используем таблицы IP или другие настройки брандмауэра, чтобы ограничить (например) доступ к определенным веб-сайтам.
Мой вопрос: может ли это ограничение быть применено к отдельным пользователям, и если да, то могут ли некоторые поделиться ссылкой или ресурсом, который я могу использовать для этой цели?
Вы можете использовать что-то вроде iptables -A OUTPUT -m owner --uid-owner 1001
для сопоставления с локальным пользователем. Но это работает только для пользователей на компьютере с брандмауэром.
По сети ваш брандмауэр должен уметь определять, какой пользователь какой. Обычный интернет-трафик имеет только адреса источника и назначения и не помечен именами пользователей, что означает, что ваш брандмауэр не может различать разных пользователей и поэтому не может блокировать разных пользователей по-разному.
Таким образом, блокирование с помощью машины легко, но блокирование пользователем является нетривиальным без какого-либо дополнительного механизма для дифференциации пользователей.
Если вы хотите заблокировать трафик веб-сайта, вы можете сделать это с помощью веб-прокси-сервера, такого как Squid. Вам необходимо настроить брандмауэр для блокировки веб-трафика, кроме трафика, проходящего через squid.
Существуют различные способы настройки пользователей для прохождения через прокси-сервер, включая «автоматическое обнаружение веб-прокси» (wpad), «proxy.pac», «прозрачное проксирование» и вручную.
HTTP поддерживает дополнительный шаг аутентификации прокси, и если вы включите его, пользователям будет предложено ввести имя пользователя и пароль при попытке доступа в Интернет. Тогда кальмар будет знать, кто есть кто.
Наконец, есть различные решения, которые подключаются к squid, которые принимают решения о том, что заблокировано, а что нет; хотя, если вы просто хотите заблокировать некоторые конкретные URL-адреса, вы можете сделать это непосредственно в squid.