SiteGuard Server EditionでIPアドレスベースのアクセス制限を行う

SiteGuard Server Editionを使って、IPアドレスベースのアクセス制限を行えると聞いたので検証してみます。

検証環境

  • Vagrant(vbox)
  • apache2.4
  • SiteGuard Server Edition 5.00-1

インストール

マニュアルに従ってインストールします。

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7"

  config.vm.synced_folder "./data", "/vagrant"

  config.vm.network "private_network", ip: "192.168.56.10"

  config.vm.provision "shell", inline: <<-SHELL
    yum -y update
    yum -y install kernel-headers kernel-devel gcc httpd glibc perl wget unzip openssl make file java-1.8.0-openjdk java-1.8.0-openjdk-devel fontconfig policycoreutils-python mod_ssl
    timedatectl set-timezone Asia/Tokyo
    localectl set-locale LANG=ja_JP.utf8
    systemctl start httpd
    cd /vagrant/ && yum localinstall -y ./siteguard-server-edition.rpm
    cd /opt/jp-secure/siteguardlite/ && echo y | sudo ./setup.sh
  SHELL
end

(dockerで作ってもよかったかも)

カスタムシグネチャの設定

デフォルトで設定してあるカスタムシグネチャのサンプルを参考に設定してみます。

設定ファイル /opt/jp-secure/siteguardlite/conf はこんな感じ

ON      FILTER:60               sample-02       PATH    PCRE_CASELESS,COUNTER(10:3)     /login\.php             頻度判定で、パスワードアタックを行う接続元をフィルタする

この設定では、 /login.php へ10秒間に3回以上アクセスするとブロックされるようになります。

ブロックしてみる

ローカルのURL https://192.168.56.10/login.php に10秒間に3回以上アクセスしてみます。

こんな感じでブロックされました。

ログにはこんな感じで書き込まれます。

1655071402.297996      0 192.168.56.1 TCP_MISS/000 0 GET http://192.168.56.10/login.php - DIRECT/192.168.56.10 - DETECT-STAT:WAF:RULE_SIG/PART_PATH//CUSTOM//sample-02::/login.php:: ACTION:FILTER: JUDGE:FILTER:0: SEARCH-KEY:1655071402.297996.0:

まとめ

今回はローカルでSiteGuard Server EditionのインストールとIPアドレスベースのアクセス制限を行う検証をしました。 カスタムシグネチャを一つ追加するだけで簡単に設定できることがわかりました。

今回はこの辺で