Top > L2透過型(bridge)構成でSquid(2.6)+ClamAVウィルスフィルタ構築

キーワード: Linux squid clamav squidclamav proxy プロクシ L2 レイヤ2 透過 トランスペアレント transparent bridge br0 iptables ウィルスゲートウェイ 設定


やりたいこと

既存のネットワーク環境に, 構成を変更することなくLinuxの レイヤ2透過型ウィルスゲートウェイ(squid+clamav+bridge)を追加したい.

               (Internet)
                   |
         [Router/Firewall/L3SW]
                   |            192.168.1.254
                   |
                   |            eth0: bridge
            [*VirusGateway*]    br0 : 192.168.1.251
                   |            eth1: bridge
                   |
                   |
                 [L2SW]
                   |
  ---------------------------------------
  |                  |                  |
[Client]           [Client]           [Client]
eth0:192.168.1.11  eth0:192.168.1.12  eth0:192.168.1.13
gw :192.168.1.254  gw :192.168.1.254  gw :192.168.1.254

この構成で, VirusGatewayを追加する.
この構成の最大のメリットは, 数十台・数百台もあるクライアントPCのブラウザや ゲートウェイの設定を一切行わず, 最小限の停止時間でゲートウェイサーバを 導入できることである.

構成概要

  • クライアント端末は, 192.168.1.254(Router)がデフォルトゲートウェイとして設定されている
  • クライアントRouterの間にVirusGagewayサーバを設置し, Bridge設定よより, クライアントと外部を通過する通信をすべて中継させる.
  • クライアントから外部に送出される, TCP Port80(HTTP)通信を VirusGateway がiptablesのREDIRECTにより, localhostの squidに向け直す.
  • squidはクライアントが欲しいがっているURLのデータを代理取得し, ClamAVのウィルスフィルタ で安全性をチェックしてからクライアントにデータを渡してやる.
  • 安全性チェックの結果, 危険と判断された場合は, 代替ページを渡してやる.

必要なもの

bridge 設定

まずはbridge設定をおこない, eth0 と eth1 で, パケットが完全に透過することを確認する.

eth0設定

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
HWADDR=01:02:03:04:05:0A
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0

eth1設定

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
HWADDR=01:02:03:04:05:0B
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0

br0 設定

DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.1.251
NETMASK=255.255.255.0

ネットワーク設定

# vi /etc/sysctl.conf
--
net.ipv4.ip_forward = 1
--

編集後, 再起動する. 再起動が面倒な場合は下記を実行する.

# echo 1 > /proc/sys/net/ipv4/ip_forward

brctlで設定を確認する

# /etc/init.d/network restart
# brctl show

br0のinterface欄に eth0, eth1 が入っていれば問題ない.

つないでみる

  • eth0にL2SWを接続する
  • eth1にテスト用Clientを接続(直結)する.
  • テスト用Clientが問題無く外と通信出来ることを確認する(PINGやHTTP通信)

clamav設定

設定ファイルを書く.

# vi /etc/clamd.conf
----
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
MaxThreads 50
ReadTimeout 300
User clamav
AllowSupplementaryGroups yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanMail yes
ScanArchive yes
ArchiveBlockEncrypted no
----

起動する.

# /etc/init.d/clamd start

テストする.

# cd /tmp
# wget http://www.eicar.org/download/eicar.com
# clamdscan eicar.com
/tmp/eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.039 sec (0 m 0 s)

FOUNDと出力があれば成功.

iptables設定

# iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

この設定により, テストクライアントからのPort 80リクエストは, localhostの3128にリダイレクトされる.
ひと通りテストが完了したら, port443の設定も含めて

/etc/sysconfig/iptables

に記述する.

squid設定

設定ファイルを書く.

# vi /etc/squid/squid.conf
visible_hostname squid.princo.org

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

acl mynet src 192.168.0.0/255.255.0.0
http_access allow mynet

#url_rewrite_program /usr/local/bin/squidclamav
#url_rewrite_children 15
#url_rewrite_access deny localhost

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_access deny to_localhost
icp_access allow all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid

url_rewrite*設定は, squidclamavとの連携設定. テストしてから有効にしたいので, コメントアウト状態にしておく.

起動する

# /etc/init.d/squid start

テストする

テストクライアントから適当に http://google.com なんかを閲覧し, 正常に閲覧できるかを確認する.

squidclamav導入と設定

準備

マニュアルを見ると,

You need libcurl 7.12.1 at least and a standard install of regex.

と書いてあるので curl-devel を導入しておく.

ここから最新版を入手

http://sourceforge.net/projects/squidclamav/

展開してインストールする

# tar xfvz squidclamav-4.0.tar.gz
# cd squidclamav-4.0/
# ./configure
# make
# make instal

ウィルスを検知したときの警告ページを設置

# cp clamwarn.cgi /var/www/html
# chmod 755 /var/www/html/clamwarn.cgi
  • このホストでApacheが動作している必要がある.
  • 設置したパス, URIでcgiが実行可能な必要がある.

Apacheの設定は割愛させていただく.

設定ファイルを書く

# vi /etc/
squid_ip 127.0.0.1
squid_port 3128
logfile /var/log/squidclamav.log
redirect http://127.0.0.1/clwarn.cgi
debug 0
force 1
stat 1
clamd_local /var/run/clamav/clamd.sock
clamd_port 3310
timeout 60
regexi ^.*\.zip$
regexi ^.*\.com$
regexi ^.*\.gz$
content ^.*\/.*$

clamd_socketclamd_portは, clamd.confで書いた内容にあわせる.

squid.confを再設定

# vi /etc/squid/squid.conf
url_rewrite_program /usr/local/bin/squidclamav
url_rewrite_children 15
url_rewrite_access deny localhost

コメントアウト状態にしておいた, url_rewrite_*コメントアウトをはずす.

起動する

# /etc/init.d/squid restart

接続テスト

テストクライアントから ブラウザでテストする.
テストウィルス

http://www.eicar.org/download/eicar.com

を閲覧したりする.


コメント

最新の20件を表示しています。 コメントページを参照

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White


新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS