25 апр. 2016 г.

Настройка сервера на Scaleway

Для создания сервера на Scaleway потребуется зарегистрироваться, ввести данные своей карты для оплаты, а также сгенерировать ssh ключи. Последние нужны для первоначальной авторизации на свежесозданном сервере.
Как сгенерировать ssh ключ, много написано, ищите ssh-keygen. Под windows можно попробывать Putty, но у меня как-то с ним не срослось. Мне же удобнее использовать программу JuiceSSH на android, удобный клиент, достаточно для работы в терминале.

Создаем в JuiceSSH идентификатор root, генерируем секретный ключ RSA, далее через меню на созданном идентификаторе экспортируем открытый ключ, который необходимо вставить в Поле SSH keys на странице Credentials, жмакаем Use this SSH key.

Далее переходим к созданию сервера. Я выбрал тип сервера VC1S, образ Ubuntu Xenial (16.04 latest), в Advanced Options указываем - использовать ли IPv6.

Всё. Сервер будет создан и запущен через непродолжительное время.

После его запуска, через терминал, где был сгенерирован вами ключ, в моём случае в JuiceSSH, где я создал соответствующее соединение, указал ip нового сервера, соединяемся по ssh, используя сгенерированные ключи.

После входа первым делом создаём пользователя, под которым будете работать:
# useradd -m -G wheel -s /bin/bash user

придумываем ему пароль:
# passwd user

Далее даём права sudo для нового пользователя:
# nano /etc/sudoers

дописываем строчку:
user ALL=(ALL) ALL
потом Ctrl+X, Y, Enter.

Правим конфиг сервера sshd
# nano /etc/ssh/sshd_config
где находим строчку с параметром PasswordAuthentication и приводим к виду:
PasswordAuthentication yes
тем самым разрешив вход по паролю.
При этом строку PermitRootLogin without-password предлагаю оставить в неизменном виде, данная строка запрещает вход пользователю root по паролю.

Далее дописываем конфиг следующей строкой, определяя, кто может ввойти в систему по ssh:
AllowUsers user root
потом сохраняем конфиг Ctrl+X, Y, Enter.

Если всё нормально, перезапускаем сервер sshd:
# systemctl restart sshd.service

Теперь можно перезайти под новым пользователем user по паролю.

Обновляемся..
$ sudo apt update && sudo apt upgrade

Далее, обязательно ставим firewall, например ufw.
$ sudo apt install ufw
Неоднократно сталкивался с тем, что ufw блокирует входящие соединения, даже при наличии соответствующих правил, разрешающих соединения, поэтому использую для себя правило "разрешено всё, что не запрещено".

$ sudo nano /etc/default/ufw
строку DEFAULT_INPUT_POLICY="DROP" приводим к виду DEFAULT_INPUT_POLICY="ACCEPT"

Включаем ufw:
$ sudo ufw enable
Ограничиваем число возможных попыток соединения на порт 22 для ssh:
$ sudo ufw limit 22
Если вы сменили порт на другой, то указываете другой.
Далее блокируем порты диапазоном, за исключением тех, что вам нужны. Например мне нужен ещё открытым 443 порт, поэтому делаю так:
$ sudo ufw deny 01:21/tcp
$ sudo ufw deny 01:21/udp
$ sudo ufw deny 23:442/tcp
$ sudo ufw deny 23:442/udp
$ sudo ufw deny 444:10000/tcp
$ sudo ufw deny 444:10000/udp

для протоколов tcp и udp правила блокировки диапазоном портов нужно указывать отдельно.

Просмотреть правила можно:
$ sudo ufw status numbered
где в квадратных скобкам номер правила, что позволяет по номеру удалить, например, лишнее правило командой ufw delete НОМЕР.

Для повседневной работы с сервером использую kitty.
Настраиваю перенаправлением портов в соответствующей вкладке Tunnels SSH, где в поле Source Port - нужный порт машины, где запущен kitty, например 8384, а Destination указываю как 127.0.0.1:8384, где 8384 - нужный порт на сервере.

Например, таким образом можно настроить http прокси через ваш сервер.
Для этого, устанавливаем polipo:
$ sudo apt install polipo
в настройках конфига polipo:
$ sudo nano /etc/polipo/config
находим соответствующую строку и приводим к виду:
allowedClients = 127.0.0.1
по умолчанию polipo использует порт 8123, можете изменить параметром ProxyPort.
Также отключаем дисковый кэш, разкомментировав строку:
diskCacheRoot = ""
Отключаем локальный веб-сервер polipo:
localDocumentRoot = ""
Сохраняем, включаем службу polipo и запускаем:
$ sudo systemctl enable polipo
$ sudo systemctl start polipo


Теперь с помощью kitty перенаправляем порт 8123 на 127.0.0.1:8123 и настраиваем свой браузер.
Бывает, редко, но бывает, что polipo подвисает, поэтому добавляем в crontab правило для его перезапуска раз в сутки, например в полночь:
$ sudo crontab -e
добавляем строчку:
0 0 * * * systemctl restart polipo

В дальнейшем напишу, как поднять торрент клиент transmission и программу для синхронизации файлов syncthing.