Как разрешить подключения только с определенных имен хостов (IP-адреса могут меняться из-за динамического DNS)?

Я хочу разрешать подключения только с определенных имен хостов вместо определенного IP (имена хостов определяются динамическим DNS).

Например, home.no-ip.org, mobile.no-ip .org и т. д.

Возможно ли это из-за коробки с чем-то вроде ufw или firewalld? Если нет, то какое решение может выглядеть - должен ли какой-нибудь скрипт делать nslookup на имени хоста каждый X часто, а затем drop & amp; добавить правила брандмауэра?

0
задан 19 July 2017 в 15:15

2 ответа

Вы можете сделать это с помощью ip-таблиц.

Набор команд будет примерно таким:

очистить существующие цепочки

sudo iptables --flush sudo iptables --delete-chain

разрешить loopback

sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT

разрешить всем ICMP

sudo iptables -A INPUT -p icmp --icmp-type any -j ACCEPT sudo iptables -A OUTPUT -p icmp -j ACCEPT

разрешить установленные соединения

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

доступа из home.no-ip.org и порта 80

sudo iptables -A INPUT -p tcp --dport 80 -m string --string "Host: home.something.com" --algo bm -j ACCEPT

, тогда правило для всего входящего трафика из mobile.no-ip.org

sudo iptables -A INPUT -m state --state NEW -s mobile.no-ip.org -j ACCEPT

разрешить SSH для любого

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

запретить все принимать правила выше

sudo iptables -A INPUT -j DROP

политики по умолчанию

sudo iptables -P INPUT DROP sudo iptables -P OUTPUT ACCEPT

save

sudo service iptables save

Я не уверен, что это сработает, но вы можете попробовать :) Это только пример правил и может используйте их как шаблон.

1
ответ дан 18 July 2018 в 10:02

Вы можете сделать это с помощью ip-таблиц.

Набор команд будет примерно таким:

очистить существующие цепочки

sudo iptables --flush sudo iptables --delete-chain

разрешить loopback

sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT

разрешить всем ICMP

sudo iptables -A INPUT -p icmp --icmp-type any -j ACCEPT sudo iptables -A OUTPUT -p icmp -j ACCEPT

разрешить установленные соединения

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

доступа из home.no-ip.org и порта 80

sudo iptables -A INPUT -p tcp --dport 80 -m string --string "Host: home.something.com" --algo bm -j ACCEPT

, тогда правило для всего входящего трафика из mobile.no-ip.org

sudo iptables -A INPUT -m state --state NEW -s mobile.no-ip.org -j ACCEPT

разрешить SSH для любого

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

запретить все принимать правила выше

sudo iptables -A INPUT -j DROP

политики по умолчанию

sudo iptables -P INPUT DROP sudo iptables -P OUTPUT ACCEPT

save

sudo service iptables save

Я не уверен, что это сработает, но вы можете попробовать :) Это только пример правил и может используйте их как шаблон.

1
ответ дан 24 July 2018 в 19:29

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

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