SSHサーバ(OpenSSH)

2009, 02, 12

SSHは、データの暗号化や公開鍵を利用した認証技術により安全なリモート管理やファイル転送を可能にするツール。パスワードやデータの漏洩といった危険性が高いTelenetやFTPに代わって、リモート管理に良く使われるようになった。接続方式にはSSH1とSSH2がありSSH2の方が、SSH1より強固な暗号化になっているので、ここではSSH2を使用し鍵方式によるログインの設定を行う。

■ OpenSSHの設定
OpenSSH設定ファイルを編集
[root@linux ~]# vi /etc/ssh/sshd_config

スーパーユーザでのログインを禁止
#PermitRootLogin yes
        ↓
PermitRootLogin no  ← #を削除して no に変更

通常のパスワードではなく鍵方式に変更
#PasswordAuthentication yes
        ↓
PasswordAuthentication no  ← #を削除して no に変更

空パスワードの禁止
#PermitEmptyPasswords no
        ↓
PermitEmptyPasswords no  ← #を削除


■ SSHアクセス制限
サーバー自身、内部ネットワーク、特定の外部IP(xxx.xxx.xxx.xxx)からのアクセスを許可
[root@linux ~]# echo "sshd : 127.0.0.1 192.168.1. xxx.xxx.xxx.xxx" >> /etc/hosts.allow

上記以外の全てのアクセスを禁止
[root@linux ~]# echo "sshd : ALL" >> /etc/hosts.deny

会社等からアクセスする場合、自分の会社の接続環境(IPアドレス)を調べ、/etc/hosts.allowへ登録する必要がある。そんな時は診断くんで確認できる。

■ OpenSSHの再起動
[root@linux ~]# /etc/rc.d/init.d/sshd restart
sshdを停止中:                                             [  OK  ]
sshdを起動中:                                             [  OK  ]


■ SSH2による鍵の作成
鍵を作成するユーザーで作業を進める。
[root@linux ~]# su - higo

鍵の作成を行う
[higo@linux ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.

何も入力しないでエンターキー押す
Enter file in which to save the key (/home/higo/.ssh/id_rsa): 
Created directory '/home/higo/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/higo/.ssh/id_rsa.
Your public key has been saved in /home/higo/.ssh/id_rsa.pub.
The key fingerprint is:
7d:cb:ab:06:c6:bf:52:79:60:57:11:ae:f8:f3:b3:d0 higo@linux.yokensaka.com

鍵の作成先を表示する
[higo@linux ~]$ ls -la /home/higo/.ssh/
合計 20
drwx------  2 higo higo 4096 10月 28 02:31 .
drwx------ 21 higo higo 4096 10月 28 02:31 ..
-rw-------  1 higo higo 1743 10月 28 02:31 id_rsa      ← 秘密鍵
-rw-r--r--  1 higo higo  406 10月 28 02:31 id_rsa.pub  ← 公開鍵

公開鍵をauthorized_keysに追加
[higo@linux ~]$ cat /home/higo/.ssh/id_rsa.pub >> /home/higo/.ssh/authorized_keys

公開鍵を自分のみアクセスできるように変更
[higo@linux ~]$ chmod 600 /home/higo/.ssh/authorized_keys

公開鍵を削除
[higo@linux ~]$ rm -f /home/higo/.ssh/id_rsa.pub

鍵の作成先を表示
[higo@linux ~]$ ls -la /home/higo/.ssh/
合計 20
drwx------  2 higo higo 4096 10月 28 02:32 .
drwx------ 21 higo higo 4096 10月 28 02:31 ..
-rw-------  1 higo higo  406 10月 28 02:32 authorized_keys  ← 公開鍵
-rw-------  1 higo higo 1743 10月 28 02:31 id_rsa           ← 秘密鍵


■ 秘密鍵の抜き取り
1.USBメモリーにコピーする方法
su - コマンドでスーパーユーザ(root)になる、ハイフン(-)を付けないと、
変更後のユーザー用環境が設定されない為、思い通りの操作が出来なくなる。
[higo@linux ~]$ su -

rootのパスワードを入力。
Password:
[root@linux ~]#        ← スーパーユーザー root になった

USBメモリーをマウントして秘密鍵をUSBメモリーに移動
USBメモリーをマウントするマウントポイントを作成。
[root@linux ~]# mkdir /mnt/usbfm

コマンド入力時にオプション設定を付けずにマウントできるように、/etc/fstab に設定を登録。
[root@linux ~]# vi /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/sda1        /mnt/usbfm       auto    noauto,user     0 0  ← 1行追加

USBメモリーを挿してからUSBメモリーをマウント
[root@linux ~]# mount /mnt/usbfm

秘密鍵をUSBメモリーに移動
[root@linux ~]# mv /home/higo/.ssh/id_rsa /mnt/usbfm

USBメモリーのマウントを解除
[root@linux ~]# umount /mnt/usbfm

2.FTPでコピーする方法
スーパーユーザ(root)になる。
[higo@fadora ~]$ su -

rootのパスワードを入力。
Password:

FTPサーバをインストール
[root@linux ~]# yum install vsftpd
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                      100% |=========================| 1.1 kB    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
updates                   100% |=========================| 1.2 kB    00:00     
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for vsftpd to pack into transaction set.
vsftpd-2.0.5-8.i386.rpm   100% |=========================|  16 kB    00:00     
---> Package vsftpd.i386 0:2.0.5-8 set to be updated
--> Running transaction check

Dependencies Resolved

============================================================
 Package                 Arch       Version          Repository        Size 
============================================================
Installing:
 vsftpd                  i386       2.0.5-8          core              137 k

Transaction Summary
============================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 137 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): vsftpd-2.0.5-8.i38 100% |=========================| 137 kB    00:00     
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Importing GPG key 0x4F2A6FD2 "Fedora Project "
Is this ok [y/N]: y
Importing GPG key 0xDB42A60E "Red Hat, Inc "
Is this ok [y/N]: y
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: vsftpd                       ######################### [1/1] 
Installed: vsftpd.i386 0:2.0.5-8
Complete!

FTPサーバを起動させる
[root@linux ~]# /etc/rc.d/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]


ここからは、クライアント(IP:192.168.1.3)のコマンドプロンプトで作業する。
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

ローカルのカレントをC:\にしておく
C:\Documents and Settings\client>cd \
C:\>
FTPでサーバに接続
C:\>ftp 192.168.1.10
Connected to 192.168.1.10.
220 (vsFTPd 2.0.1)
ユーザ名を入力
User (192.168.1.10:(none)): higo
331 Please specify the password.
パスワードを入力
Password:
230 Login successful.
転送モードをバイナリモードにする
ftp> bin
200 Switching to Binary mode.
秘密鍵を取得
ftp> get /home/higo/.ssh/id_rsa
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for /home/higo/.ssh/id_rsa (951 bytes).
226 File send OK.
ftp: 1,675 bytes received in 0.00Seconds 1675000.00Kbytes/sec.
サーバの秘密鍵を削除
ftp> delete /home/higo/.ssh/id_rsa
250 Delete operation successful.
FTP接続を終了
ftp> bye
221 Goodbye.
C:\>
ローカルの確認
C:\>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 8433-4372 です

C:\ のディレクトリ

2004/05/05  10:48     25 .DAT
2003/11/08  23:47 <DIR>  Apache Group
・
・
・
2006/10/27  18:20   1,675 id_rsa ← コピーされている
・
・
・
2006/09/18  05:52 <DIR>  Program Files
・
・
・
              13 個のファイル        850,256 バイト
              19 個のディレクトリ 9,977,475,072 バイトの空き領域

コマンドプロンプトを終了
C:\>exit


■ 外部からの接続
外部からの接続には、ルーターの設定が必要。
ルータの設定で22番のポートを開ける。

■ ポートチェック【ポート開放確認】
「管理しているサーバーが外部から接続アクセスできるか?」「ポートは開放されているか?」「portは閉じているか?」「ルータのポートは開放されているか」等の
ポートチェック・ポートの疎通確認テストはこちらで

■ 秘密鍵の抜き取りが出来たら、次はリモート接続(PuTTY)の設定

パッケージ管理(yum)

2009, 02, 12

yum(Yellow dog Updater, Modified)は、RPMパッケージを操作する為のソフトウェア。 yumでは、依存関係があるパッケージも自動的にインストールされる。また、yumを利用する事によって、セキュリティーホールのアップデートや、バグフィックスパッケージも、より簡単に行う事が可能。さらには、システム全体のアップデートも、より簡単に行う事が可能。

■ レポジトリについて
RedHatのサポートするEPELを追加する事にする。
Extra Packages for Enterprise Linux (EPEL) とは従来 Fedora だけに提供されていた Fedora Extras のパッケージを Red Hat Enterprise Linux (RHEL) に提供することで、 Fedora から RHEL への移行や、 Fedora から CentOS や Scientific Linux 等の RHEL クローンへの移行を容易にするためのプロジェクト。

[root@linux ~]# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
--176:24:42--  http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
download.fedora.redhat.com をDNSに問いあわせています... 209.132.176.221, 209.132.176.20, 209.132.176.220
download.fedora.redhat.com|209.132.176.221|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 11989 (12K) [application/x-rpm]
Saving to: `epel-release-5-3.noarch.rpm'

100%[===========================================================>] 11,989      39.3K/s   in 0.3s

17:24:43 (39.3 KB/s) - `epel-release-5-3.noarch.rpm' を保存しました [11989/11989]

[root@linux ~]# rpm -ivh epel-release-5-3.noarch.rpm
警告: epel-release-5-3.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
準備中...                   ########################################### [100%]
   1:epel-release           ########################################### [100%]


■ ミラーについて
デフォルトでは世界中のミラーに接続しにいくので、とんでもなく遅いサーバに接続しにいく場合がある。 CentOSには速いミラーを優先的に接続しにいくプラグインが提供されており、そのプラグインをインストールする事により、遅いサーバに接続する確立が非常に低くなる。そのプラグインをインストールするには以下のコマンドを入力する。

[root@linux ~]# yum -y install yum-fastestmirror

CentOSPlusを有効にする
[root@linux ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
↓
enabled=1


■ yumのデータベース情報更新
ローカルに保存されているrpmヘッダ情報を最新の情報に更新。
yumのデータベース情報更新
[root@linux ~]# yum list

インストールパッケージの確認
[root@linux ~]# yum list installed


■ アップデート情報の確認
アップデート情報の確認
[root@linux ~]# yum check-update


■ 一括アップデート
インストールされているパッケージを全てアップデート。
パッケージの一括アップデート
[root@linux ~]# yum update

アップデートしてよいかの問い合わせに全て" y "で回答するためには -y オプションを指定。 
パッケージの一括アップデート
[root@linux ~]# yum -y update


■ yumによるパッケージ更新時にエラーが表示される場合
yumコマンドでパッケージの更新を行った際に、エラーが表示されることがある。これはyumのデータベースが壊れていることが考えられるので、以下のコマンドを実行してyumのデータベースをクリアしてみる。
[root@linux ~]#  yum clean all

[root@linux ~]#  yum update


■ その他のコマンド
パッケージのインストール 
[root@linux ~]# yum install パッケージ名
パッケージのアップデート 
[root@linux ~]# yum update パッケージ名
パッケージの検索 
[root@linux ~]# yum search パッケージ名
パッケージの詳細表示 
[root@linux ~]# yum info パッケージ名
パッケージのアンインストール
[root@linux ~]# yum remove パッケージ名


■ yum-updatesdのサービスを停止
CentOSでは、システムの起動時にyum-updatesdを実行し、1時間おきにアップデートパッケージの有無をチェックする為、このサービスが動作している間はyumコマンドが実行できない。cronでアップデートを行った時にyum-updatesdが動いているとうまくアップデートできない可能性があるので、yum-updatesdのサービスは停止する。
現在実行中のyum-updatesdを停止
[root@linux ~]# service yum-updatesd stop
yum-updates を停止中:                                      [  OK  ]

システム起動時のyum-updatesdの実行も停止
[root@linux ~]# chkconfig yum-updatesd off


■ yum updateの定期自動実行設定
パッケージ自動更新スクリプト作成
[root@linux ~]# vi /root/yum_upgrade.sh
#!/bin/sh

/usr/bin/yum -y update yum > /dev/null 2>&1 ; \
/usr/bin/yum -y update > /dev/null 2>&1

パッケージ自動更新スクリプトへ実行権限付加
[root@linux ~]# chmod 700 /root/yum_upgrade.sh

自動で実行する為にcronに登録
[root@linux ~]# crontab -e
00 06 * * * /root/yum_upgrade.sh


インストール後の設定

2009, 02, 12

ファイアーウォールとSELinuxはインストールの段階で無効に設定したが、デフォルトの有効でインストールした場合は、各サーバの設定が正しいにも関わらず、ファイアーウォールとSELinux によって通信が遮断されてしまうことがあるので、ファイアーウォールとSELinux は無効にして構築していく。

■ ファイアーウォール(iptables)の無効化
[root@linux ~]# /etc/rc.d/init.d/iptables stop
[root@linux ~]# chkconfig iptables off
[root@linux ~]# chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off


■ SELinux の無効化
[root@linux ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled ← SELINUXを無効にする。
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0

設定を有効にする為再起動。
[root@linux ~]# reboot

SELinux を有効にすると、LInux の全てのユーザー(rootも含む)にさまざまな制限をかけることができ、 万が一rootが乗っ取られても影響を最小限にすることが出来る。本来はSELinuxを有効にするべきだが、 トラブル時の対応が複雑になる為、ここでは無効にする。

■ 一般ユーザーの作成(useradd、passwd)
ここでは(higo)というユーザを作成。
一般ユーザ(higo)を追加。
[root@linux ~]# useradd higo

一般ユーザーでログインするためにはパスワードを設定する必要がある。
[root@linux ~]# passwd higo
Changing password for user higo.

パスワードの入力(入力したパスワードは表示されない)
New UNIX password: 

再入力を促されるので、もう一度入力。(上記のパスワードと同じ物を入れる)
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

ログアウト(GUIでは単に端末が閉じるだけ)
[root@linux ~]# exit

ユーザーの削除は userdel コマンドを使用。ユーザーの作成、削除はrootユーザーのみで実行できる。今後は、一般ユーザログオン後に su - コマンドでスーパーユーザになり、設定変更を行って行く。 Linuxへのログインはスーパーユーザのログインは止める!

■ 日本語コードの変更(UTF-8 → eucJP)
一旦、 root からログアウトして、一般ユーザー(higo)でログインし直す。そして、 GNOME 端末 を起動。
 su - コマンドでスーパーユーザ(root)になる、ハイフン(-)を付けないと、
変更後のユーザー用環境が設定されない為、思い通りの操作が出来なくなる。
[higo@linux ~]$ su -
rootのパスワードを入力。
パスワード(P):

デフォルトのUTF-8コードをeucJPコードに変更。
[root@linux ~]# sed -i 's/UTF-8/eucJP/g' /etc/sysconfig/i18n

デフォルト文字コード変更確認。
[root@linux ~]# cat /etc/sysconfig/i18n
LANG="ja_JP.eucJP"

manコマンドで文字化けの対応。
[root@linux ~]# sed -i 's/\/usr\/bin\/less -is/\/usr\/bin\/lv/g' /etc/man.config

manコマンドで文字化けの対応の確認。
[root@linux ~]# grep "/usr/bin/lv" /etc/man.config
PAGER           /usr/bin/lv
BROWSER         /usr/bin/lv


■ rootになれるユーザを制限
rootになれるユーザを管理者(higo)のみにする
[root@linux ~]# vi /etc/group

rootになれるユーザ(higo)を追加。
wheel:x:10:root,higo

次に以下のファイルも vi で編集して保存。
[root@linux ~]# vi /etc/pam.d/su
#auth            required        pam_wheel.so use_uid
↓
auth            required        pam_wheel.so use_uid ← #をはずす。

次に以下のように入力して/etc/login.defs の最終行に SU_WHEEL_ONLY yes を追加。
[root@linux ~]# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs


■ ランレベル3(CUI)で起動
Linuxはサーバー用途で使用するので、本来なら X Window System は必要ない。常に X Window System を利用する必要が無いのであれば、以下のように /etc/inittab を編集。そうする事で次回起動時よりランレベル3(CUI)で起動できる。
inittabの編集
[root@linux ~]# vi /etc/inittab
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
        ・
        ・
id:5:initdefault:
  ↓
id:3:initdefault:  ← ランレベル5をランレベル3に変更。


これで次回起動時よりランレベル3(CUI)で起動できる。

■ X Window System
ランレベル3で起動後、一時的にX Window System を使いたいのであれば、startx コマンドを実行。
[root@linux ~]# startx


■ ホスト名を変更したい場合
インストールのとき設定したホスト名を後で変更したいときは、以下の設定ファイルを変更する事によって、ホスト名を変更する事ができる。 ホスト名の設定ファイルを変更。
[root@linux ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
       ↓ 
HOSTNAME=linux.yokensaka.ddo.jp
       ↓ 
HOSTNAME=linux.yokensaka.com ←独自ドメインで運用するようにしたので変更
GATEWAY=192.168.1.1

OSを再起動します。
[root@linux ~]# reboot

ホスト名の表示
[root@linux ~]# hostname

新ホスト名になっている
linux.yokensaka.ddo.jp
       ↓ 
linux.yokensaka.com ←独自ドメイン名になっている

各サーバを構築してからホスト名を変更すると、各サーバが正常に動作しなくなる。ホスト名を変更したら、各サーバの設定ファイル内のホスト名も新ホスト名に変更する。また、各サーバーの設定ファイルを変更したらそのサーバを再起動する必要がある。(ホスト名の変更→各サーバの設定ファイルの変更→OSの再起動→動作確認)

DDNS(ddo.jp)自動更新

2009, 01, 24

今使ってるスクリプトでDDNSの自動更新がうまくいかないこともあり、たびたびアクセスできなくなることがあったので、自動更新のスクリプトを見直すことに。このサイトはddo.jpのDDNSを使ってるので、いろいろ調べて見たら、こちらのサイトで紹介されてるスクリプトが良さそうなので使わせてもらうことにした。

自動更新の動きとしては
  (1)ddo.jpサイトで用意しているリモートIP確認サイトで現在のIPを確認。
  (2)前回更新時のIPと変更時間をテンポラリーファイルから読み込む。
  (3)前回更新時とIP同じで、かつ前回更新時から1週間以上経ってなかったら終了。
  (4)そうでなかったら、DDNSを更新。変更内容をテンポラリーファイルとログに書き込む。
という感じで自動更新されるとのこと。あとこのスクリプトは、lynxが使えることが前提となってるようなので、まずlynxをインストールすることにする。

■ lynxのインストール
[root@server ~]# yum -y install lynx


■ 自動更新スクリプトの作成
[root@server ~]# cd /usr ← /usr ディレクトリへ移動

[root@server usr]# mkdir -p ddns ← ddns ディレクトリの作成

[root@server usr]# cd ddns ← ddns ディレクトリへ移動

[root@server ddns]# vi ddo.jpIP_upgrade.pl ← 自動更新スクリプトの作成

#!/usr/bin/perl
#
# Check ip address, and update DDNS for "ddo.jp"
#
#

# parameters
# "ddo.jp" ID & PASSWD
local $ID     = 'ドメイン'; # Login ID(It serves as a domain name)
local $PASSWD = 'パスワード'; # Login password

# file names
local $CRT_IPF = '/tmp/CRT_IP2.dat';
local $LOG     = '/var/log/ddns.log';

# Check current ip address on the appointed URL web page.
local $CHK_URL="http://info.ddo.jp/remote_addr.php";

#
local $INTERVAL = 604800;       # 1 weeks

#
$ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin";

#---------------------------------------------------
# main
my ($NEW_IP,$CRT_IP,$CRT_TIME,$i);

# get current ip address which set as the domain.
$CRT_IP   = "";
$CRT_TIME = "0";
open(INPUT, $CRT_IPF);
foreach(<INPUT>){
  chop;
  /^IP:/   && do{ $CRT_IP   = $' };
  /^TIME:/ && do{ $CRT_TIME = $' };
}
close(INPUT);

# check a assigned ip address
open(INPUT, "lynx -dump \"$CHK_URL\" | ");
foreach(<INPUT>){
  /([0-9\.].*)/ && do{ $NEW_IP = $1};
}
close(INPUT);

# Lapsed time from the last update
$i = time() - $CRT_TIME;

# change DDNS, supposing the IP address is changed.
if ( ( ($NEW_IP ne "" )&&($CRT_IP ne $NEW_IP) ) || ( $i > $INTERVAL) ) {
    # change DDNS
    open(INPUT2,
   "lynx -dump \"http://ddo.jp/dnsupdate.php?dn=$ID&ip=$NEW_IP&pw=$PASSWD\" |");

    # check whether change of DDNS has been successful
    foreach(<INPUT2>){
       /SUCCESS: / && do{ $TEMP = 1;};
    }
    if( $TEMP == 1){
       # save a new IP address.
       $i = time();
       open (OUTPUT ,">$CRT_IPF");
       print OUTPUT "IP:$NEW_IP\nTIME:$i\n";
       close OUTPUT;

       # write a message on the log file
       $time = conv_date(time());
       open(LOG, ">> $LOG");
       print(LOG $time . ":change \"" .
                 $ID . ".ddo.jp\" <= " . $NEW_IP . "\n");
       close(LOG);
    }
}

sub conv_date{
  my ($times,$mode) = @_;
  my ($sec,$min,$hour,$mday,$month,$year,$wday);

  ($sec,$min,$hour,$mday,$month,$year,$wday,undef,undef) = localtime($times);
  $month++;
  $year += 1900;
  $times = sprintf("%d/%02d/%02d %02d:%02d", $year, $month, $mday,
                   $hour, $min);
  return($times);
}

■ スクリプトに実行権限を与える
[root@server ddns]# chmod +x ddo.jpIP_upgrade.pl


■ このスクリプトをcronで1分おきに実行するように/etc/crontabに追加。
[root@server ddns]# cd
[root@server ~]# vi /etc/crontab

*/1 * * * * root /usr/ddns/ddo.jpIP_upgrade.pl


■ 停電などで再起動させたとき自動で実行するように設定
[root@server ~]# vi /etc/rc.local ← システム起動時実行コマンド定義ファイル編集
以下を最終行へ追加
chmod +x /usr/ddns/ddo.jpIP_upgrade.pl
/usr/ddns/ddo.jpIP_upgrade.pl


CentOS 5 のインストール

2009, 01, 06

■ CentOS 5 の取得
CentOSをhttp://www.centos.org/より取得
2種類あるので目的に合ったものをダウンロード
Direct Download
i386 - http://mirror.centos.org/centos/5/isos/i386/
x86_64 - http://mirror.centos.org/centos/5/isos/x86_64/

あにょはhttp://ftp2.riken.jp/Linux/centos/5.2/isos/i386/ からCentOS-5.2-i386-bin-DVD.isoをダウンロード。ダウンロードしたファイルは、ISOイメージファイルなので、別途DVD-Writerソフト等でDVD-Rに焼いて準備しておく。

Release Notesは以下のサイト
CentOS - http://wiki.centos.org/Manuals/ReleaseNotes/CentOS5.2/Japanese

■ CentOS 5 のインストール
グラフィカルモード(GUI)でインストール作業を進めるが、サーバー用途で linux を使用する際には、X Window Systemを利用することをあまり推薦していない。もし常にX Window Systemを利用する必要が無いのであれinittab を編集し、 "id:5:initdefault:" を "id:3:initdefault:" に変更。そうする事で次回起動時よりランレベル3(CUI)で起動できる。また、ランレベル3でX Window Systemを起動したい場合には、 startx コマンドを実行。

1.インストーラーの起動
CentOS 5 のインストールDVDをDVD-ドライブに挿入し、電源を入れる。
※BIOSの設定で1番最初にDVDからブートできるようになっている必要である。
* [Install or upgrade an existing system] を選択して[Enter]キーを押す。

2.メディアのテスト
CD Found
* [Skip] を選び、[Enter]キーを押す。

3.CentOS のGUIが立ち上がるので
* [Next] ボタンをクリック。

4.言語の設定
インストール作業中に使用する言語の選択
* 「Japanese(日本語)」 を選び、[Next] ボタンをクリック。
* 実際にシステムを使用するときの言語選択に関しては、後で設定を行う。

5.キーボードの設定
* 106日本語キーボードを使っている場合は、「日本語」を選択して、[次]ボタンをクリック。

6.ハード・ディスクの初期化
* 新しいハード・ディスクの場合、「警告」ダイアログが表示される。「OK」を選択すると、ハード・ディスクが初期化される。

7.ディスクパーティションの作成
* 「選択したドライブ上のすべてのパーテーションを削除してデフォルトのレイアウトを作成します。」を選択
* 警告メッセージが出るが「はい」を選択。

8.ネットワークの設定
* [編集] ボタンをクリックして、ネットワークデバイスを編集。
* IPv4 サポートを有効にする: チェックを入れる
* 手動による設定: チェックを入れる
* IP アドレス: 192.168.1.5 / プレフィックス(ネットマスク):24 を入力
* IPv6 サポートを有効にする: チェックを外す
チェックを外したら [次] をクリック

9. ホスト名・その他の設定
* ホスト名を設定は 手動設定 を選択して「server.yokensaka.com」と入力
* ゲートウェイ : 192.168.1.1
* 1番目のDNS : 192.168.1.1
入力したら [次] をクリック

1番目のDNSは通常サーバー自身をDNSサーバーとして設定するときにサーバー自身に割り当てた 192.168.1.5 をDNSサーバーアドレスとして設定。 しかし、ここで 192.168.1.5 に設定するとインターネットに繋がらなくなり、wgetによるダウンロードができなくなる為、この段階では1番目のDNSは 192.168.1.1 とする。

10.タイムゾーンの選択
* アジア/東京 を選択して、 [次] をクリック

11.Rootパスワードを設定
* Root パスワード : xxxxxxxx
* 確認 : xxxxxxxx
スーパーユーザ(Root)のパスワードを入力。確認の為にもう一回同じパスワードを入力。
入力したら [次] をクリック

注意 : このパスワードは絶対に忘れない様に! 何もできなくなってしまう。

12.ソフトウェアセットの選択
* 「今すぐカスタマイズする」を選択して [次] をクリック

13.ソフトウェアセットの選択
* デスクトップ環境  デフォルト
* アプリケーション  デフォルト
* 開発 開発ツール、開発ライブラリ を選択
* サーバ  デフォルト
* ベースシステム  デフォルト 
*
*
*
* 言語  デフォルト
サーバーを構築する際は極力不要なパッケージはインストールせず、すべてのチェックをはずして必要になったときにその都度インストールすべきだが、 ここでは、作業の行いやすさを考え、「開発」以外はデフォルトにして [次] をクリック

14.インストールの準備完了
* [次] をクリックしてインストールを開始。

15.パッケージのインストール
* インストール完了したらDVDドライブよりDVD-Rが自動的に排出される。

16.インストール作業の終了
* [再起動] を押してインストールを終了。

17.CentOS 5 の起動
* コンピューターの再起動が行われ、しばらくすると CentOS 5 が起動し、初期設定を行う画面が表示される。

18.インストール後の初期設定
* ようこそ画面では [進む] を押す。

19.ライセンスの同意書
* はい、私はライセンス同意書に同意します を選択して、[進む] を押す。

20.ファイアーウォールの設定
* 無効 を選択して [進む] を押す。
ファイアーウォールは先に有効にしておくと、各サーバの設定が正しいにも関わらず、ファイアウォールによって通信が遮断されてしまうことがあるので、 セキュリティーに関しては後から設定することにする。

21.SELinuxの設定
* 無効 を選択して [進む] を押す。
SELinux を有効にすると、LInux の全てのユーザー(rootも含む)にさまざまな制限をかけることができ、 万が一rootが乗っ取られても影響を最小限にすることが出来る。本来はSELinuxを有効にするべきだが、 トラブル時の対応が複雑になる為、ここでは無効にする。

22.日付と時刻
* 日付と時刻を 正しい設定 に変更して [進む] を押す。

23.Hardware Profile
* ハードウェアーの情報を送信しても良い人は「Send Profile」を、送信したくない人は「Do not send profile」を選択して、[進む] を押す。
*「Do not send profile」を選択した場合は再メッセージが出てくるので、「No,do not send」ボタンをクリック して、[進む] を押す。

24.ユーザーの作成
* ここではそのまま [進む] を押す。警告が表示されるので [続ける] を押す。
ユーザーの追加は後でコマンドを使った方法で追加する。

25.サウンドカード
* サウンドカードが認識された場合に表示される。[終了] を押して再起動する。

26.ログイン
* ログイン画面が表示されたら、rootユーザーでログインするので「root」と入力。
* rootユーザーのパスワード「********」を入力し、[Enter] を押す。
パスワードが正しければそのユーザーで作業が出来るように CentOS 5 のデスクトップ画面が表示される。