SoftLayer の 無料ファイアウォール APFは使えるか ?

カスタマーポータルからサーバーをオーダする時に、無料のファイアウォールとして APF Software Firewall for Linux を選択できるんだけど、本当に使えるのか？　というエンジニアとしての素朴な疑問に、素直に調べてみた。

![スクリーンショット 2015-09-30 21.38.07.png](https://qiita-image-store.s3.amazonaws.com/0/42829/7b80eee9-30d2-d662-5e16-295b0ded0860.png)

# Ubuntu 14.04 
起動しようとすると、次のメッセージが表示されて起動できない。

```
root@generic:/etc/apf# apf -s
apf(7218): {glob} activating firewall
apf(7258): {glob} kernel version not equal to 2.4.x or 2.6.x, aborting.
apf(7218): {glob} firewall initalized
```
この原因は、カーネルのバージョンがミスマッチなんだね。 プロビジョニングされる APF 2.4系と2.6系にしか対応してない様だ。 以下の様にUbuntu14.04のカーネルは 3.13 となっているので動かない。 

```
root@generic:~# uname -a
Linux generic 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```
このAPFは、[R-fx Networks] (https://www.rfxn.com/) が開発とメンテを行なっていて、このサイトにある最新版のCHANGELOGには、カーネル3.xに対応とあるので、このサイトからダウンロードして使えそうだ。


# Ununtu 12.04
Debian系は、新しいものを積極的に取込むから、カーネルのバージョンも既に3.x系なので、同じ理由で動作しない。

```
root@ubuntu12:~# uname -a
Linux ubuntu12 3.2.0-86-virtual #124-Ubuntu SMP Wed Jun 17 21:58:13 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```
試すまでも無いけど、下記のとおりでした。

```
root@ubuntu12:~# apf -s
apf(1189): {glob} activating firewall
apf(1229): {glob} kernel version not equal to 2.4.x or 2.6.x, aborting.
apf(1189): {glob} firewall initalized
root@ubuntu12:~# 
```


# CentOS7 
これも同じ問題で動かないね。

```
[root@centos7 ~]# uname -a
Linux centos7 3.10.0-229.7.2.el7.x86_64 #1 SMP Tue Jun 23 22:06:11 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```
試してみるとそれ以前の問題も含まれている。やってみなきゃわからない！

```
[root@centos7 ~]# apf -s
/etc/apf/internals/internals.conf: 行 29: /sbin/ifconfig: そのようなファイルやディレクトリはありません
apf(2368): {glob} activating firewall
/etc/apf/internals/internals.conf: 行 29: /sbin/ifconfig: そのようなファイルやディレクトリはありません
/etc/apf/internals/internals.conf: 行 29: /sbin/ifconfig: そのようなファイルやディレクトリはありません
apf(2408): {glob} kernel version not equal to 2.4.x or 2.6.x, aborting.
apf(2368): {glob} firewall initalized
```

# CentOS6
これは対応してると思うけど、どうかな? やっぱり動作した！

```
[root@centos6 ~]# apf -s
apf(2583): {glob} activating firewall
```
カーネルも今やレガシーな2.6系なので問題ないって事ですね。

```
[root@centos6 ~]# uname -a
Linux centos6.softlayer.com 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```


# 対策は？
Ubuntu や Debian 系には、 ufw という iptables の非常に優れたフロントエンドのソフトがあり、リポジトリにも含まれ保守もされているので、ufw を利用すれば良い。 CentOS7の対策が無いので、これを何とかしないといけない。 そこで、APFの最新版をダウンロードして、動作するか確認してみる。


```
[root@centos7 ~]# wget http://www.rfxn.com/downloads/apf-current.tar.gz
```
初期状態では ifconfig が入っていないから、追加しておく。

```
[root@centos7 apf-9.7-2]# yum install net-tools
```
tar ファイルを展開して、その中にあるREADMEに従ってインストールする。

```
[root@centos7 apf-9.7-2]# ./install.sh 
```
動作確認すると、無事起動！

```
[root@centos7 apf-9.7-2]# apf -s
apf(25347): {glob} activating firewall
```

# Ubuntu でも動作するか?
ダウンロードして、インストール・スクリプトを実行するだけで、すんなり入った。

```
root@ubuntu14:~/apf-9.7-2# ./install.sh 
Installing APF 9.7-2: Completed.

Installation Details:
  Install path:         /etc/apf/
  Config path:          /etc/apf/conf.apf
  Executable path:      /usr/local/sbin/apf
```
起動も問題ない。

```
root@ubuntu14:~/apf-9.7-2# apf -s
apf(6584): {glob} activating firewall
```


# まとめ
APFを最新版をダウンロードしたら、ちゃんと動くじゃないの、まいったなこりゃ!?
SoftLayerは、もともとベンチャーなので、技術力ある人だけ使ってというスタンスがあって、片鱗が残ってるね〜