Мой первый VPS сервер! Как не заблокировать себя и создать второго суперпользователя.

Опубликовано admin - вс, 07/15/2012 - 11:45

Хорошо, может быть это и не мой первый сервер и не Ваш, но это не имеет значения, так как иногда может произойти такая вещь как блокировка самого себя на собственном сервере! Такое случилось однажды со мной, один мой сервер находился в США, а я в Европе, оставался один выход: написать в поддержку хостеру!

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

И так, давайте начнем! Вы только что заказали VPS, после недель поиска, сравнения цен, опций, возможностей, бит и байтов и всякой всячины. Что действительно могло остановить Вас только на в начале. Множество вещей может быть не правильными, - неправильный хостинг провайдер, неправильное время года и т. д. Допустим вы заказали правильный VPS — ведь, если миллион вещей может быть неправильными, то какая-то часть этого будет правильной.

И Ура! Вам пришло письмо о том, что Ваш сервер настроен и готов к использованию, ждет Ваших комманд, в письме есть ip адрес - 123.234.345.456, пароль пользователя root.

Давайте запустим Putty или то, что Вы больше предпочитаете! Да, дома я использую windows. Войдем на сервер, и первым делом НИ В КОЕМ случае не изменяйте пароль пользователя root. Да, Вы правы, обычно, первым делом необходимо изменить пароль, так как пароль от хостер - провайдера является слабым или такой, который невозможно запомнить. Но изменение пароля может стать причинной запрета доступа к серверу для самого владельца.

Хорошо, вернёмся к Putty. Создадим новую сессию и изменим некоторые настройки putty. Первым делом включите поддержку записи всех действий в журнал, для того, чтобы запомнить всё, что вы делали. После совершения этих действий, вернёмся обратно и сохраним конфигурацию Putty.

Добавление нового пользователя

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

someuser может быть любым именем, но что бы Вы не написали - не забудьте его никто не должен знать. Не используйте собственное имя или что-нибудь подобное, что может предположить любой. Данный аккаунт будет полностью соответствовать root. Данная команда создаст нового пользователя someuser, создаст для него домашнюю директорию (-m), добавит доступ по shell (-s /bin/bash), и сделает его членом группы wheel (-G wheel).

Группа wheel - специальная группа, которая определяет кто может использовать команду su, а кто нет. Данная группа создается автоматически в CentOS/Redhat. В других дистрибутивах её нет, например в Ubuntu, но это не мешает Вам её создать.

Хорошо, сейчас у Вас появился новый пользователь, но без пароля. Команда useradd может задать пароль, но этот пароль не будет зашифрован, для этого нужно использовать команду:

Вы получите сообщение: «Changing password for user someuser», после чего введете несколько раз пароль, будьте внимательны не установите CAPS LOCK.

И это всё, вы только что добавили нового пользователя. Следующим шагом будет создание новой сессии в Putty, после чего подключатись к серверу, используя данные только что созданного пользователя.

Ограничение доступа к команде su

Следующим шагом будет ограничение доступа к команде su для тех пользователей, которые находятся в группе wheel. Делается это путём редактирования файла /etc/pam.d/su. По умолчанию в CentOS установлен редактор ViVi не прост в использовании, но если Вы не начали изучать другой редактор то используйте Vi и больше ничего не начинайте использовать кроме Vi. Хотя можно использовать и nano. Однако nano может быть и не установлен, для его инсталляции используется yum. Я никогда не встречал CentOS без предустановленного yum, поэтому наберите:

Yum отобразит несколько строк. Спросит желаете ли Вы установить nano. После наберите команду используя vi или nano:

Вы должны увидеть что-нибудь наподобие #%PAM-1.0. в начале файла. После двух — трёх строк:

# Uncomment the following line to require a user to be in the "wheel" group

найдите следующую строку:

для того чтобы раскомментировать её поставить курсор на занк # и нажмите x, чтобы строка выглядела так:

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

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

Su великолепная команда, позволяющая становится любым пользователем, включая пользователя root.

Ограничение доступа к правам пользователя root

Сейчас когда новый пользователь может использовать команду su, необходимо добавить возможность использовать команду sudo. Если она не установлена наберите:

если вы получите сообщение: «command not found», то установите sudo:

Yum будет задавать Вам вопросы, поэтому Вы можете добавить опцию -y к команде yum для положительного ответа на все возможные вопросы, но лично я предпочитаю видеть всё, что я делаю, так как иногда необходимо установить дополнительные зависимые пакеты. Установив sudo наберите команду:

в ответ вы получите:

Испоьзуя Ваш любимый редактор Vi спуститесь на несколько строк ниже где находится надпись:

под этой строкой необходимо раскомментировать строку:

Если вы удалил символ # то сохраните изменения в редакторе:

Файл котрый вы действительно отредактировали находится в /etc/sudoers и никогда не используй что-нибудь ещё кроме visudo для редактирования этого файла. Вы можете проверить войдя в качестве пользователя которого мы только что создали либо выполнив ко манду su username. После чего нужно ввести команду:

любые пользователи, которые не находятся в файле /etc/sudoers получат сообщение о том что они делают что-то не то на этом сервере, а так же будет отправлено сообщение на email. Но если пользователь находится в группе wheel, для которой есть разрешение в файле sudoers, он получить доступ на уровне root. Иногда сервер может выдать вам сообщение «audit_log_user_command(): Connection refused», не бойтесь, sudo работает, но не запущен демон audit(d).

Сейчас можно использовать команду sudo, попытайтесь:

Сервер спросит пароль, это не пароль пользователя root, пароль пользователя someuser, которого мы с Вами создали. Если вы введете его, вы станете втором суперпользователем. Теперь вы можете изменить пароль первого суперпользователя — root:

И не забудьте, что я говорил о пользователе someuser, его аккаунт является эквивалентом аккаунту root. Поэтому храните его в секрете!

Альтернатива

Если вы не можете использовать ssh. Недавно это случилось из-за того что я неудачно обновил OpenSSH. В этом случае все команды можно выполнять через Telnet.

Для использования Telnet необходим пакет telnet-server.i386, для его установки выполните следующие команды:

Эти команды вернут ответ о доступность «tcp_wrappers.i386» в зависимости от вашей архитектуры. Для установки этого пакета необходимо запустить команду:

Для включение Telnet наберите:

и расскомментируйте строку:

затем сохраните изменения:

Что я делаю дальше, ограничиваю доступ. Для этого необходимо отредактировать два файла /etc/hosts.allow and /etc/hosts.deny. В первом вы указывайте ip адрес с котрого разрешено использовать telnet, это может быть ip адрес домашний или тот который на у вас работе.

разрешить доступ:

Для того чтобы запретить всем кроме тех, которые указаны вы файле /etc/hosts.allow наберите команду:

введите строку:

После этого для запуска Telnet наберите команду:

Для проверки правильности работы используется команда:

В заключение

На этом всё. Сейчас Вы знаете несколько путей доступа к серверу — SSH, Telnet, ваш провайдер с панелью управления. Если этого не достаточно, можете установить Webmin.

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

Взаимосвязанные материалы

# 1. Пример проверки работоспособности elastic search посредством bash и cron (вторник, декабря 26, 2023 - 21:49 ),

 Пример проверки работоспособности elastic search.

читать...
# 2. Хуки в Git (среда, сентября 9, 2020 - 21:52 ),

Часто приходится копировать данные по сайту в git репозиторий или переносить копию на локальный сервер или рабочий?

читать...
# 3. Сам себе хостер 2. Настройка phpmyadmin, mysqli. (понедельник, сентября 7, 2020 - 21:33 ),

Phpmyadmin.

В первой части  читать...

# 4. В пути директории с точкой Error 403! (воскресенье, декабря 22, 2019 - 19:07 ),

Столкнулся с проблемой при работе с Bitrix, если в пути имеется точка (как правило это директория .default) то apache выдает ошибку:

читать...
# 5. Копирую, копирую, копирую… (вторник, июня 12, 2018 - 09:59 ),

Сколько времени приходится тратить на копирование данных, перед тем как приступить к их модификации, перенос или восстановление? Много. читать...

На разработку сайта! Скидки до 20%!