DHCPD кидает в логи в /var/log/messages, но можно перенаправить, для этого надо прописать ключ в команднуб строку при старте сервиса (в федоре есть настроечный файл с переменной которая в команднуб строку подставляется, в других система - не знаю). Этот лог можно парсить скриптом и записывать куда-нибудь время запроса. Проблема в том, что так не получишь время время отключения. Единственное, что приходит в голову - поставить маленькие значения default-lease-time и max-lease-time, тогда время отключения будет устанавливаться с точностью до этих значений. Правда, не знаю, дейтвуют ли эти значения на статичные адреса - у меня (в домашней сети) в /var/lib/dhcpd/dhcpd.leases только динамические адреса.
Плюсы - ничего с пользовательскими машинами делать не надо.
Минус - небольшая точность фиксации отключения машины (хотя, есть предположение, что при отключении она что-то сообщает DHCPD) и возрастание нагрузки на сервер, что может иметь значение, если много машин и слабый сервер.
Вариант №2: мелкая программулька, регистрируемая как сервис, которая при старте и остановке кидает собщение на сервер (не знаю, в какой мастдай останавливает службы и сеть). Или записывать куда-то время останова и сливать его при следующем старте. В качестве серверной части прокатит простейший CGI-скрипт. Возможность использования зависит от уровня квалификации пользователей и того, является ли установка ПО привилегией администраторов, а то могут снести программульку в процессе выведения вирусов как подозрительную. Неплохо будет, если эта штука будет заодно делать что-то полезное пользователю - тогда он будет её беречь и лелеять.