Управление удаленным FreeBSD-сервером с оглядкой на безопасность
Я уже давно приучил себя к мысли, что выполнять любые операции с системой, для которых не требуются привилегии администратора, необходимо под учетной записью обычного пользователя. Применительно к UNIX, это вообще стандарт де-факто, идея-фикс, канон, догма и так далее. А когда речь идет об удаленной машине, имеет смысл вовсе запретить логиниться на нее root’ом. Но права root’а иногда все-таки нужны, а FreeBSD — система консервативная, не слишком быстро реагирующая на перемены в мире, и, скажем, распространенной в среде Linux команде sudo не обучена. Зато в числе групп безопасности FreeBSD имеется группа wheel, которой делегированы права выполнять команду su (от SuperUser — команда, повышающая привилегии пользователя до уровня root). Сложив вышеназванные факты воедино, приходим к следующему решению:
Создаем нового пользователя:
Система спросит имя пользователя, логин, домашний каталог и пр. В рассматриваемом примере предположим, что мы создали пользователя webadmin.
Добавляем его в группу wheel. Для этого необходимо отредактировать строку в файле /etc/group, добавив нужного пользователя через запятую после root:
Запрещаем root’у логиниться по ssh. Для этого правим конфигурационный файл демона ssh — /etc/ssh/sshd_config. Нас интересуют 2 параметра:
PasswordAuthentication yes
Осталась самая малость. Перезапускаем демон ssh:
Готово. Самое время проверить результаты работы. Для начала стукнемся root’ом:
Using keyboard-interactive authentication.
Password:
Access denied
Нельзя, что нам и требовалось. Логинимся созданным пользователем и повышаем привилегии до суперадминистратора (когда в ответ на команду su система спросит пароль, она, само собой, будет иметь ввиду пароль root’а):
Using keyboard-interactive authentication.
Password:
Last login: Wed Apr 22 20:03:18 2009 from x.x.x.x
[20:23] webadmin@SAN [/home/webadmin] > su
Password:
[20:23] webadmin@SAN [/home/webadmin] #
Вуаля.