MENU

Fun & Interesting

Защита SSH-сервера — порты, ключи, port knocking, iptables

Диджитализируй! 76,625 lượt xem 11 months ago
Video Not Working? Fix It Now

Мой курс «Хардкорная веб-разработка» — 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

Comment