
ボクが 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 を参照してほしい。



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