Skip to content

Instantly share code, notes, and snippets.

@froop
Last active June 12, 2021 12:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save froop/b36c88e37b18672ee698e8f6c3eb24f1 to your computer and use it in GitHub Desktop.
Save froop/b36c88e37b18672ee698e8f6c3eb24f1 to your computer and use it in GitHub Desktop.
[Linux][iptables] 特定IPアドレス+ポートへのTCPしか許されないクライアント
# /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# 特定のIPアドレス&ポート以外との送受信を破棄
-A INPUT ! -s 172.31.1.10/32 -j DROP
-A OUTPUT ! -d 172.31.1.10/32 -j DROP
-A INPUT -p tcp ! --sport 8081 -j DROP
-A OUTPUT -p tcp ! --dport 8081 -j DROP
# 接続確立後の送受信を全て許可
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
# 接続確立要求(SYN)の送信を許可
-A OUTPUT -p tcp -m tcp --syn -m state --state NEW -j ACCEPT
# 送信エラー(Type 3, 11)の受信を許可
-A INPUT -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A INPUT -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
COMMIT

TCP における state パラメータの意味

NEW

新たに接続を開始するパケット
※通常はSYNパケット

ESTABLISHED

確立済の接続を使用するパケット
※IPアドレス&ポートが同一

RELATED

確立済の接続に関連するパケット
※ポート相違 (ftp-data 等)、ICMP (Type 3, 11)

参考

Chapter 7. ステート機構 - Iptablesチュートリアル 1.2.2
https://straypenguin.winfield-net.com/ipttut/output/statemachine.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment