「 自宅サーバの時代」のページ記事
Linuxによる「自宅サーバの構築」(2005年~2010年) 「自宅LinuxServerの時代」では、2005年~2010年にかけて自宅でサーバを構築したこ…
POP/IMAPサーバの構築(Dovecot)
POP/IMAPサーバの構築(Dovecot)
- (1) インストール
-
# yum install dovecot
Installed: dovecot.i386 0:1.0.3-6.fc6 - (2) 設定
-
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir - (3) 自動起動
-
# service dovecot start
# chkconfig dovecot on - (4) 動作確認
- [注意事項]MainServerのセキュリティーで、その他のポートで110番のTCPのポート開放をすることでメールを受け取ることができる。
メールサーバの構築(Postfix)
メールサーバの構築(Postfix)
- (1) インストール
-
# yum install postfix
Installed: postfix.i386 2:2.4.5-2.fc6 - (2) 設定
-
① myhostname = mail.***.jp
② mydomain = ***.jp
③ myorigin = $mydomain (メール送信時の送信元メールアドレスの@以降の設定)
④ inet_interfaces = all (外部からのメール受信許可の設定)
⑤ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain(ローカルの配送先の設定)
⑥ home_mailbox = Maildir/
⑦ smtpd_banner = $myhostname ESMTP unknown(メールサーバソフト名を表示しない設定) - (3) サービスの起動
-
- (ⅰ)sendmailサービスの停止
- (ⅱ)postfixの自動起動化
- (ⅲ)mtaの切り替え
service sendmail status
sendmail (pid 1855 1846) を実行中…
# service sendmail stop
# chkconfig –level 2345 sendmail off# chkconfig –list postfix
サービス postfix は chkconfig をサポートしますが実行レベルで参照されていません (run ‘chkconfig –add postfix’)
# chkconfig –add postfix
# chkconfig –level 2345 postfix on
# service postfix start# alternatives –config mta
- (4) SMTP-AUTH
-
- (ⅰ)インストール
パッケージの確認
# rpm -qa | grep sasl
# yum install cyrus-sasl-md5 cyrus-sasl-ntlm cyrus-sasl-gssapi
Installed: cyrus-sasl-gssapi.i386 0:2.1.22-4 cyrus-sasl-md5.i386 0:2.1.22-4 cyrus-sasl-ntlm.i386 0:2.1.22-4
Awstatsの導入
Awstatsの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install awstats
Installed: awstats.noarch 0:6.6-1.fc6
Dependency Installed: perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!次に、設定スクリプトを実行
# cd /usr/share/awstats/tools
# ./awstats_configure.pl
設定スクリプトの実行によって、設定ファイル「○○○.conf」が作成される。 - (2) awstatsの設定
-
作成された設定ファイル「○○○.conf」をチューニングする。
# vi /etc/awstats/awstats.○○○.conf
そして、解析情報ファイルを作成する。
# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update - (3) 定期的更新
-
crontabを利用して、解析情報ファイルを定期的に更新させる。
# vi /etc/crontab
02 4 * * * root /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update# service crond restart
phpの導入
mainServerのサーバ構築
phpの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-cli.i386 0:5.1.6-3.7.fc6 php-common.i386 0:5.1.6-3.7.fc6
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
- WWWServerの方で使っていたphpライブラリーを次のようにして引越しました。
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh 192.168.1.2:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
SubmainServerのサーバ構築
phpの導入 (記載日:2008年11月02日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.0.4-10.5
Dependency Installed: php-pear.i386 0:5.0.4-10.5
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
-
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh MainServer:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WordPressの導入
WordPressの導入 (記載日:2008年10月11日)
- (1) インストール
-
# unzip wordpress-2.6.2-ja.zip
# chmod 777 wordpress
http://(ドメイン名)/wordpress/でwordpressを呼び出す。wp-config.phpを作成するためのウイザードが起動し、項目に答えることでwp-config.phpが作成される。
# vi wp-config.php で内容確認
// ** MySQL settings ** //
define(‘DB_NAME’, ‘○○○_db’); // データベース名
define(‘DB_USER’, ‘○○○○’); // ユーザー名
define(‘DB_PASSWORD’, ‘○○○○’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ
define(‘DB_CHARSET’, ‘utf8’);
// テーブルの接頭辞を指定します。複数設置する場合など適宜変更してください。
$table_prefix = ‘○○_’;以上によりインストールの終了
- (2) 新規インストールのための諸設定
- (ⅰ)ユーザ登録
- (ⅱ)テーマの変更
- (ⅲ)リンクの作成
adminのパスワードが自動発行されるので、そのパスワードを使い管理画面に入り、管理者のユーザ登録をする。
/wp-content/themaのディレクトリにダウンロードしたテーマをFTPを使ってアップロードし、テーマを変更する。
HomeのWebサイトに戻れるように、管理画面リンクでリンクを編集する。
データベースサーバの構築(MySQL)
mainServerのサーバ構築
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:5.0.27-1.fc6 mysql-server.i386 0:5.0.27-1.fc6
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-1.fc6 perl-DBI.i386 0:1.52-1.fc6# chkconfig –level 345 mysqld on
# service mysqld start - (2) MySQLの設定
-
- (ⅰ)rootパスワードの設定
- (ⅱ)ユーザの作成
mysql> set password for root@localhost=password(‘○○○’);
mysql>grant all privileges on *.* to root@MainServer.0gino.jp identified
by ‘○○○’ with grant option;
mysql> delete from user where users=”;
mysql> select host,user,password from user;
| localhost | root | 1160776e03b164ee |
| MainServer.0gino.jp | root | 1160776e03b164ee |mysql> create database belize_db;
mysql> grant all privileges on belize_db.* to tando@localhost identified
by ‘○○○’ with grant option;
mysql> flush privileges;
# mysql -u tando -p belize_db
SubmainServerのサーバ構築
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:4.1.20-1.FC4.1 mysql-server.i386 0:4.1.20-1.FC4.1
Dependency Installed: perl-DBD-MySQL.i386 0:2.9007-1 perl-DBI.i386 0:1.48-4# chkconfig –level 345 mysqld on
# service mysqld start
Webサーバの構築(ApacheHTTP)
mainServerのサーバ構築
Webサーバの構築(ApacheHTTP)
- (1) インストール
-
# yum install system-config-httpd httpd-manual
Installed: httpd-manual.i386 0:2.2.6-1.fc6 system-config-httpd.noarch 5:1.4.1-1.fc6
Dependency Installed: alchemist.i386 0:1.0.36-1.2.2 libxslt-python.i386 0:1.1.21-1.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 libxml2.i386 0:2.6.29-1.fc6
libxml2-devel.i386 0:2.6.29-1.fc6 libxml2-python.i386 0:2.6.29-1.fc6
libxslt.i386 0:1.1.21-1.fc6 libxslt-devel.i386 0:1.1.21-1.fc6 - (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
SubmainServerのサーバ構築
Webサーバの構築(ApacheHTTP)
- (1) インストール
- #
- (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
DNSサーバの構築(BIND )
DNSサーバの構築(BIND )
- (1) インストール
- # yum install bind-utils bind-chroot bind ypbind bind-libs
Installed: bind.i386 31:9.3.4-8.P1.fc6 bind-chroot.i386 31:9.3.4-8.P1.fc6
Updated: bind-libs.i386 31:9.3.4-8.P1.fc6 bind-utils.i386 31:9.3.4-8.P1.fc6
ypbind.i386 3:1.19-7.fc6 - (2) 設定
-
- (ⅰ)ブートファイルの設定
# vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot (chrootの確認)
# cp /usr/share/doc/bind-9.3.4/sample/etc/named.conf /var/named/chroot/etc/
# chown root:named /var/named/chroot/etc/named.conf
(権限を変更しないと作動しない)
# chmod 640 /var/named/chroot/etc/named.confoptions { query-source port 53; query-source-v6 port 53; directory "/var/named"; dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localnets; }; match-destinations { localnets; }; recursion yes; include "/etc/named.rfc1912.zones"; zone "0gino.jp" { type master; file "0gino.jp.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; }; }; view "external" { recursion no; allow-query { none; }; zone "." { type hint; file "/dev/null"; }; zone "0gino.jp" { type master; file "0gino.jp.zone"; allow-query { any; }; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; allow-query { any; }; }; };
- (ⅱ)正引きゾーンファイルの設定
# vi /var/named/chroot/var/named/0gino.jp.zone
$TTL 86400 @ IN SOA ns.0gino.jp. root.0gino.jp. ( 2008080903 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hours 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day
FTPサーバの構築 -vsftpd
FTPサーバの構築 -vsftpd
外部からのアクセスにも耐えれるように、vsftpdの構築をします。
- (1) インストール
-
# yum install vsftpd
Installed: vsftpd.i386 0:2.0.5-10.fc6 - (2) アクセス制御の設定
-
# vi /etc/vsftpd/vsftpd.confでの設定事項
- (ⅰ)標準設定項目
- (ⅱ)各ftpユーザにホームディレクトリ以上の階層を見せない
- (ⅲ)FTPサーバのみを使用出来るユーザを作成する方法
■ anonymous_enable=NO
■ ascii_upload_enable=YES
■ ascii_download_enable=YES■ chroot_local_user=YES ←(追加)
■ chroot_list_enable=YES
■ chroot_list_file=/etc/vsftpd/chroot_list# vi /etc/vsftpd/chroot_listでユーザ名を1行に1つずつ書きます。
chroot_local_user=YESを追加することで、chroot_listに書いたユーザ以外はホームディレクトリ以上の階層を見せないようにできます。# vipw
ftpuser:x:510:510:FTP User:/home/ftpuser:/bin/bashを
ftpuser:x:510:510:FTP User:/home/ftpuser:/sbin/nologin
のように変更して保存します。これで、telnetやsshでログインできなくなります。 - (3) xineted経由で起動させる
- only_from句を設定することで、xineted側でアクセス制御が可能になります。
# service vsftpd stop
# chkconfig vsftpd off# vi /etc/xinetd.d/ftp
service ftp { wait = no user = root server = /usr/sbin/vsftpd server_args = -i disable = no only_from = .○○○.jp }
# service xinetd restart
SSHサーバの構築
mainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
SubmainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
自宅サーバ時代の「サーバ管理」
サーバの管理
MRTGによるシステムの監視
MRTGの構築(サーバ側:MainServer)
- (1) インストール
-
# yum install mrtg
Installed: mrtg.i386 0:2.14.5-2 - (2) 監視されるクライアント側のSNMPの設定
-
- (ⅰ)SNMPのインストール
- (ⅱ)SNMPの設定
- (ⅲ)自動起動
# rpm -qa | grep net-snmp
net-snmp-libs-5.3.1-11.fc6
net-snmp-5.3.1-15.fc6
net-snmp-utils-5.3.1-15.fc6com2sec zodiac_network 192.168.1.0/24 zodiac_community
group zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_network
view zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none# service snmpd start
# chkconfig snmpd on - (3) MRTGの設定
-
- (ⅰ)cfgファイルの設定
- (ⅱ)定期的なグラフの更新
# cd /etc/mrtg/
# cfgmaker zodiac_community@MainServer –output=./MainServer.cfg
# vi MainServer.cfg
### Global Config Options
WorkDir: /var/www/mrtg/MainServer
Language: eucjp
IconDir: /mrtg/icons/### Global Defaults
#—————–
# eth0 traffic
#—————–
Target[eth0]: 2:zodiac_community@MainServer:
SetEnv[eth0]: MRTG_INT_IP=”192.168.1.1″ MRTG_INT_DESCR=”eth0″
MaxBytes[eth0]: 12500000
Title[eth0]: Traffic Analysis for 2 — MainServer.ogino.tk
PageTop[eth0]: Traffic Analysis for 2 — MainServer.ogino.tk#——————
# cpu load average
#——————
Target[la]: 1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:zodiac_community@MainServer:
ThreshMaxI[la]:50
SetEnv[la]: EMAIL=”root@localhost”
URL=”http://192.168.1.1/mrtg/MainServer/la.html”
MaxBytes[la]: 100
Title[la]: Load Average
PageTop[la]: CPU Load Average on MainServer.ogino.tk
YLegend[la]: CPU Load Average
ShortLegend[la]: %
LegendI[la]:1min avrg.
LegendO[la]:15min avrg.
#——————
# memory usage
#——————
Target[mem]: 1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:zodiac_community@MainServer:
ThreshMaxI[mem]:80
SetEnv[mem]: EMAIL=”root@localhost”
URL=”http://192.168.1.1/mrtg/MainServer/mem.html”
MaxBytes[mem]: 190748
Title[mem]: Memory Usage “real” and “swap”
PageTop[mem]: Memory Usage “real” and “swap” on MainServer.ogino.tk
YLegend[mem]: Memory Usage
ShortLegend[mem]: kbyte
LegendI[mem]:real Available.
LegendO[mem]:swap Available.# vi /etc/crontab
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/MainServer.cfg
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/BackupServer.cfg
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/WWWServer.cfg
MRTG(監視されるクライアント側:SubmainServerの設定)
- (1) インストール
-
# tar -zxvf net-snmp-5.2.5.tar.tar
# cd net-snmp-5.2.5
# ./configure –prefix=/usr
# make
# make test
# umask 022
# make install
# ls -l /usr/sbin/snmpd
# ls -l /usr/sbin/snmptrapd
-rwxr-xr-x 1 root root 366287 8月 21 18:22 /usr/sbin/snmptrapd - (2) 設定
-
# vi /usr/share/snmp/snmpd.conf
com2sec zodiac_network 192.168.1.0/24 zodiac_community
group zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_networkview zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none
- (3) 動作確認
-
# /usr/sbin/snmpd
# snmpwalk -v 2c localcom localhost .1.3.6.1.4.1.2021
# kill `ps -ef | grep snmpd | grep -v grep | awk ‘{print $2}’` - (4) 自動起動
-
# service snmpd start
# chkconfig snmpd on
MRTG(監視されるクライアント側:BackupServerの設定)
- (1) インストール
-
# rpm -qa | grep net-snmp
net-snmp-5.1.1-2
net-snmp-utils-5.1.1-2 - (2) 設定
-
# vi /etc/snmp/snmpd.conf
com2sec zodiac_network 192.168.1.0/24 zodiac_communitygroup zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_networkview zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none
- (3) 自動起動
-
# service snmpd start
# chkconfig snmpd on
Nagiosによるシステムの監視
Nagiosの構築(サーバ側:MainServer)
- (1) インストール
-
- (ⅰ)Nagios本体
- (ⅱ)プラグイン
$ tar -zxvpf nagios-3.0.3.tar.tar
$ su –# groupadd nagcmd
# /usr/sbin/groupadd nagcmd
# /usr/sbin/usermod -G nagcmd △△△△
# /usr/sbin/usermod -G nagcmd ○○○○
# exit$ cd nagios-3.0.3
$ ./configure –prefix=/usr/local/nagios –with-command-group=nagcmd
$ make all
$ su# make install
# make install-init
# make install-commandmode
# make install-config$ tar -zxvpf nagios-plugins-1.4.12.tar.gz
$ cd nagios-plugins-1.4.12
$ ./configure
–with-apt-get-command:
–with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s
–with-ping-command: /bin/ping -n -U -w %d -c %d %s
–with-ipv6: yes
–with-mysql: no
–with-openssl: yes
–with-gnutls: no
–enable-extra-opts: no
–with-perl: /usr/bin/perl
–enable-perl-modules: no
–with-cgiurl: /nagios/cgi-bin
–with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin$ make
$ su
# make install - (2) Webサーバの設定
-
- (ⅰ)Apacheの設定ファイル
# vi /etc/httpd/conf/httpd.conf
ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin/AllowOverride AuthConfig Options ExecCGI Order allow,deny Allow from all Alias /nagios/ /usr/local/nagios/share/ AllowOverride AuthConfig Options None Order allow,deny Allow from all
# /etc/init.d/httpd restart
- (ⅱ)ユーザ及びパスワードの作成
# vi /usr/local/nagios/share/.htaccess
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user# cp /usr/local/nagios/share/.htaccess /usr/local/nagios/sbin/
# su nagios
$ htpasswd -c /usr/local/nagios/etc/htpasswd.users ○○○○
New password:
Re-type new password:
Adding password for user ○○○○# chmod 755 /usr/local/nagios/ ←/usr/local/nagios/が700であったのでPermissionエラーが出たので変更する。
- (3) Nagiosの設定
-
- (ⅰ)メイン設定ファイル
- (ⅱ)CGI設定ファイル
- (ⅲ)リソース設定ファイル
# su nagios
$ cd /usr/local/nagios/etc/
$ vi nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg$ vi cgi.cfg
authorized_for_system_information=○○○○ ←nagiosadminを○○○○に変更
authorized_for_configuration_information=○○○○
authorized_for_system_commands=○○○○
authorized_for_all_services=○○○○
authorized_for_all_hosts=○○○○
authorized_for_all_service_commands=○○○○
authorized_for_all_host_commands=○○○○host_unreachable_sound=hostdown.wav
←#をとる
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav$ vi resource.cfg ←最初からファイルが存在する
- (4) 監視オブジェクトの設定
-
通知先の定義 contacts.cfg
# su nagios
$ cd /usr/local/nagios/etc/object/
$ vi contacts.cfgdefine contact{ contact_name ○○○○ use generic-contact alias Nagios Admin email nagios@ogino.tk } define contactgroup{ contactgroup_name admins alias Nagios Administrators members ○○○○ }
- (5) 設定の確認とNagiosの起動
-
- (ⅰ)設定の確認
- (ⅱ)Nagiosの起動及び自動起動
$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0$ /etc/init.d/nagios start
# chkconfig nagios on
# chkconfig –list nagios
nagios 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自宅サーバ時代の「サーバ運用」
サーバの運用
このページは、ネットワーク構成図に基づいて、FedoreCore6(MainServer機)、FedoraCore4(SubmainServer機)、FedoraCore2(BackupServer機)で各々サーバを構築し、日々の「サーバ運用」の内容を記録したものです。
サーバー運用では、実際のサーバ運用で必要となる、awstatsによる「アクセス解析」とrsyncによる「サーバの同期」についてまとめています。
アクセス解析(awstats)
アクセス解析の設定方法と実際のawstatsの画面にリンクを張っています。
rsyncによるサーバの同期
サーバ群のどのコンピュータとどのように同期をとっているか説明しています。
rsyncによるサーバの同期
- (1) sshクライアントからRSA認証でログインできるための設定
-
MainServer機、SubmainServer機、BackupServer機が、お互いにsshでパスワードなしでログインできるように設定する。
① MainServer機→SubmainServer機の設定
[root@MainServer ~]# 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:
f6:e0:98:71:d3:d9:c8:92:43:fc:40:95:a6:40:ec:36 root@MainServer.0gino.jp[root@MainServer ~]# scp ~/.ssh/id_rsa.pub 192.168.1.2:
root@192.168.1.2’s password:
id_rsa.pub 100% 406 0.4KB/s 00:00
[root@MainServer ~]# scp ~/.ssh/id_rsa.pub 192.168.1.3:
root@192.168.1.3’s password:
id_rsa.pub 100% 406 0.4KB/s 00:00
[root@MainServer ~]# slogin 192.168.1.2
root@192.168.1.2’s password:
Last login: Sun Nov 2 14:58:54 2008 from mainserver.0gino.jp
[root@SubmainServer ~]# mkdir .ssh
[root@SubmainServer ~]# cd .ssh/
[root@SubmainServer .ssh]# touch authorized_keys
[root@SubmainServer .ssh]# chmod 600 authorized_keys
[root@SubmainServer .ssh]# cat ~/id_rsa.pub >> authorized_keys
[root@SubmainServer .ssh]# rm ~/id_rsa.pub
rm: remove 通常ファイル `/root/id_rsa.pub’? y# slogin BackupServer
The authenticity of host ‘backupserver (192.168.1.3)’ can’t be established.
RSA key fingerprint is 97:a5:86:c0:5d:97:ff:5f:0c:9d:53:a7:f5:1d:37:5d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘backupserver,192.168.1.3’ (RSA) to the list of known hosts.
root@backupserver’s password:以下のようにして、BackupServer側からMainServer側へRSA認証でログイン出来るように設定する。
[root@BackupServer root]# ssh-keygen -t rsa
[root@BackupServer root]# scp ~/.ssh/id_rsa.pub 192.168.1.1:
[root@MainServer ~]# cd .ssh/
[root@MainServer ~]# touch authorized_keys
[root@MainServer ~]# chmod 600 authorized_keys
[root@MainServer ~]# cat ~/id_rsa.pub >> authorized_keys
[root@MainServer ~]# rm ~/id_rsa.pub次に、同期先のサーバでSSHのログインを、鍵による認証のみにする。
そのために、を以下のように編集するが、rootでのログインを許可する。
[root@MainServer ~]# vi /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin yes - (2) cronによる定期的な同期をとる
-
BackupServer側からMainServer側のバックアップが5分おきに取れるように設定する。
# vi /etc/crontab
# auto backup from MainServer to BackupServer
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/www/html /var/www
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/home /
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/lib/mysql /var/lib
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/lib/awstats/ /var/lib# service crond restart
自宅サーバ時代の「サーバ構築」
このページは、第九期ネットワーク構成図に基づいて、2008年8月に、FedoreCore6(MainServer機)、FedoraCore4(WWWServer機)、FedoraCore2(BackupServer機)で各々サーバ構築した内容を記録したものです。
MainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:Documents and SettingユーザApplication Datarsa」(XP)
C:UsersユーザAppDataLocalrsaid_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
FTPサーバの構築 -vsftpd
外部からのアクセスにも耐えれるように、vsftpdの構築をします。
- (1) インストール
-
# yum install vsftpd
Installed: vsftpd.i386 0:2.0.5-10.fc6 - (2) アクセス制御の設定
-
# vi /etc/vsftpd/vsftpd.confでの設定事項
- (ⅰ)標準設定項目
- (ⅱ)各ftpユーザにホームディレクトリ以上の階層を見せない
- (ⅲ)FTPサーバのみを使用出来るユーザを作成する方法
■ anonymous_enable=NO
■ ascii_upload_enable=YES
■ ascii_download_enable=YES■ chroot_local_user=YES ←(追加)
■ chroot_list_enable=YES
■ chroot_list_file=/etc/vsftpd/chroot_list# vi /etc/vsftpd/chroot_listでユーザ名を1行に1つずつ書きます。
chroot_local_user=YESを追加することで、chroot_listに書いたユーザ以外はホームディレクトリ以上の階層を見せないようにできます。# vipw
ftpuser:x:510:510:FTP User:/home/ftpuser:/bin/bashを
ftpuser:x:510:510:FTP User:/home/ftpuser:/sbin/nologin
のように変更して保存します。これで、telnetやsshでログインできなくなります。 - (3) xineted経由で起動させる
- only_from句を設定することで、xineted側でアクセス制御が可能になります。
# service vsftpd stop
# chkconfig vsftpd off# vi /etc/xinetd.d/ftp
service ftp { wait = no user = root server = /usr/sbin/vsftpd server_args = -i disable = no only_from = .○○○.jp }
# service xinetd restart
DNSサーバの構築(BIND )
- (1) インストール
- # yum install bind-utils bind-chroot bind ypbind bind-libs
Installed: bind.i386 31:9.3.4-8.P1.fc6 bind-chroot.i386 31:9.3.4-8.P1.fc6
Updated: bind-libs.i386 31:9.3.4-8.P1.fc6 bind-utils.i386 31:9.3.4-8.P1.fc6
ypbind.i386 3:1.19-7.fc6 - (2) 設定
-
- (ⅰ)ブートファイルの設定
# vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot (chrootの確認)
# cp /usr/share/doc/bind-9.3.4/sample/etc/named.conf /var/named/chroot/etc/
# chown root:named /var/named/chroot/etc/named.conf
(権限を変更しないと作動しない)
# chmod 640 /var/named/chroot/etc/named.confoptions { query-source port 53; query-source-v6 port 53; directory "/var/named"; dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localnets; }; match-destinations { localnets; }; recursion yes; include "/etc/named.rfc1912.zones"; zone "0gino.jp" { type master; file "0gino.jp.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; }; }; view "external" { recursion no; allow-query { none; }; zone "." { type hint; file "/dev/null"; }; zone "0gino.jp" { type master; file "0gino.jp.zone"; allow-query { any; }; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; allow-query { any; }; }; };
- (ⅱ)正引きゾーンファイルの設定
# vi /var/named/chroot/var/named/0gino.jp.zone
$TTL 86400 @ IN SOA ns.0gino.jp. root.0gino.jp. ( 2008080903 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hours 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day
Webサーバの構築(ApacheHTTP)
- (1) インストール
-
# yum install system-config-httpd httpd-manual
Installed: httpd-manual.i386 0:2.2.6-1.fc6 system-config-httpd.noarch 5:1.4.1-1.fc6
Dependency Installed: alchemist.i386 0:1.0.36-1.2.2 libxslt-python.i386 0:1.1.21-1.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 libxml2.i386 0:2.6.29-1.fc6
libxml2-devel.i386 0:2.6.29-1.fc6 libxml2-python.i386 0:2.6.29-1.fc6
libxslt.i386 0:1.1.21-1.fc6 libxslt-devel.i386 0:1.1.21-1.fc6 - (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:5.0.27-1.fc6 mysql-server.i386 0:5.0.27-1.fc6
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-1.fc6 perl-DBI.i386 0:1.52-1.fc6# chkconfig –level 345 mysqld on
# service mysqld start - (2) MySQLの設定
-
- (ⅰ)rootパスワードの設定
- (ⅱ)ユーザの作成
mysql> set password for root@localhost=password(‘○○○’);
mysql>grant all privileges on *.* to root@MainServer.0gino.jp identified
by ‘○○○’ with grant option;
mysql> delete from user where users=”;
mysql> select host,user,password from user;
| localhost | root | 1160776e03b164ee |
| MainServer.0gino.jp | root | 1160776e03b164ee |mysql> create database belize_db;
mysql> grant all privileges on belize_db.* to tando@localhost identified
by ‘○○○’ with grant option;
mysql> flush privileges;
# mysql -u tando -p belize_db
phpの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-cli.i386 0:5.1.6-3.7.fc6 php-common.i386 0:5.1.6-3.7.fc6
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
- WWWServerの方で使っていたphpライブラリーを次のようにして引越しました。
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh 192.168.1.2:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WordPressの導入 (記載日:2008年10月11日)
- (1) インストール
-
# unzip wordpress-2.6.2-ja.zip
# chmod 777 wordpress
http://(ドメイン名)/wordpress/でwordpressを呼び出す。wp-config.phpを作成するためのウイザードが起動し、項目に答えることでwp-config.phpが作成される。
# vi wp-config.php で内容確認
// ** MySQL settings ** //
define(‘DB_NAME’, ‘○○○_db’); // データベース名
define(‘DB_USER’, ‘○○○○’); // ユーザー名
define(‘DB_PASSWORD’, ‘○○○○’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ
define(‘DB_CHARSET’, ‘utf8’);
// テーブルの接頭辞を指定します。複数設置する場合など適宜変更してください。
$table_prefix = ‘○○_’;以上によりインストールの終了
- (2) 新規インストールのための諸設定
- (ⅰ)ユーザ登録
- (ⅱ)テーマの変更
- (ⅲ)リンクの作成
adminのパスワードが自動発行されるので、そのパスワードを使い管理画面に入り、管理者のユーザ登録をする。
/wp-content/themaのディレクトリにダウンロードしたテーマをFTPを使ってアップロードし、テーマを変更する。
HomeのWebサイトに戻れるように、管理画面リンクでリンクを編集する。
Awstatsの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install awstats
Installed: awstats.noarch 0:6.6-1.fc6
Dependency Installed: perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!次に、設定スクリプトを実行
# cd /usr/share/awstats/tools
# ./awstats_configure.pl
設定スクリプトの実行によって、設定ファイル「○○○.conf」が作成される。 - (2) awstatsの設定
-
作成された設定ファイル「○○○.conf」をチューニングする。
# vi /etc/awstats/awstats.○○○.conf
そして、解析情報ファイルを作成する。
# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update - (3) 定期的更新
-
crontabを利用して、解析情報ファイルを定期的に更新させる。
# vi /etc/crontab
02 4 * * * root /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update# service crond restart
メールサーバの構築(Postfix)
- (1) インストール
-
# yum install postfix
Installed: postfix.i386 2:2.4.5-2.fc6 - (2) 設定
-
① myhostname = mail.0gino.jp
② mydomain = 0gino.jp
③ myorigin = $mydomain (メール送信時の送信元メールアドレスの@以降の設定)
④ inet_interfaces = all (外部からのメール受信許可の設定)
⑤ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain(ローカルの配送先の設定)
⑥ home_mailbox = Maildir/
⑦ smtpd_banner = $myhostname ESMTP unknown(メールサーバソフト名を表示しない設定) - (3) サービスの起動
-
- (ⅰ)sendmailサービスの停止
- (ⅱ)postfixの自動起動化
- (ⅲ)mtaの切り替え
service sendmail status
sendmail (pid 1855 1846) を実行中…
# service sendmail stop
# chkconfig –level 2345 sendmail off# chkconfig –list postfix
サービス postfix は chkconfig をサポートしますが実行レベルで参照されていません (run ‘chkconfig –add postfix’)
# chkconfig –add postfix
# chkconfig –level 2345 postfix on
# service postfix start# alternatives –config mta
- (4) SMTP-AUTH
-
- (ⅰ)インストール
パッケージの確認
# rpm -qa | grep sasl
# yum install cyrus-sasl-md5 cyrus-sasl-ntlm cyrus-sasl-gssapi
Installed: cyrus-sasl-gssapi.i386 0:2.1.22-4 cyrus-sasl-md5.i386 0:2.1.22-4 cyrus-sasl-ntlm.i386 0:2.1.22-4
POP/IMAPサーバの構築(Dovecot)
- (1) インストール
-
# yum install dovecot
Installed: dovecot.i386 0:1.0.3-6.fc6 - (2) 設定
-
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir - (3) 自動起動
-
# service dovecot start
# chkconfig dovecot on - (4) 動作確認
- [注意事項]MainServerのセキュリティーで、その他のポートで110番のTCPのポート開放をすることでメールを受け取ることができる。
SubmainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:Documents and SettingユーザApplication Datarsa」(XP)
C:UsersユーザAppDataLocalrsaid_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
Webサーバの構築(ApacheHTTP)
- (1) インストール
- #
- (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:4.1.20-1.FC4.1 mysql-server.i386 0:4.1.20-1.FC4.1
Dependency Installed: perl-DBD-MySQL.i386 0:2.9007-1 perl-DBI.i386 0:1.48-4# chkconfig –level 345 mysqld on
# service mysqld start
phpの導入 (記載日:2008年11月02日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.0.4-10.5
Dependency Installed: php-pear.i386 0:5.0.4-10.5
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
-
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh MainServer:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WWWServerのサーバ構築
OpenSSHのインストールと設定
- (1) 運用方針
- ·SSHによる接続を許可するホストをxinetdを併用して限定する(アクセス制御)
- ·rootアカウントによるSSH接続を拒否する
- ·パスワードの設定されていないアカウントによる接続を拒否する
- ·rhosts認証によるSSH接続を拒否する
- (2) OpenSSHのインストール
- ·OpenSSLのインストール
- ·zlibのインストール
- ·OpenSSHのインストール
- (ⅰ)OpenSSLのインストール
- (ⅱ)zlibのインストール
- (ⅲ)OpenSSHのインストール
- (3) OpenSSHの設定
-
- (ⅰ) xineted経由で起動させる
# sh /etc/rc2.d/S99sshd stop
# cd /etc/rc2.d/
# mv S99sshd .S99sshd# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/local/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 } # service xinetd restart
/usr/local/sslに./configure –prex=/usr/localでコンパイルしてインストール
/usr/local/src/openssh/zlib-1.2.3に./configureでコンパイルしてインストール
/usr/local/src/openssh/openssh-5.0p1に./configureでコンパイルしてインストール
Apacheのインストール
- (1) インストール
-
# rpm -qa | grep httpd httpd-2.0.54-10 system-config-httpd-1.3.2-2 # yum remove httpd # tar zxvf httpd-2.0.55.tar.gz
- (2) 作動確認及び自動起動の設定
-
# /usr/local/apache2/bin/apachectl start # cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd # chmod +x /etc/init.d/httpd # who -r # cd /etc/rc5.d/ # ln -s /etc/init.d/httpd S99httpd (自動起動の設定) # cd /etc/rc0.d/ # ln -s /etc/init.d/httpd K10httpd (自動終了の設定) # /etc/init.d/httpd stop (手動で終了) # /etc/init.d/httpd start (手動で起動)
- (3) 設定ファイル
-
httpd.conf # vi /usr/local/apache2/conf/httpd.conf User apache Group apache ServerAdmin admin@0gino.jp ServerName www.0gino.jp:80 DocumentRoot "/var/www/html" Directory "/var/www/html" Options Indexes FollowSymLinks /Directory DirectoryIndex index.html index.php AddDefaultCharset off
- (4) httpdの再起動
-
# /usr/local/apache2/bin/apachectl restart または # /etc/init.d/httpd restart
Mysqlのインストール
- (1) インストール
-
◎バージョン4.1.15でインストールする。バージョン4.1.20以降や
5ではエラーが出てインストールできない。
◎そこで、PHPによるWebアプリケーションスーパーサンプル活用編と
同様にバージョン4.1.15でやるとうまくいく。
◎インストールに先立ち、rpm版mysqlを削除する。
次に、mysqlのユーザーの作成をする。
(Configureで必要)# rpm -qa | grep mysql mysql-4.1.20-1.FC4.1 # yum remove mysql Removed: mysql.i386 0:4.1.20-1.FC4.1 Dependency Removed: dovecot.i386 0:0.99.14-8.fc4 # /usr/sbin/groupadd mysql # /usr/sbin/useradd -g mysql mysql # passwd mysql (recret) # tar zxvf mysql-4.1.15.tar.gz # cd mysql-4.1.15 # ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --without-readline --with-mysqld-user=mysql # make # make install
- (2) インストール後の設定と作動確認
-
# /usr/local/mysql/bin/mysql_install_db # chown -R root /usr/local/mysql # chgrp -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql/var # /usr/local/mysql/bin/mysqld_safe --user=mysql & # /usr/local/mysql/bin/mysql
- (3) 自動起動の設定
-
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql # chmod +x /etc/init.d/mysql # who ?r (現在のランレベルを知る) # cd /etc/rc5.d/ # ln -s /etc/init.d/mysql S99mysqld # cd /etc/rc0.d/ # ln -s /etc/init.d/mysql K10mysqld # /etc/init.d/mysql stop # /etc/init.d/mysql start
PHPのインストール
- (1) インストールは、PHPによるWebアプリケーションスーパーサンプル活用編
(p41からp44を参照) -
●zlibのインストール # tar zxvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 # ./configure --shared # make # make install ●libpngのインストール # tar zxvf libpng-1.2.8-config.tar.gz # cd libpng-1.2.8-config # ln -s scripts/makefile.linux makefile # vi makefile ↓ 以下のように変更 ZLIBLIB=/usr/local/lib ZLIBINC=/usr/local/include #ZLIBLIB=../zlib #ZLIBINC=../zlib # make # make install ●libjpegのインストール # tar zxvf jpegsrc.v6b.tar.gz # cd jpeg-6b/ # ./configure --enable-shared # make # make install /usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/man/man1/cjpeg.1 /usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1' : そのようなファイルやディレクトリはありません make: *** [install] エラー 1 というエラーがでた場合、以下のように /usr/local/man/man1 を作成し、 再度試みる。 # mkdir /usr/local/man/man1 # make install ● FreeTypeのインストール # tar zxvf freetype-2.1.10.tar.gz # cd freetype-2.1.10 # ./configure --enable-shared # make # make install ●GDのインストール # tar zxvf gd-2.0.33.tar.gz # cd gd-2.0.33 # ./configure # vi Makefile CFLAGS = -g -O2 -DJISX0208 ← 赤の部分を追加する # make # make install
- (2) phpのインストール
-
# tar zxvf php-5.1.2.tar.tar # cd php-5.1.2 #./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/local/lib --with-png-dir=/usr/local/lib--with-jpeg-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib --with-gd=/usr/local/ --enable-gd-native-ttf # make # make install # vi /usr/local/apache2/conf/httpd.conf AddType application/x-httpd-php .php ← 左のように追加する # /etc/init.d/httpd restart ◎このとき、以下のエラーがでて起動できない。 Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied ◎googleで「cannot restore segment prot after reloc: Permission denied」 と入れて検索をかけると 以下の解決法が表示されたので、実行するとクリアーした。 # chcon -c -v -R -u system_u -r object_r -t lib_t /usr/local/apache2/modules/libphp5.so context of /usr/local/apache2/modules/libphp5.so changed to system_u:object_r:lib_t
- (3) 各種ライブラリーのインストール
-
# cp /usr/local/src/php-4.4.1/php.ini-dist php.ini # vi php.ini include_path = ".:/usr/local/lib/php" ← 左のように変更する
- (4) PEARのインストール
-
◎include_pathで設定したディレクトリーにPEAR関連ファイルを 解凍すればそのまま使える # pear install DB # pear install Calendar-0.5.
phpのインストールに先立ち、以下をインストールする
vsftpdの設定
- (1) インストール
-
# cd /usr/local/src/
# tar zxvf vsftpd-2.0.7.tar.gz
# cd vsftpd-2.0.7
# make
# make install
anonymouse(匿名ユーザ)で利用する場合はftpユーザー、専用ディレクトリ(ここでは /var/ftp とします)が必要。
anonymouseでは読み込み(ダウンロード)だけで、書き込み(アップロード・削除)を許可させませんので、その権限の設定も行います。
# useradd -u 99 nobody
# groupadd -g 50 ftp
# useradd -u 14 -g ftp -d /var/ftp -s /sbin/nologin ftp
# chown root:root /var/ftp
# chmod og-w /var/ftp - (2) 設定
-
- (ⅰ)vsftpd.confファイルの設定
設定条件として、
·inet経由の起動
·anonymouse接続は行わない
·ルーターの関係でPassiveモードを使用しない
·.htaccessなどのドットファイルを表示する
·一般ユーザーはホームディレクトリ(/home/xxxx/)より上の階層には上がらせない(禁止する)
·ftpを利用できるユーザーとできないユーザーをわける
# vi /etc/vsftpd.confanonymous_enable=NO xferlog_enable=YES ←/var/log/vsftpd.logに接続・転送を記録 xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO ascii_upload_enable=YES ascii_download_enable=YES chroot_local_user=YES ←デフォルトでホームディレクトリより上層への アクセスを禁止する chroot_list_enable=YES ←ホームディレクトリより上層へのアクセスを許可するユーザのリストの有効化 chroot_list_file=/etc/vsftpd.chroot_list ←ホームディレクトリより上層へのアクセスを許可するユーザのリスト ls_recurse_enable=YES ←ディレクトリごと削除できるようにする local_root=public_html ←ログイン時のディレクトリを~/public_htmlにする force_dot_files=YES use_localtime=YES text_userdb_names=YES ls_recurse_enable=YES listen=YES
- (ⅱ)ホームディレクトリ以上の階層を見せるユーザ
# vi vsftpd.chroot_list
○○○○- (ⅲ)FTPサーバのみを使用できるユーザの作成
# vipw
○○○○:x:519:519::/home/○○○○:/sbin/nologin- (ⅳ)PAM認証設定
# cd /usr/local/src/vsftpd-2.0.7
cp RedHat/vsftpd.pam /etc/pam.d/ftp - (3) 起動(xinetdで起動させる)
-
# vi /etc/vsftpd.conf
#listen=YES ← #をつけないとエラーが出る# vi /etc/xinetd.d/vsftpd
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd nice = 10 }
# /etc/rc.d/init.d/xinetd restart
BackupServerのサーバ構築
SSHサーバの構築
- (1) xinetd経由で起動する
-
- (ⅰ)自動起動の停止
- (ⅱ)xinetdの設定
# service sshd status
sshd (pid 4767 1936) を実行中...
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
# service sshd stop
sshdを停止中: [ OK ]
# chkconfig sshd off
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ# service xinetd status
xinetd (pid 1951) を実行中...
# cd /etc/xinetd.d/
# touch ssh
# chmod 744 ssh
# vi sshservice ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 192.168.1.2 }
# service xinetd restart