「iptables ステートフルパケットインスペクション」の版間の差分

提供: セキュリティ
移動: 案内検索
行1: 行1:
<!--
 
vim: filetype=mediawiki
 
-->
 
 
[[iptables]] では、 state モジュールを使用し、[[ステートフルインスペクション]]の[[ファイアーウォール]]を実現できます。
 
[[iptables]] では、 state モジュールを使用し、[[ステートフルインスペクション]]の[[ファイアーウォール]]を実現できます。
  
行9: 行6:
  
 
== 概要 ==
 
== 概要 ==
 
 
接続の状態については、 [[iptables 接続状態]]を参照してください。
 
接続の状態については、 [[iptables 接続状態]]を参照してください。
  
 
== 使い方 ==
 
== 使い方 ==
 
 
[[iptables]] で[[ステートフルインスペクション]]を使用するには、 [[iptables]] のステートモジュールを使用し、ステートごとにフィルターします。
 
[[iptables]] で[[ステートフルインスペクション]]を使用するには、 [[iptables]] のステートモジュールを使用し、ステートごとにフィルターします。
  
 
== ssh のアクセスをステートフルで許可する ==
 
== ssh のアクセスをステートフルで許可する ==
 
 
これは、 [[ssh]] のアクセスを受け付ける例です。
 
これは、 [[ssh]] のアクセスを受け付ける例です。
  
行38: 行32:
  
 
== NEW ステートのときに SYN ビットがセットされていないパケット ==
 
== NEW ステートのときに SYN ビットがセットされていないパケット ==
 
 
ステートが NEW であるのに、 SYN ビットがたっていない([[SYNパケット]]ではない)パケットは、不要なパケットです。
 
ステートが NEW であるのに、 SYN ビットがたっていない([[SYNパケット]]ではない)パケットは、不要なパケットです。
  
行50: 行43:
  
 
== NEW ステートで SYN/ACK ビットがセットされたパケット ==
 
== NEW ステートで SYN/ACK ビットがセットされたパケット ==
 
 
[[TCPシーケンス番号予測攻撃]] (シーケンスナンバー予測、Sequence Number Prediction) が使われることがあります。
 
[[TCPシーケンス番号予測攻撃]] (シーケンスナンバー予測、Sequence Number Prediction) が使われることがあります。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行58: 行50:
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[iptables]]
+
{{iptables}}
* [[iptables 接続状態]]
+
<!-- vim: filetype=mediawiki -->

2014年2月20日 (木) 18:28時点における版

iptables では、 state モジュールを使用し、ステートフルインスペクションファイアーウォールを実現できます。

読み方

iptables ステートフルパケットインスペクション

概要

接続の状態については、 iptables 接続状態を参照してください。

使い方

iptablesステートフルインスペクションを使用するには、 iptables のステートモジュールを使用し、ステートごとにフィルターします。

ssh のアクセスをステートフルで許可する

これは、 ssh のアクセスを受け付ける例です。

確立しているセッションを ESTABLISHED,RELATED で許可します。 SYNビットが立っていて、NEW ステートの接続だけを sshd へのアクセスを許可します。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
 
-A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --syn --state NEW --dport ssh -j ACCEPT
COMMIT

SYN ビットがたっているかどうかは、 --syn オプションで確認できます。 --syn を指定した場合、SYN ビットがたっているパケットのみがマッチします。

NEW ステートのときに SYN ビットがセットされていないパケット

ステートが NEW であるのに、 SYN ビットがたっていない(SYNパケットではない)パケットは、不要なパケットです。

iptables は、 NEW ステートで SYN ビットのたっていないパケットであってもファイアーウォールを通過させます。

ログに出力し、 DROP する例です。

-A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW not syn: "
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

NEW ステートで SYN/ACK ビットがセットされたパケット

TCPシーケンス番号予測攻撃 (シーケンスナンバー予測、Sequence Number Prediction) が使われることがあります。

-A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
	-m state --state NEW -j REJECT --reject-with tcp-reset

関連項目