LoginSignup
4
1

More than 3 years have passed since last update.

iptablesで外部への接続を遮断する

Last updated at Posted at 2019-09-07

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

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1