
iptables は、起動後、たとえば 30 秒など、一定の秒数後に確立された出力セッションを自動的にドロップできますか? ただし、宛先ポート 80 と 443 のみに制限したいです。目的は、Chrome、Teamviewer などの動作中のアプリケーションに属する、未使用の確立された TCP 接続をドロップすることです。最近使用したモジュールと制限モジュールを試しましたが、成功しませんでした。IPTables には、接続の期間によって接続を制限する機能がないか、私が何かを知らないのでしょうか?
私はすでにいくつかの関連トピックを読みました: https://stackoverflow.com/questions/20327518/need-to-drop-established-connections-with-iptables
iptables - X 時間後に特定の確立された接続をドロップする
等々。
スクリプトやアプリケーションについて教えていただけませんか? IPT では実行できないのでしょうか?
私のホーム テーブル:
iptables は、起動後、たとえば 30 秒後に、確立された出力セッションを自動的にドロップできますか? ただし、宛先ポート 80 と 443 のみに制限したいと考えています。目的は、Chrome、Teamviewer などの動作中のアプリケーションに属する、未使用の確立された TCP 接続をドロップすることです。最近使用したモジュールと制限モジュールを試しましたが、成功しませんでした。IPTables には、接続の期間によって接続を制限する機能がないか、私が何かを知らないのでしょうか?
私はすでにいくつかの関連トピックを読みました: https://stackoverflow.com/questions/20327518/need-to-drop-established-connections-with-iptables
iptables - X 時間後に特定の確立された接続をドロップする
等々。
スクリプトやアプリケーションについて教えていただけませんか? IPT では実行できないのでしょうか?
私の家のテーブル:
echo Kernel modules
#
modprobe ip_conntrack
modprobe ip_conntrack_ftp
################################################################################
echo Reset iptables
#
iptables -F
iptables -F -t nat
iptables -F -t raw
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t raw
iptables -X -t mangle
iptables -Z
iptables -Z -t nat
iptables -Z -t raw
iptables -Z -t mangle
################################################################################
echo Default policy
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
################################################################################
echo Logging INPUT,OUTPUT
#
iptables -A INPUT -j LOG --log-prefix="INPUT chain"
iptables -A OUTPUT -j LOG --log-prefix="OUTPUT chain"
################################################################################
echo Allow local
#
iptables -A INPUT -i lo -s 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -o lo -d 127.0.0.0/8 -j ACCEPT
################################################################################
echo Allow icmp out
#
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow port 53 out
#
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 \
-m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535 \
-m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow ports 20,21 out
#
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 \
--dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 \
-m multiport --dports 20,1024:65535 \
-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -m multiport --sports 20,21,1024:65535 \
--dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow ports 80,443 out
#
iptables -A OUTPUT -p tcp --sport 1024:65535 -m multiport --dports 80,443 \
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -m multiport --sports 80,443 \
--dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow port 123 out
#
iptables -A OUTPUT -p udp -m udp --sport 123 \
--dport 123 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 123 \
--dport 123 -m state --state ESTABLISHED -j ACCEPT
################################################################################
#
##iptables -A INPUT -j REJECT
##iptables -A FORWARD -j REJECT
##iptables -A OUTPUT -j REJECT
答え1
いいえ、参照:http://linux.die.net/man/8/iptablesこれだけあります(あなたが求めているものではありません):
... 時間
これは、パケットの到着時刻/日付が指定された範囲内にある場合に一致します。すべてのオプションは任意です。
--timestart value 'value' より後の場合にのみ一致します (含む、形式: HH:MM、デフォルト 00:00)。
--timestop value 'value' より前である場合にのみ一致します (含む、形式: HH:MM、デフォルトは 23:59)。
--days listofdays 今日が指定された曜日のいずれかである場合にのみ一致します。(形式: Mon,Tue,Wed,Thu,Fri,Sat,Sun; デフォルトは毎日)
--datestart date 'date' より後の場合にのみ一致します (包括的、形式: YYYY[:MM[:DD[:hh[:mm[:ss]]]]] ; h、m、s は 0 から始まり、デフォルトは 1970)
--datestop date 'date' より前の場合のみ一致します (含む、形式: YYYY[:MM[:DD[:hh[:mm[:ss]]]]] ; h、m、s は 0 から始まり、デフォルトは 2037)
...
「時間」ではなく「期間」を求めています。何かをハックすることもできますが、ソースでの修正が最も速く、最も強力です。
カーネルにパッチを適用して再コンパイルすることができます。
見るhttp://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html「conntrack patch」セクションの「ctexpire」コマンド。コードを少し書いて、カスタム フィルターでカーネルにパッチを当てることに慣れている場合は、当社がサポートします (そうでない場合、答えは「いいえ、それはできません。そのようなフィルター コマンドはありません」です)。