Shorewall

提供: ArchWiki
2016年1月6日 (水) 02:40時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Shoreline Firewall (通称 "Shorewall") は Netfilter を設定するための高準位ツールです。

一連の設定ファイルでエントリを使用してファイアウォールやゲートウェイの要件を定義すると、Shorewall は設定ファイルを読み込んで iptables のユーティリティを利用し、要件に沿うように Netfilter を設定します。

Shorewall は専用のファイアウォールシステム、複数の機能を併せ持ったゲートウェイ/ルーター/サーバー、あるいはスタンドアロンの GNU/Linux システムで使うことができます。Shorewall は Netfilter の ipchains 互換モードを使わないので、Netfilter の接続状態トラッキング機能を利用することが可能です。

インストール

shorewall パッケージをインストールしてください。

設定

以下の設定は Shorewall ウェブサイトの two-interface ドキュメント を元にしています。

shorewall パッケージに付属しているサンプル設定ファイルを利用します:

# cp /usr/share/doc/shorewall/Samples/one-interface/* /etc/shorewall/     # If you have a desktop-type system with a single network interface
# cp /usr/share/doc/shorewall6/Samples6/one-interface/* /etc/shorewall6/  # If you have a desktop-type system with a single network interface, pkg shorewall6
# cp /usr/share/doc/shorewall/Samples/two-interfaces/* /etc/shorewall/    # If you have a router with two network interfaces
# cp /usr/share/doc/shorewall/Samples/three-interfaces/* /etc/shorewall/  # If you have a router with three network interfaces

/etc/shorewall/interfaces

使用しているイーサネットデバイスの名前に合うようにインターフェイスの設定を変更して、ローカルネットワークで DHCP 通信を許可します。/etc/shorewall/interfaces を編集:

ビフォー:

net     eth0          dhcp,tcpflags,nosmurfs,routefilter,logmartians
loc     eth1          tcpflags,nosmurfs,routefilter,logmartians

アフター:

net     wan          dhcp,tcpflags,nosmurfs,routefilter,logmartians
loc     lan          dhcp,tcpflags,nosmurfs,routefilter,logmartians

/etc/shorewall/policy

ポリシーファイルを編集してルーター (Shorewall を設定するマシン) からインターネットへのアクセスを許可します。/etc/shorewall/policy を編集:

ビフォー:

###############################################################################
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST

loc             net             ACCEPT
net             all             DROP            info
# THE FOLLOWING POLICY MUST BE LAST
all             all             REJECT          info

アフター:

###############################################################################
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST
$FW             net             ACCEPT
loc             net             ACCEPT
net             all             DROP            info
# THE FOLLOWING POLICY MUST BE LAST
all             all             REJECT          info

/etc/shorewall/rules

DNS ルックアップは dnsmasq で処理 (実際は転送) するので、Shorewall で通信を許可する必要があります。/etc/shorewall/rules に以下の行を追加:

#       Accept DNS connections from the local network to the firewall
#
DNS(ACCEPT)     loc              $FW

/etc/shorewall/masq

ネットワークインターフェイスを外部 (WAN) ネットワークに接続しているインターフェイスに変更して、IP もローカルネットワークで使っている IP に変える:

eth0        192.168.1.0/24

SSH

任意: インターネット上のコンピュータから SSH でルーターに接続できるようにしたい場合、以下の行を追加:

#       Accept SSH connections from the internet for administration
#
SSH(ACCEPT)     net             $FW         TCP      <SSH port used>

ポートフォワーディング (DNAT)

  • /etc/shorewall/rules: LAN 上の IP 10.0.0.85 にウェブサーバーがある場合の例です。"外部" IP のポート 5000 からアクセスすることができます:
DNAT        net        loc:10.0.0.85:80        tcp        5000

/etc/shorewall/shorewall.conf

上記の変更を完了したら、設定ファイル /etc/shorewall/shorewall.conf で以下を変更することで Shorewall を有効化:

ビフォー:

STARTUP_ENABLED=No

アフター:

STARTUP_ENABLED=Yes

詳しくは man ページ を参照。

起動

shorewall.service起動有効化してください。