SiteGuardを設置したらfirewallとphpMyAdminの許可設定をしよう

# SiteGuardを設置したらfirewallとphpMyAdminの許可設定をしよう

SiteGuardを設置した直後だとfirewallでアクセスをはじかれたり、phpMyAdminでのDB編集がブロックされたり、躓いたのでメモる:pencil2:

## 作業手順

 1. SiteGuardをインストールする
 2. firewallで9443ポート開放する
 3. phpMyAdminで作業できるようにSiteGuardのシグニチャ設定する

https://siteguard.jp-secure.com/product/siteguard-server-edition/howto/install/

## SiteGurardをインストール

動作環境にjava1.8.0が必要なのでインストール。

```
$ sudo yum -y install java-1.8.0-openjdk
```

[公式サイト](https://siteguard.jp-secure.com/product/siteguard-server-edition/)でユーザ登録して、インストール用ファイルをダウンロードする。
ダウンロードしたファイルをFTPなどでユーザディレクトリにアップロードし、rpmファイルからインストールする。

```
$ rpm -Uvh siteguard-server-edition-X.XX-X.x86_64.rpm 
```
|オプション|説明|
|:---|:---|
|–U|パッケージのアップグレード(最新版に更新)}
|–v|処理中のパッケージ名表示|
|–h|進捗状況を表示|

インストール後にセットアップファイルを実行

```
# cd /opt/jp-secure/siteguardlite/
# ./setup.sh
please enter Apache Config File. [/etc/httpd/conf/httpd.conf] -->　[apacheの設定ファイルのパス。空欄でOK]
Apache Config File=[/etc/httpd/conf/httpd.conf]
is correct? [yes]|no -->　[空欄]

please enter Apache Binary File (httpd). [/usr/sbin/httpd] -->　[apacheの実行ファイルのパス。空欄でOK]
Apache Binary File (httpd)=[/usr/sbin/httpd]
is correct? [yes]|no -->　[空欄]

Is the Web server registered in systemd?
please select. [yes]|no -->　[apacheの動作を制御しているシステムデーモン名。空欄でOK]

please enter Apache service name. [httpd] -->　[システムデーモンで使用しているapacheのサービス名。空欄でOK]
Apache service name=[httpd]
is correct? [yes]|no -->　[空欄]

do you want to use the web administrative console?
* to use the console, you will need JDK or JRE is installed.
please select. [yes]|no -->　[Webでの管理画面を使用するか。Javaが必要。空欄でOK]

please enter JDK or JRE directory. [/usr/lib/jvm/jre-1.8.0] -->　[Javaのディレクトリパス。空欄でOK]
JDK or JRE directory=[/usr/lib/jvm/jre-1.8.0]
is correct? [yes]|no -->　[空欄]

please enter the port number of the web console for https.
please enter port number. [9443] -->　[管理画面で使用するポート番号。空欄でOK]
port number=[9443]
is correct? [yes]|no -->　[空欄]

please enter the addresses allowed to access the web console for https.
ex:192.168.1.100 10.0.0.0/24
please enter allowed addresses. [all] --> [管理画面へのアクセス許可するIPアドレス。空欄でOK]
allowed addresses=[192.168.0.0/24 192.168.0.93]
is correct? [yes]|no -->　[空欄]

do you change the ssl certificate files?
please select. yes|[no] -->　[SSLサーバー証明書のパス。空欄でOKだが、SSLはできなくなる。]
update server config file done.
update Makefile done.
------------------------------------------------------
  Starting services...
------------------------------------------------------
Starting Tomcat(WebUI for SiteGuard Server Edition):       [  OK  ]
Starting Notify Service:                                   [  OK  ]

Apache restart. Are you sure? [yes]|no -->　[空欄]
Stopping :                                                 [  OK  ]
------------------------------------------------------
  clear tmp files
------------------------------------------------------
removing tmp files ...
done.
starting web server ...
Starting :                                                 [  OK  ]
Apache restart done.
------------------------------------------------------
  finished SiteGuard Server Edition setup
------------------------------------------------------
  Please access following URL for starting service.
  https://localhost.localdomain:9443/
  (default user:admin, default password:admin) 

------------------------------------------------------
  SiteGuard Server Edition setup done...
------------------------------------------------------
```

基本は各設定はデフォルトのままでOK。
ただし、管理画面へのIP制限や管理画面のSSL対応をしたい場合は該当項目のところで設定が必要。
再度セットアップファイルを実行すると必要に応じて、設定変更が可能。

## firewallで9443ポート開放する

デフォルトでは9443ポートがあてがわれるが、firewallの設定でhttp(80)/https(443)/ssh(22)しかポートを開放していないので、開放ポートを追加する。

9443ポートを開けるサービスとしてsiteguardを新規に作る。

```
# vim /etc/firewalld/services/siteguard.xml
```

```/etc/firewalld/services/siteguard.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SiteGaurd Server Edition</short>
  <description>Configure SiteGuard Server Edition using the web administration screen.</description>
  <port protocol="tcp" port="9443"/>
  <port protocol="udp" port="9443"/>
</service>

```

9443ポートを開けるサービスとしてsiteguardを読み込むためにfirewall を更新。

```
# firewall-cmd –reload
```

追加したsiteguardサービスを恒久的に有効化する

```
$ sudo firewall-cmd --add-service=siteguard --zone=public --permanent
```

再起動し設定を反映する

```
$ sudo firewall-cmd --reload
```

ゾーン情報の確認。publicゾーンにservicesが追加されていることを確認する。

```
$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens2f1
  sources: 
  services: dhcpv6-client http https siteguard ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
```

### phpMyAdminで作業できるようにSiteGuardのシグニチャ設定する

https://[サーバーホスト名（またはIPアドレス）]:9443にアクセスしてログインし、管理アカウント情報を変更する。

|デフォルト||
|:---|:---|
|ID|admin|
|Password|admin|

検査機能を有効にする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/6b0d59db-af0c-650d-8389-32ca097ed3cc.png)
↓[適用]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/b14a4036-630e-44d9-b76e-68e29247efc7.png)

http://[サーバーホスト名（またはIPアドレス）]にアクセスして、正しく表示されることを確認し、http://[サーバーホスト名（またはIPアドレス）]/WAF-TEST-SIGNATURE/で検査機能によって検出した検出メッセージが表示されることを確認する。
Apacheの設定で、”ErrorDocument 403″を指定している場合は、ErrorDocumentで指定したメッセージが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/02e330c1-24b6-8a8f-d442-c9806dad6ccc.png)

ログにhttp://[サーバーホスト名（またはIPアドレス）]/WAF-TEST-SIGNATURE/でブロックされた痕跡が残っていることを確認する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/25f9320b-957b-654c-7fd7-ed0b8ad1f7bf.png)


シグネチャ検査（定義された設定ファイルと実際のアクセスなどの挙動を照らし合わせて検査する手法）で使用するファイルの自動更新を有効にする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/fce5f70f-ff09-351a-775b-8f0b74545b0f.png)

設定のバックアップ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/c92ef5df-9813-907c-177c-351b47351b61.png)

phpMyAdminでの操作を許可するために、カスタムシグニチャを追加する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310125/84020327-8ffd-42a7-d1eb-1b8c084ee637.png)

検査対象
接続元IPアドレス：192.168.0.*の場合は ^192\.168\.0\.
URL：phpMyAdminによる操作の場合は /phpmyadmin/
複数のIPアドレスからの許可をしたい場合は各IPごとにルールを付与すること。（複数の条件はANDで判定されるため）


### お疲れさまでした。