Я использую ноутбук. Я думал о поддержке в моей машине с Ubuntu. Когда введен неверный пароль, позже делается снимок, показывающий, кто пытался получить доступ.
Я искал вокруг, и единственное, что я нашел, это что-то для Mac. Можно ли написать сценарий для Ubuntu, чтобы сделать то же самое.
Если возможно, то, что такое сценарий или программное обеспечение для этого.
На основе этого сообщения на Ubuntuforum BkkBonanza.
Это - подход с помощью PAM и будет работать на все неудавшиеся попытки входа в систему. Используя SSH, виртуальный терминал или через обычный экран входа в систему, это не имеет значения, поскольку все обрабатывается PAM в конце.
Установите ffmpeg, мы собираемся использовать это в качестве командной строки способ захватить изображения веб-камеры. Обновление: ffmpeg удален, когда Вы обновляете до Ubuntu 14.04. Мы можем использовать avconv вместо ffmpeg в ниже сценария. Никакая потребность установить что-либо отдельно.
Создайте маленький сценарий где-нибудь, например. /usr/local/bin/grabpicture
со следующим содержанием:
#!/bin/bash
ts=`date +%s`
ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
exit 0 #important - has to exit with status 0
Изменитесь /dev/video0
с фактическим видеоустройством Вашей веб-камеры и выбирают путь, где картинки сохранены - я просто выбираю /tmp
. В более новой версии использования Ubuntu avconv
вместо ffmpeg
(sudo apt-get install libav-tools
).
Сделайте это исполняемым файлом, например. chmod +x /usr/local/bin/grabpicture
.
Протестируйте его, просто назвав его: /usr/local/bin/grabpicture
. Проверьте, видите ли Вы, что файлы появляются в /tmp/vid....jpg
.
Настройте PAM для вызова этого на каждой неудачной попытке.
Примечание: сделайте это тщательно - если это перестанет работать, то Вы не сможете получить доступ к своей системе снова регулярным способом.
sudo -i
) и оставьте это открытым - на всякий случай Вы завинчиваете на следующих шагах./etc/pam.d/common-auth
в Вашем любимом редакторе, например, путем выполнения gksudo gedit /etc/pam.d/common-auth
. Следует иметь в виду для следующих шагов, что порядок строк в этом файле имеет значение.Найдите строку ниже. По умолчанию существует одна строка перед той с pam_deny.so
. В моих 12,04 системах это похоже на это:
auth [success=1 default=ignore] pam_unix.so nullok_secure
В этой строке изменяются success=1
кому: success=2
чтобы иметь его пропускают наш сценарий на успехе. Это - важный шаг.
Прямо ниже там, добавьте новый для вызова фактического сценария:
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
Сохраните и закройте файл. Никакая потребность перезапустить что-либо.
Протестируйте его.
su -l username
входить в систему как другой пользователь с именем пользователя username
(изменение с фактическим, конечно). Сознательно введите неправильный пароль. Проверьте если этот результат в новое изображение.Если тесты успешно выполнились, можно зарегистрироваться из DE (Unity/KDE/...), и необходимо видеть то же при вводе неправильного пароля с экрана входа в систему.
Одним из способов, позволяющих запустить команду при вводе неправильного пароля, является использование Журнала авторизации.
Журнал авторизации
Журнал авторизации отслеживает использование систем авторизации, механизмы авторизации пользователей, которые запрашивают пользовательские пароли, такие как система Pluggable Authentication Module (PAM), команда sudo, удаленный вход в sshd и так далее. Файл журнала авторизации может быть доступ по адресу
/var/log/auth.log
. Этот журнал полезен для изучения логины пользователей и использование команды sudo.
При неудачной попытке входа в файл /var/log/auth.log
будет добавлена запись, а последняя строка будет содержать что-то вроде:
pam_unix(gdm-password:auth): authentication failure;
Если вы постоянно следите за модификацией файла и проверяете, содержит ли последняя строка ключевое слово failure с, например, grep failure
, тогда вы знаете, что только что произошла неудачная попытка входа в систему, и вы можете запустить что угодно. команда, которую вы хотите на основе этого действия.
Замените
echo "неудачный вход в систему"
в сценариях ниже на команду, которую вы хотите запустить после неудачного входа в систему.
Вы можете отслеживать последнюю строку файла /var/log/auth.log
с помощью такого скрипта:
#!/bin/bash
while true
do
sleep 1
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
Или, что еще лучше, вы можете установить inotify-tools
и использовать inotifywait
для мониторинга файла вместо сна 1
и сценарий будет выглядеть следующим образом:
#!/bin/bash
while inotifywait -q -e modify /var/log/auth.log >/dev/null
do
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
inotify-tools
можно установить с помощью следующей команды:
sudo apt install inotify-tools
Чтобы запустить это решение как системную службу, выполните следующие действия:
Скопируйте и вставьте приведенный выше код скрипта (без эха "неудачный вход в систему"
, так как я добавил эту строку только для целей отладки ) в файл в вашем домашнем каталоге и назовите его TakePicture.sh
и сохраните файл.
Сделайте файл сценария оболочки исполняемым, выполнив следующую команду в терминале:
chmod +x ~/TakePicture.sh
sudo nano /etc/systemd/system/TakePicture.service
USERNAME
на ваше имя пользователя и сохраните его, нажав Ctrl + X затем нажмите Y, затем нажмите Enter :[Unit]
Description=Take Picture
[Service]
Type=oneshot
ExecStart=/home/USERNAME/TakePicture.sh
[Install]
WantedBy=multi-user.target
sudo systemctl start TakePicture
sudo systemctl enable TakePicture
Уведомление:
Журнал авторизации будет содержать всевозможные неудачные попытки входа или аутентификации (например, GDM, SSH, аутентификация пользователя терминала, sudo и т. д.).
Если ваша цель состоит в том, чтобы просто активировать сценарий при фактическом физическом входе в систему (т.кто-то сидит перед вашим компьютером, использует вашу клавиатуру и смотрит на ваш экран), тогда вам нужно изменить приведенный выше оператор if следующим образом:
if (( $(tail -1 /var/log/auth.log | grep gdm | grep failure | wc -l) == 1))
if GDM — ваш менеджер входа в систему. Таким образом, сценарий будет запущен только в том случае, если произойдет фактический неудачный физический вход в систему.