Защита SSH-сервера — порты, ключи, port knocking, iptables
Мой курс «Хардкорная веб-разработка» — https://course.to.digital Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/ Telegram — https://t.me/t0digital 0:00 О port knocking 1:19 Что такое сетевые порты в TCP и UDP? 3:17 Замена стандартного порта SSH-сервера 4:24 Запрет SSH-входа по паролю 4:56 Что делать, если потеряешь SSH-ключи? 6:23 Запрет входа root 6:33 Port knocking и безопасность 8:52 Покупка сервера в Selectel 9:40 Создание SSH-ключа с паролем 11:16 Создание Linux-пользователя 12:43 Разрешаем SSH-вход пользователю 13:47 Базовая настройка SSH-сервера 15:51 Настройка port knocking с knockd, iptables и nmap 25:50 Ещё несколько возможностей iptables 26:30 Как сделать сервер непингуемым? 28:01 Выводы Команды из видео === Генерация SSH-ключей: ssh-keygen -t ed25519 Копирование публичного ключа: cat ~/.ssh/id_ed25519.pub | pbcopy Редактирование настроек SSH-сервера: sudo vim /etc/ssh/sshd_config Настройки: AllowUsers www PermitRootLogin no PasswordAuthentication no Port 45916 Рестарты SSH-сервера: sudo service ssh restart Установка knockd: sudo apt install -y knockd Редактирование его настроек: sudo vim /etc/knockd.conf Настройки: [options] UseSyslog Interface = enp3s0 [SSH] sequence = 7000,8000,9000 seq_timeout = 5 tcpflags = syn start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 45916 -j ACCEPT stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 45916 -j ACCEPT cmd_timeout = 60 Здесь enp3s0 это сетевой интерфейс, проверяется командой: ip a Автозапуск: sudo vim /etc/default/knockd START_KNOCKD=1 KNOCKD_OPTS="-i enp3s0" Сетевой интерфейс аналогично подставляется актуальный вместо enp3s0. Старт knockd: sudo systemctl start knockd sudo systemctl enable knockd sudo systemctl status knockd Настройка iptables и перманентное сохранение этих настроек: sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 45916 -j REJECT sudo apt install iptables-persistent sudo service netfilter-persistent save Просмотр настроек: sudo iptables -L --line-numbers Постучаться в три порта — 7000, 8000 и 9000 сервера с IP 46.148.229.113: for x in 7000 8000 9000; do nmap -Pn --max-retries 0 -p $x 46.148.229.113; done Сброс всех настроек iptables: sudo iptables -F Запрет ping хоста: sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP Удаление этого правила: sudo iptables -D INPUT -p icmp --icmp-type 8 -j DROP /****************** about ******************/ Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний: — Диджитализируй https://digitalize.team, разрабатываем сложные IT системы для бизнеса; — Salesbeat https://salesbeat.pro, комплексный модуль доставки для интернет магазинов. Telegram канал — https://t.me/t0digital ВК — https://vk.com/digitalize.team RuTube — https://rutube.ru/channel/24802975/about/ Дзен — https://dzen.ru/id/6235d32cb64df01e6e78c883