阻止除某些端口和特定 IP 地址之外的所有内容,服务器无法执行 HTTP GET

阻止除某些端口和特定 IP 地址之外的所有内容,服务器无法执行 HTTP GET

我无法让这个firewall.sh脚本运行。它目前不允许我获取文件'https://index.docker.io/v1/repositories/library/ubuntu/images' 所以要么是我的 DNS 有缺陷,要么是我阻止了某些我不知道需要的东西。

我的目标是允许 server1 仅通过 HTTP、HTTPS、DNS、ICMP 与外界通信并进行 Git-Pulls/Pushs,但仅通过 MONGODB (27017) 与特定服务器通信。其他一切都应被阻止。

#reset everything previously
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# DRop everything execpt outgoing
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# make exceptions for ssh && http && dns
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport dns -j ACCEPT
iptables -A INPUT -p udp --dport dns -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
#GIT
iptables -A INPUT -p tcp --dport 9418 -j ACCEPT
#allow icmp
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT


#HOSTS-INTERCOMMUNICATION FIREWALL
declare -a friendlyHosts=("176.2.2.2" "188.1.1.1" "133.4.4.4")
iptables -N privilege # create a new chain
for i in "${friendlyHosts[@]}"
do
    echo "$i"
    iptables -A privilege --src "$i" -j ACCEPT
done

#mongodb
iptables -I INPUT -m tcp -p tcp --dport 27017 -j privilege
iptables -I FORWARD -m tcp -p tcp --dport 27017 -j privilege

iptables -A privilege -j DROP  # drop everyone else


iptables-save

此脚本将我锁定在服务器之外。任何提示都非常感谢!

答案1

你真让人困惑dportsport

例如,如果您想获取 DNS 回复,可以这样做:

iptables -A INPUT -p udp --dport dns -j ACCEPT

应该 :

iptables -A INPUT -p udp --sport dns -j ACCEPT

你几乎在所有地方都犯了这个错误。

相关内容