KhTech - Заметки

Рабочие заметки и инструкции

View the Project on GitHub

Инструкция по базовой настроке VPS сервера

Подготовка сервера

Меняем пароль рута

passwd root

Создаём пользователя

useradd anley
passwd anley
usermod -aG wheel anley

Устанавливаем вспомогательные программы

dnf check-update
dnf upgrade -y
dnf install -y epel-release
dnf install -y screen vim nftables

Меняем имя хоста

sudo hostnamectl set-hostname core
sudo vim /etc/hosts

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

sudo dnf install https://rpm.nodesource.com/pub_20.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
sudo vim /etc/yum.repos.d/nodesource-nodistro.reppo
gpgcheck=0
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y nsolid

Останавливаем стандартный файервол

systemctl stop firewalld
systemctl disable firewalld

Настраиваем файерволл

sudo systemctl enable nftables
sudo vim /etc/sysconfig/nftables.conf
table inet main {
        chain prerouting {
                type filter hook prerouting priority raw; policy accept;
        }

        chain input {
                type filter hook input priority filter; policy drop;
                iif "lo" accept
                ct state invalid drop
                ct state { established, related } accept
                tcp flags syn limit rate 50/second accept
                icmp type { destination-unreachable, echo-request, router-advertisement, router-solicitation, time-exceeded, parameter-problem } limit rate 10/second accept
                tcp dport { 22, 80, 443 } ct state new accept
                ip saddr 0.0.0.0/0 tcp dport 22323 ct state new accept
                ip saddr 0.0.0.0/0 udp dport 22324 ct state new accept
                tcp dport 22325 ct state new accept
                counter log prefix "input_drop: " reject
        }

        chain output {
                type filter hook output priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain postrouting {
                type filter hook postrouting priority mangle; policy accept;
        }
}
table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                oifname "ens3" ip saddr 10.8.0.0/24 counter masquerade
        }
}
sudo nft flush ruleset
sudo nft -f /etc/sysconfig/nftables.conf

Редактируем конфигурацию ssh

vim /etc/ssh/sshd_config.d/01-permitrootlogin.conf
PermitRootLogin no
vim /etc/ssh/sshd_config.d/02-port.conf
Port 22323
vim /etc/ssh/sshd_config.d/03-clientalive.conf
ClientAliveInterval 1800
ClientAliveCountMax 16
systemctl restart sshd

Настройка OpenVPN

sudo dnf install -y openvpn easy-rsa
sudo cp -ai /usr/share/easy-rsa/ /etc/openvpn/
sudo cd /etc/openvpn/easy-rsa/3/
sudo ./easyrsa init-pki
sudo ./easyrsa build-ca nopass
sudo ./easyrsa build-server-full server nopass
sudo ./easyrsa gen-dh
sudo openvpn --genkey secret ta.key
sudo cp /etc/openvpn/easy-rsa/3/pki/ca.crt /etc/openvpn/server/
sudo cp /etc/openvpn/easy-rsa/3/pki/issued/server.crt /etc/openvpn/server/
sudo cp /etc/openvpn/easy-rsa/3/pki/private/server.key /etc/openvpn/server/
sudo cp /etc/openvpn/easy-rsa/3/pki/dh.pem /etc/openvpn/server/
sudo cp /etc/openvpn/easy-rsa/3/ta.key /etc/openvpn/
sudo vim /etc/openvpn/server/server.conf
port 22324
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

Добавляем разрешения в системе

sudo vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sudo sysctl -p
sudo dnf install -y policycoreutils-python-utils
sudo vim /etc/selinux/config
SELINUX=enforcing
sudo semanage port -a -t ssh_port_t -p tcp 22323
sudo semanage port -a -t openvpn_port_t -p udp 22324
sudo ./easyrsa build-client-full anley-windows nopass
mkdir ~/ovpn-client/
sudo cp /etc/openvpn/easy-rsa/3/pki/issued/anley-windows.crt ~/ovpn-client/
sudo cp /etc/openvpn/easy-rsa/3/pki/private/anley-windows.key ~/ovpn-client/
sudo cp /etc/openvpn/easy-rsa/3/pki/ca.crt ~/ovpn-client/
sudo cp /etc/openvpn/ta.key ~/ovpn-client/
cd ~
sudo chown anley:anley ./ovpn-client/*

Клиентский конфиг

client
dev tun
proto udp
remote 0.0.0.0 22324
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
key-direction 1
verb 3

ca "E:\\proxy\\ca.crt"
cert "E:\\proxy\\main.crt"
key "E:\\proxy\\main.key"
tls-auth "E:\\proxy\\ta.key" 1
sudo systemctl restart openvpn-sever@sever

Добавляем некоторые альясы

vim ~/.bashrc
alias ll='ls -la'                       # Подробный список файлов с атрибутами
alias la='ls -A'                        # Список всех файлов, включая скрытые
alias l='ls -CF'                        # Список файлов с разбиением по типу
alias ..='cd ..'                        # Переход на уровень выше
alias ...='cd ../../../'                # Переход на три уровня выше
alias grep='grep --color=auto'          # grep с автоматической подсветкой
alias df='df -h'                        # df с удобочитаемыми размерами
alias du='du -h'                        # du с удобочитаемыми размерами
alias free='free -m'                    # Просмотр информации о памяти в мегабайтах
alias update='sudo dnf update -y'       # Обновление всех пакетов
alias mkdir='mkdir -pv'                 # Создание каталогов с выводом пути
alias h='history'                       # Просмотр истории команд
alias c='clear'                         # Очистка терминала
alias path='echo -e ${PATH//:/\\n}'     # Вывод переменной PATH построчно
alias untar='tar -zxvf'                 # Распаковка tar.gz файлов
alias wget='wget -c'                    # Загрузка файлов с возможностью продолжения
alias dfree='df -h --total'             # df с общим итогом по всем дискам
alias meminfo='cat /proc/meminfo'       # Просмотр информации о памяти
alias psa='ps aux'                      # Просмотр всех активных процессов
alias reboot='sudo systemctl reboot'    # Перезагрузка системы

source ~/.bashrc