Я хочу разрешать подключения только с определенных имен хостов вместо определенного IP (имена хостов определяются динамическим DNS).
Например, home.no-ip.org, mobile.no-ip .org и т. д.
Возможно ли это из-за коробки с чем-то вроде ufw или firewalld? Если нет, то какое решение может выглядеть - должен ли какой-нибудь скрипт делать nslookup на имени хоста каждый X часто, а затем drop & amp; добавить правила брандмауэра?
Вы можете сделать это с помощью 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
Я не уверен, что это сработает, но вы можете попробовать :) Это только пример правил и может используйте их как шаблон.
Вы можете сделать это с помощью 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
Я не уверен, что это сработает, но вы можете попробовать :) Это только пример правил и может используйте их как шаблон.