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

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

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

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

[text title=”/etc/aliases” firstline=”95″ highlight=”97″]# Person who should get root’s mail
#root: marc
root: example@gmail.com[/text]

/etc/aliasesを編集しただけでは設定は有効にならないので、忘れずに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サーバーに中継するように設定変更する。

Sendmailの設定に詳しくないので、ついでにPostfixをMTAに使うことにした。Postfixがインストールされていなければ、まずはインストールしよう。

デフォルトMTAをSendmailに変更する。

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

[text title=”/etc/postfix/main.cf” firstline=”304″ highlight=”309″]#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
relayhost = [mail.asahi-net.or.jp][/text]

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

[text title=”/etc/postfix/main.cf” firstline=”92″ highlight=”94″]#myorigin = $myhostname
#myorigin = $mydomain
myorigin = $mydomain[/text]

Sendmailを停止してPosffixを起動する。

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

NTPの設定

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

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

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

[text title=”/etc/ntp.conf” firstline=”15″ highlight=”17,18,19,20,21,22″]# 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[/text]

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

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

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

SSHの設定

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

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

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

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

[text title=”/etc/ssh/sshd_config” firstline=”58″ highlight=”61,62″]# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
#PasswordAuthentication yes
PasswordAuthentication no[/text]

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

[text title=”/etc/ssh/sshd_config” firstline=”13″ highlight=”13,14″]#Port 22
Port 12222[/text]

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

Yumの設定

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

Cronの設定

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

[text firstline=”6″ highlight=”7,8,9,10,11,12,13,14″]# run-parts
#01 * * * * root run-parts /etc/cron.hourly
#02 4 * * * root run-parts /etc/cron.daily
#22 4 * * 0 root run-parts /etc/cron.weekly
#42 4 1 * * root run-parts /etc/cron.monthly
04 * * * * root run-parts /etc/cron.hourly
04 4 * * * root run-parts /etc/cron.daily
24 4 * * 4 root run-parts /etc/cron.weekly
44 4 4 * * root run-parts /etc/cron.monthly[/text]

必要なパッケージのインストール

必要なパッケージを追加でインストールする。以下では、OSの統計情報を獲るためのdstatとsysstatをインストールしている。

不要なサービスの停止

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

必要なサービスの開始

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

ファイルシステムのチューニング

ext3ではデフォルト予約ファイルシステム・ブロックとして全容量の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 にすべてのパーティションをしているし、Red Hat Enterprise Linux のGUIインストーラーであるAnacondaでフォーマットした場合は自動的に -c 0 -i 0 になっている。

smartdの設定

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

[text title=”/etc/smartd.conf” firstline=”17″ highlight=”23,24″]# 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[/text]

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 が詳しい。

[text title=”/etc/sysconfig/raid-check” firstline=”49″ highlight=”53,54″]……

To check devs /dev/md0 and /dev/md3, use "md0 md3"

CHECK_DEVS=""
REPAIR_DEVS=""
#SKIP_DEVS=""
SKIP_DEVS="md1"[/text]

iptablesの設定

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

バックアップの設定

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

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

統合監視にZabbixを使用しているので、そのエージェントをインストールする。インストール方法については 複眼中心: Scientific Linux 6.1 に Zabbix 1.8.10 をインストール を参照してほしい。

LDAPとOSユーザーを連携

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

各種の設定

<

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

One thought on “Scientific Linux 5 をインストールして最初に行なう16の設定”

コメントを残す