- Начало работы с виртуальным сервером vps — ruvds
- Аутентификация с использованием ssh-ключей
- Брандмауэр
- Быстрая настройка vps как web сервера для новичка или свой web сервер за 20 шагов
- Полезные утилиты
- Пользователь с привилегиями администратора
- Чек лист по настройке vps/vds, выделенного сервера linux с нуля [айти бубен]
Начало работы с виртуальным сервером vps — ruvds
Аутентификация с использованием ssh-ключей
Авторизация пользователей при помощи SSH-ключей может значительно повысить уровень безопасности вашего VPS. Если вы планируете использовать такой вариант аутентификации, придётся выполнить несколько несложных действий.
Сначала необходимо сгенерировать этот SSH-ключ. Для чего на локальной рабочей станции (не на сервере) в командной строке нужно набрать:
ssh-keygen
В процессе генерации ключа вы можете изменить имя файла ключа и его каталог, а также его пароль passphrase, а можете оставить эти настройки по умолчанию:
Далее, созданный ключ необходимо скопировать на сервер. Для чего нужно:
Подключиться к вашему VPS по SSH:
Брандмауэр
Для управления межсетевым экраном в операционных системах семейства Linux часто используется утилита iptables. Упрощённым её интерфейсом для настройки брандмауэра является Uncomplicated Firewall или UFW.
Для открытия доступа к серверу со стороны какого-либо приложения, необходимо выдать разрешение этому приложению на доступ, зарегистрировав его в UFW. Список приложений знакомых утилите UFW можно посмотреть набрав команду:
$ sudo ufw app list
Чтобы разрешить подключение к системе какому-нибудь приложению или протоколу, например, SSH, используйте инструкцию:
$ sudo ufw allow OpenSSH
Если брандмауэр отключен, его нужно включить:
$ sudo ufw enable
И проверить его статус:
$ sudo ufw status
Теперь вы можете настроить данный межсетевой экран так, чтобы он ограничивал доступ к вашему VPS в соответствии с вашими требованиями. Например, вы можете разрешить доступ к нему с одного определённого IP-адреса:
$ sudo ufw allow from
XXX.XXX.XXX.XXX
Или из определённой подсети:
$ sudo ufw allow from XXX.XXX.XXX.0/24
Так же есть возможность ограничить подключения к серверу определённым IP-адресом, при этом разрешив подключение только к определённому порту. Так например, чтобы открыть доступ только к порту 22, то есть только подключение по SSH, используйте команду:
$ sudo ufw allow from
XXX.XXX.XXX.XXX
to any port 22
Если же вы не хотите ограничиваться подключениями только с определённых адресов, вы можете защитить вашу систему установив запрет на соединения с IP-адресов, с которых происходит больше пяти попыток подключиться за последние полминуты. Запустить такую схему защиты можно командой:
$ sudo ufw limit ssh
Быстрая настройка vps как web сервера для новичка или свой web сервер за 20 шагов
1 — Соединяемся по SSH с сервером от рута:
login: root
root@85.*.*.*’s password:
Linux prcy 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
2 — проверяем обновления
apt-get update
apt-get upgrade
3 — Устанавливаем curl , если его нет
apt-get install curl
4 — Устанавливаем VestaCP (Легкая панель от русских разработчиков)
curl -O http://vestacp.com/pub/vst-install.sh
bash vst-install.sh
Сервер спросит Do you want to proceed? [y/n]):
соглашаемся (y) и жмем enter
Прописываем email (туда придет пароль) и хост, можно тот, что в скобках
По окончанию установки вы получите :
=======================================================
———————————
https://85.*.*.*:8006
username: admin
password: dskaDSacs
———————————
Congratulations,
you have successfully installed Vesta Control Panel.
5 — можно зайти и проверить панель
https://85.*.*.*:8006/list/user/
6 — добавляем новые источники в файл
nano /etc/apt/sources.list
в конце дописываем
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all
Жмем CTRL O и энтер. Закрываем файл по CTRL X.
7 — Скачиваем и устанавливаем ключи
wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
8 — Обновляем доступный список приложений
apt-get update
apt-get upgrade
Во время обновления соглашаемся на все, кроме *** my.cnf (Y/I/N/O/D/Z) [default=N] ?
Отвечаем N
9 — Запускаем обновление самой системы:
apt-get dist-upgrade
10 — БД
apt-get install python-software-properties
apt-key adv —recv-keys —keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
Обновляем список приложений
apt-get update
11 — устанавливаем БД
apt-get install mariadb-server
Если выдаст ошибку, значит нам мешает MySQL
11.2 — Удаляем MySQL
apt-get purge mysql* mariadb*
11.3 — устанавливаем БД
apt-get install mariadb-server
12 — Открываем
nano /usr/local/vesta/conf/mysql.conf
Видим — PASSWORD=’jbknjknkj34′. => Запоминаем
13 — фиксим exim4 (удаляем light, нам нужен heavy)
apt-get remove exim4-daemon-light
apt-get install phpmyadmin
14 — Проверка
https://85.*.*.*/phpmyadmin/
15 — Даем все права
chmod 777 -R /var/lib/phpmyadmin/tmp
16 — php.ini
nano /etc/php5/apache2/php.ini
Находим, меняем или на Ваше усмотрение
max_execution_time = 180
upload_max_filesize = 64M
post_max_size = 64M
17 — Перезапускаем apache2
service apache2 restart
18 — Убираем жор памяти
nano /etc/apache2/apache2.conf
Находим блок
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
меняем на
<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 3
MaxSpareServers 9
ServerLimit 256
MaxClients 20
MaxRequestsPerChild 3000
</IfModule>
Если сервер мощный, можем сделать параметры больше
Жмем CTRL O и энтер. Закрываем файл по CTRL X.
Перезапускаем apache2
service apache2 restart
19 — БД
nano /etc/mysql/my.cnf
Находим нужные значения и меняем
Перезапускаем
service mysql restart
20 — Заменяем кофиг ngix
Перезагружаем сервер => Готово
Ваш сайт живет тут
/home/admin/web/yourdomain/public_html
my.conf
max_connections = 50
connect_timeout = 5
wait_timeout = 30
max_allowed_packet = 16M
thread_cache_size = 128
sort_buffer_size = 512K
bulk_insert_buffer_size = 16M
tmp_table_size = 16M
max_heap_table_size = 16M
myisam_recover = BACKUP
key_buffer_size = 8M
#open-files-limit = 2000
table_open_cache = 400
myisam_sort_buffer_size = 8M
concurrent_insert = 2
read_buffer_size = 512K
read_rnd_buffer_size = 512K
innodb_buffer_pool_size = 8M
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
nginx.conf
# Server globals
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Worker config
events {
worker_connections 1024;
use epoll;
}
http {
# Main settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 1m;
client_body_timeout 1m;
client_header_buffer_size 2k;
client_body_buffer_size 256k;
client_max_body_size 100m;
large_client_header_buffers 4 8k;
send_timeout 30;
keepalive_timeout 60 60;
reset_timedout_connection on;
server_tokens off;
server_name_in_redirect off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 512;
# Log format
log_format main ‘$remote_addr — $remote_user [$time_local] $request ‘
‘»$status» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;
log_format bytes ‘$body_bytes_sent’;
#access_log /var/log/nginx/access.log main;
access_log off;
# Mime settings
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Compression
gzip on;
gzip_comp_level 9;
gzip_min_length 1000;
gzip_buffers 8 64k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml rss text/javascript application/javascript image/svg xml;
gzip_proxied any;
# Proxy settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
# Cloudflare https://www.cloudflare.com/ips
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
#set_real_ip_from 2400:cb00::/32;
#set_real_ip_from 2606:4700::/32;
#set_real_ip_from 2803:f800::/32;
#set_real_ip_from 2405:b500::/32;
#set_real_ip_from 2405:8100::/32;
real_ip_header CF-Connecting-IP;
# SSL PCI Compliance
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers «ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4»;
# Error pages
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 502 503 504 /error/50x.html;
# Cache
proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=512m;
proxy_cache_key «$host$request_uri $cookie_user»;
proxy_temp_path /var/cache/nginx/temp;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_valid any 3d;
map $http_cookie $no_cache {
default 0;
~SESS 1;
~wordpress_logged_in 1;
}
# Wildcard include
include /etc/nginx/conf.d/*.conf;
server {
location ~* ^. .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
expires max;
}
}
}
Полезные утилиты
Стоит упомянуть некоторые полезные утилиты, которыми я пользуюсь в администрировании, и которые могут пригодиться вам.
WP-CLI
Это командная утилита для администрирования WordPress из терминальной консоли Linux. Умеет очень много, бэкапить, копировать данные в базе данных, отключать и включать плагины и так далее. Очень полезно, в случаях если у вас конфликт плагинов, или вы где-то накосорезили и админка сайта у вас отвалилась. Подробнее тут.
Multitail
Программа для чтения логов с продвинутым выводом. Выводит содержимое лог-файлов и позволяет наблюдать за их изменениями в реальном времени с подсветкой синтаксиса. Смотрим здесь.
Htop
Полный аналог «Диспетчера задач» из Windows для терминальной консоли. Очень полезная вещь для мониторинга процессов, памяти, загрузки и управления процессами. Ставиться командой:
sudo apt-get install htop
И вызывается (кто бы думал) командой:
htop
Let’s Encrypt
Пользователь с привилегиями администратора
При установке операционной системы вы получаете доступ к ней при помощи учётной записи, имеющей права суперпользователя. Имя этого пользователя – root, и он в вашей системе, что называется, “может всё”. Регулярно производить запуск инструкций, зарегистрировавшись в системе учётной записью root, весьма неосмотрительно с точки зрения безопасности. Именно поэтому, необходимо создать учётную запись с ограниченными правами для её использования в повседневной работе.
Для создания нового пользователя введите команду:
Чек лист по настройке vps/vds, выделенного сервера linux с нуля [айти бубен]
Эту инструкцию я просто скопировал у самого адекватного (как по цене, так и уровню техподдержки) украинского хостинг провайдера СХОСТ.
При выборе выделенного сервера и VPS/VDS очень важно обратить внимание на процессор. Не все знают, что большие показатели CPU и количества ядер не всегда гарантируют большую мощность. В частности, более современный процессор 1.6 ГГц может ощутимо превосходить процессор 4 ГГц.
Существует проверенный способ оценить реальную мощность практически любого процессора до покупки выделенного сервера/ВПС:
Выберите процессоры, которые нужно сравнить.
Изучите сравнительную таблицу.
Рассмотрим, как работает сервис на примере. Мы сравнили два процессора – Intel Xeon X5675 @ 3.07GHz (процессор А) и Intel Xeon E5-2680 v2 @ 2.80GHz (процессор В).
При том что мощность (поле Clockspeed) процессора А равна 3.1 ГГц, а мощность процессора В – 2.8 ГГц, рейтинг одного ядра (поле Single Thread Rating) процессора В составляет 1826, а процессора А – лишь 1392. Что касается суммарного рейтинга (поле CPU Mark), то и здесь процессор В показал лучшие результаты: 15904 против 8124.
Вывод: у процессора 2.8 ГГц каждое ядро почти на 50% мощнее, чем у процессора 3.1 ГГц. Следовательно, так как ядер больше, процессор В почти в два раза сильнее, чем процессор В.
Не помещает, сразу после покупки VPS замерить скорость интернета, которую вам предоставил хостинг провайдер. Скорость можно замерить разными способами, например утилитой iperf, но самым простым способом будет использование приложения Speedtest CLI.
Speedtest CLI позволяет использовать глобальную серверную сеть Speedtest с помощью командной строки. Speedtest CLI позволяет измерять такие показатели интернет-соединения, как скорость загрузки и передачи, потеря пакетов и задержка, без использования веб-браузера.
Установка утилита speedtest в Debian/Ubuntu (скачать установочные скрипты):
curl -s https://install.speedtest.net/app/cli/install.deb.sh |bash apt install speedtest-cli
Установка утилита speedtest в Centos:
curl -s https://install.speedtest.net/app/cli/install.rpm.sh | sudo bash yum install speedtest
Запускаем без всяких параметров, обычно этого достаточно. В более новых версиях лучше использовать дополнительный ключ, auto-binary-bytes который будет показывать скорость в kiB/s, MiB/s, GiB/s.
speedtest -u auto-binary-bytes
# speedtest Retrieving speedtest.net configuration... Testing from JSC IOT (212.109.219.242)... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by INETCOM LLC (Moscow)[1.61 km]: 2.945 ms Testing download speed.............. Download: 97.56 Mbit/s Testing upload speed................ Upload: 109.68 Mbit/s
Как видим мой VPS сервер подключен в 100 Mbit/s порт. Если это соответствует заявленной хостером, вам при покупке виртуального сервера, скорости — значит все ОК.
К слову, чтобы увидеть ближайшие сервера Speedtest введите команду:
# speedtest -L Closest servers: ID Name Location Country ============================================================================== 22774 DediPath Secaucus, NJ United States 982 Interserver, inc Secaucus, NJ United States 22069 TeleBermuda International Limited New York, NY United States
Читайте также: Что такое тест скорости Интернета? Единицы измерения скорости интернета
Обычно я использую на серверах Debian или Ubuntu, поэтому команды будут приводиться для этих систем. Для остальных ОС буду приводить ссылки, если есть различия.
На начальном этапе у нас есть свежеустановленная операционная система на VPS/VDS и доступ по SSH. Логинимся на сервер под пользователем root.
1) Обновление операционной системы. Для Debian, Ubuntu рекомендую использовать встроенные менеджер пакетов APT, альтернатива Aptitude, dpkg.
# apt update # apt list --upgradable # apt upgrade
Добавим системные утилиты:
# apt install lsb-release htop net-tools
2) Настройка переменных локализации в Linux удаление локалей и локализаций, проверка языка консоли вашего VDS.
3) Настройка времени и часового пояса при помощи tzdata.
4) Имя сервера проверьте командой hostname с ключом f. Вы должны увидеть имя в формате FQDN (без точки в конце), например
# hostname -f vps100.mirax-hotel.com
Если вы хотите установить почтовый сервер также проверьте обратную запись DNS. В самом простом случае достаточно чтобы ваш VPS был доступен по доменному имени.
5) Настройка SSH доступа, для повышения безопасности и удобства использования вашего сервера — дадут вам прочную основу для последующих действий.
6) Настройка брандмауэра (firewall, файрвол) в разных дистрибутивах отличается или же используются разные программные надстройки на ними: