Настройка Web сервера на Ubuntu 20.04

Привет. Недавно стал осваивать Laravel и столкнулся с тем, что там нужно перепиновать скрипт для его авто запуска. На хостинге это сделать нельзя. По этому было принято решение пересесть с хостинга на VPS. Я выбрал VPS от компании Beget.

Я плачу за него всего 11 рублей в день. Если вы нашли дешевле, то обязательно напишите об этом в комментариях.

Выбор Control Panel

Мне хотелось настроить ВПС так, чтобы было удобно его администрировать, т.е. большая часть работы, чтобы выполнялась мышкой. Потратил два дня, перебрал кучу бесплатных СП панелей, полдня даже сервер проработал на весте, пока не случилась беда с бекапами.

В итоге я остановился на панели от компании FastPanel. Вот её то я и буду здесь настраивать. Там особо настроек нет, но не для подготовленного человека командная строка вызывает ужас и отторжение.

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

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

Выбрал я самый дешевый тариф VPS сервера. Его характеристики:

  1. CPU: 1,
  2. RAM: 1 Гб,
  3. SSD: 15 Гб.

Для моих нужд вполне хватит. Заходим в панель управление Beget, жмем создать VPS. Готово! Сервер устанавливается примерно в течение 10 секунд. Доступы Ssh приходит на почту. Перво на перво на свежо установленном сервер нужно обновить пакеты.

sudo apt-get update
sudo apt-get upgrade

Дальше ставим Midnight Commander, чтобы было удобно выполнять манипуляции с сервером.

sudo apt-get inctall mc

Настройка fail2ban

Дальше нужно обезопасить сервер. Fail2ban — Это некое подобие фаервола для спамеров и ботов. Также он поможет от ddos атак. Я долго не мог понять как он работает. Но, оказалось все довольно просто. Он использует логи сервера, fail2ban их читает и если видит однотипные действия, то маркирует их и следит за ними. Если такие действия встречаются в его правилах, то он совершает определённые действия над ip адресом плохого или хорошего человека.

Устанавливаем:

sudo apt-get install fail2ban

Для запуска службы вводим следующие команды:

systemctl enable fail2ban
systemctl start fail2ban

Дальше открываем Midnight Commander на сервере и начинаем настраивать фаервол.

mc

Переходим в папку etc/fail2ban. Там есть файл jail.local вот его и будем редактировать. Я встречал варианты, что люди его не правят, а под каждый пул правил создают отдельный фаил в папке jail.d. Я решил пойти путем меньшего сопротивления.

Вот мой jail.local:

[DEFAULT]
bantime.increment = true
bantime.rndtime = 30m
bantime.maxtime = 60d
bantime.factor = 2
bantime = 3h
findtime = 10m
maxretry = 5
banaction   = iptables-ipset-proto6
ignoreip = 127.0.0.1

[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200

[recidive]
enabled = true
bantime = 9w
findtime = 3d

[apache-auth]
# Ban hosts with password authentication failures
enabled = true
port = http,https
logpath = %(apache_error_log)s

[apache-badbots]
# Ban spammer robots crawling the web for email addresses.
port = http,https
logpath = %(apache_access_log)s
bantime = 172800
maxretry = 1

[apache-noscript]
# Ban hosts searching for scripts on the website to execute and exploit
enabled = true
port = http,https
logpath = %(apache_error_log)s
maxretry = 6

[apache-overflows]
# Ban hosts attempting to request unusually long and suspicious URLs
enabled = true
port = http,https
logpath = %(apache_error_log)s
maxretry = 2

[apache-nohome]
# If you do not provide access to web content within users’ home directories
enabled = true
port = http,https
logpath = %(apache_error_log)s
maxretry = 2

[exim]
enabled = true

[exim-spam]
enabled = true

[postfix]
enabled = true

[wordpress-hard]
enabled = true
port = http,https
filter = wordpress-hard
logpath = /var/log/auth.log
bantime = 1h
maxretry = 1

[non-standard]
enabled = true
port = port your app/service uses
logpath = where its log file is located

После сохранения нужно перезагрузить fail2ban:

systemctl restart fail2ban

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

В этом видео автор хорошо объясняет, как работать и про настройки самого фаервола.

Самый быстрый способ, чтобы разблокировать ваш IP. Перезагрузите ваш роутер.

Настройка FastPanel

Тут все просто выполните эту команду:

wget http://repo.fastpanel.direct/install_fastpanel.sh -O - | bash -

После окончания установки в командной строке отобразится адрес, логи и пароль.

Баги FastPanel

Я столкнулся сразу с двумя багами. Первый баг точно этой панели, а другой не факт, пока не разобрался со вторым.

Права на паки

Захожу Управление сайтом -> Файлы. В колонке доступ, права на папку показывает как 644, пробую сменить их, нажатием на 644. Вылезает модальное окно, где указываю права 744, ставлю галочку применить только к каталогам. Жму ок. Все выполняется. Дальше снова выделяю все папки в корне сайта, жму все то же самое, только права выбираю 644, ставлю применить только для файлов, жму ок. Получаю read unix @->/run/filemanager/microfo.ru.sock: read: connection reset by peer. При этом права на каталоги где-то становятся с правами 644.

С первым багом разобрался просто, выставляю права на папку через консоль.

cd
find yvka.ru/ -type d -exec chmod 755 {} \; //выставить всем папкам права 755

Кстати, если заливать файлы через FTP, то они будут иметь группу и пользователя root, что не есть хорошо. Чтобы это изменить попользуйтесь командой:

chown -R siteName.ru:siteName.ru /var/www/keycheck.ru/data/www/siteName.ru

Загрузка ЦП

Этот баг я пока не победил, как осилю его, то сразу допишу решение. В двух словах о баге: происходит что-то странное с файлом подкачки.

update: Я победил, дело было в криво настроенном сайте, есть у меня один проект, который со мной с 1999 года, так вот в нем была беда.

Настройка Фаервола

Довольно все удобно сделали через админ панель. Единственный недостаток в том что нельзя сразу выбрать входящий и исходящий трафик, приходится плодить сущности. Скидываю свой список правил.

Название Диапазон портов Протокол Тип Политика
SSH 22 TCP INPUT PARTIAL ACCEPT
WEB 80 TCP INPUT PARTIAL ACCEPT
WEB 443 TCP INPUT PARTIAL ACCEPT
FTP 21 TCP INPUT PARTIAL DROP
SMTP 25 TCP INPUT PARTIAL ACCEPT
SMTP 25 TCP OUTPUT PARTIAL ACCEPT
SMTP 465 TCP INPUT PARTIAL ACCEPT
SMTP 465 TCP OUTPUT PARTIAL ACCEPT
SMTP 587 TCP INPUT PARTIAL ACCEPT
SMTP 587 TCP OUTPUT PARTIAL ACCEPT
SMTP 2525 TCP INPUT PARTIAL ACCEPT
SMTP 2525 TCP OUTPUT PARTIAL ACCEPT
POP3 110 TCP INPUT PARTIAL ACCEPT
POP3 110 TCP OUTPUT PARTIAL ACCEPT
POP3 995 TCP INPUT PARTIAL ACCEPT
POP3 995 TCP OUTPUT PARTIAL ACCEPT
IMAP 143 TCP INPUT PARTIAL ACCEPT
IMAP 143 TCP OUTPUT PARTIAL ACCEPT
IMAP 993 TCP INPUT PARTIAL ACCEPT
IMAP 993 TCP OUTPUT PARTIAL ACCEPT
DB_ 3306 TCP INPUT PARTIAL ACCEPT
DB_ 3306 TCP OUTPUT PARTIAL ACCEPT
DB_ 5432 TCP INPUT PARTIAL ACCEPT
DB_ 5432 TCP OUTPUT PARTIAL ACCEPT
fastCP 8888 TCP INPUT PARTIAL ACCEPT
fastCP 8888 TCP OUTPUT PARTIAL ACCEPT
7777 7777 TCP INPUT ACCEPT
SFTP 2222 TCP INPUT PARTIAL ACCEPT

И в самом конце добавляет глобальное правило, запретить все, что не разрешено.

Нашли ошибку, пишите.

Настройка бекапа

Никогда не хороните бекапы на там же сервере.

Так же все настраивается через панель. Можно сохранить в дроббокс, ftp или себе на сервер, а затем слить их оттуда.

Предыдущая
ПрограммированиеGit — распределённая система контроля версий: базовые настройка
Добавить комментарий