ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

2013年1月22日火曜日

ネットワークカードを交換したら、eth0がeth1になる(CentOS編)



"70-persistent-net.rules" にMACアドレスと eth* との対応が書かれている。
これを編集してeth0に書き換えればいいのだが、削除すると再起動時に生成されるため、"70-persistent-net.rules.old" などにリネームしておいて、再起動してしまえばいい。

cd /etc/udev/rules.d/
mv 70-persistent-net.rules 70-persistent-net.rules.old

これで新しいMACアドレスで eth0 の設定が作成される。なお、この時にIPアドレスの変更はない。


2012年10月13日土曜日

.htpasswdの作成と.htaccessによる認証(アクセス制御)


.htpasswdの作成

.htpasswdファイルの保存場所は、public_htmlより上位フォルダへ作成。
.htpasswdファイル用の適当なフォルダを作成しておくとよい。

新規作成の場合は、"-c" オプションを付ける。
user1 を作成
# htpasswd -c /home/user/pwd/.htpasswd user1


パスワードを入力すると.htpasswdに user1 が作成される。

# New password:
# Re-type new password:
# Adding password for user user1





ユーザを追加する場合は、"-c" オプションは付けない。(-c をつけると以前の情報が消えてしまう)
user2 を追加する
# htpasswd /home/user/pwd/.htpasswd user2


また、パスワードの変更は同様の手順で上書きされる。
user1 のパスワードを変更

# htpasswd /home/user/pwd/.htpasswd user1





.htaccessの作成

.htaccessはアクセス制御を行いたいフォルダに置く。例えば、.htpasswdを利用したパスワードを設定したいだけなら、下のようになる。

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user


各項目の概略

AuthUserFileパスワードファイルの場所
AuthGroupFileグループファイルの指定、必要ないので "/dev/null"
AuthName認証時のメッセージ
AuthType認証方法、Basic認証を指定
requirevalid-userは全てのユーザ、"user [username]"で任意のユーザ


また、Basic認証とIPアドレスによる認証を行いたい場合は下のように記述する。


Order Deny,Allow
Deny from all
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user

上記は、指定したIPアドレスとBasic認証の両方が一致しなければアクセスできないようになる
どちらか片方の条件を満たしたら許可したい場合は、"Satisfy Any" の記述を加える。


Order Deny,Allow
Deny from all
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user

Satisfy Any


また、携帯やスマートフォンなどからの制御も行いたい場合は次のような記述方法もある。

SetEnvIf X-UP-SUBNO ^05001234567890_ag\.ezweb\.ne\.jp$ mobilephone
SetEnvIf X-UP-SUBNO ^05012345678901_ae\.ezweb\.ne\.jp$ mobilephone
Order Deny,Allow
Deny from all
Allow from env=mobilephone
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require user user1

Satisfy Any

上記は指定されたユーザ(user1)での au のサブクラスID の認証を加え、指定された契約者IDの端末または指定されたIPアドレスで認証、それ以外はBasic認証によるアクセス制御となる。




2012年10月10日水曜日

NTPサーバーの設定(CentOS)



NTPの設定を忘れていたようで、いつの間にか時刻がズレていた。
今更ながら自宅鯖(CentOS)にntpの設定を行う。

CentOSにNTPサーバーの設定


ntpのインストール、ntpパッケージで行う。
# yum install -y ntp



ntp.confでNTPサーバーを指定する。
# vi /etc/ntp.conf


デフォルトでは下記の設定となっている、必要ないので削除。
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org


自分の契約しているプロパイダは、NTPの提供がないので、独立行政法人情報通信研究機構(NICT)で設定。
server ntp.nict.jp



ntp.confの編集が終わったら、NTPサーバーを起動。
# /etc/init.d/ntpd start
ntpd を起動中:                                             [  OK  ]



NTPサーバーの自動起動を設定する。
# chkconfig ntpd on



下記コマンドで、NTPサーバーの状態確認が出来る。
# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-a3.nict.go. .NICT.           1 u   17   64    3   17.167  -410704   1.775

サーバー名の頭に * が、同期完了の印となっている。10分後にもう一度確認。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a3.nict.go. .NICT.           1 u   52   64   17   15.958   -7.631   5.141
同期完了の印 * が付いている、現在時刻も日本標準時刻で補正されたようだ。


(補足)時刻のずれが大きいと補正できないため、その場合は一旦自分で同期を行う。
# ntpdate ntp.nict.jp


自宅NTPサーバで、Windowsの時刻同期

NTP起動した自宅サーバーで、LAN内のパソコンや端末、プリンタなどにNTP設定を行う。
下記はWindows7の場合。


タスクバー右下の日付と時刻をクリック、「日付と時刻の設定の変更」をクリックして、「インターネット時刻」タブに切り替える。

「設定の変更」より、NTPサーバー(自宅サーバー)のIPアドレスを入力後、「今すぐ更新」を押す。





うまく同期が出来たようだ。他のPCやプリンタなどにも同様にNTPを設定しておけば、自宅LAN内全ての端末が同じ時刻になる。

PCを複数台所有の場合は、とくにバックアップなどファイルのタイムスタンプがズレないように、時刻の同期は必要かと。


2012年8月30日木曜日

Shuttle XS35V2、BIOSアップデートで自動電源投入が可能に


自宅サーバとして使用している日本Shuttle XS35V2。購入時は停電したときなどに、電源が自動復帰しない。最新のBIOSをアップデートすることにより、電源自動投入が可能に。

アップデートは簡単である、Shuttleのウェブページにツールも一緒にダウンロードできる。今回はDOSでのアップデートを行う、必要なものは下記。
  1. USBフロッピードライブ
  2. フロッピーディスク
  3. BIOSアップデートファイル
1.は近所のショップでは見かけなくなった。自分はコンプマートにて1700円で購入したが、いまも Amazon などで、送料込みでも2000円前後で購入可能。


2.もあまり見かけなくなったが、きっと専門店ならまだ置いているだろう。

3.はShuttleのウェブページよりダウンロード。

Shuttle XS35V2 BIOS のアップデート

まずは、最新のBIOSアップデートファイルをShuttleのウェブページからダウンロードする、現時点では「XS35V200.104」が最新。「1.Add "Restore on AC Power Loss" function.」と、自動電源投入の項目が書かれている。


ダウンロードしたファイルを解凍すると、3つのファイルが確認できる。


次に起動用FD(フロッピーディスク)を準備する、FDは起動用としてフォーマットしておく。このとき作成されるファイルで、"COMMAND.COM", "IO.SYS", "MSDOS.SYS" 以外のファイルは不要になるので削除。

この起動用FDの中に、さきほどダウンロードして3つのファイルをコピーする。


BIOSのアップデートを開始する前に、現在のBIOS設定状況(バージョン)を確認しておく。BIOSメニューは起動時に"Delete"でメニューが開く。
とくにSATAの設定などは、後々トラブルの原因になるので必ず確認。当方BIOSバージョンは、1.01、SATAのモードは、AHCIとなっている。


BIOSの設定で、USBを優先起動とし、さきほど作成したFDから起動、"FLASH.BAT" を実行する。
アップデートが完了すると自動で再起動する、かんたん簡単。


再起動後、BIOSメニューを起動。BIOSバージョンが上がっていることを確認する。



ほとんどの場合は、ここでBIOSがデフォルト値に戻っているが、マニュアルにそって念のためデフォルト値のロードを行う。


再起動後、再びBIOSメニューを開き、設定を書き換え前の値にする。


「Advanced」メニュー内に、"Restore on AC Power Loss" が追加されているので、値を "Power On" にする。これで停電時などに自動で電源が復帰するはずである。



BIOSを保存後に確認のため、一度電源を抜き挿ししてみる。
...無事起動、CentOSが起動しました。めでたしめでたし。


2012年3月28日水曜日

MRTGでサーバ監視 indexmakerを使う

前回作成した各ページを、1つのページにおさめたい。
MRTGには予め付属のindexmakerというツールがある、これを使えば簡単にできてしまう。

indexmaker コマンドのパラメータに、mrtg.cfg と URLを下記の通り入力。
# indexmaker /etc/mrtg/mrtg.cfg > /home/user/public_html/mrtg/index.html


これだけで、index.htmlが作成される。ただ、文字コードがデフォルトで iso-8859-15 になっているので、これだけは手動で修正する必要がある。

# vi /home/user/public_html/mrtg/index.html


euc-jpに修正できたら、http://[SeverIP]/mrtg/ を開く。

2012年3月27日火曜日

NET-SNMP、lm_sensors、MRGTによる監視

NET-SNMPパッケージをインストールする


# yum install net-snmp



NET-SNMPの設定を行う。


# vi /etc/snmp/snmpd.conf

#com2sec notConfigUser default public <-コメントアウト
com2sec local localhost private <-追加
com2sec mynetwork 192.100.100.0/24 public <-追加
#view systemview included .1.3.6.1.2.1.1 <-コメントアウト #view systemview included .1.3.6.1.2.1.25.1.1 <-コメントアウト view all included .1 80 <-追加 #group notConfigGroup v1 notConfigUser<-コメントアウト #group notConfigGroup v2c notConfigUser<-コメントアウト group MyROGroup v1 mynetwork<-追加 group MyROGroup v2c mynetwork<-追加 ↓コメントアウト
#access notConfigGroup "" any noauth exact systemview none none
access MyROGroup "" any noauth exact all none none <-追加
access MyRWGroup "" any noauth exact all all none <-追加
disk / 10000 <-コメント外す


snmpdの起動と、自動起動設定。


# /etc/rc.d/init.d/snmpd start
snmpd を起動中: [ OK ]
# chkconfig snmpd on





MRGTパッケージをインストールする


# yum install mrtg



MRTGの設定を行う


設定ファイルの作成
# cfgmaker --ifref=descr --ifdesc=descr public@192.100.100.50 >
/etc/mrtg/mrtg.cfg


mrtg.cfg を編集
# vi /etc/mrtg/mrtg.cfg

# WorkDir: /home/http/mrtg
WorkDir: /home/user/public_html/mrtg <- mrtgフォルダの設定
              (今回はユーザフォルダに置くことにする)

# Options[_]: growright, bits
Options[_]: growright, noinfo <- グラフの時間軸を左から右へ設定する

Language:eucjp <-追加


### Interface 2 >>...
TargetからPageTopまでの値 "[192.100.100.50_eth0]" をすべて
"[eth0]" に修正する。
<table>から</table>までの値(<table>タグ含む)をすべて削除する


最終行に下記値を追加する

### CPU Load Average ###
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Title[cpu]: CPU Load Average
PageTop[cpu]: <H1>CPU Load Average</H1>


### Memory Free ####
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:
MaxBytes1[mem]: 4010280
MaxBytes2[mem]: 6242296
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: Memory Free
PageTop[mem]: <H1>Memory Free</H1>


### Disk Used ####
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: / Disk Used
Legend1[disk]: / Disk used
Legend2[disk]: / Disk used
Title[disk]: Disk Used
PageTop[disk]: <H1>Disk Used</H1>


### CPU Temperature ####
Target[cputemp]: `/usr/bin/sensors | grep 'Core' |
awk '{print $3}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'`
MaxBytes[cputemp]: 100
Title[cputemp]: CPU Temperature
PageTop[cputemp]: <H1>CPU Temperature</H1>
Options[cputemp]: growright,absolute,gauge,nopercent,noinfo
WithPeak[cputemp]: ymw
unscaled[cputemp]: dwmy
YLegend[cputemp]: Temperature
ShortLegend[cputemp]: C
LegendI[cputemp]: Core 0
LegendO[cputemp]: Core 1
Legend1[cputemp]: Core 0
Legend2[cputemp]: Core 1


### M/B Temperature ####
Target[mbtemp]: `/usr/bin/sensors | grep 'temp1' |
awk '{print $2}{print $2}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'`
MaxBytes[mbtemp]: 100
Title[mbtemp]: M/B Temperature
PageTop[mbtemp]: <H1>M/B Temperature</H1>
Options[mbtemp]: growright,absolute,gauge,nopercent,noinfo
WithPeak[mbtemp]: ymw
unscaled[mbtemp]: dwmy
YLegend[mbtemp]: Temperature
ShortLegend[mbtemp]: C
LegendI[mbtemp]: Temp
LegendO[mbtemp]: Temp
Legend1[mbtemp]: M/B Temp
Legend2[mbtemp]: M/B Temp


前回 lm_sensors でCPU温度が取得できるようになった、今回は取得した温度をログに記録する。
lm_sensors を実行すると、下記のように表示される。
# sensors

acpitz-virtual-0
Adapter: Virtual device
temp1: +54.0°C (crit = +104.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +22.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +23.0°C (high = +80.0°C, crit = +100.0°C)



下記コマンドオプションを加えることで、温度(数値)だけ表示させることができる。
# /usr/bin/sensors | grep 'Core' |
awk '{print $3}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'
22.0
23.0


M/B(Chipset)温度は、下記で取得。
# /usr/bin/sensors | grep 'temp1' |
awk '{print $2}{print $2}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'
54.0
54.0


M/Bの温度取得については、MRTGの入力は2系統であるので、printで同じ値を2度出力している。


メモリーについては、freeコマンドで、メモリーとスワップの最大容量を確認して、それぞれ値を設定する。
# free
total used free shared buffers cached
Mem: 4010280 231876 3778404 0 12204 142772
-/+ buffers/cache: 76900 3933380
Swap: 6242296 0 6242296





保存したら、設定ファイルの文字コードをEUCに変換する。
設定ファイルのバックアップ
# cp /etc/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg.org

nkfでコードをEUCに変換
# nkf -e /etc/mrtg/mrtg.cfg.org > /etc/mrtg/mrtg.cfg


なお、nkfがインストールされてない場合は、nkfパッケージをインストール。
# yum install nkf



MRTGの起動スクリプトを作っておく

# vi mrtg.sh

#!/bin/bash

LOCK=/var/lock/mrtg/mrtg_l
CONFCACHE=/var/lib/mrtg/mrtg.ok

export LANG=ja_JP.eucJP
mrtg /etc/mrtg/mrtg.cfg --lock-file $LOCK --confcache-file $CONFCACHE



# chmod 700 mrtg.sh <- 権限の付加




外部からアクセスできるように許可をする
# vi /etc/httpd/conf.d/mrtg.conf

#Alias /mrtg /var/www/mrtg
Alias /mrtg /home/user/public_html/mrtg <- 変更する

<Location /mrtg>
Order deny,allow
Deny from all
Allow from All <-追加
#Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>


設定の反映
# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]


とりあえずALLとして、アクセス制御は .htaccess で行えばよい。

crondが起動していない場合は、起動または再起動させる。
# service crond restart
crond を停止中: [ OK ]
crond を起動中: [ OK ]



動作確認


それぞれのグラフは [SeverIP]/mrtg/[label].html でアクセスできる。
たとえば、CPU温度であれば、http://192.100.100.50/mrtg/cputemp.html

2012年3月26日月曜日

lm_sensorsのインストール

CPU温度を確認するため、lm_sensorsをインストールする。XS35V2はSSD仕様のため、ディスク(SSD)の温度は計測しない(シリコンだから、たぶん80℃までは大丈夫なのかな?)

# yum install lm_sensors

Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package lm_sensors.i686 0:3.1.1-10.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================
Package Arch Version Repository Size
============================================================
Installing:
lm_sensors i686 3.1.1-10.el6 base 122 k

Transaction Summary
============================================================
Install 1 Package(s)

Total download size: 122 k
Installed size: 343 k
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 122 k
lm_sensors-3.1.1-10.el6.i686.rpm | 122 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : lm_sensors-3.1.1-10.el6.i686 1/1

Installed:
lm_sensors.i686 0:3.1.1-10.el6

Complete!



続いて設定、設定は下記コマンドで行う、質問は基本[Enter]で処理。

# sensors-detect

Stopping lm_sensors: not configured, run sensors-detect [警告]
# sensors-detect revision 1.1
# System: Standard XS35
# Board: Shuttle B10IE01

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):
Silicon Integrated Systems SIS5595... No
VIA VT82C686 Integrated Sensors... No
VIA VT8231 Integrated Sensors... No
AMD K8 thermal sensors... No
AMD Family 11h thermal sensors... No
Intel Core family thermal sensor... Success!
(driver `coretemp')
Intel AMB FB-DIMM thermal sensor... No
VIA C7 thermal and voltage sensors... No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no):
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... No
Trying family `ITE'... No
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor'... Yes
Found unknown chip with ID 0x8500

Some systems (mainly servers) implement IPMI, a set of common interfaces
through which system health data may be retrieved, amongst other things.
We first try to get the information from SMBIOS. If we don't find it
there, we have to read from arbitrary I/O ports to probe for such
interfaces. This is normally safe. Do you want to scan for IPMI
interfaces? (YES/no):
Probing for `IPMI BMC KCS' at 0xca0... No
Probing for `IPMI BMC SMIC' at 0xca8... No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (YES/no):
Probing for `National Semiconductor LM78' at 0x290... No
Probing for `National Semiconductor LM79' at 0x290... No
Probing for `Winbond W83781D' at 0x290... No
Probing for `Winbond W83782D' at 0x290... No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no):
Using driver `i2c-i801' for device 0000:00:1f.3: Intel 82801G ICH7
Module i2c-dev loaded successfully.

Next adapter: i915 gmbus disabled (i2c-0)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus ssc (i2c-1)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOB (i2c-2)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus vga (i2c-3)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOA (i2c-4)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus panel (i2c-5)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOC (i2c-6)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus dpc (i2c-7)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOD (i2c-8)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus dpb (i2c-9)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOE (i2c-10)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus reserved (i2c-11)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 gmbus dpd (i2c-12)
Do you want to scan it? (YES/no/selectively):

Next adapter: i915 GPIOF (i2c-13)
Do you want to scan it? (YES/no/selectively):

Next adapter: SMBus I801 adapter at 0400 (i2c-14)
Do you want to scan it? (YES/no/selectively):
Client found at address 0x50
Probing for `Analog Devices ADM1033'... No
Probing for `Analog Devices ADM1034'... No
Probing for `SPD EEPROM'... No
Probing for `EDID EEPROM'... No

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `coretemp':
* Chip `Intel Core family thermal sensor' (confidence: 9)

Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no):
Starting lm_sensors: loading module coretemp [ OK ]
Unloading i2c-dev... OK



とりあえず、sensors を実行すると、次の値が出た。とりあえず、M/BとCPUの温度だけとれているようだ。

# sensors

acpitz-virtual-0
Adapter: Virtual device
temp1: +52.0°C (crit = +104.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +19.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +20.0°C (high = +80.0°C, crit = +100.0°C)



なお、lm-sensorsが対応していない場合は、下記URLからsensors-detectの最新版をダウンロードして実行。
http://dl.lm-sensors.org/lm-sensors/files/

2012年3月22日木曜日

.htaccessによる認証

.htaccessでパスワードかIPどちらかの認証を満たしていれば許可する



.htaccessで「Satisfy Any」を指定すると、どちらかの認証を通ればいい設定となる。デフォルトは「Satisfy All」で、両方の認証を必要とする。

下記は"192.100.100"ネットワークからのアクセスは許可、それ以外はBasic認証を必要としている。

order deny,allow
deny from all
allow from 192.100.100

AuthType Basic
AuthName "pas"
AuthUserFile /home/user/pas/.htpasswd
require valid-user
Satisfy Any



携帯電話で個体識別情報(AGENT)による認証


携帯電話には、個体を識別するための情報がある。これを利用して.htaccessでアクセス制御を行うことが可能だ。
PHPなどで、正規表現などを利用しUSER AGENTの中から個体識別情報を抽出することができる。

au携帯の固有ID(サブスクライバー ID)


auには、EZ番号(サブスクライバID)と呼ばれる29桁のユニークID番号がある。

//PHPでのサブスクライバIDを取得
$id = $_SERVER['HTTP_X_UP_SUBNO'];



ドコモとソフトバンク携帯の個体識別番号


ドコモとソフトバンク携帯の個体識別番号15桁のユニークIDがある。

//PHPでの個体識別番号を取得
preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $useragent, $match);
$id = $match[1];



au携帯で固有ID(サブスクライバー ID)による認証の例



SetEnvIf X-UP-SUBNO ^05012345678901_ag\.ezweb\.ne\.jp$ mobilephone
SetEnvIf X-UP-SUBNO ^05012345678902_ae\.ezweb\.ne\.jp$ mobilephone
Order Deny,Allow
Deny from all
Allow from env=mobilephone
Allow from 192.100.100


上記は2つのサブスクライバーIDと"192.100.100"ネットワークからのアクセスのみ可能。
実用には、さらに各キャリアのIPアドレス帯域を使用して、指定キャリア以外からはアクセスできないようにする。
au のIPアドレス帯域
docomo(iモード)のIPアドレス帯域
ソフトバンクのIPアドレス帯域

2012年3月21日水曜日

hosts.allowとhosts.denyによるアクセス制御

hosts.allowに許可、hosts.deny拒否設定を記述。基本hosts.denyはALLとし、すべての接続を拒否したうえで、hosts.allowに許可するホストを記述する。
SSHは鍵認証で行なっているので、sshd:ALLとし、すべての接続先を許可している。Webへのアクセス制御は、.htaccessで設定。

hosts.allow と hosts.deny ファイルは、保存した時点で反映されるため、リモートで設定する場合は、必ず hosts.allow から編集する。

hosts.allowの設定


# vi /etc/hosts.allow

all:127.0.0.1
all:192.100.
sshd:ALL


hosts.denyの設定


# vi /etc/hosts.deny

ALL:ALL

2012年3月20日火曜日

my.cnf、php.iniの編集

my.cnfの編集


基本UTF-8をベースとします。
# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

default-character-set=utf8
skip-character-set-client-handshake

character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8



設定の反映
# /etc/rc.d/init.d/mysqld restart
mysqld を停止中: [ OK ]
mysqld を起動中: [ OK ]




php.iniの編集


こちらもUTF-8を標準設定します。
# vi /etc/php.ini

//デフォルトの文字コード
;default_charset = "iso-8859-1"
default_charset = "UTF-8"

//タイムゾーン
;date.timezone =
date.timezone = "Asia/Tokyo"

//利用言語の設定
;mbstring.language = Japanese
mbstring.language = Japanese

//マルチバイト文字列関数のデフォルト文字コード
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8

//HTTP入出力の文字コード変換。passにして、自動変換offとする。
;mbstring.http_input = auto
mbstring.http_input = pass

;mbstring.http_output = SJIS
mbstring.http_output = pass

;mbstring.encoding_translation = Off
mbstring.encoding_translation = Off

//文字コード自動判別に優先する文字コード
:mbstring.detect_order = auto
mbstring.detect_order = auto

//変換に失敗した場合に表示する文字
;mbstring.substitute_character = none;
mbstring.substitute_character = none;

//オーバーロードされる関数の指定(今回はオーバーロードしない)
;mbstring.func_overload = 0
mbstring.func_overload = 0

//文字コードの自動判別を厳密に行うかの設定
:mbstring.strict_detection = Off
mbstring.strict_detection = Off

//MIMEタイプの指定(空白)
;mbstring.http_output_conv_mimetype=
mbstring.http_output_conv_mimetype=



設定の反映
# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

2012年3月19日月曜日

MySQLデータベースの引越し作業

旧サーバから新サーバへ、MySQLデータベースの引越し作業

MySQLデータベースのバックアップ


旧サーバのMySQLデータベースのバックアップをとる、
下記コマンドで、すべてのテーブルをロックして、1つのファイルにダンプする
$ mysqldump -u [username] -p -x --all-databases > [filename]


バックアップしたMySQLデータベースのリストア


新サーバへバックアップしたMySQLデータベースをリストアする
$ mysql -u [username] -p < [filename]

MySQLデータベースの引越しは以上、とても簡単。


ユーザの追加


旧サーバで使用していた user を追加。
下記は、select,insert,update,delete,file 実行権限を持つユーザを追加する場合の例
mysql> grant select,insert,update,delete,
file on *.* to [username] identified by 'password';
Query OK, 0 rows affected (0.00 sec)


データベースの確認


$ mysql -uroot -p

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| public             |
| userdb             |
| test               |
+--------------------+
5 rows in set (0.00 sec)



コマンドの覚書


MySQLへの接続
    mysql -u[user name] -p
データベースへの接続
    mysql -u[user name] -p [database name]
データベースへのアクセス
    use [database name];
データベースの確認
    show databases;

2012年3月15日木曜日

CentOS6.2 WOL(Wake On Lan)

CentOSから他のPCの電源を入れる、
CentOSには「ether-wake」コマンドがすでにインストールされており、これを使えば下記のようにマジックパケットを投げられる。
# ether-wake -i eth0 00:24:A5:xx:xx:xx //(MACアドレス)


しかし「ether-wake」コマンドは、rootでしか実行できないため、「wakeonlan」のパッケージを使用したと思う。

以下のサイトから wakeonlan-0.41-0.fdr.1.noarch.rpm をダウンロード
http://gsd.di.uminho.pt/jpo/software/wakeonlan/

rpmでインストールして完了
# rpm -ivh wakeonlan-0.41-0.fdr.1.noarch.rpm


一般ユーザにて wakeonlan を実行してみる。
$ wakeonlan 00:24:A5:xx:xx:xx //(MACアドレス)
Sending magic packet to 255.255.255.255:9 with 00:24:A5:xx:xx:xx

これで、root以外でもWOLで起動できる

毎回コマンド(MACアドレス)を入力するのは手間であり、識別がしにくいので.shを作っておくとよい。
$vi wol-freenas.sh

#!/bin/sh
wakeonlan 00:24:A5:xx:xx:xx


これで次回から起動PCの管理が楽になる
$ ./wol-freenas.sh

2012年3月14日水曜日

CentOS Apache2.2の設定(ユーザーディレクトリ)

Apache 2.4.1(安定版)がリリースされたようだ、認証の改良や複数のMPMを動的に読み込みできるなど、追加モジュールも増えたが、 Apache 2.2と比べてCPU使用率やメモリー消費が多いようだ。現段階、我が家では Apache 2.2 を使用する。

ユーザーディレクトリの設定



httpd.confを編集
# vi /etc/httpd/conf/httpd.conf

#AddDefaultCharset UTF-8 <-コメントアウト(文字化け対策)

//これより以下の部分は、Aliasでのエラー回避のため
最終行へ移動( ~ を表示しない場合)

<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled <-コメントアウト

#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html <-コメント解除

//ユーザは~(チルダ)なしでアクセスできるよう設定を追加
AliasMatch ^/([^/]+)/(.*) /home/$1/public_html/$2
</IfModule>

//下記を追加
<Directory /home/*/public_html>
AllowOverride All <- .htaccess許可
Options IncludesNoExec ExecCGI FollowSymLinks <- CGI許可
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>


設定の反映
# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]


ユーザディレクトリ作成
# mkdir /home/user/public_html
# chmod 755 /home/ <- パーミッション確認
# chmod 755 /home/user/ <- パーミッション変更
# chmod 755 /home/user/public_html/ <- パーミッション変更



確認
$ vi /home/seiji/public_html/index.html







※SELinuxが有効のときに、"Permission denied..." エラーが出る場合がある。SELinuxが有効か無効かは "getenforce" コマンドで確認する

# getenforce
Enforcing <-SELinux有効
Permissive <-SELinux無効


無効にするには、rootで下記コマンド。
# setenforce 0


また、起動時に無効になるよう設定しておく。
# vi /etc/sysconfig/selinux

#SELINUX=enforcing
SELINUX=disabled

2012年3月8日木曜日

CentOS6.2 鍵認証によるSSHログイン

鍵認証によるSSHログインを設定する。

公開キーと秘密キーを生成


自分はTera Term Proをよく使用するので、Tera Term Proで公開キーと秘密キーを生成。
Tera Term のメニューバーより[設定]-[SSHキー生成]、今回はDSAを使用する。
キーのパスフレーズとパスフレーズに任意のパスワードを入力し、[公開鍵の保存]と[秘密鍵の保存]ボタンを押して、それぞれ任意の場所に保存する


サーバへ公開鍵を設定


ログインするユーザフォルダ直下に.sshフォルダを作成し、ディレクトリのアクセス権を設定。
mkdir -p /home/[user]/.ssh/
chmod 700 .ssh/
chmod go-w /home/[user] /home/[user]/.ssh


公開鍵をサーバへ転送する、転送は Tera Term の場合 ターミナル画面へドラッグ&ドロップすると、SCP転送ができる。この時に出るポップアップメニューでは「SCP」を選択する。「ファイル転送」を選んでしまうと、ファイルの内容がターミナルに送信されてしまう。


送信したファイルは、最初にログインしたユーザのホームディレクトリ(/home/[user]/)に送信される。FTPで送信してもいいが、SCPの方が安全である。

公開鍵を.ssh/authorized_keys に移動(リネーム)、パーミッションを600に設定。
mv id_dsa.pub /home/[user]/.ssh/authorized_keys
chmod 600 authorized_keys


※所有者が異なる場合は権限をログインするユーザとする
chown [user] authorized_keys
chown [user] .ssh/


※chmodのパラメータ

//ユーザー表記
u 所有者
g グループ
o その他
a 全て

//権限指定
+ 後述権限の付加
- 後述権限を削除
= 後述権限に変更

//権限表記
r 読みだし権限
w 書き込み権限
x 実行可能権限
s セットID
t スティッキー・ビット

//文字 数値 内容
r 4 読みだし可
w 2 書き込み可
x 1 実行可能
※上記数値の組み合わせ(加算)により設定



sshd_configの編集
vi /etc/ssh/sshd_config

//パスワードでの認証を禁止
#PasswordAuthentication yes
PasswordAuthentication no

//公開鍵認証を許可(ssh2のみ)
#PubkeyAuthentication yes
PubkeyAuthentication yes

//authorized_keysの場所(user配下の.sshフォルダ)
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys


sshをリロード、設定を反映させる
/etc/rc.d/init.d/sshd restart




秘密鍵でログイン



Tera Term Pro で接続する、
鍵を作成したときのパスフレーズを入力、作成した秘密鍵を設定し接続。



鍵認証によりログインができた。
Last login: Thu Mar  8 23:14:22 2012 from 192.100.xxx.xxx
[user@xs35v2 ~]$

2012年3月5日月曜日

CentOS rootでの直接ログインを禁止

いろいろと勉強したことが多くて、なかなか自宅サーバの移行が進まないが、少しずつでも片付けておきたい。

とりあえずSSHで接続する際に、rootのログインを禁止する設定を行う。rootでのログインは、一般ユーザでログインしてからrootに切り替える。直接rootでログインするのはセキュリティ上よろしくない。

まずは一般ユーザの追加から行う。
# useradd [username]


作成したユーザにパスワードを設定する。
# passwd [username]


ユーザの追加ができたら、一度ログアウトして、ログインできるか確認しておく。
また、rootになれるかも確認しておく。
$ su - root
パスワード:



上記確認ができてから、rootでのログインを禁止する。設定はrootで行う。
sshd_config内の PermitRootLogin のコメント(#)を外し、'PermitRootLogin no'にする
[root@xs35v2 ~]# vi /etc/ssh/sshd_config

#PermitRootLogin yes
PermitRootLogin no


sshdをリロードして、設定の反映をする。
[root@xs35v2 ~]# /etc/rc.d/init.d/sshd reload
sshd を再読み込み中: [ OK ]


これで、rootでの直接ログインはできなくなる。

2012年3月1日木曜日

CentOS6.2にLAMPインストール

LAMPインストール



LinuxのRPM互換パッケージ管理システムであるyumを使ってLAMPをインストールする。
LAMPとは、Linux+Apache+MySQL+PHPのことである。

まずはパッケージの確認
# yum list install httpd php mysql-server
httpd.i686 2.2.15-15.el6.centos.1
mysql-server.i686 5.1.61-1.el6_2.1
php.i686 5.3.3-3.el6_2.6


確認ができたらインストール
# yum install httpd php mysql-server


次に追加モジュールのインストール、まずはパッケージの確認
# yum list install mod_auth_mysql php-mysql php-mbstring
php-gd perl-Net-SSLeay expect


追加モジュールのインストール
# yum install mod_auth_mysql php-mysql php-mbstring
php-gd perl-Net-SSLeay expect


Apacheの設定



# vi /etc/hosts



# vi /etc/httpd/conf/httpd.conf
(下記項目の値を変更)



MySQLの設定


# vi /etc/my.cnf
(下記を追加)


MySQLの再起動
# /etc/rc.d/init.d/mysqld start


rootでログインし、文字コードを確認
mysql -u root
mysql> show variables like 'char%';


MySQLパスワード設定


localhost,Sever,127.0.0.1パスワード設定をそれぞれ設定する
set password for root@localhost = password('パスワード');
set password for root@myserver = password('パスワード');
set password for root@127.0.0.1 = password('パスワード');

パスワードの確認
mysql> select host,user,password from mysql.user;


自動起動の設定



Apacheの自動起動設定
# /etc/rc.d/init.d/httpd start
# chkconfig httpd on


設定の確認
# chkconfig --list httpd


MySQLの自動起動設定
# chkconfig mysqld on


設定の確認
# chkconfig --list mysqld


Apache,PHP 動作確認



/etc/httpd/conf/httpd.conf 内の DocumentRoot (通常は"/var/www/html")で指定されているフォルダに、確認用ファイルを追加

# vi /var/www/html/index.html



$ vi /var/www/html/info.php



WindowsPCなどからブラウザで確認
http://192.100.xxx.xxx/
http://192.100.xxx.xxx/info.php





通常はhttpdの再起動で設定が反映されるが、うまく動作しない場合は、一度OSを再起動。

2012年2月27日月曜日

自宅サーバSX35V2の設定

OSはCentOS 6.2に決定した、早速BIOS設定から行う。
今回無線LANは使用しないので、[Wireless Power Control] は [Disabled] に設定。


なぜかデフォルトで[AHCI]がIDEモードとなっている、[AHCI]に設定を変更する。


インストールは最小でよい、後から必要なものだけを追加インストールするため、CentOSのサイトより[CentOS-6.2-i386-minimal.iso]をダウンロードする。容量は285MB。
インストール作業は問題なく終了、NICも無事に認識してくれているようだ。

まずはネットワークの設定を行う。

/etc/sysconfig/network-scripts/ifcfg-eth0






DNSの設定
/etc/resolv.conf



ネットワークの再起動
  
service network restart



この状態で電力を測定してみた、XS35V2はアイドルで 12W で動作している。
一ヶ月あたりの電気料金は、従量電灯B 120kWhをこえ300kWhまで 21円として、
玄箱は15Wなので225円であるのに対し、XS35V2は12Wで計算して182円である。

2012年2月25日土曜日

新自宅サーバ(XS35V2)

2004年から8年間稼働している自宅サーバ「玄箱HG」、寿命を考えて入れ替えることに。
自宅サーバを玄箱にした理由は電気代、NAS用に作られているため非常に消費電力が少ないのだ。
 サンワのワットメーターで玄箱の測定してみると、アイドル時15Wであった。



 今回購入したサーバ用のハードは、日本シャトルXS35V2」。
小型省電力ベアボーン、CPUはAtom D525(1.8GHz)オンボードである。これに今回はSSDを使用し、さらに省電力化したいと思う。


楽天のポイントとAmazonギフトがあったので、製品はすべてネットで購入。
XS35-V2本体:14,800
SO-DIMM-DDR3 4GB:1,730
シリコンパワー製SSD 32GB:3,980
--
合計は 20,510円
ここから楽天ポイント 9,604 と Amazon 1,000 を引いて、9,906円となった。


早速組立、動作確認。XS35-V2は非常にスリムで内部もよく設計されていて、分解もビスが少なく楽々。
中央上部にあるチップは無線LANです、今回は使用しない。写真はSSDを実装したも。



裏側はこんな感じ、スリムタイプの光学ドライブのスペース。別売りのマウントを使用すると、2.5インチベイになり、RAID構成も可能。



フロント側の写真。USBポートが1つと、SDカードスロットがある。



背面の写真。USBポートが4つ、VGA、LAN、オーディオ端子がある。



OSは迷うところだが、玄箱HGはDebianで運用してきた。今回はRedHat系で考えている。