Защита SSH через port knocking

Защита SSH через port knocking
Photo by Kelly Sikkema / Unsplash

Иногда, по каким-то причинам необходимо закрыть какой-то порт так, чтоб к нему все же оставался доступ с любого IP адреса.
Например, регулятор требует, чтоб SSH порт был закрыт для всего мира.

На выручку приходит port knocking.

Итак, поставим knockd и настроим его так, чтоб SSH был закрыт, но открывался при попытке соединиться с последовательносью портов.

Установка knockd

sudo apt install knockd
sudo vim /etc/knockd.conf

Тут у нас есть уже настроенные правила, которые нам надо поправить. Меняем порты в которые мы будем стучаться, чтоб открылся наш SSH.

[openSSH]
	sequence    = 2233,2244,2255
	command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
...

[closeSSH]
	sequence    = 12322

Тут мы поменяли список портов и команде сменили -A и -I, что означает делать вставку правила файервола в начало списка правил, вместо того, чтоб добавлять его в конец.

Теперь нужно указать интерфейс, на котором knockd будет слушать попытки подключения. Для этого смотрим какой интерфейс мы будем использовать:

sudo ip addr
sudo vim /etc/default/knockd

Тут раскоментируем строку и вписываем правильное имя интерфейса:

...
KNOCKD_OPTS="-i ens18"

Iptables

Дальше настраиваем файервол:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT

и делаем его активным после перезагрузки:

sudo apt install iptables-persistent

При установке соглашаемся сохранить наши существующие правила файервола.

Осталось перезапустить сервис knockd и проверить как все работает.

sudo service knockd restart

Подключаемся:

telnet ip 2233
telnet ip 2244
telnet ip 2255
ssh ip

Вот и все. SSH порт откроется для вашего текущего IP адреса и пустит вас на сервер.

Чтоб закрыть порт нужно постучать в указанный порт:

telnet ip 12322

Read more

Самохостинг (часть 2) - Динамический роутинг на Keenetic

Самохостинг (часть 2) - Динамический роутинг на Keenetic

Допустим у нас есть роутер Keenetic. Нам нужно, чтоб некоторые сайты грузились через поднятый на нем туннель (это может быть Wireguard, L2TP или даже банальный Socks5 proxy). Например, нас забанил Youtube по нашему внешнему IP адресу 😉, но мы все равно хотим его смотреть, да не на телефоне, а на нормальном

Самохостинг - стиль жизни

Самохостинг - стиль жизни

Я тут и тут писал про свой домашний сервер, но нигде не упоминал, что есть еще один сервер в ДЦ, где хостятся сайтики и кучка еще разных сервисов. Да и времени прошло с момента написания тех статей не мало. Сервер тот остался в другой стране и, как результат, все, что

Мониторинг долгих запросов PostgreSQL в Prometheus

Мониторинг долгих запросов PostgreSQL в Prometheus

Предположим, что у вас есть PostgreSQL (AWS RDS или классический PostgreSQL server), Prometheus, postgres exporter и alertmanager с Grafana. Стоит задача присылать уведомления о том, что в Postgres подвис запрос. Причина и т.п. нас мало интересует. Нужно просто сказать всем, кому положено, что есть проблема и ее нужно решить.

Почему я всё ещё люблю Fish Shell

Почему я всё ещё люблю Fish Shell

В 2017 году я написала о том, как сильно люблю Fish Shell, и спустя 7 лет ежедневного использования, я нашла ещё больше причин для восхищения. Поэтому решила написать новый пост, где соберу старые и новые причины моей любви к этой оболочке. Сегодня я задумалась об этом, потому что пыталась понять,