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

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

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

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

/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サーバーに中継するように設定変更する。

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

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

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

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

NTPの設定

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

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

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

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

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

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

Yumの設定

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

Cronの設定

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

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分の間に実行される。

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

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

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

不要なサービスの停止

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

必要なサービスの開始

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

ディスクのチューニング

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 になっている。

logrotateの設定

Scientific Linux 6 からfilename-YYYYMMDDというファイル名で古いログが保存されるようになったが、「1個前のファイル」というときにいちいちファイル名を確認しないと分からないのが面倒なので、今までのようにfilename.Nというフォーマットになるように戻す。

tmpwatchの設定

/tmp 内で誰にもアクセスされずに放置されているファイルはtmpwatchにて自動消去される。しかし、デフォルトの設定だとディレクトリもatimeを参考にしてしまい、updatedbなどで毎日atimeが更新されることで、「ディレクトリは永遠に消去されない」ということが起きてしまうため、ディレクトリに関してはatimeを無視してmtimeを使うように変更する。

sysctlの設定

ほかのプロセスすべてをブロックしているプロセスがハングしてしまうと、「システム自体は生きているけど、動作しない」というやっかいな状態になってしまう。このようなことが何度かあったため、ほかプロセスをブロックしながらデフォルトの120秒以上ハングしているプロセスを見つけた場合はカーネル・パニックにしてしまい、カーネル・パニックが起きたら自動再起動するようにしておく。詳しくは Nico Schottelius: Reboot Linux if task blocked for more than n seconds を参照してほしい。

smartdの設定

日時でSMARTのショート自己テストを行ない、週次でロング自己テストを行なうように設定し、問題を早期に見つけられるようにしておく。以下では午前2時台にショート自己テストを行ない、木曜日の午前3時台にロング自己テストを行なうようにしている。

また、C5 (197) Current Pending Sector Count と C6 (198) Off-Line Scan Uncorrectable Sector Count は、ディスクが劣化してくるとゼロでなくなることがしばしばあるが、これらは再びゼロに戻ることがあったり、ゼロでない = 致命的というわけでもないので、変化があったときにだけメール通知が来るように設定している。この設定をしないと、値に変化がなくても値がゼロでない限り、30分に1回メール通知が届く。

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サーバーを使うようにしているので、この連携を行う。連携方法については 複眼中心: Scientific Linux 6.1 にLDAP経由でログイン を参照してほしい。

Ksplice Uptrack のインストール

再起動せずにKernelのセキュリティ・アップデートを行える Ksplice Uptrack のサブスクリプションを持っているため、Uptrackをインストールする。

各種の設定

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

コメントを残す