1.はじめに
ipv6も使える環境だとだめだ。
知識が正しくないかも。
外部へのアクセス制限の方法を頑張って考えた。
2.新規接続のDROP
自ホストからのコネクション開始を禁止します1
2.1.TCP
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP -p tcp
2.2.UDP
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP -p udp
3.1.特定のポートが宛先になっている通信を禁止する
dportで宛先をアクセス禁止にします。
3.1.1.TCP only
iptables -A OUTPUT -p tcp --dport 80 -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p tcp --dport 443 -j REJECT --reject-with tcp-reset
3.2宛先のポートを範囲指定してdrop
単純にdropします。well-knownポートの例。 2
3.2.1.TCP
iptables -A OUTPUT -p tcp --dport 1:1023 -j DROP
3.2.2.UDP
iptables -A OUTPUT -p udp --dport 1:1023 -j DROP
4.HTTPの内容を吟味して落とす
httpのみ、HTTPリクエストを盗み見てアクセス禁止できます3 4 5
iptables -I OUTPUT -p tcp --dport 80 -m string --string "example.com" --algo kmp -j REJECT --reject-with tcp-reset
5.Docker内でも
Docker内でiptablesを使う。6
docker run -it --cap-add=NET_ADMIN ubuntu
6. まとめ
外部に勝手にアクセスされることがなくなります。
Webホスティングで使えそう。
おすすめ文献
https://unix.stackexchange.com/questions/203791/how-to-redirect-all-http-request-to-a-local-web-server
https://superuser.com/questions/505622/iptables-block-everything-except-http
-
https://superuser.com/questions/923512/how-can-i-block-all-outbound-connections ↩
-
https://superuser.com/questions/575912/redirect-block-outgoing-http-traffic-for-a-specific-url-in-ubuntu ↩
-
https://linuxsecurity101.com/2018/12/01/tips-and-tricks-blocking-http-requests-via-iptables-for-a-specific-domain/ ↩