Прежде всего: я знаю этот старый вопрос: iptables разрешает имя домена dyndns и правила автоматического обновления. Но почему-то это мне не помогает.
Iptables на моем рабочем компьютере настроены на удаление всех запросов из Интернета, за исключением нескольких выбранных ip-адресов. Это связано с тем, что мы сталкиваемся с примерно 10 000 атак в день. Время от времени я хотел бы сдать в мой рабочий компьютер из дома.
Итак, я решил, что я зарегистрируюсь в . Iptables разрешает имена доменов домена dyndns и автоматического обновления.
и добавьте правило к /etc/iptables для этого dynalias myUser.dynalias.net:
# in /etc/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
# namesevers
-A RH-Firewall-1-INPUT -p 50 -d some.local.ip -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -d the.same.local.ip -j ACCEPT
# ...and so on...
# all connections already established (started outgoing from my machine)
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow local connections
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source some.local.ip/255.255.0.0 -j ACCEPT
# allow my dns
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source myuser.dynalias.net -j ACCEPT
# block all others (without answering - thus nobody is able to scan the network)
-A INPUT -p icmp --icmp-type echo-request -j DROP
-A RH-Firewall-1-INPUT -j DROP
COMMIT
Это работает до тех пор, пока мой домашний ip не будет сброшен каждый день в полночь. отбросить все запросы из Интернета . Я предполагаю, что я должен регулярно обновлять правило (например, используя cron). Мой вопрос: как я регулярно обновляю правило? По какой-то причине, когда я обновляю таблицу в текущей системе, используя:
sudo iptables -D RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source ip.that's.listed.by.-L.option -j ACCEP
sudo iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source myUser.dynalias.net -j ACCEP
Я не могу выполнить ssh на моем рабочем компьютере после этого Обновить. Единственное, что помогает, - это позвонить кому-то, чтобы перезагрузить мой рабочий компьютер. Как бы то ни было, изменения не будут вступать в силу без этой перезагрузки, несмотря на правильность правильного перечисления правила:
username@server:~/bin$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
DROP icmp -- anywhere anywhere icmp echo-request
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
# some stuff (e.g. nameserver)
# ....
DROP all -- anywhere anywhere
ACCEPT tcp -- 123-123-12-123.host.name.foo.bar.at anywhere state NEW tcp dpt:ssh
В этом листинге есть Как обновить правило на регулярной основе? at все - он просто не работает с ssh на рабочий компьютер.