Shorewall, ограничиваем доступ детям

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

Для настройки Shorewall вам понадобится изменить всего 5 файлов:

1) /etc/shorewall/shorewall.conf

..
STARTUP_ENABLED=Yes
..

2) /etc/shorewall/zones

..
fw      firewall
net     ipv4

3) /etc/shorewall/interfaces

..
net     enp3s0          tcpflags

Вместо enp3s0 укажите название своего сетевого интерфейса. Можно посмотреть из вывода ifconfig.

4) /etc/shorewall/policy

..
all all ACCEPT

5) /etc/shorewall/rules

..
 # сайт Детское радио
ACCEPT       $FW       net:www.deti.fm        tcp     80    -   -   -   tanya

 # Детское радио online трансляция http://deti.fm/online.html
ACCEPT       $FW       net:79.143.70.114      tcp     8000  -   -   -   tanya

 # Тренажeр клавиатуры (с внешней библиотекой AJAX для работы сайта)
ACCEPT       $FW       net:www.klava.org      tcp     80    -   -   -   tanya
ACCEPT       $FW       net:www.googleapis.com tcp     80    -   -   -   tanya

#запретим все остальные запросы
REJECT       $FW       net                    tcp     -     -   -   -   tanya

Для примера открыт доступ к сайту “Детское радио”, on-line вещание радиостанции и к сайту тренажера клавиатуры. Вместо ‘tanya’ впишите логин вашего ребёнка.

Запустите файрвол:

/sbin/shorewall start

Если всё прошло успешно и трафик фильтруется, то можно добавить файрвол в автозагрузку. Если вы используете NetworkManager, отредактируйте два файла:

1) /etc/NetworkManager/dispatcher.d/ip-up.sh

...
if [[ ${NM_ACTION} == "up" ]]
then
    /sbin/shorewall start
...

2) /etc/NetworkManager/dispatcher.d/ip-down.sh

...
if [[ ${NM_ACTION} == "down" ]]
then
    /sbin/shorewall stop
...

В файле /etc/shorewall/rules вы можете добавлять другие ресурсы, указывая сайты, IP, порты и т.д. Добавив настройки файрвола на другие машины вашей локальной сети, ребёнок будет иметь везде единые права доступа в интернет.

P.S. Просто в автозагрузку shorewall добавлять опрометчиво. В случае пропадания сети файрвол может не подняться.

Класс. А как узнать порты?

Если сервисы стандартные, то воспользовавшись Списком портов TCP и UDP либо установить одну из утилит мониторинга активности сетевых соединений, например net-analyzer/iptraf-ng