ModSecurity 3.0 on CentOS 6.9 (3)

先日の続き。3回目。

■ 環境

  • ModSecurity 3.0
  • CentOS 6.9
  • Vagrant 2.1.1
  • macOS High Sierra

■ 前回までの手順を整理

  1. install autoconf-2.69
  2. install automake-1.15
  3. error at ModSecurity build.sh

■ m4

前回`build.sh`を実行したところ下記のようなメッセージが出力されていた。

[root@localhost ModSecurity]# ./build.sh
  :
configure.ac:82: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/yajl.m4:4: PROG_YAJL is expanded from...
configure.ac:82: the top level
configure.ac:87: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libgeoip.m4:10: PROG_GEOIP is expanded from...
configure.ac:87: the top level
configure.ac:91: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libmaxmind.m4:10: PROG_MAXMIND is expanded from...
configure.ac:91: the top level
configure.ac:96: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/lmdb.m4:4: PROG_LMDB is expanded from...
  :

今までと同様に`m4`が古いからなのかな。ちなみにversionを確認すると下記であった。

[root@localhost ModSecurity]# m4 --version
m4 (GNU M4) 1.4.13
  :

`m4`の現時点での最新は”1.4.18“のようである。

[root@localhost ~]# curl --silent http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.gz | tar zx
[root@localhost ~]# cd m4-1.4.18/
[root@localhost m4-1.4.18]# ./configure
  :
[root@localhost m4-1.4.18]# make && make install
  :

■ ModSecurity

再度`build.sh`を実行する。

[root@localhost ModSecurity]# ./build.sh
  :
configure.ac:82: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/yajl.m4:4: PROG_YAJL is expanded from...
configure.ac:82: the top level
configure.ac:87: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libgeoip.m4:10: PROG_GEOIP is expanded from...
configure.ac:87: the top level
configure.ac:91: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libmaxmind.m4:10: PROG_MAXMIND is expanded from...
configure.ac:91: the top level
configure.ac:96: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/lmdb.m4:4: PROG_LMDB is expanded from...
  :

消えてくれない…。さてなんでだろう?としばらく悩んだが、コンパイルの順番を再度考えてインストールし直してみた。

  1. m4
  2. autoconf
  3. automake

と思ったが…よくみたら”YAJL/GEOIP/MAXMIND/LMDB“と今回は対象外のところでの発生ではないか…。”warning“だし消えなくてもまぁとりあえずは良いだろう…。ということで一旦心が折れたのでここまで。

以上。

■ 関連

ModSecurity 3.0 on CentOS 6.9 (1)

ModSecurity 3.0 on CentOS 6.9 (2)

ModSecurity 3.0 on CentOS 6.9 (2)

先日の続き。2回目。

■ 環境

  • ModSecurity 3.0
  • CentOS 6.9
  • Vagrant 2.1.1
  • macOS High Sierra

■ 前回

  1. ModSecurity v3の build.sh でエラー
  2. automake を version up
  3. autoconf が必要そう…

■ automake

前回は書くのを飛ばしたので今回は少し戻って`automake`のversionを選択した経緯から。

インストールすることにしたversionは”1.15“である。現時点での最新版は”1.16.1“であるが”1.15“を選択したのは下記に記載されていた手順に沿ったからである。

Compilation recipes for v3.x
https://github.com/SpiderLabs/ModSecurity/wiki/Compilation-recipes-for-v3.x#centos-65-minimal

`automake`をインストールするにあたり`autoconf`が必要であることは前回判明した通り。

■ autoconf

`automake`の`configure`エラー時に記載されたversionは”2.65“以上であったが、前述のマニュアルには`autoconf`について記載されておらず最新をインストールすることにした。

[root@localhost ~]# curl --silent http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz | tar zx
[root@localhost ~]# cd autoconf-2.69/
[root@localhost autoconf-2.69]# ./configure
  :
[root@localhost autoconf-2.69]# make && make install

■ automake 再び

`autoconf`はインストールしたので再度`automake`を試みる。

[root@localhost autoconf-2.69]# cd ../automake-1.15/
[root@localhost automake-1.15]# ./configure
  :
[root@localhost automake-1.15]# make && make install

今回は`configure`でも問題なくインストールを完了できた。

■ ModSecurity

再度ModSecurityの`build.sh`を試みる。

[root@localhost automake-1.15]# cd ../ModSecurity/
[root@localhost ModSecurity]# ./build.sh
  :
configure.ac:82: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/yajl.m4:4: PROG_YAJL is expanded from...
configure.ac:82: the top level
configure.ac:87: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libgeoip.m4:10: PROG_GEOIP is expanded from...
configure.ac:87: the top level
configure.ac:91: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/libmaxmind.m4:10: PROG_MAXMIND is expanded from...
configure.ac:91: the top level
configure.ac:96: warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
build/lmdb.m4:4: PROG_LMDB is expanded from...
  :

今回は上記のような結果を得られた。`./build.sh`自体は正常終了しているようだが気持ち悪い感じがする。`m4`自体も古いようなのでこちらもインストールし直す事にした。

今回はここまで。更に続く。

以上。

■ 関連

ModSecurity 3.0 on CentOS 6.9 (1)

ハードリンクを検索

表題を行いたい。

■ 環境

  • Ubuntu 16.04

■ きっかけ

とあるファイルを`gzip`で圧縮しようとしたところ下記のようなエラーが出て圧縮できなかった。

$ gzip example.log
gzip: example.log has 1 other link -- unchanged
$

確認してみる。

$ ls -lh example.log
-rw-r----- 2 ubuntu ubuntu 1.2G Jun  7 09:42 example.log
$

確かにハードリンクが設定されているようである。さてどこからハードリンクされているのか、を調べたい。同じファイルがリンクされているので”inode“は一致するはずである。よって”inode“を元に検索する。

$ ls -li example.log
4066131 -rw-r----- 2 ubuntu ubuntu 1204065371 Jun  7 09:42 example.log
$
$ find /path/to/project -type f -inum 4066131
/path/to/project/logs/2018/06/example.log
/path/to/project/etc/log/example.log
$

上記のような結果が得られた。よって不要な方をまずは削除する。

$ rm /path/to/project/etc/log/example.log
$
$ ls -l example.log
-rw-r----- 1 ubuntu ubuntu 1204065371 Jun  7 09:42 example.log
$

これで`gzip`でも問題なく圧縮が可能であった。

以上。

ModSecurity 3.0 on CentOS 6.9 (1)

表題でいろいろハマったので、ハマったことを含めて残しておく。1回目。

■ 環境

  • ModSecurity 3.0
  • CentOS 6.9
  • Vagrant 2.1.1
  • macOS High Sierra

■ ModSecurity 3.0

VagrantのBoxは下記を使用している。

vagrant init centos/6

rootで作業をしてしまう。

$ vagrant ssh
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# yum install git
  :
[root@localhost ~]# git clone https://github.com/SpiderLabs/ModSecurity
  :
[root@localhost ~]# cd ModSecurity
[root@localhost ~]# git checkout -b v3/master origin/v3/master
Branch v3/master set up to track remote branch v3/master from origin.
Switched to a new branch 'v3/master'
[root@localhost ModSecurity]#
[root@localhost ModSecurity]# ./build.sh
./build.sh: line 6: libtoolize: command not found
./build.sh: line 7: autoreconf: command not found
./build.sh: line 8: autoheader: command not found
./build.sh: line 9: automake: command not found
./build.sh: line 10: autoconf: command not found
[root@localhost ModSecurity]#

必要なものをインストールする。

[root@localhost ModSecurity]# yum install libtool -y autoconf automake

再度`./build.sh`を実行。

[root@localhost ModSecurity]# ./build.sh
  :
configure.ac:47: warning: macro `AM_PROG_AR' not found in library
/usr/bin/m4:configure.ac:201: bad expression in eval: m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MAJOR " | awk {'print '} | sed 's/\"//g') + m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MINOR " | awk {'print '} | sed 's/\"//g')
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: autom4te failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
/usr/bin/m4:configure.ac:201: bad expression in eval: m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MAJOR " | awk {'print '} | sed 's/\"//g') + m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MINOR " | awk {'print '} | sed 's/\"//g')
autom4te: /usr/bin/m4 failed with exit status: 1
autoheader: '/usr/bin/autom4te' failed with exit status: 1
/usr/bin/m4:configure.ac:201: bad expression in eval: m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MAJOR " | awk {'print '} | sed 's/\"//g') + m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MINOR " | awk {'print '} | sed 's/\"//g')
autom4te: /usr/bin/m4 failed with exit status: 1
automake: autoconf failed with exit status: 1
/usr/bin/m4:configure.ac:201: bad expression in eval: m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MAJOR " | awk {'print '} | sed 's/\"//g') + m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep "define MODSECURITY_MINOR " | awk {'print '} | sed 's/\"//g')
autom4te: /usr/bin/m4 failed with exit status: 1
[root@localhost ModSecurity]#

上記のようなエラーで止まってしまった。

AM_PROG_AR“を調べてみると、どうやら`automake`のversionが古いようである。

[root@localhost ~]# curl --silent http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz | tar zx
[root@localhost ~]# cd automake-1.15/
[root@localhost automake-1.15]#
[root@localhost automake-1.15]# ./configure
  :
configure: error: Autoconf 2.65 or better is required.
[root@localhost automake-1.15]#

`autoconf`も必要だった…。

1回目はここまで。最後に正常に稼働した手順をまとめる予定。

以上。

■ 関連

ModSecurity 3.0 on CentOS 6.9 (2)

CentOS 6でgcc 4.8

表題を行いたい。

■ 環境

  • CentOS 6.9
  • Vagrant 2.1.1
  • macOS High Sierra

■ gcc

CentOS 6.9での`gcc`のversionは下記であった。

$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$

C++11“を使いたいことがあり、もう少し新しい`gcc`をCentOS 6.9で使用したい。

■ DevToolSet

調べると”DevToolSet“なるものがあるらしい。下記のようにして使用することができた。

$ cat > /etc/yum.repos.d/DevToolset.repo <<-"EOF"
[DevToolset-2]
name=RedHat DevToolset v2 $releasever - $basearch
baseurl=http://puias.princeton.edu/data/puias/DevToolset/$releasever/$basearch/
enabled=1
gpgcheck=0
EOF
$
$ yum install -y devtoolset-2-toolchain devtoolset-2-perftools
  :
$
$ scl enable devtoolset-2 bash
$
$ which gcc
/opt/rh/devtoolset-2/root/usr/bin/gcc
$
$ gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$

一時的に使用したいだけなのでこれで十分であった。

以上。