Я устанавливаю новый новый VPS (с linode.com, если это имеет значение) с Ubuntu 16.04 LTS. Я написал следующий скрипт для iptables:
#!/bin/sh
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
Этот скрипт должен позволять только 22, 80 и 443. Это также разрешает исходящий DNS.
Я создал и назвал этот скрипт iptables.sh
от имени пользователя root и поместил его в /etc/network/if-pre-up.d
. Я также сделал chmod +x
.
Теперь после перезагрузки этот скрипт, похоже, не применяется. Я проверил это, выполнив iptables -S
, который дает:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Как мне прогрессировать отсюда? Я застрял прямо сейчас.
Обновить
Я понятия не имею, почему, но после переименования uptables.sh
в iptables
я не могу войти на свой сервер после перезагрузки. Это заставляет меня думать, что теперь скрипт действительно выполняется (а когда у него нет расширения .sh
, почему?) во время загрузки и есть ошибка в моем скрипте. Я так растерялся.