МЕНЬШЕ СЛОВ, БОЛЬШЕ ДЕЛА!

- А когда тебя не было, ты где-нибудь был?
- Угу.
- Где?
- Там, - сказал Ёжик и махнул лапой.
- Далеко?
Ёжик съёжился и закрыл глаза.

Сервер под замком...

2011/21/02

Сервер под замком!

Основной способ администрирование Linux-серверов является работа через SSH. Поэтому SSH нужно защищать в самую первую очередь.

Предлагаю реализация идеи динамического открытия доступа к 22 порту , при предварительном
обращении telnet-ом на определенный сетевой порт (в примере 333 — открыть
доступ и 334 — закрыть). Идея реализована средствами iptables, без привлечения
дополнительных утилит и анализаторов логов.

# Создаю цепочку с именем SSH

iptables -N SSH

# Правило по умолчанию в INPUT — DROP

iptables -P INPUT DROP

# Всё что пришло на 22 порт — в цепочку SSH

iptables -A INPUT -p tcp --dport 22 -j SSH

# Всё что пришло на 333 порт — в цепочку SSH

iptables -A INPUT -p tcp --dport 333 -j SSH

# Всё что пришло на 334 порт — в цепочку SSH

iptables -A INPUT -p tcp --dport 334 -j SSH

Разделения на цепочки сделано для своего удобства, от этого можно и отказаться.

Теперь заполняем цепочку SSH.

# Проверяем на наличие имени «SSH» у IP адреса устанавливающего соединение на 22 порт.
# И если оно присутствует — то ACCEPT

iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 22 -m recent --rcheck --name SSH --rsource -j ACCEPT

# Устанавливает имя SSH любому IP адресу с которого пришло новое TCP соединение на указанный порт. (порт 333)

iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 333 -m recent --set --name SSH --rsource -j DROP

# Удаляет имя «SSH» с IP адреса установившего соединение на этот порт. (порт 334)

iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 334 -m recent --remove --name SSH --rsource -j DROP

Насладимся итоговым результатом:

Делаем:

telnet ip_address_or_domain_name 333

После чего спокойно подключаемся по SSH.

Когда прекращаем работу закрываем за собой 22 порт:

telnet ip_address_or_domain_name 334


Таким образом получаете защищенное соединение с сервером!!!