Scientific Linux 6 をインストールして最初に行なう18の設定

ボクが Scientific Linux 6 を使う始めるときに、必ず設定やインストールしている項目をここでまとめておく。これらの設定は Red Hat Enterprise Linux (RHEL) / CentOS / Oracle Linux でも同様に使用できるだろう。

rootユーザーのメールアドレスの設定

Scientific Linux から管理者であるroot宛に様々なメールが届くが、そのままではrootで当該マシンにログインしないと読めないので、いつも使っているメールアドレスに届くように変更する。ボクの場合、rewse.jpのメールアドレスをメインに使っているけど、そのメール・サーバーに障害が起きたときにそれを通知するメールが受け取れないので、Gmailのアドレスを設定している。

# Person who should get root's mail
#root:          marc
root:           example@gmail.com

/etc/aliasesを編集しただけでは設定は有効にならないので、忘れずにnewaliasesを実行する。

[root@charlie ~]# newaliases

ボクの自宅サーバーで使っている固定IPアドレスは逆引き設定できず、逆引きすると契約ISPのドメインが戻ってしまうため、Gmailに直接メール送信すると The IP you’re using to send mail is not authorized to 550-5.7.1 send email directly to our servers. で受信拒否されてしまう。対策方法は Gmail: The IP you’re using to send email is not authorized… に載っているとおりなので、契約ISPのSMTPサーバーに中継するように設定変更する。

Postfixに中継サーバーを設定する。SMTPサーバー名を指定する場合には必ず [ ] をつけることを忘れずに。

#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
relayhost = [mail.asahi-net.or.jp]

また、Postfixのデフォルト設定では送信元メールアドレスのドメイン部分はホスト名になっているが、このままだと Sender address rejected: Domain not found エラーで受信拒否される場合があるので、ドメイン部分を変更する。

#myorigin = $myhostname
#myorigin = $mydomain
myorigin = $mydomain

設定ファイルを再読み込みする。

[root@charlie ~]# service postfix reload
Reloading postfix:                                         [  OK  ]

このように受信側メール・サーバーのいろいろなポリシーで拒否される場合があるので、必ずテスト・メールを送ってみよう。mailでは本文を書き終えたら.(ピリオド)だけの行を入力すると本文終了の意味になる。

[root@charlie ~]# mail -s "Test Mail" root
This is a test mail.
.
EOT

NTPの設定

時刻がずれていると今後のいろいろ編集するファイルの更新時刻もずれてしまってよく分からなくなるので、時刻は早めに正しくてしまおう。なお、Xenなどの仮想マシンは物理マシンの時刻に完全に同期しているので、仮想マシンでNTPを設定する必要はない。

ボクの環境ではNTPが入っていなかったので、まずはインストール。

[root@charlie ~]# yum install ntp
......
================================================================================
 Package        Arch          Version                           Repository
                                                                           Size
================================================================================
Installing:
 ntp            x86_64        4.2.4p8-2.el6                     sl        444 k
Installing for dependencies:
 libedit        x86_64        2.11-4.20080712cvs.1.el6          sl         73 k
 ntpdate        x86_64        4.2.4p8-2.el6                     sl         57 k
......

海外NTPサーバーだとレイテンシーが大きいので、国内NTPサーバーを追加する。ボクは 情報通信研究機構 (NICT) / INTERNET MULTIFEED の定番に加えて、契約ISPのASAHIネットを追加した。なお、強制的にIPv4で通信するように-4をすべて追加している。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server -4 0.rhel.pool.ntp.org
server -4 1.rhel.pool.ntp.org
server -4 2.rhel.pool.ntp.org
server -4 ntp.nict.jp
server -4 ntp.jst.mfeed.ad.jp
server -4 ntp.asahi-net.or.jp

NTPサーバーとの時刻が違いすぎると自動調整が利かないので、一度、手動で合わせてしまう。

[root@charlie ~]# ntpdate ntp.nict.jp
28 May 22:45:46 ntpdate[5030]: step time server 133.243.238.244 offset -18.324051 sec

NTPサービスを起動時から有効になるように設定変更し、サービスを開始する。

[root@charlie ~]# chkconfig ntpd on
[root@charlie ~]# service ntpd start
ntpd を起動中:                                             [  OK  ]

しばらくすると以下のコマンドでNTPの同期状況が分かるようになる。上3つは NTP Pool Project のものなので自動的に選ばれたものだ。先頭に*(アスタリスク)がついているサーバーが現在同期中のサーバーで、ntp.nict.jpを使用しているようだ。ntp.nict.jpはストラタムが1なので(一次サーバーなので)選ばれやすい。

[root@charlie ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp.kiba.net    195.71.81.206    2 u   12   64  377   11.793  -34.807   2.153
 www.4koma.com   133.243.238.163  2 u   12   64  377   41.168  -15.576   4.411
-foneus.gimasyst 10.0.5.10        2 u   12   64  377    4.741  -40.622   5.522
*ntp-b2.nict.go. .NICT.           1 u   12   64  377    4.223  -35.788   2.374
+ntp3.jst.mfeed. 210.173.160.86   2 u    8   64  377    2.192  -34.882   2.264
+orion.asahi-net 133.243.238.244  2 u   11   64  377    1.900  -36.306   2.281
 LOCAL(0)        .LOCL.          10 l    2   64  377    0.000    0.000   0.002

SSHの設定

SSHサーバーはデフォルトではパスワード認証だが、クライアント側のSSH鍵を登録しておくと、登録されたSSH鍵を持っているクライアントからはパスワードを入力なしでログインできるので楽できる。

クライアント側の公開鍵を確認しよう。SSH鍵を持っていない場合は、LinuxやMacであればssh-keygenで作成できる。以下はMacでの操作だ。

[tats@evian ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
91:2e:58:0f:ba:26:bf:2f:e8:0c:63:03:8c:2b:93:6d tats@evian.rewse.jp
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         .       |
|      o o        |
|o    + + .       |
|o.  o . S        |
|.+   . .         |
|BoE.o            |
|o*o+.            |
| .o o+.          |
+-----------------+
[tats@evian ~]$ cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3szz6E5F8ykxkZBtZTszlYWnz4BIBEFNh59zQMuUa1w9VGg8yJIUOswcfsKxi8YrLATOW/6O1REUPZTAopLvR0TB92m4tlVCE7tFxWfJFCSgf42a6MAdx3eOtn+v5kZG3jx8kPp+Mba9wc/+gBa5CNLLNw841QRLZZ5tbSwsWIgeQfyHIaawHy171csPv28KuhTNRE5wHmK5KYJ+EW+Cx+ljDVLDBYE9v/w2Ty+5sv1mN3n6GHRYfasnuLWwRzWCKiQj8rcod91ILYZXILfZ5GN7en8sNPRoHawOuJFcnMGiVyhk685RXHI+eP5AjJ5FlsbW7h9qde+opN5c/bobD tats@evian.rewse.jp

上記の公開鍵を Scientific Linux 側の ~/.ssh/authorized_keys にコピペする。なお、ディレクトリやファイルの権限が緩すぎると鍵認証でログインできないので注意しよう。

[root@charlie ~]# mkdir .ssh
[root@charlie ~]# chmod 700 .ssh
[root@charlie ~]# vi authorized_keys
[root@charlie ~]# chmod 600 .ssh/authorized_keys

SSHをインターネットに公開しているサーバーでは、パスワード認証をせずに鍵認証だけにしてしまったほうが安全だろう。

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
#PasswordAuthentication yes
PasswordAuthentication no

ポート番号をデフォルトの22から変えてしまうとボクの経験では不正アタックは全くなくなるので、可能であれば変更してしまおう。

#Port 22
Port 12222

変更したらSSHを再起動しよう。

[root@charlie ~]# service sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

Yumの設定

デフォルトでは海外にある公式サイトの更新サーバーを見に行ってしまって遅いので、国内ミラーに設定変更する。変更方法は 複眼中心: 国内 Scientific Linux 6 サーバーのためのyum設定 を参照してほしい。

Cronの設定

何台かのマシンがあるとき、すべてが同じ時刻にCronを動かすとその瞬間だけ高負荷になってしまうので、個々のマシンで実行時刻をずらす。このマシンでは以下のように変更した。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#01 * * * * root run-parts /etc/cron.hourly
11 * * * * root run-parts /etc/cron.hourly

Scientific Linux 5 と違って、cron.daily / cron.weekly / cron.monthly はAnacron経由で実行される。AancronはSTART_HOURS_RANGEの時間帯のみ実行され、period in days の日数ごとにAnacronデーモンが起動してから delay in minutes + RANDOM_DELAYの間にcommandが実行される。つまり以下の設定がされた常に起動しているサーバーの場合、/etc/cron.dailyは1日ごと(毎日)の3時05分から3時50分の間に実行され、/etc/cron.weeklyは7日ごと(毎週)の3時25分から4時10分の間に実行される。

# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command 
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

デフォルトの値はワークステーションが前提なのか深夜以外の時間帯にCronを実行するようになっているので、これを深夜のみに変更する。Anacron自体は/etc/cron.hourly/0anacronから実行されるので、デーモンの再起動などは必要ない。

# the jobs will be started during the following hours only
#START_HOURS_RANGE=3-22
START_HOURS_RANGE=3-6

パフォーマンス関連パッケージのインストール

OSの統計情報を獲るためのdstatとsysstatをインストールする。

[root@zulu ~]# yum install dstat sysstat
......
================================================================================
 Package           Arch             Version                  Repository    Size
================================================================================
Installing:
 dstat             noarch           0.7.0-1.el6              sl           136 k
 sysstat           x86_64           9.0.4-11.el6             sl           214 k
......

不要なサービスの停止

この環境では必要ないサービスを自動起動しないように変更し、サービスを停止する。

[root@zulu ~]# chkconfig sysstat off
[root@zulu ~]# service sysstat stop

必要なサービスの開始

この環境に必要なサービスを自動起動するように変更し、サービスを開始する。

[root@zulu ~]# chkconfig ipmi start
[root@charlie proc]# service ipmi start
Starting ipmi drivers:                                     [  OK  ]

ディスクのチューニング

ext4ではデフォルト予約ファイルシステム・ブロックとして全容量の5%が割り当てられている。dfしたときに「使用」+「残り」の値が「サイズ」と違うのはこの予約ファイルシステム・ブロックがあるためで、この予約ファイルシステム・ブロックにはrootのみが書き込むことができる。そのため、例えば一般ユーザーが/tmpをあふれさせてしまっても、rootは予約ファイルシステム・ブロックを使って/tmpにまだ書き込むことができ、管理作業を行うことができる。ただ、最近の大容量ディスクではデフォルトの5%は大きすぎると思うので、これを容量に従って少し小さくする。仮想マシンのディスク・イメージを配置するパーティションなんかは大容量だけど不意の書込みはほとんどないので、予約ファイルシステム・ブロックは少なくできる代表例だろう。

パーティション容量 予約ファイルシステム・ブロック
1GB未満 5%
1GB以上 4%
10GB以上 3%
100GB以上 2%
1TB以上 1%

また、ファイルシステムをチェックする最大マウント回数 (-c) とファイルシステムをチェックする最大時間間隔 (-i) も気をつけよう。デフォルトでは30回程度(ランダム)のマウントまたは180日目のマウントで自動的にfsckが実行される。OS起動時に予期せず巨大なパーティションに対してfsckが実行されてしまい、いつまで経ってもOSが起動しないというようなことが起きないように、ボクは -c 0 -i 0 にすべてのパーティションをしているし、GUIインストーラーであるAnacondaで自動フォーマットした場合は自動的に -c 0 -i 0 になっている。

[root@charlie ~]# tune2fs -m 1 -c 0 -i 0 /dev/sdd1
tune2fs 1.39 (29-May-2006)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
Setting reserved blocks percentage to 1% (2441406 blocks)

smartdの設定

ディスクのS.M.A.R.Tを監視し、異常が発見された場合は告知してくれるsmartdはデフォルトの設定ではSATAディスクに対応していないので、それを修正する。

# The word DEVICESCAN will cause any remaining lines in this
# configuration file to be ignored: it tells smartd to scan for all
# ATA and SCSI devices.  DEVICESCAN may be followed by any of the
# Directives listed below, which will be applied to all devices that
# are found.  Most users should comment out DEVICESCAN and explicitly
# list the devices that they wish to monitor.
#DEVICESCAN -H -m root
DEVICESCAN -H -m root -d sat

99-raid-checkの設定

/etc/cron.weekly/99-raid-checkはRAIDの各ディスク間でデータ不一致がないかどうかを見つけてくれるのだけど、そのためにディスクを全走査するので2TBが3本のRAID5で5時間以上掛かってしまう一方、スワップ領域を含むディスクはデータ不一致を誤検知することがあって信用ならないので、スワップで使用しているLVMの論理ボリュームを含む2TBの領域はこのチェックを行なわないようにした。この問題の詳細は へびにっき: WARNING: mismatch_cnt is not 0 on /dev/md0 が詳しい。

......
# To check devs /dev/md0 and /dev/md3, use "md0 md3"
CHECK_DEVS=""
REPAIR_DEVS=""
#SKIP_DEVS=""
SKIP_DEVS="md1"

iptablesの設定

iptablesを使ってファイアウォールを構築する。構築方法は 複眼中心: iptablesによるファイアウォール設定 を参照してほしい。

Avira AntiVir Personal (UNIX) のインストール

ウイルス対策に Avira AntiVir Personal (UNIX) をインストールする。インストール方法は 複眼中心: Avira AntiVir Personal (UNIX) 3.1.3.5-0 インストール を参照してほしい。

chkrootkitのインストール

ルートキット対策にchkrootkitをインストールする。インストール方法は 複眼中心: Scientific Linux 6.1 に chkrootkit 0.49 をインストール を参照してほしい。

バックアップの設定

rsyncを使用してNFS経由で別マシンに日次バックアップを行うスクリプトを設置する。このスクリプトは Mac OS X の Time Machine にインスパイアされたもので、ハードリンクを使用した重複排除や、週次の間引きなども行うようになっている。スクリプトの詳細は GitHub: rewse: backup.cron を参照してほしい。

Zabbixエージェントのインストール

統合監視にZabbixを使用しているので、そのエージェントをインストールする。

LDAPとOSユーザーを連携

ボクの環境にはLDAPサーバーがあり、OSユーザーはローカル管理せずにこのLDAPサーバーを使うようにしているので、この連携を行う。連携方法については 複眼中心: Scientific Linux 6.1 にLDAP経由でログイン を参照してほしい。

各種の設定

/etc/profile.d, /etc/inputrc, /etc/screenrc, /etc/vimrc にいつもの設定を追加する。vimrcについては 複眼中心: 2011年5月のvimrc を参照してほしい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

トラックバックをどうぞ

言及リンクがないと(あなたのページにこのページへのリンクがないと)トラックバックできません。