2016年3月5日土曜日

Linuxで止めるべきサービスと止めないサービスの一覧

Linuxをインストールして一番最初の作業として、不要なサービスの停止がある。ディストリビューションやバージョンによってサービス名が微妙に異なったりするのだが、今回以下OSを新規インストールする機会があり、サービスの取捨選択を実施する必要があった。

 ・対象OS : Red Hat Enterprise Linux Server release 6.2 (Santiago)
 ・イントール方法 : 基本サーバ

私が設定した内容を以下に記載するが、サービス停止は考え方・ポリシー・好みによって、人によって判断が変わるので注意する。同じような情報はインターネット上に無数に存在するので、そちらも参考にした方がよい。

サービス一覧取捨選択結果

まずは以下コマンドで、起動時に自動で立ち上がるサービスを確認する。

# chkconfig --list | grep 3:on
※GUI環境を使う場合は、grep 5:onなどに変える

上記の出力結果にて、onのままにするもの・offにするものを以下のように選択した。

--------------------------
abrt-ccpp       0:off   1:off   2:off   3:on    4:off   5:on    6:off
abrt-oops       0:off   1:off   2:off   3:on    4:off   5:on    6:off
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
→OFF:自動バグ報告ツール (ABRT)。まったく不要というわけではないが、使用方法がよくわからない

acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:電源管理デーモン。仮想マシンで常時起動で問題ない

atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
→ON:at実行ツール。使うことがあるかもしれないのでON

auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:操作ログの収集・監査をするためのデーモン。操作ログが不要な場合はOFFでもよさげ

autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
→ON:ファイルシステムの自動マウント機能。OSの機能として必須

cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
→OFF:CPU電力管理デーモン。仮想マシンでは不要

crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:定期タスク実行ツール。OSの機能として必須

cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:印刷は特に想定しないのでOFF

haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:ハードウェア情報収集。同等の機能がudev等に引き継がれておりOFFにしてしまって問題なさそう

ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:IPv6用ファイアウォール。IPv6は利用していない

iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:IPv4用ファイアウォール。特にセキュリティ上必要ではないのでOFF
 (本当はきちんと設定して有効にした方がよい)

irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
→ON:割り込み要求(IRQ)を複数CPUで分散するためのデーモン

kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:カーネルのクラッシュダンプ取得機能。商用で使うサーバーでなければOFF

lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
→ON:LVM利用時の監視用デーモン。通常LVMは使用しているのでON

mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:ソフトウェアRAIDの監視機能

messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:D-Busと呼ばれるアプリケーション間の通信を使う場合はONだが、通常OFFで問題なさそう

netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:NFSの自動マウント・アンマウント昨日。NFSサーバー用途として利用しないのでOFF

network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:ネットワーク接続するために必須

nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:NFSサーバー用途として利用しないのでOFF

portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:TCP/IPのポートを管理するデーモンのようだが、よくわからないのでON

postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:メール送信機能は使わない

qpidd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:Apache Qpidというアプリケーション間の通信規格を使うためのデーモンだが、使うことはなさそう

rhnsd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:Red Hat Network Daemon。定期的にRed Hat Networkに接続して更新確認をする

rhsmcertd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:Red Hatサブスクリプションマネージャーデーモン。いったん止めておく

rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
→OFF:NFSサーバー用途として利用しないのでOFF
→ON:NFSクライアントを使い場合があるのでON (2016/5/8 修正)

rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:NFSv4にKerberos認証の機能を提供するデーモン。NFSサーバー用途として利用しないのでOFF

rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
→OFF:NFSv4にて利用するらしい。NFSサーバー用途として利用しないのでOFF

rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:RHEL6.0から導入された新しいsyslog。OSの機能として必須

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
→ON:SSH接続するために必須

sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
→ON:OSリソース状態確認ツール。役に立つことがありそうなのでON(不要ならOFFでもOK)

udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
→ON:新規ハードウェア等を自動で検知する。NIC追加時などに役立つことがあるのでON
--------------------------

不要サービス停止の設定方法

offにするサービスについて、以下のとおりコマンドを流し込み一気に設定する。

--------------------------
chkconfig abrt-ccpp off
chkconfig abrt-oops off
chkconfig abrtd off
chkconfig acpid off
chkconfig cpuspeed off
chkconfig cups off
chkconfig haldaemon off
chkconfig ip6tables off
chkconfig iptables off
chkconfig kdump off
chkconfig mdmonitor off
chkconfig messagebus off
chkconfig netfs off
chkconfig nfslock off
chkconfig postfix off
chkconfig qpidd off
chkconfig rhnsd off
chkconfig rhsmcertd off
chkconfig rpcbind off
chkconfig rpcgssd off
chkconfig rpcidmapd off
--------------------------

最終的な設定結果は以下のようにシンプルになった。

--------------------------
# chkconfig --list | grep 3:on
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
--------------------------

これで一度リブートすれば、必要最低限なサービスで起動したLinuxができあがる。ここから必要に応じてyumやrpmでパッケージをインストールしたりして、必要な機能を足していくのが良い。


2016年2月27日土曜日

Windows 10でBluetoothテザリングを使ってみた話

1年ほど前にMSI S100という安物のWindowsタブレットを購入した。CPUやメモリが非力でイマイチ使い道が無くて困っていたが、会社でBYOD (Bring Your Own Device ; 私的デバイス活用)として業務端末として利用できることがわかったので、申請して使ってみることにした。

BYODとしての利用は予想より快適なのだが以下2点の不満があった。

 ①テザリングを使って接続する際に通信が安定しない
 ②バッテリーの消費が早い

この2点の問題を解消することを目的として、WiFiテザリングをやめて、Bluetoothテザリングにしてみることにした。設定方法が思ったよりわかりにくかったので、備忘として記載する。

Bluetoothテザリング設定方法

ペアリングの設定

1. テザリング対象のスマートフォンの設定画面から「接続」→「Bluetooth」を選択し、BluetoothをOnにする
 ※Androidのバージョンや機種によって若干表現が異なる場合がある

2. Windows 10のスタートメニューから「設定」を選択する

3. 「デバイス」→「Bluetooth」を選択し、BluetoothをOnにする

4. 対象のスマートフォンが見えてきたら、「ペアリング」を実施


5. Windows上にパスコード確認のメッセージが表示される。同時にスマートフォンにも表示されるので、コードが同じことを確認し、両方を「はい」・「OK」を選択する



6. ペアリングが完了し、「ペアリング済み」になることを確認する


Bluetoothテザリングの設定

1. スマートフォンの設定画面から、「接続」→「テザリング」を選択し、「Bluetoothテザリング」をOnにする
※Androidのバージョンや機種によって若干表現が異なる場合がある


2. WindowsにてタスクトレイのBluetoothアイコンを右クリックし、「パーソナルエリアネットワークへ参加」を選択する


3. 「デバイスとプリンター」が開かれ、先ほどペアリングしたスマートフォンが表示されていることを確認する


4. 表示されているスマートフォンを右クリックし、「接続方法」→「アクセスポイント」を選択する


5. これでテザリングが有効になる。ただし、私の場合、以下2点の問題が発生した

 ①接続方法を選ぶ際に「アクセスポイント」ではなく「直接接続」になる。
  →Windowsを再起動して接続し直すことで解消

 ②初回接続時、テザリングで接続してもDNSの名前解決に失敗して接続できない
  →Bluetoothの接続をし直すことで解消

上記問題は設定当初だけ発生しており、現在はまったく発生しなくなった。

接続の簡略化

1. 接続手順を簡略化するために以下を実施

 ①スマートフォン側は常にBluetoothをOn、BluetoothテザリングをOn

 ②Windows側はデバイスのショートカットをデスクトップに作成


WiFiテザリングからBluetoothテザリングにしてみて

実際にBluetoothテザリングで接続すると、WiFi接続と比較すると、速度は若干遅いと感じる時がある。特に画像の重たいサイトを閲覧する際は画像が表示されるまでのタイムラグが発生する。しかし、WiFiテザリング時の不安定さは解消され、通常業務として利用する分には何ら問題はなくなった。

また、スマートフォンに関しては常にBluetoothをOnにする運用としても、ほとんどバッテリーの消費は変わらず、WindowsタブレットもWiFiをOffにしてBluetoothのみで接続することで、バッテリーの持ちが若干改善されたようだ。

2016年2月14日日曜日

QNAPにntpdをインストールしてNTPサーバーにしてみた

先日ノートPCを新調したため、旧PCにvSphere Hypervisor 6.0 (= vSphere ESXi)をインストールして仮想環境として利用することにした。その際に、インターネットアクセスをしないESXiや仮想マシンの時刻同期が実施できない問題が発生した。

すべてのサーバーにDNSを設定してインターネット経由で時刻同期するのはセキュリティ面でよろしくない。そこで、内部ネットワーク内にNTPサーバー(ntpdによるNTP Server)を構築することにした。

NTPサーバーは常時稼働している機器がよいのだが、ブロードバンドルーターはNTPサーバーの機能がなかったため、NAS (QNAP TS-112P)をNTPサーバーとして構築することにした。なお、QTS (QNAPの組み込みOS)は4.2.0で実施している。

QNAP TS-112P NTPサーバー構築手順

TS-112P(だけでなく、おそらくQNAPのNAS全般)はNTPクライアントの機能はあるが、NTPサーバーの機能はデフォルトでは実装されていない。そのためNTPサーバーの構築は、GUIだけでなくSSHによるCLIを使った、ちょっと入り組んだ作業が必要となる。

以下に構築手順を記載する。

1. Entwareのインストール

以前はOptwareという名前だったようだが、Entwareという名前に変わっているようだ。これは、NAS上でLinuxベースのパッケージ(ipkgと呼ばれるらしい)をインストールするためのパッケージ管理ツールとなる。ダウンロードは以下URLから。

   URL:http://apps.qnap.community/11-community/10-qnapware
   ダウンロードファイル名:Entware-ng_0.96.qpkg

インストールはNASのGUIにて、「App Center」→「マイアプリ」→「手動でインストール」の画面から行う。数分でインストールは完了する。


2. ntpdのインストール

以下コマンドでntp関連のパッケージを確認してみる。「ntpd - 4.2.8p6-1」が存在するので、これをインストールすればよい。

# /opt/bin/opkg list | grep ntp
-----------------------------
ntp-keygen - 4.2.8p6-1 - The ISC ntp suite is a collection of tools used to synchronize the system clock with remote NTP time servers and run/monitor local NTP servers. . This package contains the ntp-keygen.
ntp-utils - 4.2.8p6-1 - The ISC ntp suite is a collection of tools used to synchronize the system clock with remote NTP time servers and run/monitor local NTP servers. . This package contains ntpdc, ntpq and ntptime.
ntpd - 4.2.8p6-1 - The ISC ntp suite is a collection of tools used to synchronize the system clock with remote NTP time servers and run/monitor local NTP servers. . This package contains the ntpd server.
ntpdate - 4.2.8p6-1 - The ISC ntp suite is a collection of tools used to synchronize the system clock with remote NTP time servers and run/monitor local NTP servers. . This package contains ntpdate.
-----------------------------

以下コマンドでntpdをインストールする。依存関係によって、いくつか関連パッケージもインストールされる。

# /opt/bin/opkg install ntpd
-----------------------------
Installing ntpd (4.2.8p6-1) to root...
Downloading http://pkg.entware.net/binaries/armv5/ntpd_4.2.8p6-1_armv5soft.ipk.
Installing libopenssl (1.0.2f-1) to root...
Downloading http://pkg.entware.net/binaries/armv5/libopenssl_1.0.2f-1_armv5soft.ipk.
Installing zlib (1.2.8-1) to root...
Downloading http://pkg.entware.net/binaries/armv5/zlib_1.2.8-1_armv5soft.ipk.
Installing libcap (2.24-1) to root...
Downloading http://pkg.entware.net/binaries/armv5/libcap_2.24-1_armv5soft.ipk.
Configuring libcap.
Configuring zlib.
Configuring libopenssl.
Configuring ntpd.
-----------------------------

インストール結果を確認する。ntpdが表示されていればOK。

# /opt/bin/opkg list-installed
-----------------------------
entware-opt - 222108-2
findutils - 4.5.14-1
ldconfig - 2.22-2
libc - 2.22-2
libcap - 2.24-1
libgcc - 4.8.5-2
libopenssl - 1.0.2f-1
libpthread - 2.22-2
librt - 2.22-2
libssp - 4.8.5-2
libstdcpp - 4.8.5-2
locales - 2.22-2
ntpd - 4.2.8p6-1
terminfo - 6.0-1
zlib - 1.2.8-1
-----------------------------

インストールされたファイルについても、以下コマンドにて確認できる。

# /opt/bin/opkg files ntpd
-----------------------------
Package ntpd (4.2.8p6-1) is installed on root and has the following files:
/opt/etc/ntp.conf
/opt/sbin/ntpd
/opt/etc/init.d/S77ntpd
/opt/etc/hotplug.d/iface/20-ntpd
-----------------------------

3. /opt/etc/ntp.confの修正

ntp.confを修正する。一般的なntpdと何も変わらないため、以下のような普通のntp.confをviで編集すればよい。今回はNTP同期先として、以下2つを設定した。

   ntp.nict.jp
   ntp.jst.mfeed.ad.jp

ntp.confは以下のように編集した。

-----------------------------
driftfile  /opt/var/spool/ntp/ntp.drift

restrict default ignore
restrict -6 default ignore

restrict 127.0.0.1
restrict -6 ::1

restrict ntp.nict.jp kod nomodify notrap nopeer noquery
restrict ntp.jst.mfeed.ad.jp kod nomodify notrap nopeer noquery
restrict 192.168.33.0 mask 255.255.255.0 kod nomodify notrap nopeer noquery

server ntp.nict.jp iburst true
server ntp.jst.mfeed.ad.jp iburst
-----------------------------

4. 起動スクリプトの確認

ntp.confの設定が終われば後は起動させればよい。起動用のスクリプトは以下ディレクトリに保存されている。

/opt/etc/init.d/S77ntpd

このファイルの修正は不要だが、一応中身を確認してみる。

# cat /opt/etc/init.d/S77ntpd
-----------------------------
#!/bin/sh

ENABLED=yes
PROCS=ntpd
ARGS="-c /opt/etc/ntp.conf -f /opt/var/spool/ntp/ntp.drift -s /opt/var/spool/ntp -k /opt/etc/ntp -l /opt/var/spool/ntp/ntp.log"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func
-----------------------------

共通のrc.funcというスクリプトに変数を渡してntpdを起動する仕組みなっている。rc.func内のstart()関数を確認すると、以下コマンドでサービス実行を行う作りになっていることがわかる。

$PREARGS $PROC $ARGS > /dev/null 2>&1 &

したがって、ntpdの場合は以下コマンドにて起動することになる。

ntpd -c /opt/etc/ntp.conf -f /opt/var/spool/ntp/ntp.drift -s /opt/var/spool/ntp -k /opt/etc/ntp -l /opt/var/spool/ntp/ntp.log

※オプションの説明
-c : 設定ファイルの指定
-f : driftファイルの指定
-s : 統計情報の保存先ディレクトリを指定
-k : NTP認証キーファイルの指定(今回は未使用)
-l : ログの出力先ファイルの指定

5. ntpd起動

起動スクリプトを用いてntpdを起動させる。

# /opt/etc/init.d/S77ntpd start
-----------------------------
 Starting ntpd...              done.
-----------------------------

起動後に同期状況を確認する。右側に*が付いている行があれば、同期成功。

# ntpq -p
-----------------------------
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp3.jst.mfeed. 133.243.236.17   2 u    -   64    1   33.206   -0.580   2.465
*ntp-a3.nict.go. .NICT.           1 u    1   64    1   39.792   -3.131   1.182
-----------------------------

なお当方の環境では、なぜかクライアントからNASに対して時刻同期すると失敗したので、一度ntpdの再起動を実施した。

# /opt/etc/init.d/S77ntpd restart
-----------------------------
 Shutting down ntpd...              done.
 Starting ntpd...              done.
-----------------------------

6. ntpクライアントからの同期確認

WindowsからNASに対して時刻同期を実施してみると、以下の通り正常にNASと同期した。


Linuxも同様に成功。

# ntpq -p
-----------------------------
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.33.3    133.243.238.164  2 u    1   64    1    0.144    1.795   0.051
-----------------------------

7. (参考情報)NAS再起動時の自動起動設定

結論から言うと、特に設定は不要。NASの再起動時に自動でntpdは起動する。

どこに起動設定が入っているか確認してみると、Entwareの起動スクリプト内に組み込まれていることがわかったので、参考までに記載する。

# cat /etc/rcS.d/QS106Entware-ng
-----------------------------
~ 略 ~

case "$1" in
  start)

~ 略 ~

  /bin/echo "Enable Entware-ng/opkg"
        # sym-link $QPKG_DIR to /opt
        /bin/rm -rf /opt
        /bin/ln -sf $QPKG_DIR /opt
        # adding opkg apps into system path ...
        /bin/cat /root/.profile | /bin/grep "source" 1>>/dev/null 2>>/dev/null
        [ $? -ne 0 ] && /bin/echo "source /opt/etc/profile" >> /root/.profile
        # startup Entware-ng services
        /opt/etc/init.d/rc.unslung start
    ;;

~ 略 ~
-----------------------------

内部でrc.unslungというスクリプトを呼び出していることがわかるので、さらに内容を確認してみると、/opt/etc/init.d内の起動スクリプトに対して起動処理を実施していることがわかる。

# cat /opt/etc/init.d/rc.unslung
-----------------------------
~ 略 ~

for i in $(/opt/bin/find /opt/etc/init.d/ -perm '-u+x' -name 'S*' | sort $ORDER ) ;
do
    case "$i" in
        S* | *.sh )
            # Source shell script for speed.
            trap "" INT QUIT TSTP EXIT
            #set $1
            #echo "trying $i" >> /tmp/rc.log
            . $i $ACTION $CALLER
            ;;

~ 略 ~
-----------------------------

参考URL

Optware IPKG

Install Optware IPKG



2016年2月12日金曜日

SSHとESXiシェルを有効にした際の警告表示を消す方法

ESXiはバージョン5以降は、デフォルトでSSHやESXiシェルによるアクセスが無効化されてしまっているようだ。しかし、相変わらずコマンド操作でなければできないことも多いので、有効化することが多いと思う。

しかし、有効化すると、vSphere Clientでログインした際に、ESXiのサマリタブにて以下のような警告が表示されてしまう。

  「ホストの ESXi シェルは有効になっています」
  「ホストの SSH は有効になっています」


VMwareとしてはセキュリティの観点から、SSH・ESXiシェルは有効にするな、ということだと思うが、承知したうえで有効にしている場合は、とても目障りな警告となる。というわけで、消す方法を調べてみた。

警告表示を消す方法

きちんとVMwareのKBとして用意されていた。
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2080326

手順としては以下の通り。

1. vSphere Clientにて、対象のESXiを選択→「構成」タブ→ソフトウェアの「詳細設定」をクリックする

2. 「詳細設定」の画面が開くため、左ツリーから「UserVars」を選択し、最下部にある「UserVars.SuppressShellWarning」の値を"0"→"1"に変更する

 ※わかりにくが、"0"が警告有効、"1"が警告無効
 ※Suppressは「抑制する」という意味


3. 反映すると「サマリ」タブを開いても警告が表示されなくなる


複数ESXiが存在する場合は、面倒だが上記を全台に対して個別に設定する必要がある。

2016年1月19日火曜日

Windows標準コマンドでheadやtailする

残念ながらコマンドプロンプトでは簡単に実現できないが、PowerShellを使えばできる、という小ネタ。コマンドは以下の通り。

・head
Get-Content "<ログファイル名>" | Select-Object -first 100

・tail
Get-Content "<ログファイル名>" | Select-Object -last 100

中間を取り出したい場合は、2通り方法がある。例えば、以下のようなテキストファイル(test.txt)があるとして、3行目~5行目を取り出したい場合のコマンドを考える。

-------例ここから
1 a
2 b
3 c
4 d
5 e
6 f
7 g
-------例ここまで

①firstとlastを組み合わせる

Get-Content "test.txt" | Select-Object -first 5 | Select-Object -last 3

-------結果ここから
3 c
4 d
5 e
-------結果ここまで

②skipを使う

Get-Content "test.txt" | Select-Object -skip 2 -first 3

※以下のようにオプションの順番を変えても結果は同じ。どうやらskipはfirstよりも先に処理される模様
Get-Content "test.txt" | Select-Object -first 3 -skip 2

-------結果ここから
3 c
4 d
5 e
-------結果ここまで

感覚的には①の方法が、実際に抜き出したい行の番号と、オプションの指定が一致するのでわかりやすいと思う。処理的にはおそらくパイプが1回で済む②が速いと思われる(未検証)。

人気の投稿