Родительский контроль посредством Linux-PAM

Родительский контроль посредством Linux-PAM

Используя pam_time модуля, мы можем установить ограничения на доступ к системе и / или к конкретным приложений в разное время pm, а также в определенные дни или по различным временным отрезкам. В зависимости от конфигурации, вы можете использовать этот модуль для запрета доступа отдельным пользователям на основе их имени, времени суток, pm недели, сервиса, на которые они претендуют и их терминалов, из которых они делают запросы.

Ubuntu = 11.10 прочитайте заметку внизу страницы :

На данный момент существует мало софта для осуществления родительского контроля в linux. И ещё меньше дающего полную свободу в настройке.Ниже приводится решение данной задачи с помощью модуля Linux-PAM.

Pluggable Authentication Module (PAM) это механизм аутентификации пользователей. В частности, мы собираемся использовать pam_time модуль для контроля над доступом юзеров к системе.

Используя pam_time модуля, мы можем установить ограничения на доступ к системе и / или к конкретным приложений в разное время pm, а также в определенные дни или по различным временным отрезкам. В зависимости от конфигурации, вы можете использовать этот модуль для запрета доступа отдельным пользователям на основе их имени, времени суток, pm недели, сервиса, на которые они претендуют и их терминалов, из которых они делают запросы.

При использовании pam_time, вы должны завершить синтаксис каждой строки (правила) в файле /etc/security/time.conf с новой строки. Вы можете прокомментировать каждую строку знаком фунта [#], и система будет игнорировать этот текст до новой строки.

Вот синтаксис правила:

services;ttys;users;times

The first field — services — is a logic list of PAM service names. The second field — tty — is a logic list of terminal names. The third field — users — is a logic list of users or a netgroup of users. The fourth field — times — indicates the applicable times. 

Вот пример типичного набора правил:

login ; * ; !bobby ; MoTuWeThFr0800-2000 login ; * ; !root ; !Al0000-2400 http ; * ; !bobby ; MoTuWeThFr0800-2000 http ; * ; !root; !Al0000-2400 

Эти правила ограничивают пользователя bobby от входа между 0800 и 2000 часов и они также ограничивают доступ в Интернет в эти часы.

Примечание: Система регистрирует ошибки с этими правилами, как syslog(3).

В Ubuntu Linux, можно назначить для ограничения компьютерного времени, чтобы предотвратить подключение одного или нескольких пользователей к системе. Со временем ограничения, можно, например, ограничить доступ к компьютеру для ваших детей (своего рода родительский контроль), или даже защитить подключение к серверу в определенные часы.

Настройка

Поймите, что вы будете делать

На протяжении этого урока мы будем использовать PAM (Pluggable Authentication Modules, английский Pluggable Authentication Modules). Это позволяет контролировать аутентификацию пользователей при подключении. Затем, мы будем использовать файлы конфигурации безопасности для определения времени входа допуска. Эти манипуляции могут выполняться на любой версии Ubuntu, и требуют лишь простой текстовый редактор (Vim, Emacs, Nano, Gedit, Kate и тп). Итак, нужно включить “Ограничения часов доступа” через модуль PAM.

Прежде всего, проследуйте в каталог /etc/pam.d/, где находятся все конфигурационные файлы:

$ Ls /etc/pam.d/ atd common-account common-session gdm login ppp sudo chfn common-auth cron gdm-autologin Other samba chsh common-cupsys gnome-screensaver password passwd su 

Если мы хотим заблокировать доступ к компьютеру, мы должны изменить службу gdm. Измените so файл у gdm и добавьте в конец файл ав строчку ниже:

account required pam_time.so 

GDM это окно логина в дистрибутивах семейства Ubuntu (Ubuntu, Edubuntu and Xubuntu). Для Kubuntu, в которой используется окружение KDE, этот сервис называется kdm, в соответствии с этим, файл будет называться также. Всё, Вы включили использование PAM для контроля над временем доступа к системе.

Если у Вас сервер, то скорее всего GUI Вы не используете. Соответственно GDM / KDM не установлен и доступ не будет заблокирован. Для предотвращения доступа к консоли, необходимо изменить логин и того же файла, и добавить те же строки кода, которые названы выше. Это действие также распространяется на людей, которые используют GUI и хотят, чтобы блокировать доступ к экрану входа и терминалу.

Настройка времени доступа.

Теперь, когда служба PAM включена, нам остаётся только настроить время доступа к системе. Откройте каталог /etc/security. Здесь находятся несколько конфигурационных файлов:

$ Ls /etc/security/ access.conf namespace.conf pam_env.conf group.conf namespace.init time.conf limits.conf opasswd time.conf.bak 

Отредактируете файл time.conf. Чтобы настроить доступ, скопируйте и вставьте следующий код в конец файла:

*;*;user;scheduler 

Вместо user введите логин того пользователя, которого нужно ограничить в доступе

Если вы хотите заблокировать несколько пользователей, введите их логины строку, разделеляя их этим символом |. Например, если я хочу заблокировать доступы у Patrick, John and Emily, то синтаксис будет такой:

*;*;Patrick|jean|emilie;scheduler 

Если вы хотите, чтобы заблокировать доступ к системе для всех пользователей, кроме определенных, используете символ !. Например, если я хочу запретить доступ к компьютеру для всех пользователей, кроме Nicolas и Xavie, синтаксис такой:

Nicolas *;*;!|xavier;scheduler 

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

Mo : Monday Fr : Friday Wd : Sa/Su Tu : Tuesday Sa : Saturday wk : Mo/Tu/We/Th/Fr We : Wenesday Su : Sunday Th : Thursday Al : All Days 

Будьте внимательны и не путайте сокращений Wk и Wd!

Затем мы указываем сроки. Они должны быть отображены в 24 часовом формате, состоящим из 4 цифр. Например, чтобы ограничить 3:17 pm до 6:34 pm, мы пишем: 1517-1834. Чтобы разрешить Marie доступ только во вторник, с 3:17 pm до 6:34 pm, мы получим результат:

*;*;marie;Tu1517-1834 

Доступ вне этих часов будет запрещен. Что касается пользователей, то можно использовать операторы | и ! чтобы указать несколько временных зон (индикатор ! указывает, что все время входа допускается, за исключением того, которое будет показано).

Две звезды (символы) в начале строки кода. Так как вы хотите заблокировать доступ к системе, нет необходимости указывать, какие сервисы или терминалы вы хотите заблокировать. Однако, если вы хотите, чтобы предотвратить использование конкретного сервиса, просто укажите его в качестве следующего примера:

login;tty1|tty4|tty5;marie;!Wd0000-2400 

Таким образом, пользователь Marry не может подключиться к терминалу, 4 и 5 в выходные дни.

Некоторые примеры расписания ограничений

Матильда может подключаться каждый день с 1:20 pm до 3:20 pm и с 4:00 pm до 8:30 pm:

*;*;mathilde;Al1320-1520|Al1600-2030 

Stone, Frank и Florian разрешено подключаться до 2:00 pm до 6:45 pm в будние дни и 2:00 pm до 10:15 pm на выходные:

*;*;Stone|franck|florian;Wk1400-1845|Wd1400-2215 

Olive никогда не позволено в доступе. jessica может войти в среду с 1:00 pm до 4:00 pm:

*;*;olivier;!Al0000-2400 *;*;jessica;We1300-1600 

Два способа, для двух различных времени для каждого пользователя. Истечение сессии

Когда сессия истекает (превышается время, пока пользователь уже подключен), PAM может настигать пользователя. Например, в то время как mathilde заходит в систему во время позволенного времени! Для этого мы будем использовать новую программу: cron. Это приложение выполняет команды с интервалом во времени. В нашем случае, мы будем использовать команду skill-KILL-u чтобы отключить сеанс, когда сессия заканчивается. Обработка очень проста. Просто отредактируйте файл /etc/crontab . Добавьте следующие строки кода:

Minute Hour Day * * (s) root skill-KILL-u User 

Как и прежде, заменив поле Минута и желаемое время. Затем заполните дни с запретами или просто введите звездочку (*), чтобы указать все дни недели. Наконец, в поле учетной записи пропишите логин, который должен быть заблокирован.

Дни не отмечаем в cron таким же способом! Вот список сокращений, которые будут использоваться с этой программой:

mon : monday fri : friday tue : tuesday sat : saturday wed : wednesady sun : sunday thu : thursday * : all hours 

Несколько примеров работы cron (с примерами времени из предыдущей секции)

jessica может войти в среду с 1:00 pm до 4:00 pm

-> Disconnect: Tuesday at 4:00 p.m..

00 16 * root * wed skill-KILL-u jessica 

mathilde может входить в систему каждый день с 1:20 pm до 3:20 pm и с 4:00 pm до 8:30 pm.

-> Disconnecting: Daily, 8:30 p.m. to 3:20 p.m. ET.

20 15 * * * root skill-KILL-u mathilde 30 20 * * * root skill-KILL-u mathilde 

Stone, Frank and Florian разрешено входить до 2:00 pm до 6:45 pm в будние дни и 2:00 pm до 10:15 pm на выходные

-> Disconnect (1): Monday, Tuesday, Wednesday, Thursday and Friday, at 18:45. -> Disconnect (2): Saturday and Sunday at 10:15 p.m..

45 18 * * mon,tue,wed,thu,fri root skill -KILL -u stone && skill -KILL -u franck && skill -KILL -u florian 15 22 * * sat,sun root skill -KILL -u stone && skill -KILL -u franck && skill -KILL -u florian 

Команда skill-KILL-u отключает пользователя с графическим интерфейсом, а также консоль. Вполне пригодно для администраторов сервера. Однако, эта команда является немедленной и отключение будет производиться без предварительного уведомления.

Можно предупредить пользователей командой wall запущенной cron за несколько минут до конца срока, которая будет отображаться в терминалах всех пользователей.

40 18 * * Mon,Tue,wed,thu,fri root echo "end of session in 5 minutes" | wall 

Для уведомления пользователей с GUI можно использовать wall с коммандой notify-send в пакете libnotify-bin Родительский контроль посредством Linux-PAMРодительский контроль посредством Linux-PAM

40 18 * * Mon,Tue,wed,thu,fri stone DISPLAY=:0 notify-send "end of session in 5 minutes" 

Для пользователей Ubuntu 11.10

IРяд пользователей испытывают проблемы с Pam. Причина проста, Ubuntu 11.10 Не поддерживает более GDM теперь используется lightGDM. Проблема начинается с расположения директивы account required pam_time.so думается, что она тут /etc/pam.d/lightdm или тут /etc/pam.d/lightdm-autologin

Все крутится вокруг двух лог-файлов LightGdm:

    • /var/log/lightdm/lightdm.log

  • /var/log/lightdm/x-0.log

 

Или запустите LightGdm в debug mode :

LightDM –debug

Или сообщите о проблеме:

ubuntu-bug lightdm

Я сообщил о баге тут. Ждем починки.

Примечание переводчика:

Статья является переводом 2ого комментария отсюда. Сообщайте об ошибках перевода в комментариях или через форму контакта.

По части бага описанного в конце статьи. Судя по багрепорту всё уже работает.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *