Как я могу разрешить ssh-соединение из IP-подсети через порт 10022, используя iptables?

Мне нужно настроить сервер с публичным IP-адресом для тестирования пропускной способности, и у меня уже есть скрипт для отбрасывания всего входящего трафика, за исключением портов, которые мне нужны. Я изменил порт ssh по умолчанию (22) на другой (назовем его XXXXX; извините за паранойю, но нас только что взломали на прошлой неделе).

Итак, мой вопрос: как я могу разрешить диапазон IP-адресов для ssh на сервер через этот конкретный порт?

Сценарий, который я упоминал ранее:

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT

Так что мне просто нужно добавить диапазон ip, чтобы я мог ssh удаленно.

2
задан 20 September 2013 в 23:25

1 ответ

Используйте опцию -s в iptables. Он принимает IP вида nnn.nnn.nnn.nnn или с маской (nnn.nnn.nnn.nnn/nnn.nnn.nnn.nnn или nnn.nnn.nnn.nnn/nn). Так, например, чтобы разрешить соединения из nnn.nnn.nnn. *, Вы можете написать

iptables -A INPUT -s nnn.nnn.nnn.0/255.255.255.0 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT

или

iptables -A INPUT -s nnn.nnn.nnn.0/24 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT

(см., Например, здесь для расчета маски сети )

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

В целом, хотя я никогда не находил работу с iptables напрямую очень приятной, можно быстро потерять обзор. Я бы, наверное, пошел за чем-то вроде shorewall .

0
ответ дан 20 September 2013 в 23:25

Другие вопросы по тегам:

Похожие вопросы: