ormorph пишет:А вот подсказки детям давать не стоит. Может сначала они и не разберутся как войти под рутом, но потом обязательно смогут.
Дети хитрые. Не исключено, что они станут ходить через анонимайзеры или vpn. Через них конечно много не наработаешь (скорость, обрывы)... А касаемо рутового доступа... Мне видится, что автор сделает обычный комп без монитора и клавиатуры, который будет мирно стоять где-нибудь в уголке и выполнять роль "няньки" в плане контроля за доступом. А доступ автору мы предоставим по SSH:22 изнутри + введём защиту от брутфорса (3 неудачных подключения и БАН на 60 сек). Автор, знающий логин и пароль сможет подключиться через Putty. Думаю, для такого варианта особые требования к защите от человеческого фактора предъявлять не стоит. Или стОит? ))
Rizado пишет:alex_q_2000, Вы не предполагаете, что язык интерфейса системы может быть не русским? У меня, кстати, долгое время испанский был.
Вместо «$(date +%a)» лучше использовать «$(date +%u)» и номер от 1 до 5.
Абсолютно верно, спасибо! Сейчас поправим...
Дополнительно приложу конфиг dnsmasq, чтобы не париться с раздачей настроек по DHCP (если автору понадобится) и открою нужные порты Samba (может быть автор захочет сделать общий диск), SSH, DNS, DHCP в iptables. Таким образом, автору потребуется доустановить openssh-server и dnsmasq (по желанию)...
Скрипт: /site-blocker.sh (вариант-1 без модуля time)
#!/bin/bash
#Параметры -----//------------------
hstart="09:00" #Начало блокировки (час)
hend="18:00" #Окончание блокировки (час)
#Пути, интерфейсы
wan="enp0s3"
lan="enp0s8"
#-----------------//----------------
#Текущий день недели в списке заблокированных дней (Пн-Пт)?
block_day="no"; for i in 1 2 3 4 5; do [[ "$i" = "$(date +%u)" ]] && block_day="yes"; done
#Включаем форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward
#Очистка iptables
iptables -F; iptables -X
iptables -t nat -F; iptables -t nat -X
iptables -t mangle -F; iptables -t mangle -X
#Всё, кроме INPUT
iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD ACCEPT
#Разрешаем lo и уже установленные соединения
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Разрешаем пинг
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#Открываем SSH:22 + защита от брутфорса (3 неудачных попытки подключения => бан атакующего на 60 сек)
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshport --set
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshport --update --seconds 60 --hitcount 4 -j DROP
#Разрешаем Samba, DHCP/DNS и SSH:22 (dnsmasq, если они будут)
iptables -A INPUT -i $lan -p tcp -m multiport --dports 22,137:139,445 -j ACCEPT
iptables -A INPUT -i $lan -p udp -m multiport --dports 137:139,445,53,67,68,1024:65535 -j ACCEPT
#С 09:00 часов утра до 18:00 часов вечера по будням (Пн-Пт) пускать с ограничениями
if [[ "$(date +%T)" > "$hstart" && "$(date +%T)" < "$hend" && "$block_day" = "yes" ]]; then
#Только Web-серфинг (блокировка VPN, Torrent и т.д.)
iptables -A FORWARD -i $lan -p udp ! --dport domain -j DROP
iptables -A FORWARD -i $lan -p tcp -m multiport ! --dports http,https -j DROP
#Список заблокированных сайтов
iptables -A FORWARD -i $lan -m string --string "vk.com" --algo bm -j REJECT
iptables -A FORWARD -i $lan -m string --string "ok.ru" --algo bm -j REJECT
iptables -A FORWARD -i $lan -m string --string "facebook.com" --algo bm -j REJECT
iptables -A FORWARD -i $lan -m string --string "mail.ru" --algo bm -j REJECT
fi;
#Секция маскардинга
iptables -A FORWARD -i $wan -o $lan -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $lan -o $wan -j ACCEPT
iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
#Сохраняем в файл и рестарт
iptables-save -c > /etc/sysconfig/iptables
systemctl restart iptables.service
exit 0;
Скрипт: /site-blocker.sh (вариант-2 с модулем time)
#!/bin/bash
#Интерфейсы
wan="enp0s3"
lan="enp0s8"
#-----------------//----------------
#Включаем форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward
#Очистка iptables
iptables -F; iptables -X
iptables -t nat -F; iptables -t nat -X
iptables -t mangle -F; iptables -t mangle -X
#Всё, кроме INPUT
iptables -P INPUT DROP; iptables -P OUTPUT ACCEPT; iptables -P FORWARD ACCEPT
#Разрешаем lo и уже установленные соединения
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Разрешаем пинг
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#Открываем SSH:22 + защита от брутфорса (3 неудачных попытки подключения => бан атакующего на 60 сек)
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshport --set
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshport --update --seconds 60 --hitcount 4 -j DROP
#Разрешаем Samba, DHCP/DNS, SSH (dnsmasq и openssh-server, если они будут)
iptables -A INPUT -i $lan -p tcp -m multiport --dports 22,137:139,445 -j ACCEPT
iptables -A INPUT -i $lan -p udp -m multiport --dports 137:139,445,53,67,68,1024:65535 -j ACCEPT
#Блокировка сайтов по времени и дням (Пн-Пт)
block="-m time --weekdays 1,2,3,4,5 --timestart 09:00 --timestop 18:00 -j REJECT"
#Только Web-серфинг (блокировка VPN, Torrent и т.д.)
iptables -A FORWARD -i $lan -p udp ! --dport domain $block
iptables -A FORWARD -i $lan -p tcp -m multiport ! --dports http,https $block
#Список заблокированных сайтов
iptables -A FORWARD -i $lan -m string --string "vk.com" --algo bm $block
iptables -A FORWARD -i $lan -m string --string "ok.ru" --algo bm $block
iptables -A FORWARD -i $lan -m string --string "facebook.com" --algo bm $block
#iptables -A FORWARD -i $lan -m string --string "mail.ru" --algo bm $block
#iptables -A FORWARD -i $lan -m string --string "yandex.ru" --algo bm $block
#Секция маскардинга
iptables -A FORWARD -i $wan -o $lan -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $lan -o $wan -j ACCEPT
iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
#Сохраняем в файл и рестарт
iptables-save -c > /etc/sysconfig/iptables
systemctl restart iptables.service
exit 0;
Раздача настроек локальным клиентам (установить dnsmasq)...
Конфиг: /etc/dnsmasq.conf
#Авторитетный DHCP сервер
dhcp-authoritative
#Слушать на интерфейсах ($lan=enp0s8=192.168.1.1+lo)
interface=enp0s8
listen-address=127.0.0.1,192.168.1.1
#Не использовать resolv.conf
no-resolv
#DNS для раздачи
server=8.8.8.8
server=8.8.4.4
#Диапазон выдачи IP-адресов (аренда 72 часа)
dhcp-range=192.168.1.20,192.168.1.250,72h
#Отдать параметры клиенту
dhcp-option=option:router,192.168.1.1
dhcp-option=option:dns-server,192.168.1.1
#Отключить DHCP_INFO-PROXY для Windows 7+
dhcp-option=252,"\n"
#Настройки кеша DNS
cache-size=10000
no-negcache
*** Добавлено: 31.12.2020 18:01:30 ***
Скрипт: /site-blocker.sh
+ добавлена секция "Только Web-серфинг (блокировка VPN, Torrent, Icq, Skype, Jabber и т.д.)". Разрешены только http и https (+dns)
+ добавлен /site-blocker.sh (вариант-2 с использованием модуля time). SSH:22 по умолчанию
+ /site-blocker.sh (вариант-1 без модуля time) введено отслеживание до минут (формат 00:00). Крон будет дёргать этот скрипт только 2 раза: вначале и в конце блокировки. Правильный интервал 00:00-23:59. Вариант скрипта с использованием модуля time (2) может работать некорректно (--kerneltz) с обновлением ядер.
*** Добавлено: 01.01.2021 19:49:50 ***
Осталось как-то разобраться с разрывом уже установленного соединения (ESTABLISHED). Сайты блокируются, однако если они ранее были открыты, а правила iptables сменились на блокирующие, они продолжают работать до закрытия. Для чистоты эксперимента нужно бы сделать стремительный отлуп...
*** Добавлено: 03.01.2021 00:19:11 ***
Небольшой гуй по теме...
Требуются привилегии root и 2 сетевых карты (WAN/LAN).
Требуются пакеты iptables, ipset, bind-utils.
Создаёт:
---
/root/.siteblocker/blacklist - блэклист сайтов
/root/.siteblocker/settings.ini - настройки программы
/usr/local/bin/site-blocker.sh - основной скрипт с правилами iptables
/var/spool/cron/root или /var/spool/cron/crontabs/root - план запуска основного скрипта iptables через crond
/etc/systemd/system/site-blocker.service - сервис автозапуска после перезагрузки (не в курсе, есть ли эта папка в Debian, в Mageia есть)
Кнопка "Рестарт iptables" - применяет выбранный план блокировки сайтов и создаёт вышеуказанные файлы
Кнопка "Сброс" - корректно удаляет основной скрипт, план запуска, сервис автозапуска и возвращает iptables в дефолт
В список можно дополнять свои сайты, удалять, выгружать и загружать из файла (ПКМ).
Здесь...
v1.3 (upd: 04.01.2021)
+сохранение/загрузка blacklist
+оперативное применение списка ipset
+отключение протокола IPv6
+проверка ping перед рестартом iptables
v1.1 (upd: 03.01.2021)
+IPSET - основной метод блокировки (1 сайт = множество ip)
+STRING - дополнительный метод словарной фильтрации
+окружение в плане запуска cron: /var/spool/cron/root
+отлуп и фильтрация сайтов заметно улучшились
*** Добавлено: 05.01.2021 21:15:09 ***
Rizado пишет:Спасибо, но ещё рановато. Успеем отметить.
Здравствуйте, Rizado. В Новый Год особо заняться было нечем и... Что-то я здесь приходил-колупал-ковырял; в результате сделал вот это: MgaRemix [флешки, технология сборки] Теперь не знаю, может быть то, что выше уже не нужно? Это я к тому, что вроде как дубляж какой-то вышел... Или нет?
MSI H81M-ECO, Intel Core i3-4130T, Intel HD Graphics 4400 | MgaRemix-9 Budgie 10.8.1 x86_64 + Windows 10