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

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

jQuery и CSS

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

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

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

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

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

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

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

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

  • Код
  • Чистый код
  1.useradd -m -G wheel -s /bin/bash someuser

        

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

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

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

  • Код
  • Чистый код
  1.passwd someuser

        

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

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

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

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

  • Код
  • Чистый код
  1.yum install nano

        

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

  • Код
  • Чистый код
  1.vi /etc/pam.d/su

        

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

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

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

  • Код
  • Чистый код
  1.#auth           required        pam_wheel.so use_uid

        

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

  • Код
  • Чистый код
  1.auth           required        pam_wheel.so use_uid

        

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

  • Код
  • Чистый код
  1.:wq!

        

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

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

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

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

  • Код
  • Чистый код
  1.visudo

        

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

  • Код
  • Чистый код
  1.yum install sudo

        

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

  • Код
  • Чистый код
  1.visudo

        

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

  • Код
  • Чистый код
  1.## Sudoers allows particular users to run various commands as
  2.## the root user, without needing the root password.

        

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

  • Код
  • Чистый код
  1.## Allows people in group wheel to run all commands

        

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

  • Код
  • Чистый код
  1.# %wheel  ALL=(ALL)       ALL

        
  • Код
  • Чистый код
  1.%wheel  ALL=(ALL)       ALL

        

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

  • Код
  • Чистый код
  1.:wq!

        

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

  • Код
  • Чистый код
  1.sudo s -

        

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

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

  • Код
  • Чистый код
  1.sudo su -

        

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

  • Код
  • Чистый код
  1.sudo passwd root

        

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

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

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

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

  • Код
  • Чистый код
  1.yum search xinet

        
  • Код
  • Чистый код
  1.yum search wrappers

        

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

  • Код
  • Чистый код
  1.yum install xinetd.i386 telnet-server.i386

        

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

  • Код
  • Чистый код
  1.vi /etc/xinetd.d/telnet

        

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

  • Код
  • Чистый код
  1.disable = no

        

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

  • Код
  • Чистый код
  1.:wq!

        

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

  • Код
  • Чистый код
  1.vi /etc/hosts.allow

        

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

  • Код
  • Чистый код
  1.ALL: 127.0.0.1
  2.ALL: xxx.yyy.xxx.zzz
  3.ALL: yyy.zzz.xxx.yyy

        

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

  • Код
  • Чистый код
  1.vi /etc/hosts.deny

        

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

  • Код
  • Чистый код
  1.ALL : ALL

        

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

  • Код
  • Чистый код
  1./etc/init.d/xinetd start

        

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

  • Код
  • Чистый код
  1.ALL : ALL

        

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

  • Код
  • Чистый код
  1.netstat -a |grep telnet

        

В заключение

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

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


Александр Ермаков