Shadowsocks на базе Ubuntu (VPS)

Шпаргалка по установке голого Shadowsocks без обфускации на дешевом VPS\VDS сервере с установленной Ubuntu 18.04 64bit Minimal (также подходит для Ubuntu 20.04)

арендуем VPS, с установленной на нем Ubuntu, поулчаем root-доступ, обновляем все

apt update && apt upgrade -y

Ставим таймзону по Москве
timedatectl set-timezone Europe/Moscow

Ставим SS-сервер и mc для удобства дальнейших шагов
apt install shadowsocks-libev mc

Правим конфиг ss-сервера
mcedit /etc/shadowsocks-libev/config.json

Внутри должно быть примерно такое

{
"server":["0.0.0.0"],
"mode":"tcp_and_udp",
"server_port":4848,
"local_port":1080,
"password":"хороший-длинный-пароль-с-буквами-цифрами-решетками",
"timeout":86400,
"method":"chacha20-ietf-poly1305",
"fast_open": true
}

Ставим SS-сервер в автозапуск, стартуем его и проверяем что все поднялось

systemctl enable shadowsocks-libev && systemctl restart shadowsocks-libev
systemctl status shadowsocks-libev

Настраиваем файрвол (порт для ss-сервера должен быть тот, что указан в конфиге «server_port») источник https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04-ru

apt install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 4848 # port for SS
ufw allow 22/tcp # port for ssh

ufw enable # this command enabling firewall !

Дополнительные команды:

ufw status numbered # вывод активных правил с нумерацией их по порядку
ufw delete 6 # удалить правило под номером 6
ufw allow from 5.5.5.5/29 to any port 22
# разрешить соединения с 5.5.5.5/29 на 22 порт
ufw allow from 5.5.5.5 to any # разрешить соединение с 5.5.5.5 на любой порт

Для оптимизации быстродействия, начиная с ядра 4.11.хх задействуем BBR

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

Проверка BBR должна дать четыре YES

sysctl net.ipv4.tcp_available_congestion_control | grep -q 'bbr' && echo '1 Yes'; sysctl net.ipv4.tcp_congestion_control | grep -q 'bbr' && echo '2 Yes'; sysctl net.core.default_qdisc | grep -q 'fq' && echo '3 Yes'; lsmod | grep bbr | grep -q 'tcp_bbr' && echo '4 Yes'

Ставим Fail2ban (блокировка IP в файрволе после нескольких неуспешных попыток входа в определенный сервис, https://shadowsocks.org/en/wiki/Setup-fail2ban.html )

apt install fail2ban

Создаем свой фильтр для SS-сервера

tee /etc/fail2ban/filter.d/shadowsocks-libev.conf > /dev/null <<EOF
[INCLUDES]
before = common.conf

[Definition]
_daemon = ss-server

failregex = ^\w+\s+\d+ \d+:\d+:\d+\s+%(__prefix_line)sERROR:\s+failed to handshake with <HOST>: authentication error$

ignoreregex =

datepattern = %%Y-%%m-%%d %%H:%%M:%%S
EOF

правим конфиг

mcedit /etc/fail2ban/jail.d/defaults-debian.conf

Внутри должно быть что-то такое

[sshd]
enabled = true
maxretry = 3
findtime = 3600
bantime = 84600

[shadowsocks-libev]
enabled = true
filter = shadowsocks-libev
port = 4848
logpath = /var/log/syslog
maxretry = 3
findtime = 3600
bantime = 3600

Запускаем Fail2ban и проверяем его статус относительно конкретного сервиса

systemctl restart fail2ban
systemctl enable fail2ban
systemctl status fail2ban
fail2ban-client status shadowsocks-libev

Если нужно разбанить конкретный IP используем следующую команду

fail2ban-client set shadowsocks-libev unbanip 55.55.55.55

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Post Navigation

Яндекс.Метрика