2007.05.15

Category: Other / Tags:

バックアップスクリプト

バックアップの設定フォルダ及びファイルの作成

[root@www ~]# mkdir backup
[root@www ~]# cd backup
[root@www backup]# touch backup.sh
[root@www backup]# touch exclude.txt
[root@www backup]# touch ssh-agent-env
[root@www backup]# chmod 755 backup.sh
[root@www backup]# ls -al

合計 36
drwxr-xr-x 2 root root 4096 5月 15 10:55 .
drwxr-x— 6 root root 4096 5月 15 10:55 ..
-rwxr-xr-x 1 root root 0 5月 15 10:55 backup.sh
-rw-r–r– 1 root root 0 5月 15 10:52 exclude.txt
-rw-r–r– 1 root root 134 5月 15 11:07 ssh-agent-env

バックアップスクリプトの作成
www.pictnotes.jp の /var/www と /ect を /var/backup に保存して、日付をつけて
圧縮(tar.gz化)、圧縮されたファイルを、nas.pictnotes.jp の /backup1/www.pictnotes.jp/
へコピー

[root@www backup]# vi backup.sh

#!/bin/bash
#
# www.pictnotes.jp to nas.pictnotes.jp copy script
#
#
# backup file name
BACKUP_NAME=’www.pictnotes.jp’
# backup local path
BACKUP_PATH=’/var/backup’
# rsync LOCAL
RSYNC_LOCAL=’/usr/bin/rsync -avz –delete’
# tar command
TAR=’/bin/tar cvfz’
# read sshenv
SSH_ENV=’/root/backup/ssh-agent-env’
# rsync command used to nas.pictnotes.jp
RSYNC=”/usr/bin/rsync -avz -e ssh”
# rsync TO HOST
TO=’backup@nas.pictnotes.jp:/backup1/www.pictnotes.jp/’
# rm command
RM=’/bin/rm -r’
#
## END
# make backup file name
date=date +”%Y%m%d”
BACKUP_DIR=”${BACKUP_PATH}/${BACKUP_NAME}”
BACKUP_TAR_NAME=”${BACKUP_PATH}/${BACKUP_NAME}-${date}.tar.gz”
# rsync(copy) start to local
#echo “${RSYNC_LOCAL} /var/www ${BACKUP_DIR}/”
${RSYNC_LOCAL} /var/www “${BACKUP_DIR}/” 2>&1
#echo “${RSYNC_LOCAL} /etc ${BACKUP_DIR}/”
${RSYNC_LOCAL} /etc “${BACKUP_DIR}/” 2>&1
# tar start
#echo “${TAR} ${BACKUP_TAR_NAME} ${BACKUP_DIR}”
${TAR} ${BACKUP_TAR_NAME} ${BACKUP_DIR}
# read sshenv
source ${SSH_ENV}
# rsync(copy) start to oriena.jp
#echo “${RSYNC} ${BACKUP_TAR_NAME} ${TO}”
${RSYNC} ${BACKUP_TAR_NAME} ${TO} 2>&1
# rm
#echo “${RM} ${BACKUP_TAR_NAME}”
${RM} ${BACKUP_TAR_NAME}
#finish

ローカル(www.pictnotes.jp)のバックアップフォルダを作成

[root@www backup]# mkdir /var/backup
[root@www backup]# mkdir /var/backup/www.pictnotes.jp

nas.pictnotes.jpへの接続用SSHを作成(秘密鍵、共通鍵の作成)

[root@www backup]# cd
[root@www ~]# cd .ssh/
[root@www .ssh]# ls -al

合計 24
drwx—— 2 root root 4096 4月 16 16:32 .
drwxr-x— 6 root root 4096 5月 15 10:55 ..
-rw-r–r– 1 root root 1258 5月 15 10:57 known_hosts

[root@www .ssh]# ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
21:1d:86:10:b4:43:bb:26:2d:1b:7f:a8:89:8c:a4:c4 root@www.pictnotes.jp

[root@www .ssh]# ls -al

合計 40
drwx—— 2 root root 4096 5月 15 11:00 .
drwxr-x— 6 root root 4096 5月 15 10:55 ..
-rw——- 1 root root 951 5月 15 11:02 id_rsa
-rw-r–r– 1 root root 228 5月 15 11:02 id_rsa.pub
-rw-r–r– 1 root root 1258 5月 15 10:57 known_hosts

[root@www .ssh]# cat id_rsa.pub

ssh-rsa XX(省略)XXXXX= root@www.pictnotes.jp

nas.pictnotes.jp の受け取りユーザー(backup)に、root@www.pictnotes.jp共通鍵を登録

[root@nas backup1]# cd /home/backup/.ssh/
[root@nas .ssh]# vi authorized_keys
(ここで追記)

接続できるかテスト

[root@www .ssh]# ssh backup@192.168.100.1

Enter passphrase for key ‘/root/.ssh/id_rsa’:  #まだ、パスフレーズを聞かれます。
Last login: Tue May 15 10:22:34 2007 from 192.168.100.94

自動ログインの設定、 ssh-agent の起動

[root@www ~]# cd /root/backup/
[root@www backup]# ssh-agent > ssh-agent-env
[root@www backup]# cat ssh-agent-env

SSH_AUTH_SOCK=/tmp/ssh-qyVRM31132/agent.31132; export SSH_AUTH_SOCK;
“SSH_AGENT_PID” =31133; export “SSH_AGENT_PID” ;
echo Agent pid 31133;

[root@www backup]# source ssh-agent-env

Agent pid 31133

[root@www backup]# ssh-add
Enter passphrase for /root/.ssh/id_rsa: #パスフレーズを登録
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

自動ログインの確認

[root@www backup]# ssh backup@192.168.100.1

Last login: Tue May 15 11:06:50 2007 from 192.168.100.71
(パスワード無しでログイン)

バックアップスクリプトを走らせて、最終チェック

[root@www backup]# ./backup.sh

きちんと動けばcronに設定して終了 毎日2時40分に起動

[root@www backup]# crontab -e

#2007.05.15 kiyosue written
40 2 * * * /root/backup/backup.sh

postgres をインストールしてみる

RedhatES3 に Postgresql7.4.16 を install
前提で、 kerberos と openssl は、 rpmでインストールしています。
今回のコンフィガーオプションは

./configure \
–with-perl \
–with-python \
–with-pam \
–with-krb5=/usr/kerberos \
–with-openssl=/usr

とした、
–with-krb5=/usr/kerberos \
がなくて
–with-openssl=/usr
だけだと。
configure: error: header file is required for OpenSSL
とエラーがでます。
これは、 kerberos と openssl を RPM でいれて postgresql をソースから入れようと
しているため、 –with-opensslだけでは、kerberosが見つけられないことに起因
しているみたいです。
oepnsslは、kerberosサポートだけどkerberosがみつからないからエラーの感じでしょうか。
MLの

[pgsql-jp: 31348] postgresql-7.3.4 コンフィグエラー からのスレッド
http://ml.postgresql.jp/pipermail/pgsql-jp/2003-October/014910.html

[pgsql-jp: 31363] Re: postgresql-7.3.4 コンフィグエラー
http://ml.postgresql.jp/pipermail/pgsql-jp/2003-October/014925.html

が参考になります。
ここだけのりこえればあとは通常どおり

#make

#make install

でおわりです。

2007.05.08

Category: Apache / Tags:

.htaccess で メンテナンスの振り分け

指定のIPからは通常通りサイトが見られて、それ以外のIPについては、
メンテナンス画面の表示をする場合の一つの手段
.htaccessを利用して

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxxx.xx$ [OR]
RewriteCond %{REMOTE_ADDR} !^yy.yy.yy.yy$ [OR]
RewriteCond %{REQUEST_URI} !^http://www.pictnotes.jp/maintenance.html$
RewriteRule ^.* http://www.pictnotes.jp/maintenance.html [L]
</IfModule>

リモートのIPが xxx.xxx.xxxx.xx や yy.yy.yy.yy でなく リクエストURLがhttp://www.pictnotes.jp/maintenance.html
で無い場合は
http://www.pictnotes.jp/maintenance.html
を表示という感じ
RewriteCond %{REQUEST_URI} !^http://www.pictnotes.jp/maintenance.html$
は、永久ループをさけるための処置、メンテナンス画面が表示されている(はず。。)

2007.05.07

Category: Apache / Tags:

セキュリティーを高める 404ページとかの修正

httpd.confで下記の設定を修正

# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is ‘Full’ which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Prod

これにより、HTTPレスポンスヘッダーには、 Apacheとしか表示されなくなる。
デフォルトは Full

# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to “EMail” to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature Off

これにより、404 Not Found とかのページのシグネチャー(フッター)に、情報が
でなくなる。
default は、 On
下記デフォルトエイリアスのコメント化

#Alias /icons/ “/var/oriena/c21/apache/apache-front/icons/”
#AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ “/var/oriena/c21/apache/apache-front/manual$1″

ディレクトリ一覧の表示の禁止 (Indexesオプションの使用禁止)

Options -Indexes FollowSymLinks
もしくは
Options FollowSymLinks

-(マイナス)を頭につける事により無効化
HTTPヘッダーの TRACEの出力の抑制

TraceEnable Off

FileEtag での inode number の利用の抑制

FileETag -INode

2007.05.07

Category: Command / Tags:

ssh 鍵の作成から自動ログインの設定まで

ssh で自動ログインを実装するため、鍵の作成から ssh-agentを使っての設定まで
host1.pictnotes.jp から host2.pictnotes.jp へ自動ログインするため
host1 の方で 公開鍵と秘密鍵の作成
ユーザーはとりあえずrootにしています。

[root@host1 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c1:46:d8:0c:f2:6d:d0:ba:9c:11:22:33:44:55:66:77 root@host1.pictnoes.jp

ssh-keygen コマンドで、公開鍵と秘密鍵を作成
-t rsa で rsa形式の秘密鍵の作成をしています。パスワードは空でも大丈夫ですが
できることならいれましょう。
通常、ホームディレクトリに .ssh のフォルダが作成され
そのなかに、
id_rsa (秘密鍵)
id_rsa.pub (公開鍵)
ができあがります。
公開鍵を host2.pictnoes.jp に登録
※この作業は host2です。
ユーザーは、pictnotes としておきます。
ホームディレクトリに .sshのフォルダがないなら作成
このとき、権限は 700 にしておくこと。

[pictnotes@host2 pictnotes]# pwd
/home/pictnotes
[pictnotes@host2 pictnotes]# mkdir .ssh
[pictnotes@host2 pictnotes]# chmod 700 .ssh
[pictnotes@host2 pictnotes]# ls -al
drwx—— 4 pictnotes pictnotes 4096 4月 16 18:56 .
drwxr-xr-x 8 pictnotes pictnotes 4096 4月 17 16:17 ..
-rw-r–r– 1 pictnotes pictnotes 191 4月 13 19:24 .bash_profile
-rw-r–r– 1 pictnotes pictnotes 124 4月 13 19:24 .bashrc
drwx—— 2 pictnotes pictnotes 4096 5月 7 14:53 .ssh
[pictnotes@host2 pictnotes]# cd .ssh

authorized_keys のファイルが無い場合は

[pictnotes@host2 .ssh]# touch authorized_keys
[pictnotes@host2 .ssh]# chmod 600 authorized_keys
[pictnotes@host2 .ssh]# ls -al
-rw——- 1 c21 c21 865 5月 7 14:53 authorized_keys

で作成。
公開鍵を authorized_keysに追加します。
すでにauthorized_keysがある場合は最後の行に追記します。
host1.pictnotes.jp と www.yahoo.co.jp の公開鍵がある場合こんな感じにファイルがなります。

[pictnotes@host2 .ssh]# cat authorized_keys
ssh-rsa HHHHHHHHHHooooooooooooooooooGGGGGGGGGGGGGGGGGEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUgagagagagagagagaHHHHHHHHHHooooooooooooooooooGGGGGGGGGGGGGGGGGEEEEEEEEEEEEEEEEEEEEEh1LYIR/H0VI1ImWAWs= root@host1.pictnotes.jp
ssh-rsa HHHHHHHHHHooooooooooooooooooGGGGGGGGGGGGGGGGGEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUgagagagagagagagaHHHHHHHHHHooooooooooooooooooGGGGGGGGGGGGGGGGGEEEEEEEEEEEEEEEEEEEEEh1LYIR/H0VI1ImWAWs= tmp@www.yahoo.co.jp

実際は2行になります。
host1.pictnotes.jp 側の自動ログインの設定
※この作業は host1です。

[root@host1 .ssh]# ssh-agent > /root/sshenv
[root@host1 .ssh]# source /root/sshenv

とかしたら、無駄にssh-agentを立上げなくて済みます。
パスフレーズを追加する
※この作業は host1です。
ssh-agent で出力される環境変数が設定されていないとできません。

[root@host1 .ssh]# ssh-add
Enter passphrase for /root/.ssh/id_rsa: PASSPHRASE ¶
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

とかで、ssh-agent がおちるまで有効です。