OpenSSL バージョンアップ

OpenSSL のバージョンアップの方法をメモ。OpenSSL 最新版は、OpenSSL-1.0.2e (2016年1月11日現在)

OpenSSL バージョン1.0.2d をソースからインストール – Qiita

上記サイトを参考に、バージョンを読み替えて、./config。

# wget http://www.openssl.org/source/openssl-1.0.2e.tar.gz
# tar xzvf openssl-1.0.2e.tar.gz
# cd openssl-1.0.2e
# ./config --prefix=/usr/local/ssl shared zlib
# make && make install
# mv /usr/bin/openssl /usr/bin/openssl.bak
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# openssl version

今回は、/usr/local/ssl ディレクトリにインストールしました。ポイントは、PHPのオプションも、

--with-openssl=/usr/local/ssl

と書き換えてリビルドする必要があることです。(じゃあ最初にやれよということですね、はい。)

リビルドがうまく行かない場合は、作業ディレクトリで、config.log でエラーをチェックしてgoogle に投げたり、make distcleanして makeをやり直してみましょう。私の場合は、yum install openssl-devel で追加したところwordpress/が一時、表示できなくなりOS再起動をしてなんとか復旧しました。

まとめ:リビルドは最悪のケースを考えてバックアップを万全にしましょう。

WordPress の更新エラー「要求されたリクエストを完了できる http トランスポートがありません」

WordPress 4.3.1 にバージョンアップされてから、プラグインのダウンロード先がhttps をサポートするようになったからでしょうか。更新エラーがでます。Google 検索をすると、curl openssl モジュールを有効にすると良いらしい。この1か月、いろいろ悩みましたが、PHPのリビルドをすることにしました。下記を参考にphp.ini を更新。

PHP5.4以降をソースビルド(apache2,mysqli対応) – Qiita

curlを組み込むために以下のサイトを参考に、インストール。

PHP用にcURLをインストール、設定する | 渋谷生活

PHPリビルドの呪文を唱えます。

# service apache stop
# cd /usr/local/src/php-5.6.14
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --includedir=/usr/include --with-config-file-path=/usr/local/lib --with-config-file-scan-dir=/etc/php.d --bindir=/usr/bin --sbindir=/usr/sbin --with-openssl=/usr/local/ssl --with-mysql --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-gd=shared --with-zlib --with-curl --with-xsl --enable-gd-native-ttf --with-gettext --with-libxml-dir=/usr/bin/xml2-config --enable-mbstring
# make && make install

途中 configure error が出たので、yum install libjpeg-devel freetype-devel libxslt-devel で追加のパッケージをインストール。無事、プラグインの更新に成功しました。

ポイントは、–with-curl –with-openssl オプションを付けたことです。

(Apache は、/usr/loccl/apache2/にインストールして以下サイトを参考に自動起動のシェルを作成。PHPインストール前にstopコマンドで停止する。) apache2.2 起動と自動起動設定

wordpress/ は、リビルド作業前にバックアップを![ダッシュボード] → [ツール] → [エクスポート] からファイルに保存。画像ディレクトリ、wordpress/wp-content/uploads/を保存。

プロセス別のメモリ消費量

余りにもメモリ使用量が激しいのでプロセス別にメモリ使用量を調べてみました。

プロセス毎のメモリ使用量を調べるコマンド – Hack Your Design!

$ ps alx  | awk '{printf ("%d\t%s\n", $8,$13)}' | sort -nr | head -10

memory_usage

318020  clamd
45264   /usr/bin/Xorg
31116   nautilus
28188   /usr/libexec/mysqld

clam AntiVirus が占有していました。cat /proc/meminfo で Inactive を調べてみると

meminfo

[root@stuffy ~]# cat /proc/meminfo
MemTotal:       12163576 kB
MemFree:         6102576 kB
Buffers:          220288 kB
Cached:          4599248 kB
SwapCached:            0 kB
Active:          2204440 kB
Inactive:        3308920 kB
Active(anon):     694044 kB
Inactive(anon):     4068 kB
Active(file):    1510396 kB
Inactive(file):  3304852 kB

3Gバイト。MemFree と合わせて9Gバイトなので、MRTG やfree コマンドで6Gバイトと表示されるのはMemFree のことなのですね。

SELinux によるWordPress のパーミッション設定

メディアライブラリへの画像追加
 wordpress アップロード中「この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか。」とエラーが出る。
プラグインのインストール
 ある時突然、プラグインのインストールをしようとして「ディレクトリを作成できませんでした。」とプラグインのインストールに失敗。
google で検索しても「パーミッションが悪い」「.htaccess を見直してみたら?」と言われいろいろ設定をいじっても解決しなかったので途方に暮れた

経験はありませんか。

httpdのドキュメントルートが通常とは違う場合、もしかしたら、SELinux のアップデートでポリシーが変わって書き込みが出来なくなったのかもしれません。

誤)# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress/wp-admin/uploads (/.*)?"

誤)# restorecon -R "/var/www/html/wordpress/wp-admin/uploads"

正)# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress/wp-content/uploads (/.*)?"

正)# restorecon -R "/var/www/html/wordpress/wp-content/uploads"
(uploads/ の他に、plugins/ themes/ ディレクトリも同様に設定が必要かもしれません

パーミッション、.htaccess、所有権のチェックでも問題がない場合、疑うべき選択候補ではあると思います。↓

CentOS7のSELinuxが有効な状態でhttpdからファイルに書き込みを行う設定

Linux Kernel バージョンアップ

yum の更新でLinux カーネルが、2.6.32-573.8.1.el6.x86_64 にバージョンアップされました。Wordpress のフォントも微妙に変わっていますね。

バージョンアップといえば話は変わりますが、Kaspersky を2013から2015にバージョンアップしたところ、一部のweb サイトが表示できなくなりました。2015からの追加機能でweb トラッキング防止機能が原因でした。詳しく調べてみると、[プロテクション] → [web トラッキング防止] → [カテゴリと信頼リスト] → [web ビーコンを使用した情報の収集をブロック] にチェックを入れているとニュースサイトのフィードがブロックされるようでした。

webbecon

Apache のBasic認証

HTTPD Apache Webサーバーにおいてディレクトリ以下にアクセスする際にhttpd.conf でユーザーIDとパスワードにて基本認証を施す設定

#vi /etc/httpd/conf/httpd.conf ↓(以下のディレクティブを追加
<Directory "/var/www/mrtg">
    AuthType Basic
    AuthName "Please Enter Your ID and Password."
    AuthUserFile /etc/httpd/conf/private_htpasswd
    Require Valid=user
</Directory>

パスワードファイル生成

# htpasswd -c /etc/httpd/conf/private_htpasswd <ユーザー名>
New password:   ←パスワード入力
Re-type new password:    ←パスワード確認

するとmrtg ディレクトリのファイルアクセスを登録ユーザーに制限できます。

通常、パスワードファイルをドキュメントルート以下に置かざるを得ない場合は、 .htaccess ファイル内にパスワードファイル、<パス>/.htpasswdを指定すると、.ht で始まるファイルへのアクセスを禁止する設定がhttpd.conf にありますので、強固なセキュリティになります。

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

net-SNMP-MRTG でシステム監視

ネットワークトラフィック監視ツール導入(NET-SNMP+MRTG) – CentOSで自宅サーバー構築 を参考ににしてグラフを作ってみました。最初は、スクリプトを作って

./mrtg.sh

すると、

ERROR: Line 9 (/var/www/mrtg) in CFG file
 (/etc/mrtg/mrtg.cfg) does not make sense

エラーで参っていましたが、こちらの本( CentOS7で作るネットワークサーバ構築ガイド 

41wQnrDdwnL__SX385_BO1,204,203,200_

を参考に、cfgmaker コマンドを打つとmrtg できました。今のところ、5分おきにcron でグラフ更新されるのかが心配ですね。
mrtg

(追記 2015年11月7日現在 グラフ更新されているようです。ServerView を入れていると4Gバイトのメモリをほとんど消費しているようなのでアンインストールしました。

ServerView Operation Manager をインストール

サーバー添付のServerView Suite をインストールしてみました。

20151101033039

 

JVM(Java Virtual Machine) は、ServerView(DVD1)付属のOpenJDKからインストールします。パスは、

# cd /media/UDF Volume/SVSSoftware/Software/Other_Tools/Java/Linux_x64

rpm -ivh jre-7u65-linux-x64.rpm

何故か付属のOpenJDKでは「Error:No JAVA found」エラーでJAVAコンパイラが見つからなかったのでOracleからインストール
Java SE Development Kit 8 – Downloads Linux x64 jdk-8u65-linux-x64.rpm
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

環境変数設定

# export JAVA_HOME=/usr/java/default
 # export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

以下コマンドでバージョン確認ができる他、バージョンの切り替えもできますが今回は、OpenJDK を使うことにします。

# java -version
# javac -version
# alternatives --config java

yumで必要なパッケージをインストール

compat-libstdc++-33.i686
cyrus-sasl-lib.i686
glibc.i686
gzip.x86_64
keyutils-libs.i686
krb5-libs.i686
libcom_err.i686
libcurl.i686
libgcc.i686
libidn.i686
libselinux.i686
libssh2.i686
libstdc++.i686
libtool-ltdl.i686
libxml2.i686
ncurses-libs.i686
net-snmp.x86_64
nspr.i686
nss.i686
nss-softokn-freebl.i686
nss-util.i686
openldap.i686
openssl.i686
unixODBC.i686
zlib.i686
特定の機能に必要なパッケージ
DeskView インタフェース: curl.x86_64
RHEL 上の KVM クライアントの監視: libvirt-client.x86_64

postgpls ユーザーにスーパーユーザー権限を与える

e.1) ディストリビューションから必要なパッケージ
Mozilla/Firefox のインストール。

e.2) Java プラグインの設定
Java インストール後に JRE を Mozilla のブラウザに手動でリンクさせる必要があります
ServerView RAID Manager をインストールする (参考

ServerView Operation Manager (DVD1をドライブに挿入して)のインストール、パスは

# cd /media/UDF Volume/SVSSoftware/Software/ServerView/Linux/ServerView_S2/
# sh install.sh

questions
コンソールで[Enter] キーを押しながらスクロールしてライセンス条項を読み終わると、以下の質問が出てきますので[Enter] キーで流さずにyes と入力します。(およそ、Chapter 10.1 以降です。

if you aguree please confirm with yes otherwise leave with no
yes
Please enter en (for English) or ja (for Japanese)
ja
Fully - qualified hostname : <ホストネーム> ok? (yes | no) :
yes
ip address?
<サーバーのIPアドレス>
You must specify password for opendj account 'svuser'
Echo is off during password input
password パスワード
please repeat password パスワード(確認)

success-installing-serverview

 

インストール成功が表示されます。つづいてsnmptrapd の設定に移ります。

# vi /etc/snmp/snmptrapd.conf
disableAuthorization yes ←(追記
authCommunity   log,execute,net public ←(チェックを外す

# service snmptrapd start
# chkconfig snmptrapd on

ファイアウォールの設定 iptables を編集

# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m udp -p udp --dport 161 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --sport 161 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 162 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --sport 162 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3169 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3170 -j ACCEPT
# service iptables restart

snmpd.conf の再設定。以下の項目を追記します。

# vi /etc/snmp/snmpd.conf
com2sec svSec default public
com2sec svSec localhost public
com2sec svSec <IP アドレス>/<ネットマスク> public
group svuser v1 svSec
group svuser v2c svSec

view svView included .1
access svuser "" any noauth exact svView svView none
trapsink <IP アドレス> public ←SNMPトラップを送信したいアドレス記入

ブラウザから、https://ホストネームアドレス:3169/ と打ち込んで起動、ログオン。

SVOM

基本設定ウィザードからポート解放、コミュニティの設定などして行きます。
finish

シングルシステムビューは、CPU やメモリ、ハードディスクの温度など環境パラメーターの取得はできませんでした。何か設定が欠けているのかもしれません。(残念。

singleSystemView

(追記 ServerView-RM の通信ポートとして3073,3172:3173(TCP・UDP)を解放しないと管理不可表示で本来の性能を発揮しないそうです)SVOM が使用するプロトコルとポート番号 (.pdf 21P)

ServerView のアンインストールと、削除できないcronジョブは以下コマンドで削除できます。

# /usr/bin/UninstallServerView.sh

# rm -fr /etc/cron.d/pg_CrontabEntry

SNMP でハマった・・・orz

# yum install net-snmp*
# snmpwalk -v 2c -c public localhost
Timeout : No Response from localhost

Timeout でハマりまくったのでメモ。/etc/snmp/snmpd.conf を編集

# vi /etc/snmp/snmpd.conf

com2sec local localhost private
com2sec  local       localhost       public
com2sec  mynetwork   192.168.24.0/24  public

group  local       v1             local
group  local       v2c            local
group  local       usm            local
group  mynetwork   v1             mynetwork
group  mynetwork   v2c            mynetwork
group  mynetwork   usm            mynetwork

view  all      included   .1                 80

access local "" any noauth exact all none none
access mynetwork "" any noauth exact all all none

rocommunity public ←(これであっけなく動いた
syslocation securenet (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
disk / 10000
# vi /etc/snmp/snmpd.conf

iptables でファイアウォールUDP 161, 162 番のポート解放、Windows 側も。

# vi /etc/sysconfig/iptables
-A INPUT -p udp -m udp --dport 161 -j ACCEPT
-A INPUT -p udp -m udp --dport 162 -j ACCEPT

TCPWrapperホスト設定。 /etc/hosts.allow にsnmpd をローカルネットワークで許可

# vi /etc/hosts.allow
snmpd : 127.0.0.1, 192.168.0.

一応、SELinux でsnmp を指定しているポートを調べて解放。

# semanage port -l | grep -w 161
snmp_port_t                    tcp      161-162, 199, 1161
snmp_port_t                    udp      161-162

サーバー買ったときに付いていた、ServerView Suite というソフトをREADME.txt を参考にインストールしてみました。(Oracle のJAVA JDK を入れてyum で必要パッケージを追加してポート解放して後、・・・忘れました。)とにかく、ブラウザでサーバーが見えるようにはなったのですけど、[SNMP] タイムアウトと表示が出て前に進みません。README.txt をよく読むと「SELinux 無効にしてからインストールしてね。」って先に云ってよ。パッケージでSNMP をインストールしなきゃいけないらしくて、ずーっとTimeout で蹴られたけど、linux – CentOS, Timeout: No Response in remote SNMP access – Server Fault をググったら、コミュニティ名が違うってことですね。rocommunityして解決。コミュニティのディレクティブには設定が出来る、rwcommunity もあるようです。書式は、SNMP のアクセス制御を設定する – いますぐ実践! Linuxシステム管理 / Vol.234 に詳しい解説がありましたので引用します。

rocommunity community address [OID | -V view]
rwcommunity community address [OID | -V view]

まともに動くようになるには、メールサーバーを立ててSSL証明書を作らないといけませんね。