CentOS7 MongoDB3.2 インストール
11月 6, 2016 — 21:55

調べると、まとまったサイトを見つけ出すことが出来なかったのでメモを残しておきます。

リポジトリ追加
$ sudo vi /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

インストール
$ sudo yum install -y mongodb-org

起動と自動起動の有効化
$ sudo systemctl start mongod
$ sudo systemctl enable mongod

管理者アカウントの作成
$ mongo

db.createUser(
  {
    user: "admin",
    pwd: "パスワードを指定してください",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

mongoコマンドを実行すると警告が複数出るためそれの対策を行います
警告の内容についてはメモを残し忘れてしまいました・・・
$ sudo vi /etc/rc.local

# 以下追記
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

$ sudo chmod +x /etc/rc.d/rc.local

$ sudo vi /etc/security/limits.d/99-mongodb-nproc.conf

# ファイルを新規作成して以下を記述
*          soft    nproc     1024
root       soft    nproc     unlimited
mongod       soft    nproc     unlimited

*          soft    nofile    64000
*          hard    nofile    64000

認証の有効化 2.4系の設定が散乱しているようですが2.6系以降は以下の設定を行うようです。
$ sudo vi /etc/mongod.conf

security:
  authorization: "enabled"

未ログイン時
$ mongo

> db.system.users.find()
Error: error: {
        "ok" : 0,
        "errmsg" : "not authorized on test to execute command { find: \"system.users\", filter: {} }",
        "code" : 13
}

ログイン成功時
$ mongo admin -u admin -p

MongoDB shell version: 3.2.10
Enter password:
connecting to: admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "****************", "storedKey" : "****************", "serverKey" : "****************" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
SMTP-AUTH設定中にSASL認証をデバッグしてみた CentOS7
7月 25, 2016 — 15:36

SMTP-AUTHに失敗する原因が分からず調べていると、SASL認証のテストを行うコマンド(testsaslauthd)が失敗する事に気づいたので、ちょっと色々とデバッグしてみました。
※ 原因は以下の内容とは無関係でした(一応、最後にちょこっと原因を書いてます)

※ 公開できない情報は以下の伏字にしております

+++ ユーザ名
*** パスワード
ドメイン

失敗時
# testsaslauthd -u +++ -p ***
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416320.791:907): pid=3559 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=? acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=failed'

成功時
# testsaslauthd -u +++ -p *** -s smtp
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416322.210:908): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=pam_unix acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'
type=USER_ACCT msg=audit(1469416322.210:909): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting grantors=pam_unix,pam_localuser acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'

saslauthdをデバッグモードで起動してtestsaslauthdで失敗したコマンド、成功したコマンドをそれぞれ実行します
# saslauthd -d -a pam

saslauthd[3827] :do_auth         : auth failure: [user=+++] [service=imap] [realm=] [mech=pam] [reason=PAM auth error]

なぜか”/etc/pam.d/imap”を見ているらしいが、そんなものは無い・・・

とりあえず、smtpをimapにコピーします
# cp vi /etc/pam.d/smtp /etc/pam.d/imap
# saslauthd -d -a pam

saslauthd[3883] :do_auth         : auth success: [user=+++] [service=imap] [realm=] [mech=pam]

すると認証に通るようになりました
でも自分の環境ではtelnetして直接認証するとError: authentication failed: authentication failureが返ります

・・・以下、後日談・・・

SMTP-AUTHの認証をデバッグ

saslauthd[3611] :do_auth         : auth success: [user=+++] [service=smtp] [realm=...........] [mech=pam]

結論としてはSASL認証自体はしっかりimapではなくsmtpを使用しているので問題ではありませんでした

原因はテストに使用していたクライアントのhostsファイルに全然別のサーバのIPが定義されており
無関係なサーバにつないでいることが原因でした。。。

参考サイト
繰り返し的な処理を自動化する – いますぐ実践! Linuxシステム管理 / Vol.212

ESXi6.0 + CentOS7.0 に vmware-tools をインストールする
5月 12, 2015 — 21:36

気づいたらESXi6.0が出ていたので現在試しているのですが最小構成でインストールしたCentOS7.0にvmware-toolsをインストールしてみたのでメモしておきます。

必要なパッケージをインストールします
# yum -y install perl net-tools
※ net-tools は vmware-tools で ifconfig が必要なようなのでインストールします。

あとは基本的にCentOS6以前と同じ手順で、vmware-tools をインストールするだけです。
※ インストーラを起動すると open-vm-tools でなく vmare-tools を本当にインストールするか訪ねますが”yes”と答えればインストールできます。

CentOS6 NIC変更時 勝手にネットワークインターフェースが追加される 対策
1月 13, 2014 — 23:03

ESXi5などでCentOS6シリーズな仮想マシンをコピーするとMACアドレスが変わり起動時に勝手にネットワークインターフェースが追加されるので勝手に追加されないようにするシェルスクリプトを書いてみた

#!/bin/sh
RULE="/lib/udev/rules.d/75-persistent-net-generator.rules"
CONT="$(sed 's/^[^#]\(.*\)write_net_rules/#\1write_net_rules/g' $RULE)"

echo "*********************************************************"
echo "[EDTITNG RULE FILE]"
echo "${RULE}"
echo "[ORIGINAL]"
cat  "${RULE}" | grep "write_net_rules"
echo "[CHANGING]"
echo "${CONT}" | grep "write_net_rules"
echo "*********************************************************"
echo -n "CHECK EDIT FILE [y/N]:"
read CHECK_CODE

if [[ "$CHECK_CODE" =~ ^(y|yes)$ ]]; then
        echo "${CONT}" > "${RULE}"
        echo "DONE"
else
        echo "CANCELED"
fi

参考URL
SIOS "OSSよろず" ブログ出張所: CentOS 6 系で NIC 交換すると eth0 と認識されない

ディスククオータに残ったUIDを削除する CentOS5
11月 19, 2013 — 16:43

ディスククオータに残ったUIDが以前より残ってるのが気になっていたので削除してみた

ディスククオータに既に存在しないユーザのUIDが残っている場合の例
# repquota -atv

*** Report for user quotas on device /dev/sda6
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 7839076       0       0          33729     0     0
orbit     --    1192       0       0             80     0     0
#1683     --       0 5242880 6291456             88     0     0

ディスククオータに残っている既に存在しないユーザのUIDを削除
# edquota -p nobody 1683

これで再度確認すると削除されているはずです

参考サイト
Factory-AJ Blog: 削除したユーザが、repquota で表示されるのを削除

CentOS 5 バッファオーバーフロー攻撃 対策
8月 7, 2013 — 20:16

RadHat系OSにはexec-shieldというカーネルレベルでのバッファオーバーフロー攻撃防御機能があるので有効にする方法をメモしておきます。

現在の設定の確認
# cat /proc/sys/kernel/exec-shield
1

1:基本無効
0:無効
2:基本有効(実行ファイルごとに有効にする)
3:基本的に有効(実行ファイルごとに無効にする)

手動による設定
# echo 2 > /proc/sys/kernel/exec-shield

設定ファイルによる設定(下記を追記する)
# vi /etc/sysctl.conf

# Exec Shield provides protection of buffer overflow attacks
kernel.exec-shield = 2

この設定でexec-shieldを有効化しても監視対象のプロセスを再起動しなければ意味は無いようなのでOSごと再起動しておく必要があるようである。

コンソール に iptables が色々 ログ を出力するのを黙らせる
8月 6, 2013 — 15:18

デーモンがコンソールを汚したら行けないだろうという話な訳で、こいつを黙らせます。

klogdのオプションに”-c 4″を加えます。
# vi /etc/sysconfig/syslog
KLOGD_OPTIONS=”-c 4 -x”

syslogを再起動します。
# service syslog restart

参考サイト
iptablesのログをコンソールに表示させない
コンソール画面に[IPTABLES INPUT]等のログが出てきてウザイ件 « こま切れblogの詰め合せ

CentOS 5 ディスククオータ 設定一括変更
7月 27, 2013 — 13:57

数百人分のディスククオータの設定を一括して書き換えたかったため簡単なスクリプトを書きました。
これぐらいだったらbashで書くべきだったかな^^;

#!/usr/bin/perl
##########################################
# ディスククオータ一括設定変更スクリプト
##########################################
use utf8;
use strict;
use warnings;

# /homeからユーザ一覧を取得するコマンド(egrepで除外するユーザを書いておく)
my $home_list_cmd = 'ls -1 /home | grep -E -v "(exclude_user|source_user|lost\+found|aquota.user)"';
# クオータ設定をコピーするコマンド(設定元になるユーザを書いておく)
my $edquota_cmd = 'edquota -p source_user -u ';

# 実行
foreach my $user (split(/\n/, `$home_list_cmd`)){
  my $cmd = $edquota_cmd . $user;
  my $rs = `$cmd`;
}
CentOS 5 ディスククォータファイル チェック 失敗する
7月 27, 2013 — 12:58

ディスククォータファイルをチェックするためquotacheckを実行した場合下記のようにクオータを一回切るように促された。
# quotacheck -a
quotacheck: Quota for users is enabled on mountpoint /home so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.

一度、ディスククォータを無効化し、再度実行した場合正常に実行できた
# quotaoff -av
/dev/sda6 [/home]: user quotas turned off
# quotacheck -a

最後は忘れずに有効化しておく
# quotaon -av
/dev/sda6 [/home]: user quotas turned on

参考サイト
Quotaのチェック方法

CentOS 5.9 ClamAV SELinux環境で実行する
7月 8, 2013 — 19:51

ClamAVをインストールして起動しようとしたらエラーを吐いたのでメモ
# service clamd start

Starting Clam AntiVirus Daemon: LibClamAV Warning: RWX mapping denied: Can't allocate RWX Memory: Permission denied
LibClamAV Warning: Bytecode: disabling JIT because SELinux is preventing 'execmem' access.
Run  'setsebool -P clamd_use_jit on'.

言われた通りにSELinuxを設定しようとコマンドを実行してもエラーを吐く
# setsebool -P clamd_use_jit on

libsemanage.dbase_llist_set: record not found in the database
libsemanage.dbase_llist_set: could not set record value
Could not change boolean clamd_use_jit
Could not change policy booleans

下記の様にコマンドを実行すれば良いらしい。
# setsebool -P clamd_disable_trans on

正常に起動できる事を確認する
# service clamd start

Starting Clam AntiVirus Daemon:                            [  OK  ]