「iptables ステートフルパケットインスペクション」の版間の差分
提供: セキュリティ
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | + | [[iptables]] では、 state モジュールを使用し、ステートフルインスペクションの[[ファイアーウォール]]を実現できます。 | |
− | + | ||
− | + | ||
− | [[iptables]] では、 state | + | |
'''読み方''' | '''読み方''' | ||
行9: | 行6: | ||
== 概要 == | == 概要 == | ||
− | |||
接続の状態については、 [[iptables 接続状態]]を参照してください。 | 接続の状態については、 [[iptables 接続状態]]を参照してください。 | ||
− | |||
== 使い方 == | == 使い方 == | ||
− | + | [[iptables]] でステートフルインスペクションを使用するには、 [[iptables]] のステートモジュールを使用し、ステートごとにフィルターします。 | |
− | [[iptables]] | + | |
− | + | ||
== ssh のアクセスをステートフルで許可する == | == ssh のアクセスをステートフルで許可する == | ||
− | |||
これは、 [[ssh]] のアクセスを受け付ける例です。 | これは、 [[ssh]] のアクセスを受け付ける例です。 | ||
行36: | 行28: | ||
[[SYN]] ビットがたっているかどうかは、 --syn オプションで確認できます。 | [[SYN]] ビットがたっているかどうかは、 --syn オプションで確認できます。 | ||
--syn を指定した場合、[[SYN]] ビットがたっているパケットのみがマッチします。 | --syn を指定した場合、[[SYN]] ビットがたっているパケットのみがマッチします。 | ||
− | |||
== NEW ステートのときに SYN ビットがセットされていないパケット == | == NEW ステートのときに SYN ビットがセットされていないパケット == | ||
− | |||
ステートが NEW であるのに、 SYN ビットがたっていない([[SYNパケット]]ではない)パケットは、不要なパケットです。 | ステートが NEW であるのに、 SYN ビットがたっていない([[SYNパケット]]ではない)パケットは、不要なパケットです。 | ||
行48: | 行38: | ||
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP | -A INPUT -p tcp ! --syn -m state --state NEW -j DROP | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== NEW ステートで SYN/ACK ビットがセットされたパケット == | == NEW ステートで SYN/ACK ビットがセットされたパケット == | ||
− | |||
[[TCPシーケンス番号予測攻撃]] (シーケンスナンバー予測、Sequence Number Prediction) が使われることがあります。 | [[TCPシーケンス番号予測攻撃]] (シーケンスナンバー予測、Sequence Number Prediction) が使われることがあります。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行56: | 行44: | ||
-m state --state NEW -j REJECT --reject-with tcp-reset | -m state --state NEW -j REJECT --reject-with tcp-reset | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | * [[ | + | * [[ssh]] |
− | + | {{iptables}} | |
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2016年1月11日 (月) 21:44時点における最新版
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
関連項目
- ssh
- iptables
- iptables のインストール
- iptables のテーブル
- iptables のサービスのコントロール
- iptables のコマンドラインオプション
- iptables のルールを確認する
- iptables の設定ファイル
- iptables の設定の変更
- iptables のターゲット
- iptables ログを出力する
- iptables アクセス回数を制限する
- iptables 接続状態
- iptables ステートフルパケットインスペクション
- iptables が動かない場合
- iptables ICMPのタイプ
- iptables icmp echo requestを許可する
- iptables DNSを許可する
- iptables HTTPとHTTPSを許可する
- iptables sshを許可する
- iptables の設定例
- ufw (Uncomplicated FireWall)、iptablesのフロントエンド
- ファイアーウォール