Я использую IPTables на сервере API, чтобы заблокировать весь входящий трафик, кроме SSH, HTTP и HTTPS. Мне нужно иметь полный доступ к интерфейсу обратной связи для запуска beanstalkd
среди прочего, и мне нужен исходящий доступ по http, https и SSH для вызовов API к другим сервисам, а также для извлечения из github.
Я создал правила следующим образом:
iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
iptables -A INPUT -j DROP
iptables -L
выводит:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Несмотря на это, git pull
не может найти сервер, pinging google не работает и mailgun не отправляет. Запуск iptables -F
решает эти проблемы, и я не могу позволить себе иметь брандмауэр, который только мешает моему приложению работать полностью ...
Как я могу достичь того, что я пытаюсь выше?