我无法让这个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
你真让人困惑dport
。sport
例如,如果您想获取 DNS 回复,可以这样做:
iptables -A INPUT -p udp --dport dns -j ACCEPT
应该 :
iptables -A INPUT -p udp --sport dns -j ACCEPT
你几乎在所有地方都犯了这个错误。