- Notifications
You must be signed in to change notification settings - Fork2
AstraliumDev/AstralDocs
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
- SOFTWARE.md •
- PERFORMANCE.md •
- LEGACY.md • Устаревшая информация
- launcher/ONLINE_BYPASS.md • Лаунчеры Minecraft без авторизации Mojang/MSA
Данная статья рассчитана на настройку под Ubuntu / Debian. Основные рекомендации также могут быть применены для ARMсистем.
Если у вас Arch Linux или другие Unix подобные системы - пожалуйста ознакомьтесь с документацией по установкепакетов на эту ОС или поищите альтернативные пакеты.
⚠️ Для AUR репозиториев настоятельно рекомендуется проверять исходники скрипта установки. В любом случае эторекомендуется делать и для других репозиториев.⚠️ Некоторые функции могут работать неправильно или вовсе не работать на вашей системе.
- Основные рекомендуемые компоненты для вашей системы Linux.В основном все команды выполняются от
root
пользователя или с помощьюsudo
(Еслиsudo
отсутствует на вашейсистеме, то установите его черезapt
/pamac
/pacman
или альтернативную команду на вашей системе) - Для навигации по большинству терминальных команд вы можете использовать утилиту
man
, напримерman man
расскажет что такое man
NAME man, apropos, whatis – display online manual documentation pagesSYNOPSIS man [-adho] [-t | -w] [-M manpath] [-P pager] [-S mansect] [-m arch[:machine]] [-p [eprtv]] [mansect] page ...
- Некоторые команды не имеют документации, но возможно к ним можно обратиться через аргумент --help, например
man --help
Usage: man [-adho] [-t | -w] [-M manpath] [-P pager] [-S mansect] [-m arch[:machine]] [-p [eprtv]] [mansect] page [...] man -f page [...] -- Emulates whatis(1) man -k page [...] -- Emulates apropos(1)
Для Ubuntu / Debian и форков этих систем ->
sudo apt update -y && sudo apt upgrade -y
Для Arch Linux и форков этой системы ->
sudo pamac update --no-confirm && sudo pamac upgrade --no-confirm
- htop - Утилита для мониторинга всех запущенных процессов
- screen - Важная утилита для создания сессий на вашей серверной машине
- nftables - Управление Netfilter & FireWall системы (рекомендую)
- nload - Мониторинг сети в виде графика
- vnstat - Мониторинг сети с выводом скорости и пакетов (рекомендую)
- wireshark - Продвинутое ПО для мониторинга трафика ваших сетевых интерфейсов с возможностью создания дампов .pcap (рекомендую)
- smartmontools - Позволяет протестировать оборудование системы (физические накопители HDD, SDD) (рекомендую)
- dnsutils - Управление DNS (Может потребоваться для некоторых утилит)
- neofetch - Утилита для красивого отображения вашей ОС и некоторых параметров
- haproxy - Продвинутое реверсивное прокси, которое балансирует нагрузку — распределяет входящие запросы на несколько серверов для обеспечения высокой доступности. (рекомендуется для продуманных серверных связок)
- mariadb - Реляционная база данных, которая является улучшенной версией MySQL (рекомендуется для medium-high Проектов)
- postgresql Реляционная база данных, которая превосходит многие существующие по производительности и функциональности (рекомендуется вместо mariadb для полноценных глобальных Проектов)
sudo apt update -y && sudo apt upgrade -y && sudo apt install htop screen nftables nload neofetch vnstat smartmontools -y
- Вы научитесь легко и просто устанавливать или удалять Java на вашей системе
- Для начала зайдите в SFTP клиент и перейдите в раздел ~/opt (Можно любой, но этот в качестве основы)
- В Linux изначально придумана команда для упаковки архивов и распаковки архивов
- Использовать команду tar можно с использованием следующих параметров:
-c | --create — создать архив-a | --auto-compress — дополнительно сжать архив с компрессором который автоматически определить по расширению архива.-r | --append — добавить файлы в конец существующего архива-x | --extract, --get — извлечь файлы из архива-f | --file — указать имя архива-t | --list — отобразить список файлов и папок в архиве-v | --verbose — выводить список обработанных файлов-u | --update — Обновить архив новыми файлами-d | --diff, --delete — Проверить начилие архивов, удалить файл из архива
- Пример перемещения файлов по системе Linux
< ! > НЕ ОБЯЗАТЕЛЬНЫЕ КОМАНДЫ < ! >• mv /home/others/Test /others2Также вы можете использовать флаг* -v чтобы увидеть подроную информацию о процессе~ — тильда, дает понять системе, что это корневой каталог root (~)Пример: Вы юзер test, то при вводе cd, вы попадете в каталог /home/test/Т.е ~/others2 и т.д• mv -v ~/home/others/Test ~/others2Вы можете также использовать приставку sudo к команде mvТеперь вы знакомы с командой для перемещения файлов, но рекомендуется еще раз закрепить материалПопробуйте данные команды на каком-то пустом сервере, либо можете установить WSL2 на вашу системуРекомендуемый дистрибутив ОС для создания Проектов (Серверов) — Ubuntu, Debian
- Установка и распаковка архива при помощи "tar" — встроенная утилита упаковки/распаковки архива с файлами в Unixсистемах (Debian / Ubuntu / MacOS точно)
Архив уже должен быть установлен / перемещен в выбранную вами директориюЧтобы установить архив, вы можете использовать в качестве передачи файлов SFTP приложения на выборWinSCP / FileZilla / Dolphin (KDE) / Nautilus (GNOME) / Termius, либо же скачать сразу из консоли - wget <url>• curl https://api.papermc.io/v2/projects/paper/versions/1.20.2/builds/246/downloads/paper-1.20.2-246.jar -o paper.jarТеперь давайте его распакуем — после распаковки появится папка с нашей Java• tar -xvf archive.tar.gzНапример архив с Java называется:Скачиваем к примеру Adoptium JDK Java 17 под x86 / arm (ex: aarch64) платформу (Ubuntu, Debian, Arch, MacOS)Быстрая установка Adoptium Temurin Java Development Kit 17• cd /opt && sudo wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.6%2B10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz && tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz && ln -svf /opt/jdk-17.0.6+10/bin/java /usr/bin/java && java -version< ! > Название архива может быть иное < ! >Информацию об установке Java ниже можете не применять при вводе команды выше.Для распаковки архива потребувется ввести всего одну команду (Уже применена в примерной установке выше):• tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz• sudo wget <url>Из примера вышеКоманда для терминала -> curl https://api.papermc.io/v2/projects/paper/versions/1.20.2/builds/246/downloads/paper-1.20.2-246.jar -o paper.jarВ нашем случае это не PaperMC, а Java, поэтому:• sudo wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.6%2B10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gzТакже можно использовать утилиту CURL, заместо WGET• sudo curl <url> -o <output_file.extension>Все версии Java доступны по этой ссылке: https://github.com/orgs/adoptium/repositoriesМы рекомендуем использовать LTS релизы JDK 17 версииЕсли вы сделали всё правильно, то теперь вы получите информацию о вашей Java при вводе данной команды:• java -version
- Вы можете подробно изучить про команду ln и ее параметры
Линки — тоже самое что ярлык, те кто когда либо имели систему Windows / MacOS Могут знать про создание ярлыка при помощи клика ПКМ по файлуНо у нас ведь нет интерфейса, поэтому будем использовать команду "ln"*Кстати можно делать линки также через WinSCP — Клиент SFTP, FTP . . .Создаем ярлык (линк) для нашего исполняемого файлаВыполните команду:Заместо ... пишем название папки с Java — /opt/.../bin/java• ln -svf /opt/.../bin/java /usr/bin/javaЕсли вы все сделали правильно, то вы успешно установили Java на вашу машинуПроверить активную Java• java -versionЕсли вам вывело информацию о версии (Обычно это 2-3 строки), то все успешно.Иначе, проверяйте под какую архитектуру вы скачали JDK архив.
Мы не будем использовать бесполезные команды по типу: `sudo apt remove *java*`Для начала перейдем в корень сервера ~Далее переходим по пути ~/usr/binИспользуем удобный вам способ для поиска файлов — мне было удобно через WinSCP КлиентНаходим файл "Java" — он должен быть единственный в данной директории!Спокойно без боязни удаляем его — Готово вы удалили активную Java с вашего сервера, однакоОна все еще существует как папку и архив по пути ~/optМожно сделать это через команды• cd /usr/bin && sudo rm javaПроверить наличие активной Java, можно введя команду• java -versionПри успехе, у вас должно вывести ошибку.
В качестве альтернативы простым паролям, мы будем использовать Rsa_Keys с форматом шифрования SHAОткрываем приложение основной терминал системы (Kosnole, Yakuake или любой другой.)• ssh-keygen # По умолчанию генерирует 2048 Битный ключ• ssh-keygen -b 4096 # Генерация ключа с мощностью 4096 Бит (Лучше чем 2048)• ssh-keygen -b 8192 # Генерация ключа с мощностью 8192 Бит (Лучше чем 4096)Далее внимательно читаем логи, вы уже почти создали пару ключей на вашем ПК ~/users/ВашЮзер/.sshЧтобы передать ключ на наш сервер, воспользуемся данной командой (Вам потребуется войти с использованием "старого" пароля)Однако, мы всегда можем делать это вручную, но можно и через команду ниже:• cat ~/.ssh/id_rsa.pub | ssh USER@IP "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"< ! > Подсказка для всех < ! >Если вы не хотите использовать такой способ авторизации, то установите очень сильный, надежный, ультра мега крутоооой пароль :)Самое главное не палите своего юзера, ведь только тогда вас не будут брутить, Т.к попросту не будут знать пользователя для старта брутфорса. В таком случае рекомендую использовать Firewall.Давайте все же перейдем к нашим RSA ключикам.Вы можете вручную просто вписать информацию из публичного RSA ключа в '~/.ssh/authorized_keys'На своем устройстве получите информацию из файлы id_rsa.pub, например cat id_rsa.pubВпишите данную информацию из файла id_rsa.pub в файл authorized_keys вашего юзера Linux '~/.ssh/authorized_keys'При использовании данного способа, пожалуйста соблюдайте бдительность, чтобы ничего не сломать в вашей системеОстанется ввести только и вы примените изменения из подсказки выше:• sudo systemctl restart ssh... USER@IP ...Подставьте ваши данные заместо шаблонаUSER — Логин, ваш пользователь на серверной машинеIP — Ваш IP от серверной машиныВНИМАНИЕ! Мы начинаем отключать парольную аутентификацию на сервере, будьте аккуратны*Автор не несет ответвенности, если вы вдруг сломаете вход на вашу серверную машину,Обязательно создавайте бэкапы ваших игровых серверов*Перед этим убедитесь, что у вас установлены пакеты:• apt install sudo• apt install nano или apt install vimsudo — Нужно использовать если у вас основной user != rootnano — Удобный редактор текста в терминатеvim — Редактор немного посложнее, но если освоитесь - будет очень удобно его использоватьКак сохранить файл через nanoCTRL + X , Y (yes), ENTERКак сохранить файл через vimПосле открытия файла• vim file.txtДля ввода информации нажмите I (i), у вас появтся надпись снизу слева --INSERT-- или --ВСТАВКА--После чего заносите любую информацию в файл и нажимаете:CTRL C, далее пишите :wq:wq запишет и закроет файл.:q! просто закроет файл.Подробнее в документации к vim или nano.Готово, теперь вы умеете сохранять файлы, но все таки перейдем к отключению парольной авторизацииВводим команду:• sudo nano /etc/ssh/sshd_configВам нужно найти или написать данную строчку:PasswordAuthentication noПосле сохраняем файл (Мы используем nano в качестве редактора текстовых файлов)Далее нам необходимо перезагрузить SSH клиент< ! > Советуем проверить доступ к SSH < ! >Вернитесь в PowerShell и введите• ssh USER@IP• ssh USER@IP -i ./ключЕсли вы пытаетесь зайти через GNU Linux, то используйте команду ниже• sudo ssh USER@IP -i <key>... USER@IPПодставьте ваши данные заместо шаблонаUSER — Логин, ваш пользователь на серверной машинеIP — Ваш IP от серверной машиныДалее если все хорошо, перезагружаем ssh• sudo systemctl restart sshГотово, теперь зайти на вашу серверную машину через пароли не получится, используем только ключи авторизации (rsa)Для удобства входа через пароли можете использовать пакет данных sshpass
В основном подойдет для мониторинга и наблюдения за жизнедеятельностью вашей серверной машиныИнформация по системеСкорость интернета на вашем сервере (Установка + автозапуск)• sudo apt install speedtest-cli && speedtest-cliЧерез бенчмарк• sudo wget -qO- bench.sh | bash Информация о системе (Установка + автозапуск)• sudo apt install neofetch && neofetchВстроенные Linux команды (Примеры)• lscpu• lspci• uname -a
• nft -a list ruleset - посмотреть весь список таблиц, цепочек и правил с их хендлами• nft add table inet/ip/ip6 filter - добавить таблицу (создать) inet (ipv4+ipv6) / ip (ipv4) / ip6 (ipv6) filter (название таблицы)• nft delete table inet filter - удалить таблицу filter• nft add chain inet filter Name - создать пустую цепочку (не рекомендуется)• nft add chain inet filter Name { type filter hook input/output priority 0/1/2... \; policy accept \; } - как пример мы можем создать цепочку правил на вход или выход (input/output соответственно с приоритетами (ниже - главнее) и разрешающей политикой для входа пакетов• nft add chain inet filter Name { policy drop \; } - изменить политику цепочки на дроп пакетов (опасно, прежде чем добавлять данную политику на input и output необходимо разрешить SSH соединение для дальнейшего управления серверной машинокй, иначе вы потеряете доступ к машине и потребуется вход в рекавери режим или удаленную консоль (например, как у Hetzner Cloud)• nft add rule inet filter Name iifname "eth0" tcp dport 25565 accept/drop - мы разрешим или дропнем пакеты при подключении к порту 25565 TCP на интерфейсе eth0 Разрешаем входящие подключения к tcp и udb портамРазрешим подключаться к серверу по ssh, но только со своего компьютера:• sudo nft add rule inet filter input iifname eth0 ip saddr 172.28.80.14 tcp dport 22 counter acceptТо есть мы добавляем правило (addr rule) в таблицу filter и в цепочку input (inet filter input).Описываем правило:Для аргумента входящего интерфейса eth0 (iifname eth0),Для аргумента адреса источника 172.28.80.14 (ip saddr 172.28.80.14)Для аргумента tcp порта назначения 22 (tcp dport 22).Дальше указываем действия:Чтобы команда nft list ruleset показывала счетчик пакетов, которые проходят правило, добавляем counter,разрешаем прохождение таких пакетов (accept).После чего мы можем посмотреть отображение нашего правила или правил с помощью nft list• nft -a list rulesetВ своих правилах вы можете использовать следующее:ip saddr <ip-адрес> — исходящий ip адрес;ip daddr <ip-адрес> — ip адрес назначения (в цепочки input является адресом сервера к которому идет подключение);tcp sport <порт> — исходящий tcp порт;tcp dport <порт> — порт tcp назначения (в цепочки input является портом сервера к которому идет подключение);udp sport <порт> — исходящий udp порт;udp dport <порт> — порт udp назначения;iifname <имя интерфейса> — имя входящего интерфейса;oifname <имя интерфейса> — имя исходящего интерфейса.В примере разрешаем подключаться к сервисам только из локальной сети:• sudo nft add rule inet filter input iifname eth0 ip saddr 172.28.80.0/24 tcp dport {80, 443} counter acceptРазрешаем подключаться к loopback интерфейсуДля того чтобы сервисы внутри системы могли нормально работать, обязательно нужно разрешить все подключения к loopback интерфейсу:• sudo nft add rule inet filter input iifname lo counter acceptРазрешаем ping сервераРазрешим пинговать наш сервер, другими словами разрешим входящие icmp запросы:• sudo nft add rule inet filter input ip saddr 172.28.80.0/24 icmp type echo-request counter acceptЧтобы разрешить icmp нужно указать протокол и тип запроса:icmp type echo-request — когда кто-то пингует наш сервер ему посылаются запросы (echo-request);icmp type echo-reply — когда наш сервер кого-то пингует то в ответ он получает ответы (echo-reply).Меняем политику цепочки inputПосле того как мы добавили все разрешающие правила в цепочке input, поменяем её политику на drop:• sudo nft add chain inet filter input '{ policy drop; }'То есть смена политик выполняется таким образом:• nft add chain <семейство> <цепочка> <таблица> ‘{ policy accept; }’ — разрешающая политика;• nft add chain <семейство> <цепочка> <таблица> ‘{ policy drop; }’ — запрещающая политика.Также рекомендую всегда добавлять следующие условия/аргументы в фаерволл системыiifname "lo" accept - разрешаем локальный трафик для избежания конфликтов в системе в случае, если у нас policy dropct state established,related,new accept - разрешаем коннтрейкинг стейты на уже созданные, новые соединенияВ общем говоря, если вы блокируете весь входящий трафик, то вы должны вручную разрешать и настраивать вашу сеть под все ваши сервисы,поскольку любые блокировки входящего / исходящего трафика для нужного ПО могут повлиять на стабильную работы вашей системыСохранение правил и последующая их загрузка системой при ребуте или перезагрузке службы nftables:• echo '#!/usr/sbin/nft -f' > /etc/nftables.conf && echo 'flush ruleset' >> /etc/nftables.conf && nft list ruleset >> /etc/nftables.confЧтобы включить автоматическое сохранение правил и восстановление после запуска вашей системы, пропишите следующую команду• sudo systemctl enable nftables.service && sudo systemctl start nftables.service && sudo systemctl status nftables.service
Установка MySQL• sudo apt install mysql-serverУстановка MariaDB (Лучше чем MySQL, является его форком)• sudo apt install mariadb-serverВход в саму БД• sudo mysqlСоздать БД• CREATE DATABASE IF NOT EXISTS DATABASE_NAME;Удалить БД• DROP DATABASE IF EXISTS DATABASE_NAME;Список БД• SHOW DATABASES;Создать юзера• CREATE USER IF NOT EXISTS 'DATABASE_USER'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'DATABASE_USER_NEW_PASSWORD';Создать юзера для MariaDB• CREATE USER IF NOT EXISTS 'DATABASE_USER'@'localhost' IDENTIFIED BY 'DATABASE_USER_NEW_PASSWORD';Изменить пароль юзеру• ALTER USER 'DATABASE_USER'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'DATABASE_USER_NEW_PASSWORD';Изменить пароль юзеру для MariaDB• ALTER USER 'DATABASE_USER'@'localhost' IDENTIFIED BY 'DATABASE_USER_NEW_PASSWORD';Удалить юзера• DROP USER IF EXISTS 'DATABASE_USER'@'localhost';Список юзеров• SELECT user, host FROM mysql.user;Выдать права юзеру на определенную БД• GRANT ALL PRIVILEGES ON database_name.table_name TO 'DATABASE_USER'@'localhost';Выдать все права юзеру на все БД• GRANT ALL PRIVILEGES ON *.* TO 'DATABASE_USER'@'localhost';Список всех прав юзера БД• SHOW GRANTS FOR 'DATABASE_USER'@'localhost';Сделать дамп всей БД• mysqldump -uDATABASE_USER -pDATABASE_USER_PASSWORD --all-databases > DATABASE_CUSTOM_DUMP_NAME.sqlСделать дамп определенной БД• mysqldump -uDATABASE_USER -pDATABASE_USER_PASSWORD DATABASE_NAME > DATABASE_CUSTOM_DUMP_NAME.sqlЕсли вы хотите скопировать ваш дамп БД в другое место• cp /var/lib/mysql/DATABASE_CUSTOM_DAMP_NAME.sql /home/testuser/
Для начала создайте файл (Делать от sudo или root пользователя)sudo visudo -f /etc/sudoers.d/sudowpass• sudo nano /etc/sudoers.d/sudowpassВ файл sudowpass нужно вписать следующее:YourUserHere ALL=(ALL) NOPASSWD:ALLИли сделаем проще с автоопределением вашего юзера (Делать с правами рута) - $USER ALL=(ALL) NOPASSWD:ALL• touch /etc/sudoers.d/sudowpass && echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/sudowpass && cat /etc/sudoers.d/sudowpass
• scp USER@IP:/путь_для_файла_на_другой_сервер название_файлика_на_вашем_сервереИспользовать scp с кастомным портом SSHДля примера передадим файл test.dat на наш сервер Linux• scp -P 999 root@127.0.0.1:/home/path/to/path/test.dat /home/path/to/but/here/test.datУ вас запросит пароль, если вы используете ключи, то добавьте -i
Замените '$name' вашим новым кастомным юзером• adduser $nameВыдача прав на sudoers для нового юзераusermod -aG sudo $name• adduser $name sudoЗабрать группу sudoers у $name• deluser $name sudo
• sudo dpkg-reconfigure localesВыберите сначала Англ раскладку UTF=8После выберите пунктом выше C.UTF-8 и нажмите OkВы можете настроить языковые пакеты для себя.
- Не используйте плагины с левых сайтов! Хотя я и использую плагины из других источников, однако я имею определенныезнания для поиска дыр в них, поэтому использую в итоге плагины с чистым кодом. Вам определенно не рекомендую какновичкам (Возможно здесь имеются тоже люди, которые разбираются в этом, но всё таки статья ориентирована на начинающуюкатегорию пользователей.
Если вы хотите сохранить безопасность вашего сервера и ваших игроков,то лучше всего скачайте оригинальные плагины,а если нужно купить, то лучше купите их. Однако, автор также использует общедоступные и приватные ресурсы от BM сообщества администраторов/разработчиков
- Закрывайте все ненужные порты, а нужные открывайте!
Это конечно не критично, но лучше всего закрыть все или лишние порты и открыть только необходимые. После установки UFW / FIREWALLD они автоматически закрываются, кроме 22*, однако мы рекомендуем вручную открыть SSH/SFTP порт. Внимательно смотрите стандартные политики, которые ставятся вместе с пакетом при устанвоке
- Автор данного поста НЕ ПОДДЕРЖИВАЕТ низкокачественные панельные хосты из-за их серьезных ограничений илиуязвимостей. Если вы хотите создатькачественный Проект, то вам определенно стоит присмотреться к использованию выделенных (dedicated) или виртуальных (virtual dedicated/private) серверов с полнымдоступом SSH (Secure Shell).
- Использования контейнеризации на виртуальных или выделенных серверах приветствуется, но именно приобретение чисто контейнеров от ноунеймов - сразу же строго нет!
- Any mention &| exploitation of third-party resources &| products doesn't actually violate the copyrights of the companies &| organizations to which they belong, since all information in writing or software form types can be found in open sources of search engines, for example Yandex & Google.
About
AstralDocs is a collection of useful tools and knowledge.