Настройка VDS на Hetzner с дистрибутивом Ubuntu 12.04. Памятка.
В этой памятке собраны основные этапы настройки VDS от провайдера Hetzner. Не смотря на то, что о нем принято отзываться не очень лестно, меня вполне устраивают его тарифы на VDS и качество предоставляемых услуг.
Сразу после установки получаем работающего пользователя root, из под которого управляем системой без использования su. И получаем к нему доступ сразу по ssh после ввода пароля.
Любой админ знает, что это очень опасно. Т.к. если злоумышленнику удастся скомпрометировать ваш пароль, он получит доступ ко всей системе.
Настройка ssh
Для начала нам надо позволить себе заходить на сервер без ввода пароля. Открываем на локальной машине ~/.ssh/config
и добавляем туда запись вида:
Host hetzner
Hostname
User root
Если нет своего ключа, то для его создания может потребоваться примерно такая команда:
ssh-keygen -b 1024 -t dsa
После этого можем добавить на сервер свой публичный ключ:
ssh-copy-id hetzner
На вопрос отвечаем yes и вводим свой пароль. После этого можно входить на сервер без пароля:
ssh hetzner
Убираем вход по root Когда мы научились продвинутому использованию ssh, в первую очередь надо исправить проблему входа из-под root. И заодно выполнить рекомендации хостера: "For your own security, we advise you to change your login data as soon as possible."
Для этого создадим нового пользователя:
useradd username
Создадим ему домашнюю директорию:
mkdir /home/username
Зададим новому пользователю пароль:
passwd username
Выставим права на домашнюю директорию:
chown username:username /home/username
Позволим нашему пользователю пользоваться привилегиями суперпользователя:
adduser username sudo
Чтобы забрать у пользователя права администратора, достаточно удалить его из группы sudo:
gpasswd -d username sudo
Теперь выйдем с сервера:
exit
Скопируем в профиль нового пользователя публичный ключ, чтобы мы так же могли заходить без ввода пароля:
ssh-copy-id username@hetzner
Надо будет ввести пароль, заданный для пользователя.
Далее, командой ssh username@hetzner
мы можем уже войти на сервер под нашим профилем. Но, это опять же не очень удобно. Мы хотим всегда заходить на сервер из под этого пользователя. Для этого снова откроем локальный файл настроек ssh:
nano ~/.ssh/config
и добавленную ранее строку исправим на:
Host hetzner
Hostname
User username
После этих простых манипуляций мы заходим по команде
ssh hetzner
на наш удаленный vds без ввода пароля под нашим пользователем. Чтобы получить root-доступ, необходимо выполнить:
$ sudo {command}
для одной команды. После чего нужно будет ввести пароль нашего пользователя (здесь без пароля не обойтись; даже если кто-то сможет попасть на vds через наш локальный ПК, он не сможет без пароля сломать настройки). Чтобы получить привилегированный доступ для выполнения нескольких команд, и не вводить каждый раз sudo {command}
, можно воспользоваться командой
$ sudo su
которая сделает нас на время суперпользователем. Работая в этом режиме нужно быть крайне осторожным, т.к. одним не верным движением можно снести всю систему.
Теперь, для большей надежности, нам надо предотвратить прямой вход на ssh из-под аккаунта root. Сделать это можно удалив пароль у пользователя root:
sudo passwd -l root
Теперь, чтобы прикрыть возможность входа под суперпользователем по ssh без ввода пароля, которую мы создали, просто удалим файл:
sudo rm /root/.ssh/authorized_keys
На этом мы сделали возможным управление сервером только из под созданного нами пользователя.
Настройка bash
По умолчанию для нашего пользователя подключается оболочка /bin/ch
Мне так привычнее работать с /bin/bash
, т.к. в нем работают автозаполнение и история введенных команд. Чтобы сделать bash оболочкой по умолчанию, надо выполнить команду:
chsh
На что будет запрошен пароль и после успешного ввода предложено выбрать новую оболочку:
Password:
Changing the login shell for username
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]: /bin/bash
Я ввел /bin/bash
Если будут затруднения, в виде ошибки
You may not change the shell for 'username'.
Можно воспользоваться такой командой:
sudo chsh -s /bin/bash username
Теперь можно перелогиниться, и увидеть, что выбран именно bash ))
Если мы хотим иметь такое же оформление для приглашения командной строки, как было у root, то нам всего лишь достаточно скопировать к себе в домашний каталог соответствующие файлы настройки bash из домашнего каталога root и выставить себя их владельцами:
sudo cp -v /root/.bashrc /root/.profile /home/username
sudo chown username:username /home/username/.*
Теперь мы можем перелогиниться, и лицезреть красочное приглашение командной строки
Меняем название хоста
По умолчанию bash на хетзнере пишет такое приглашение:
username@Ubuntu-1204-precise-32-minimal ~ $
Мне тяжело видеть такую длинную надпись, и поэтому было решено заменить и ее тоже. Это оказалось возможно простой командой:
sudo hostname hetzner-vds
Но, как выяснилось по ссылке, чтобы новое имя применялось постоянно, необходимо отредактировать файл:
sudo nano /etc/hostname
и прописать в него нужное нам значение на место старого. Теперь, после перезагрузки vds будет показано то, что прописано в /etc/hostname
Но, это еще не все. Нам также надо открыть файл hosts:
sudo nano /etc/hosts
найти в нем все упоминания старого имени хоста, и заменить их на новое. После этого можно переподнять сеть:
sudo /etc/init.d/networking restart
Настройка apt-get
Для того, чтобы пользоваться последними версиями софта, порой приходиться брать их из неофициальных репозиториев. Но, попытавшись добавить новый репозиторий обнаруживается, что не работает команда add-apt-repository ppa:репозиторий/ppa
. Для ее добавления нужно выполнить:
sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-get install software-properties-common
После этого появляется возможность добавлять новые репозитории.
Настройка русской локали:
sudo apt-get install language-pack-ru-base
sudo locale-gen
Настройка php
Для работы проектов мне необходим php 5.6. Для этого проводим следующие действия:
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php5.6
После выполнения этих действий появляется PHP последней (или почти последней) версии. Проверить можно:
php -v
Установка MySQL
Вместо MySQL я бы рекомендовал установить PerconaDB.
sudo apt-get install mysql-server mysql-client
Прочитать про создание нового пользователя
Настройка отправки писем
Если мы хотим отправлять письма по взрослому, то нам потребуется свой домен. В его dns-зонах надо прописать адрес нашего сервера, а на сервере, в качестве hostname указать этот домен. Как это делается, написано выше.
Для этого могу рекомендовать лаконичную утилиту ssmtp:
sudo apt-get install ssmtp
И скрипты на php станут успешно отправлять почту через функцию mail.
Автор: keltanas
comments powered by Disqus