【CentOS】OpenVPN & LDAPでVPNサーバ構築

環境

CentOS 7.4
OpenVPN 2.4.4

参考サイト

ServerWorldさん:https://www.server-world.info/query?os=CentOS_7&p=openvpn
cloudpackさん:https://cloudpack.media/73

※前提条件

LDAPサーバは既に構築済みとします


サーバ作業手順

■インストール

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

yum --enablerepo=epel install openvpn openvpn-auth-ldap easy-rsa net-tools bridge-utils

■各種証明書生成

easy-rsaのディレクトリに移動し、各種証明書を生成します。

cd /usr/share/easy-rsa/2.0 

CA 証明書

まず、varsファイルを修正します。

vim vars

内容は以下の通りです。(コメント行・空行は除外しています)

export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="JP"         #国
export KEY_PROVINCE="Tokyo"     #都道府県
export KEY_CITY="Shibuya-ku"    #市区町村
export KEY_ORG="AAA-Company"    #組織名
export KEY_EMAIL="fooo@aaa.com" #メールアドレス
export KEY_OU="BTeam"           #チーム名など(任意)
export KEY_NAME="EasyRSA"

CA証明書を生成します。

source ./vars
./clean-all
./build-ca
〜色々聞かれるが全てそのままエンターで良さそう〜

サーバー証明書

サーバ証明書を生成します。

./build-key-server server
〜色々聞かれるが基本的にはそのままエンターで良さそう〜
〜途中でYes/Noを聞かれるので、そこは「y」と入力する〜

Diffie Hellman(DH)

DHを生成します。

./build-dh

各種証明書の移動

OpenVPNのディレクトリに生成した証明書達を移動します。

cp keys/ca.crt /etc/openvpn/.
cp keys/server.crt /etc/openvpn/.
cp keys/server.key /etc/openvpn/.
cp keys/dh2048.pem /etc/openvpn/.

■OpenVPN設定

OpenVPNのサーバ設定をします。

cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn/server.conf
vim /etc/openvpn/server.conf

内容は以下の通りです。(コメント行・空行は除外しています)

port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.10.0 255.255.255.0        #OpenVPNサーバのサブネットマスク
route 192.168.10.0 255.255.255.0         #クライアントに割り振るサブネットマスク=serverと同じで良い
push "redirect-gateway def1"             #クライアントは全ての通信をVPN経由にする
push "dhcp-option DNS 192.168.10.254"    #DNSサーバの設定
keepalive 10 120
status /var/log/openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log
verb 3
plugin    /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
client-cert-not-required
username-as-common-name

LDAPサーバへの接続設定もします。

vim /etc/openvpn/auth/ldap.conf

内容は以下の通りです。(コメント行・空行は除外しています)

<LDAP>
    URL     ldap://ldap.sample.com   #LDAPサーバへのURL
    Timeout     15
    TLSEnable   no
    FollowReferrals yes
</LDAP>
<Authorization>
    BaseDN      "ou=People,dc=sample,dc=com" #LDAPサーバのログインアカウント情報のDN
    SearchFilter    "(&(uid=%u))"
    RequireGroup    false
</Authorization>

■iptable設定

VPN接続してきたクライアントがVPNサーバ経由で外部連携するためにはiptableでマスカレードしてあげる必要があります。
openvpn起動時にiptable設定ができるようスクリプトを作っておきます。

起動スクリプト

#!/bin/bash

# 設定クリア
/etc/openvpn/openvpn-shutdown

# マスカレード設定(IPアドレスや利用するイーサネット等のIFは環境に合わせて変更)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno1 -j MASQUERADE

# VPNサーバからの送信許可設定
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

停止スクリプト

#!/bin/bash

# iptablesルール削除関数
delete() {
    rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
    for num in $rule_number
    do
        iptables -D $target $num
    done
}

# 受信ルール削除
target='INPUT'
delete

# 転送ルール削除
target='FORWARD'
delete

# 送信ルール削除
target='OUTPUT'
delete

■起動

systemctl start iptables
systemctl start openvpn
sh /etc/openvpn/openvpn-startup

クライアント作業手順

■Tunnelblinkの取得

以下サイトよりダウンロード&インストールします。  
https://tunnelblick.net/downloads.html  

■VPN設定

サーバ側で生成したca.crtをクライアント側にダウンロードし、その同じディレクトリにsample.ovpnを作成します。
※上記「sample」部分については任意の名前にしてください。それがTunnelblink上での接続先名になります。

sample.ovpnの中身は以下のようにしてください。

client

auth-user-pass

dev    tun
proto  tcp

ca     ca.crt

remote xxx.xxx.xxx.xxx 1194 #xxxはクライアントからVPNサーバへアクセスする際のIPアドレス

この作成したovpnファイルをダブルクリックで開くとTunnelblinkが起動し、VPN設定がされる。

■VPN接続

Tunnelblinkを起動し、上部常駐アイコンより「sampleに接続」を選択すると接続できる。

【CentOS】侵入検知したらSlack通知する

■環境

CentOS 7.4
AIDE 0.15.1


AIDEという侵入検知ツールを導入し、検査結果をSlackに通知するようにします。

AIDEインストール

yum install -y aide

AIDE設定

vim /etc/aide.conf

95行目辺りより監視対象ディレクトリの設定があります。
設定値の記載方法は以下の通り。

/{DIR_PATH}/ {CHECK_METHOD} #監視対象に含める
!/{DIR_PATH}/ #監視対象から除外する

上記の『DIR_PATH』の部分に対象のディレクトリパスを記載し、
『CHECK_METHOD』に監視方法を記載します。

監視方法については本設定ファイルの95行目以前に記載があるので、そちらを参照してください。
とりあえずAIDE 0.15.1では「CONTENT_EX」にしておくのが無難そうです。

監視対象の設定が完了したら、AIDEのデータベースを初期化します。
※以下コマンド実行後、結構待ちます。

aide -i

自動監視設定

AIDEでスキャンを実行し、結果をSlack通知するスクリプトを作成します。
仮に、/opt/aide_scan.shという名前で作るとします。

vim /opt/aide_scan.sh

シェルスクリプトの中身は以下のようにします。

#!/bin/bash
set +e

##### Settings
## AIDE
LOGFILE="/var/log/aide/aide.log"
AIDEDIR="/var/lib/aide"
## Slack
URL="https://hooks.slack.com/services/AAAAAAAA/BBBBBBBB/CCCCCCCC"
TO="#aide"
EMOJI=":cop:"
NAME="AIDE-COP"

##### Run AIDE Scan
/usr/sbin/aide  -u > $LOGFILE
cp $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz
x=$(grep "Looks okay" $LOGFILE | wc -l)
if [ $x -eq 1 ]; then
    MSG="OKだよ"
else
    MSG="侵入検知!詳細は[${LOGFILE}]を見てね"
fi

##### Send To Slack
payload="payload={\"channel\": \"${TO//\"/\\\"}\", \"username\": \"${NAME//\"/\\\"}\", \"text\": \"${MSG//\"/\\\"}\", \"icon_emoji\": \"${EMOJI}\"}"
curl -m 30 --data-urlencode "${payload}" $URL -A 'zabbix-slack-alertscript / https://github.com/ericoc/zabbix-slack-alertscript'

スクリプトの設定項目は以下の通りです。

項目 内容
LOGFILE AIDEの検査結果を出力するログファイルです。
AIDEDIR AIDE本体のディレクトリです。aide.confの設定に合わせてください。
URL Slackの『Incoming WebHooks』のURLです。詳細はコチラ
TO メッセージを送るSlackのチャンネル
EMOJI Slack上で表示される絵文字
NAME Slack上で表示される名前

作成したスクリプトを1日1回cronで回します。
以下はcronの設定例です。

0 10 * * * /bin/sh /opt/aide_scan.sh > /dev/null 2>&1

これで1日1回AIDEが侵入検知してくれるようになります。

【Let’sEncrypt】Certbotの使い方(CentOS7 + nginx)

■環境

CentOS 7.3
nginx 1.10.3
certbot 0.14.1


■初回SSL証明書発行

certbotをインストールする。

yum -y install yum-utils
yum install certbot

【補足】
もしCentOS6系やAWS EC2にてcertbotをインストールする場合は以下手順となる。
certbot-autoのまま使っても良いですが、後述の手順と整合性を合わせるために
シンボリックリンクを作っています。

curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmod 700 /usr/bin/certbot-auto
ln -s /usr/bin/certbot-auto /usr/bin/certbot

証明書を発行する

certbot certonly --webroot -w /usr/share/nginx/html -d your-domain.com

※上記コマンドは環境に合わせて読み替えてください。
/usr/share/nginx/html
 →設定するドメインのドキュメントルート
your-domain.com
 →設定するドメイン

【補足】
2017年11月現在、AWS EC2では上記コマンドに--debugオプションが必要でした。
調べてみるとEC2でも「–debug」は不要になったと書いてあるページがあったりするので
環境による(?)のかもしれません。

これで証明書が以下ディレクトリに生成されます。

ll /etc/letsencrypt/live/your-domain.com/
lrwxrwxrwx 1 root root  40 Jun 12 16:41 cert.pem -> ../../archive/your-domain.com/cert1.pem
lrwxrwxrwx 1 root root  41 Jun 12 16:41 chain.pem -> ../../archive/your-domain.com/chain1.pem
lrwxrwxrwx 1 root root  45 Jun 12 16:41 fullchain.pem -> ../../archive/your-domain.com/fullchain1.pem
lrwxrwxrwx 1 root root  43 Jun 12 16:41 privkey.pem -> ../../archive/your-domain.com/privkey1.pem

証明書更新の度に上記シンボリックリンクの向き先が新証明書に切り替わるので、
nginx側の設定は1度設定すれば変える必要がなくなります。

■nginx設定

nginxの設定ファイルにて、SSL証明書と秘密鍵の設定をします。
(/etc/nginx/nginx.conf)

(省略)
server {
    listen  443 ssl http2 default_server;
    (省略)
    ssl_certificate "/etc/letsencrypt/live/your-domain.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/your-domain.com/privkey.pem";
    (省略)
}

設定後、nginxを再起動します。

systemctl restart nginx.service

■SSL証明書の自動再発行設定

SSL証明書の期限が残り1ヶ月を切ったら、証明書更新が可能となります。
更新は以下コマンドで実施します。

certbot renew

自動で更新できるように、cronに上記コマンドを登録しておきます。
例として、毎週月曜日の早朝に更新作業を行なうようにします。
(残り期限1ヶ月以上残っている場合は空振りして終わる)

10 0 * * 1 certbot renew

これで設定は完了です。

■SSL証明書の削除

不要になったドメインのSSL証明書の削除は以下のコマンドで実施します。

certbot revoke --cert-path=/etc/letsencrypt/archive/your-domain.com/cert1.pem

これでSSL証明書を無効化し、自動更新の対象からも外れます。

CentOS7のネットワーク周り初期設定

■環境

CentOS 7.3


bonding設定

参考URL:https://bacchi.me/linux/bonding/

現状確認しておきます。

nmcli c
ip a

bonding用インターフェースを追加します。

nmcli connection add type bond autoconnect no con-name bond0 ifname bond0 mode active-backup

物理インターフェースをbondに紐付けます

nmcli connection add type bond-slave autoconnect no ifname eno1 master bond0
nmcli connection add type bond-slave autoconnect no ifname eno2 master bond0

bondにIPを設定します。

nmcli c mod bond0 ipv4.method manual ipv4.address "192.168.999.999/32" ipv4.gateway "192.168.999.254" ipv6.method ignore
nmcli c mod bond0 ipv4.dns 192.168.999.254

物理インターフェースを無効にし、bondインターフェースを有効にします。

nmcli c m eno1 connection.autoconnect no
nmcli c m eno2 connection.autoconnect no

nmcli c m bond-slave-eno1 connection.autoconnect yes
nmcli c m bond-slave-eno2 connection.autoconnect yes
nmcli c m bond0 connection.autoconnect yes

nmcli c up bond-slave-eno1
nmcli c up bond-slave-eno2
nmcli c up bond0

ホスト名変更

hostnamectl set-hostname sample.com

SELinux無効化

SELinuxが不要な場合は無効化します。

vim /etc/sysconfig/selinux
SELINUX=enforcing
SELINUX=disabled

firewalld停止

別のファイアーウォール内のサーバである場合、
不要なのでfirewalldは停止しておきます。

systemctl stop firewalld
systemctl disable firewalld

Composerのインストール方法

■環境

macOS Sierra 10.12.4
CentOS 6.8


作業用MacとCentOSサーバにComposerをインストールしたので、その際のメモです。

【Macの場合】

brewでインストールできます。

brew install homebrew/php/composer

【CentOSの場合】

CURLでインストーラを取得し、生成された実行ファイルをPATHが通っているディレクトリに移動します。

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer

以上

CentOS7にfishを入れる

最近人気らしいfishを試しに入れてみました。

■環境

CentOS 7.3
fish 2.3.1

epelリポジトリが入っていない人はインストールします。

yum -y install epel-release

fishをyumでインストールします。

yum -y install fish

今だけfishを使う場合は、コマンドでそのままfishと打ちます。

fish

恒久的にfishを使いたい場合はchshしておきます。

chsh -s /usr/bin/fish {ユーザ名}

 

これでfishが使えるようになりました。


〜参考〜

CentOS6.X系の場合は以下でfishのインストールできるようです。

wget -P /etc/yum.repos.d/ http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_6/shells:fish:release:2.repo
yum -y install fish

【oh-my-fishインストール】

ついでにoh-my-fishもインストールします。
CentOS7でyumインストールできるgitのバージョンは1.8系(2017年4月現在)なのですが、
oh-my-fishのインストールにはgit 1.9.5以上が必要なので
ソースからコンパイルします。

ソースからコンパイルする際に必要なものをインストールします。
私の環境では以下でしたが、ここは各環境に合わせてインストールしてください。
ソースからコンパイルする方法を調べれば出てくると思います。

yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf gettext gcc

ソースコードをダウンロードしてきます

cd /tmp/
wget https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
tar xzf git-2.9.3.tar.gz

※最新のソースは以下で確認
https://www.kernel.org/pub/software/scm/git/

gitをインストールします。
configureのオプション「–with-curl」を付けないと、oh-my-fishインストール時にコケます。

cd git-2.9.3
make configure
./configure --with-curl
make
make install

『/usr/local/bin』配下にgit系コマンドが配置されるので、
もしPATHを通していない場合は追加する。

set -U fish_user_paths $fish_user_paths /usr/local/bin
git --version
git version 2.9.3

最後にoh-my-fishをインストールして完了です。

curl -L https://get.oh-my.fish | fish

oh-my-fishのインストール詳細についてはこちらを参照してください。
https://github.com/oh-my-fish/oh-my-fish

【pecoインストール】

ついでにpecoもインストールしておきます。

peco本体はgithubからダウンロードし、利用可能な状態にしておきます。

cd /tmp/
wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xzf peco_linux_amd64.tar.gz
mv peco_linux_amd64/peco /usr/local/bin/.

oh-my-fishでpecoをfishに取り込みます。

omf install peco

最後にfishのコンフィグファイルを修正します。

vim ~/.config/fish/config.fish
# 記載する内容
function fish_user_key_bindings
    bind \cr peco_select_history
end

以上で設定は完了です。

CentOS 7.3にzabbix 3.2をインストール

■環境

CentOS 7.3
zabbix 3.2
PHP 7.1
MySQL 14.14
Apache 2.4


①zabbixをyumでインストールするためのリポジトリをインストール

# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

②zabbixの本体をインストール

# yum install \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-web \
zabbix-agent \
zabbix-get \
zabbix-sender \
zabbix-web-japanese

※MySQLではなくPostgreSQLを使う場合は、上記の『mysql』を『pgsql』にするだけです。

③MySQLの設定

# mysql
mysql> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword';
mysql> CREATE DATABASE zabbix CHARACTER SET utf8;
mysql> GRANT ALL ON zabbix.* to 'zabbix'@'localhost';
mysql> quit
# zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz | mysql -uroot zabbix

パスワードは任意のものを入れてください。
DB名とユーザ名も変えたければ変えても構いません。

④Zabbixの設定

# vim /etc/zabbix/zabbix_server.conf
以下項目を設定
LogFileSize=10
DBPassword=zabbixpassword

もし手順③にてDB名とユーザ名も変更していた場合は、ここで該当箇所も修正してください。

⑤起動

# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl restart httpd

これでインストールは完了です。
https://ホスト名/zabbixにアクセスするとzabbixが開き、初期設定が始まります。
初期ログインのID/PASSは『Admin/zabbix』です。

ログイン後、右上の人形アイコンで言語やパスワードを変更できます。

私が実施した時はダッシュボードにて以下のPHPの警告が表示されました。
『A non well formed numeric value encountered』
解決策はコチラに記載しています。


その他

MacサーバへのZabbixエージェントインストールが難しかったので、別途記事にしました。
MacにZabbixエージェントを入れる

【CentOS + Apache】Let’s Encryptで無料SSL証明書の取得&自動更新をする

■環境

CentOS 7.3
Apache 2.4.6


Let’s Encryptで無料SSL証明書を取得し、自動更新する設定をします。

########## 2017/04/05追記 ##########
Certbotというツールが公開されており、
本手順を実施するよりも、そちらを利用した方が簡単です。
https://certbot.eff.org
設定方法はこちら
http://nonsensej.xyz/?p=656
################################

■前提

対象サーバがインターネット網に公開しているサーバであること。
→証明書発行時に認証のためLet’s Encrypt側からアクセスがあるようです。
 そのため、ファイアーウォールなどで外部からのアクセスを遮断している環境では証明書発行ができません。
 2017/1/19現在、アクセス時のIPアドレスも公開しておりません。
 https://letsencrypt.jp/faq/#IP

設定手順

※以下手順はroot権限で実施しています。

まず、サーバー上の任意のディレクトリにLet’s Encryptから証明書を取得するツールをダウンロードします。
サーバにgitが入っていない場合は、ローカルでダウンロードしたものをFTPなどでアップしても良いと思います。

# git clone https://github.com/letsencrypt/letsencrypt

ダウンロードしたら、ツールの初期構築をします。
以下コマンドにて必要なソフトウェアのインストールなどが走り、完了したらletsencrypt-autoのヘルプが表示されます。

# cd letsencrypt
# ./letsencrypt-auto --help --debug

次にツールを実行し、実際に証明書を取得します。
その際、443ポートを利用しているプロセスがあるとエラーとなるので、この瞬間はApacheを止める必要がありました。

# systemctl stop httpd
# ./letsencrypt-auto certonly --standalone -d your-domain.com
# systemctl start httpd

※上記の「your-domain.com」には証明書を生成するドメインを入力してください。

これで証明書が生成できました。
以下のディレクトリ配下に証明書や秘密鍵(のシンボリックリンク)が生成されているので、
Apacheの設定ファイルへ記載します。
■生成されるディレクトリ

/etc/letsencrypt/live/your-domain.com/

■生成されるファイル

cert.pem : SSL証明書本体
chain.pem : チェイン証明書
fullchain.pem : SSL証明書本体とチェイン証明書を結合したもの
privkey.pem : 秘密鍵

これらをApacheの設定ファイル(一般的に/etc/httpd/conf.d/ssl.conf)に設定する。
・設定パターン1

SSLCertificateFile /etc/letsencrypt/live/your-domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/your-domain.com/chain.pem

・設定パターン2

SSLCertificateFile /etc/letsencrypt/live/your-domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/your-domain.com/chain.pem

※Apacheのバージョンが2.4.8以上の場合は「SSLCertificateChainFile」の設定はできないので、
 「SSLCertificateKeyFile」にfullchain.pemを設定すること。

ここで生成した証明書は3ヶ月間しか有効期限がないので、定期的に更新が必要です。
証明書を更新するコマンドは以下です。

./letsencrypt-auto renew

ただし、更新は有効期限が残り30日を切らないと実行されないらしく、
上記コマンドを実行しても何も更新せずに終わります。

「Apache停止→証明書更新→Apache起動」を実施するシェルを作ります。
70日以内に生成した証明書が存在する場合は何もしません。

#!/bin/bash
serchResult=`find /etc/letsencrypt/archive/your-domain.com/ -mtime -70 -regex ".*cert[0-9]?\.pem"`
if [ -n "$serchResult" ]; then
    echo "certs are not due for renewal yet"
else
    systemctl stop httpd && /opt/git/letsencrypt/letsencrypt-auto renew && systemctl start httpd
    if [ $? != 0 ]; then
        # just to be sure
        systemctl restart httpd
    fi
fi

※上記はツールをopt配下に配置した場合です。

このシェルをcronで毎日深夜に実行するよう設定します。

# SSL update
5 0 * * * sh /etc/letsencrypt/renew.sh

※上記はシェルを/etc/letsencrypt/renew.shに作った場合の例です。

これで設定完了です。

HP Proliant Microserver Gen 8 にCentOS7を入れる

■作業環境

・OS X El Capitan 10.11.6

 

■手順

CentOS7の準備

まず、CentOSのISOイメージをダウンロードします。
ここから『Everything ISO』をダウンロードしておきます。
https://www.centos.org/download/

ダウンロードしたISOをUSBメモリに起動可能USBとして焼きます。
1.USBをMacに挿す。
2.以下コマンドにてUSBメモリのdisk番号を確認する。
$ diskutil list
3.以下のコマンドにてUSBメモリを初期化する。
$ diskutil eraseDisk MS-DOS NOTITLE /dev/diskX
※「NOTITLE」作成するUSB名(任意)
※diskXは1.で確認したdisk番号

4.焼き込みをするため、USBメモリをアンマウント
$ diskutil unmountDisk /dev/diskX
5.ISOを書き込む。
$ cd {CentOSのISOがある場所}
$ sudo dd if=CentOS-7-x86_64-Everything-1511.iso of=/dev/diskX bs=4028
※処理完了まで、かなり待ちます

6.USBメモリを取り外し可能状態にする。
$ diskutil eject /dev/diskX

 

RAIDコントローラの準備

次にGen8用のRAIDコントローラをダウンロードします。
これがないとHPサーバが備えているのRAID機能が使えない。
http://downloads.linux.hpe.com/SDR/repo/spp/RedHat/7/x86_64/current/
ここから「hpvsa-1.2.14-113.rhel7u2.x86_64.dd.gz」をダウンロードします。
※『rhel7u2』の部分はインストールするCentOSに合わせて読み替えてください。

ダウンロードしたら、CentOSを焼いたUSBメモリとは別のUSBメモリに焼きます。
MacはUSBメモリを挿すと自動でマウントするので、ディスクユーティリティからマウント解除して
以下コマンドを実施。
(先にUSBの初期化〜アンマウントはISO書き込みと同じ手順を実施)
$ cd {RAIDドライバをダウンロードした場所}
$ gunzip hpvsa-1.2.14-113.rhel7u2.x86_64.dd.gz
$ sudo dd if=hpvsa-1.2.14-113.rhel7u2.x86_64.dd of=/dev/diskX
$ diskutil eject /dev/diskX

 

インストール実施

作成したUSBメモリ2本をサーバに刺し、サーバを起動します。
(事前にUSBブートできるようにBIOS設定はしておくこと)

しばらくするとCentOSの文字が表示され、インストール方法を選択画面が表示されます。
ここでEscを押下すると「boot:」というプロンプトが現れるので、
linux modprobe.blacklist=ahci inst.dd
と入力する。

インストールが進み途中でドライバーが入ったディスクの選択画面が表示されます。
まず『r』と入力してディスク一覧の再読み込みを行ない、該当するディスクの番号を入力します。

次にドライバー一覧が表示され、インストールするドライバーを選択しろと言われるので
該当するドライバの番号を入力します。
その後、『c』を入力して続行します。

最後にディスク一覧が表示されるので、RAIDコントローラが入っていたUSBメモリを抜き
『r』を入力する。
するとRAIDコントローラの入ったUSBメモリが消え、ISOが入ったUSBが一番上に表示されるはずなので
そのまま『c』を入力して続行します。

あとは通常のインストール通りです。
表示される質問事項を設定していけば完了です。

【DNSサーバ】BINDからNSDへの移行

社内利用のDNSをBIND作っていたのですが、
BINDは脆弱性が頻繁に発見されるし、DNSキャッシュ機能は要らなかったので
NSDに切り替えました。

■環境
CentOS 6.5
NSD 4.1.13
(参考:切替え前)BIND 9.8.2

まず、yumにepelリポジトリが設定されていない場合はインストールします。
# yum install epel-release.noarch

NSDをインストールします。
# yum install nsd --enablerepo=epel

NSD設定ファイルの最下行にzoneファイルを設定します。
# vim /etc/nsd/nsd.conf
〜最下行に以下を追記〜
zone:
name: sample.co.jp
zonefile: sample.co.jp.zone

BINDで利用していたzoneファイルをコピーします
# cp {BINDのzoneファイル} /etc/nsd/sample.co.jp.zone

※補足
調べているとNSDはrebuildコマンドにてzoneファイルからdbファイルを
生成しなければいけないという記事がありましたが、 私の環境では不要でした。
(むしろ、rebuildコマンドがありませんでした)

BINDを停止します。
# service named stop

NSDを起動します。
# service nsd start