web-dev-qa-db-ja.com

ショアウォールでノックを使用

古い純粋なiptablesファイアウォール構成をshorewallセットアップに移行したいと思います。基本はわかりましたが、既存のノックされたセットアップを複製できませんでした。

  • いくつかのポートを開く 'tmpknock'チェーンがあります。ポート22、30秒間(複数の人が同時にログインしようとすると、tmpknockチェーンで同時に複数のIPが許可されます!)。
  • 'permknock'チェーンがあり、いくつかのポート(80など)を永久に開きますが、一度に1つのIPにしか開きません(これは、次は別のIPからノックしようとします-これにより、現在一般に公開されていないいくつかのサービスをテストできます)

/ etc/knockd.confの設定は簡単です:

[tmpAndPermKnock]
    sequence      = 10000,11000,12000
    seq_timeout   = 9
    tcpflags      = syn
    start_command = /sbin/iptables -I tmpknock -s %IP% -j ACCEPT; 
                    /sbin/iptables -F permknock;
                    /sbin/iptables -I permknock -s %IP% -j ACCEPT
    cmd_timeout   = 30
    stop_command  = /sbin/iptables -D tmpknock -s %IP% -j ACCEPT

これで、既存のチェーンからこれらのチェーンに簡単にリンクできます。例:

iptables -A open-in -p tcp --dport 22 -j tmpknock
iptables -A open-in -p tcp --dport 80 -j permknock

これを簡単な海岸壁のセットアップと統合するにはどうすればよいですか?私は本当に海岸壁から始めたばかりで、チェーンへのジャンプを実行する方法がわかりません。私は想像します、それはこのようなものになるでしょう:

/ etc/shorewall/rules動作しません):

#ACTION         SOURCE        DEST      PROTO      DEST
JUMP(tmpknock)  net           fw        tcp        22
JUMP(permknock) net           fw        tcp        80

...しかし、 http://shorewall.net/manpages/shorewall-rules.html ..にはJUMPアクションはありません。

4
Chris Lercher

これに対する良い解決策はないようです(booShorewall):-/ 2つのオプションがあるようです:

  1. PerlでカスタムShorewallモジュールを作成します。 最近の一致 ターゲットを使用するか、 手動チェーン を使用して、ノッキングを実装するモジュールの作成に関するドキュメントがいくつかあります。
  2. start拡張スクリプト (Shorewallがすべてのルールを設定した後に実行されます)を記述して、INPUTチェーンのノックチェーンにジャンプルールを挿入します。
4
mgorven