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

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

プロセス毎のメモリ使用量を調べるコマンド – 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証明書を作らないといけませんね。

FTP のSELinux 設定

WinSCP やSSH があるのでたぶん、使わないと思ったのでしばらく忘れていた vsftp が久しぶりにつながらなかったので設定をgoogle 検索しました。

SELinux コンテキスト設定

# setsebool -P ftp_home_dir 1

HOSTS ファイル設定

# vi /etc/hosts.allow
  vsftpd:192.168.0.  ←(追記

やっぱり使わないですよね。

(以下加筆

ホームディレクトリから上位階層が見える問題を解消しました。

vftpdでユーザごとに上の階層に移動できないように制限する – [Swb:]渋谷に住むWEBデザイナの備忘録

# vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES  ← チェックを外す
chroot_list_file=/etc/vsftpd/chroot_list ← チェックを外す
chroot_local_user=YES ← 追記

# vi /etc/vsftpd/chroot_list (ファイル生成
# service vsftpd restart (vsftpd 再起動

(加筆ここまで

※過去ログ Linux をWindows のファイルサーバーにする

Linux にsamba をインストールしてみました。(私の環境でうまくいったよ~という話でベストプラクティスではありません。)参考URL:Windowsファイルサーバー構築(Samba) – CentOSで自宅サーバー構築

# yum install samba

iptables のファイアウォールのポート解放。Windows 側のセキュリティソフトがあれば、ローカルサービスのTCP とUDP のポート135~139 445 をプライベートネットワークで受信許可して下さい。service iptables restart で設定反映。

# vi /sysconfig/iptables
・・・
-A INPUT -p tcp -m tcp --dport 135:139 -j ACCEPT
-A INPUT -p udp -m udp --dport 135:139 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
・・・
# service iptables restart

ここでSamba ユーザー登録。Linux のユーザー名で、Windowsのアカウント名と同名に限ります。が、一時的にWindows のアカウント名をLinux 側に合わせて変更し、一度資格情報を保存すればWindows側 のユーザー名は元に戻してもアクセスできました。

# pdbedit -a gusachan
new password
retype new password

設定ファイルを編集します

# vi /etc/samba/smb.conf
・・・
[global]
・・・
 workgroup = WORKGROUP
    server string = SECURENET
・・・
    passdb expand explicit = no

Samba ファイルサーバー起動

# service smb start
# service nmb start
# chkconfig smb on
# chkconfig nmb on

エクスプローラ起動
samba_securenet

Windows ネットワークにサーバーが見えました。クリックすると「・・アクセス許可がありません」と蹴られました。ディレクトリを作成してSELinux のコンテキスト設定します。

# mkdir /home/gusachan/samba/
$ mkdir /home/samba/share (訂正 root権限で作成するとアクセス不可
# chcon -t samba_share_t /home/samba/share -R

samba_gusachan

フォルダが表示されました。

追記)表示されたフォルダにアクセスできるか検証したところ、ディレクトリの所有権がroot になっており、書き込み、フォルダ作成不可でした。追加で所有権変更コマンド

# chown -R samba:samba /home/samba/share/

としました。(本来は最初から、ユーザー権限でディレクトリ作成すれば良いです。上記訂正してお詫び申し上げます。)