Я хочу позволить соединения только от определенных имен хостов вместо определенным IP (имена хостов определяются динамическим DNS).
Например, home.no-ip.org, mobile.no-ip.org, и т.д.
Этот возможный out-of-the-box с чем-то как ufw или firewalld? В противном случае, на что решение могло бы быть похожим - некоторый сценарий должен сделать nslookup на имени хоста каждый X часто, затем отбросить и добавить правила брандмауэра?
Можно сделать это с IP таблицами.
Набор команд будет чем-то вроде этого
очистите существующие цепочки
sudo iptables --flush
sudo iptables --delete-chain
позвольте обратную петлю
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
сохранить
sudo service iptables save
Я не уверен, что это будет работать, но можно попробовать :) Это - только пример правил и может использовать их как шаблон.