Мне нужно настроить сервер с публичным 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 удаленно.
Используйте опцию -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 .