LinuxでVPNクライアントの怪

2009年02月18日

LinuxでVPNサーバの怪

LinuxでVPNサーバに接続するためにVPNクライアントを用意します。
OpenVPNサーバは設定次第でクライアントにもなります。なので、途中までは同じ手順です。

CentOSだとOpenVPNをインストールするためにリポジトリを追加しないといけません。
# vi /etc/yum.repos.d/CentOS-Base.repo
-----------------
[base],[updates],[addons],[extras]それぞれの最後に下の行を追加。
priority=1
-----------------
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm


導入手順

1.VPNをインストール。
# yum install openssl
# yum install openvpn

2.インストールが終わったら/etc/openvpnディレクトリに以下4ツノファイルを置きます。
ca.crt(サーバの怪で作った物を持ってきます。)
client01.crt(サーバの怪で作った物を持ってきます。)
client01.key(サーバの怪で作った物を持ってきます。)
client.conf(これから作ります。)

3.設定ファイルを作りましょう。
# vi /etc/openvpn/client.conf

---client.confの中身---

# クライアントである事を明示
client

# プロトコル
proto tcp

# 使用する仮想ネットワークアダプタを指定 (VPNサーバと同じにしてください。)
dev tun

# 接続するVPNサーバを指定
remote IPアドレス ポート番号

# CA証明書,サーバ証明書,サーバ秘密鍵のパス指定
# 絶対パス若しくは相対パス
ca ca.crt
cert client01.crt
key client01.key

# OpenVPNサーバの名前解決を継続する
resolv-retry infinite

# ローカルポート番号をバインドしない
nobind

# パケット転送の際にLZO圧縮を有効にする
comp-lzo

# VPNが落ちた場合の再接続設定
persist-key
persist-tun

# ログの詳細レベルの指定
verb 3

# OpenVPNサーバからパラメータを受け取るための設定
pull

# OpenVPNサーバからIPアドレスを受け取るための設定
float
-----------------------

4.インストールが完了したのでVPNサーバに接続します。
# /etc/init.d/openvpn start
Enter Private Key Password:VPNサーバの怪で設定したパスフレーズ


これで完了です。
ifconfig等で確認してみてください。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:仮想化 | このブログの読者になる | 更新情報をチェックする

WindowsでVPNクライアントの怪

2009年02月18日

LinuxでVPNサーバの怪

WindowsからVPNサーバに接続するためにVPNクライアントを導入するための手順です。


手順
1.まず下のアドレスからVPN一式をダウンロードしインストールします。
http://www.plum-systems.co.jp/techinfo/openvpn/download_gui.php

2.全てデフォルトのまま適当にインストール。
仮想アダプタが増えるので警告が出ますが問題ありません。

3.インストールが終わるとネットワークアダプタ(仮想)が増えます。
それにIPが割り当てられたら(接続が確立されたら)VPNの完成です。

4.C:\Program Files\OpenVPN\configに以下4つのファイルを置かなくてはいけません。
・ca.crt(サーバの怪で作った物を持ってきます。)
・client01.crt(サーバの怪で作った物を持ってきます。)
・client01.key(サーバの怪で作った物を持ってきます。)
・client.ovpn(今から作ります。)

---client.ovpnの中身---

# クライアントである事を明示
client

# プロトコル
proto tcp

# 使用する仮想ネットワークアダプタを指定 (VPNサーバと同じにしてください。)
dev tun

# 接続するVPNサーバを指定
remote IPアドレス ポート番号

# CA証明書,サーバ証明書,サーバ秘密鍵のパス指定
# 絶対パス若しくは相対パス
ca ca.crt
cert client01.crt
key client01.key

# OpenVPNサーバの名前解決を継続する
resolv-retry infinite

# ローカルポート番号をバインドしない
nobind

# パケット転送の際にLZO圧縮を有効にする
comp-lzo

# VPNが落ちた場合の再接続設定
persist-key
persist-tun

# ログの詳細レベルの指定
verb 3

# OpenVPNサーバからパラメータを受け取るための設定
pull

# OpenVPNサーバからIPアドレスを受け取るための設定
float
-----------------------

5.右下のタスクバーにOpenVPN GUIが常駐しているので右クリックして接続をクリックします。

6.パスワード入力画面が出るのでLinuxでVPNサーバの怪で設定したクライアントパスフレーズを入れます。

これで接続が完了しました。サーバで設定したネットワーク(うちでは192.168.20.0)に入ります。
タグ:Windows VPN
書いた人 sis | Comment(1) | TrackBack(0) | Windows | このブログの読者になる | 更新情報をチェックする

LinuxでVPNサーバの怪

2009年02月18日

VPNはサーバとクライアント両方に仮想ネットワークアダプタを作り、そのアダプタ同士で仮想プライベートネットワークを作ります。
VPNにはルーティング型とブリッジ型があります。ルーティングモードはVPNサーバが、その仮想プライベートネットワークのルータになります。ブリッジモードではVPNサーバはWAN側(既存ネットワーク)のブリッジをするだけなので既存ネットワークにクライアントを追加します。
ブリッジモードの方が楽そうに見えますが、ブリッジ設定をしなくてはいけないので無駄に面倒になります。そこで今回はルーティング型の手順です。

CentOSだとOpenVPNをインストールするためにリポジトリを追加しないといけません。
# vi /etc/yum.repos.d/CentOS-Base.repo
-----------------
[base],[updates],[addons],[extras]それぞれの最後に下の行を追加。
priority=1
-----------------
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm



VPNサーバ導入手順

1.VPNを暗号化するためにSSLを使えるようにしときます。
# yum install openssl

2.VPNサーバをインストールします。
# yum install openvpn

3.VPNのバージョンを確認して設定雛型をコピーします。
# rpm -q openvpn
openvpn-2.0.9-1.el15.rf

サーバ設定ファイルの雛型をコピーします。
# cp /usr/share/doc/openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/

プライベートCAをコピーします。
# cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa /etc/openvpn/

4.サーバ証明書と秘密鍵を作ります。
# vi /etc/openvpn/easy-rsa/2.0/vars
---ファイルの中身---

export KEY_COUNTRY="JP"(国)
export KEY_PROVINCE="Tokyo"(都道府県)
export KEY_CITY="Tokyo"(区市町村)
export KEY_ORG="HOME"(団体名)
export KEY_EMAIL="*@*.com"(管理者メールアドレス)
--------------------

プライベートCAを構築しますが、その前にスクリプトが動かないので実行権限を与えます。
# chmod -r 744 /etc/openvpn/easy-rsa/2.0

実際に構築作業
# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./clean-all
# ./build-ca
~~~~~~対話方式~~~~~~~~~
設定してあるので全部デフォルト空エンターを押します。

Country Name (2 letter code) [JP]:enter
State or Province Name (full name) [Tokyo]:enter
Locality Name (eg, city) [Tokyo]:enter
Organization Name (eg, company) [HOME]:enter
Organizational Unit Name (eg, section) []:enter
Common Name (eg, your name or your server's hostname) [HOME CA]:enter
Email Address [*@*.com]:enter
~~~~~~~~~~~~~~~~~~~~~~~
/etc/openvpn/easy-rsa/2.0/keys/にca.crt(CA証明書)とca.key(CA秘密鍵)が出来ている事を確認します。

5.サーバ証明書とサーバ秘密鍵を作ります。
# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-server server
~~~~~~対話方式~~~~~~~~~

これも全部空エンターにします。
Country Name (2 letter code) [JP]:enter
State or Province Name (full name) [Tokyo]:enter
Locality Name (eg, city) [Tokyo]:enter
Organization Name (eg, company) [HOME]:enter
Organizational Unit Name (eg, section) []:enter
Common Name (eg, your name or your server's hostname) [server]:enter
Email Address [*@*.com]:enter
A challenge password []:enter
An optional company name []:enter
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
~~~~~~~~~~~~~~~~~~~~~
/etc/openvpn/easy-rsa/2.0/keys/にserver.crt(サーバ証明書)とserver.key(サーバ秘密鍵)がある事を確認します。


6.クライアントの数だけクライアント証明書とクライアント秘密鍵を作ります。
# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-pass client01(2台目は02...)
接続時にクライアントが使うパスフレーズを入力します。これは変えられないと考えた方が良いでしょう。変えると繋がりませんでした。
パスフレーズはパスワード所じゃない程長いパスです。一番大事なので長くしましょう。
Enter PEM pass phrase:パスフレーズ入力
Verifying - Enter PEM pass phrase:パスフレーズを再入力
Country Name (2 letter code) [JP]:enter
State or Province Name (full name) [Tokyo]:enter
Locality Name (eg, city) [Tokyo]:enter
Organization Name (eg, company) [HOME]:enter
Organizational Unit Name (eg, section) []:enter
Common Name (eg, your name or your server's hostname) [client01]:enter
Email Address [*@*.com]:enter
A challenge password []:enter
An optional company name []:enter
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
~~~~~~~~~~~~~~~~~~~~~~~

/etc/openvpn/easy-rsa/2.0/keys/にclient01.crt(クライアント証明書)とclient01.key(クライアント秘密鍵)がある事を確認します。

7.DHパラメータを生成します。
# cd /etc/openvpn/easy-rsa/2.0/
# ./build-dh
/etc/openvpn/easy-rsa/2.0/keys/にdh1024.pem(DHパラメータファイル)がある事を確認します。


8.VPNではTCPかUDPを選べます。今回はTCPにして、Firewallに穴を開けます。使用ポートは1194にします。
# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 1194 -j ACCEPT

9.インターフェイス間のIPパケット転送を有効にします。
# vi /etc/sysctl.conf
---ファイルの中身---

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

--------------------

10.各種設定ファイルをコピーして指定の場所に置きます。
# cd /etc/openvpn/
# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/server.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/server.key .
# cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem .

11.次に読み取られないようにパーミッションを変更します。
# chmod og-rx /etc/openvpn/*.key

12.設定ファイルを編集します。
# /etc/openvpn/server.conf
---ファイルの中身---

port 1194(ポート)
proto tcp(プロトコル)
dev tun(ルーティングなのでtun)
ca /etc/openvpn/ca.crt(CA証明書ファイルのフルパス)
cert /etc/openvpn/server.crt(サーバ証明書ファイルのフルパス)
key /etc/openvpn/server.key(サーバ秘密鍵ファイルのフルパス)
dh /etc/openvpn/dh1024.pem(DHパラメータファイルのフルパス)
server 192.168.20.0 255.255.255.0(VPNが使う仮想ネットワーク,192.168.20.1がVPNサーバに)
ifconfig-pool-persist ipp.txt(クライアントに振ったIP管理ファイル)
push "route 192.168.11.0 255.255.255.0"(サーバのWANネットワーク:多分)
client-to-client(VPNクライアント同士の通信を許可)
keepalive 10 120(接続が生きてるか監視の設定)
comp-lzo(LZO圧縮の有効)
max-clients 10(最大同時接続クライアント数)
user nobody(デーモンプロセスのユーザー)
group nobody(デーモンプロセスのグループ)
persist-key(不意な切断が発生した後の再接続処理の設定)
persist-tun(不意な切断が発生した後の再接続処理の設定)
status /var/log/openvpn-status.log(ステータスログの場所指定)
log /var/log/openvpn.log(ログファイルの保存場所指定)
verb 3(ログレベル)
--------------------

13.OpenVPNを起動します。
# /etc/init.d/openvpn start(再起動はrestart)

/var/log/openvpn.logに以下があれば正常起動
Initialization Sequence Completed


これでサーバの設定は終了です。
後はVPNクライアントの設定です。

・クライアントがWindowsの場合
WindowsでVPNクライアントの怪
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

Linuxで時刻設定の怪

2009年02月16日

Linuxで時刻表示方法
# date

インターネットで合わせる方法
# yum install ntp

# ntpdate タイム・サーバーのホスト名(time.nist.gov)
# hwclock --systohc


ntpdを使って自動で合わせる場合
/etc/ntpconfのserverをタイムサーバーのホスト名にして起動するだけ。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:OS設定関連 | このブログの読者になる | 更新情報をチェックする

WEBサーバでPHP利用可能にする怪

2009年02月11日

惰性でPHP使えるようにしたので、その手順をメモ。
全く苦労した記憶がありません。

※再構築するので# yum install gcc等でgccを用意しておいてください。

手順

1.PHPを有効にするためにapacheをソースから再インストールします。
・ソースのアドレスを確認します。
下のアドレスからDownload>from a mirrorと進んでUnix Source: httpd-2.2.11.tar.gz(その時々の最新版)のURLを確認しましょう。
http://httpd.apache.org/

・確認したらサーバでダウンロードしましょう。
# cd /home/sis
# wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.11.tar.gz

・解凍します。
# tar zxfv httpd-2.2.11.tar.gz

・解凍出来たらインストールです。
# cd httpd-2.2.11
※本当は違う目的だったのと作業効率化のために色々有効にしました。
下準備をします。
# yum install openssl-devel
# yum install krb5-devel

/usr/kerberosディレクトリにincludeディレクトリが無かったので。
# mkdir /usr/kerberos/include
# cd /usr/include
# ln -s /usr/kerberos/include/*

いよいよインストールのオプション設定です。
# export CPPFLAGS=-I/usr/kerberos/include
# ./configure
--enable-ssl<SSL
--enable-dav<WebDAV
--enable-so<PHP
--enable-suexec<suEXEC(これをやりたかった。でもダメだった。)
--with-suexec-caller=apache<suEXECを利用するユーザ
--with-suexec-userdir=public_html
--with-suexec-docroot=/home/html
--with-suexec-logfile=/usr/local/apache2/logs/suexec_log
--with-suexec-uidmin=500<使用出来るユーザIDの最小値
--with-suexec-gidmin=100<上のグループ版

# make clean(以前にmakeしてたら)
# make
# /etc/rc.d/init.d/httpd stop
# make install

2.PHP本体をインストールしましょう。
# yum install php php-mbstring

3.httpdを起動
# /etc/rc.d/init.d/httpd start

4.動作テスト
test.phpを置いて動くか確かめましょう。
---test.phpの中身---

--------------------
パーミッションは755


動けば成功です。その他の機能はそのうちメモしていきます。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

WEBサーバで複数のDDNSごとに違うページ表示の怪

2009年02月10日

apacheの仮想ホスト(バーチャルホスト)機能を使うと複数のWEBページを別ドメインで管理出来るようになります。普通に複数のドメインを取得している場合でも可能なのですが、うちの環境ではDDNSなので今回はこれでメモしていきます。

・図
mydomain1 ⇒ 111.222.333.444
medomain2 ⇒ 111.222.333.444
このように変換できる環境が前提です。

http://mydomain1.com/ ⇒ mydomain1用のWEBページ
http://mydomain2.com/ ⇒ mydomain2用のWEBページ


すでにDDNSを二つ取得済みで両方から自分のIPアドレスに変換されてるとします。

手順
1.httpd.confを編集します。
# vi /etc/httpd/conf/httpd.conf

---ファイルの中身---
〜末尾に追加
#VirtualHost conf
NameVirtualHost 192.168.12.6<NICに割り当てられているIP


DocumentRoot /home/html/domain1
ServerName domain1.com

  #エラーログ
  ErrorLog logs/domain1.com-error_log
  #アクセスログ
  CustomLog logs/domain1.com-access_log common




DocumentRoot /home/html/domain2
ServerName domain2.com

  ErrorLog logs/domain2.com-error_log
  CustomLog logs/domain2.com-access_log common



〜こうやって幾らでも増やせます。

---------------------

2.httpdを再起動します。
# /etc/rc.d/init.d/httpd restart



※項目説明
#
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error_log
# CustomLog logs/host.some_domain.com-access_log common
#


IPアドレス直打ちで表示されるのは一番上に書かれた仮想ホストです。(多分)

※最後にログは/var/log/httpd/にあります。
追記
※仮想ホストを設定した時は今までのDocumentRootをコメントアウトしておきましょう。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

FTPサーバにSSL通信を導入の怪

2009年02月09日

FTPサーバ導入については下
CentOSでFTPサーバの怪

FTP通信は実のところ全く暗号化がされていません。物理的に線の中継者なら通信内容を読む事が出来ます。なのでFTPはイントラネット内のみで使うべきなのでした。

では、その通信をSSLで暗号化して読めなくしましょう。

手順
1.VSFTPの設定ファイルを編集します。
# vi /etc/vsftpd/vsftpd.conf

---ファイルの中身---
〜〜末尾

#ssl有効化
ssl_enable=YES

#サーバ証明書のパス
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

#SSL以外の通常通信も使えるようにするためには。(非推奨)
force_local_logins_ssl=NO#ログイン時にSSLを強制しない
force_local_data_ssl=NO#データ送受信時に…
-------------------

2.サーバ証明書を作りましょう。
# cd /etc/pki/tls/certs/
# make vsftpd.pem
以下質問形式で進みます。
・国を入力
Country Name (2 letter code) [GB]:JP
・都道府県名
State or Province Name (full name) [Berkshire]:Tokyo
・更に詳しく市区町(面倒な場合は同じでもOK)
Locality Name (eg, city) [Newbury]:Tokyo
・サイトの名前
Organization Name (eg, company) [My Company Ltd]:sis's server
・記入しないで問題無し。
Organizational Unit Name (eg, section) []:
・ホスト名
Common Name (eg, your name or your server's hostname) []:ドメインアドレスとか
・管理者のメールアドレス
Email Address []:

3.vsftpdを再起動します。
# /etc/rc.d/init.d/vsftpd restart


これでサーバ側の設定は終わりです。

クライアント側のFTPソフトもSSL通信をサポートしていないといけません。そこでいくつかソフトを挙げておきます。
・smartFTP(最近シェアになったそうです。試用期間は1ヶ月)
http://www.smartftp.com/localization/projects/japanese/
日本語化と本体をインストールしましょう。

・Filezilla(フリーソフトです。)ただし3.x版ではタイムアウトになったりリストだけ表示出来なかったりどうやってもうまくいかないので2.xの最終バージョン(2.2.32)のリンクを貼っておきます。
http://downloads.sourceforge.net/filezilla/FileZilla_2_2_32.zip
http://prdownloads.sourceforge.net/filezilla/FileZilla_2_2_32_setup.exe
http://downloads.sourceforge.net/filezilla/FileZilla_2_2_32_src.zip?big_mirror=0

・FirefoxアドオンのFireFTPでも出来るそうですがうまく行きませんでした。うまく行ってる人もいるので使えると思います。多分。

プロトコルはFTP over SSL(explicit encryption)
ポートは通常では21
※SFTPではなくSSLFTPなので注意しましょう。


2010/01/12追記
上のリンクからダウンロードできなくなってました。
http://www.filehippo.com/download_filezilla/2512/
MD5:a5e4f89e62dd6f155f342bf5ea067501

2010/01/14追記
FileZillaについてですが、FTPサーバーのアップデートで3.x系でも通常通り使えるようになったようです。


<スポンサード リンク>

おしゃれなホームページのデザイン テンプレート・コレクション

おしゃれなホームページのデザイン テンプレート・コレクション

  • 作者: ユルユラデザイン
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2009/06/27
  • メディア: 単行本(ソフトカバー)



書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

WEBサーバでCGI利用可能にする怪

2009年02月07日

CGIはサーバ上で動作するアプリケーションです。ユーザが送ってきた情報やファイルをサーバのCPUが処理します。つまりユーザにとって便利ですがサーバ管理者としてはチェックしていないとサーバを死に追いやる危険性もあります。

とりあえず今回はCGIをとにかく動かす手順です。保守?ナニソレ?美味しいの?という状態です。rootログイン出来る人間(つまり管理者)のみしかWEBサーバを管理しない場合は、これで問題ありません。しかしユーザ(HPを管理する利用者)がいる場合は最後に紹介する次の記事を読みましょう。問題点等は、最後に詳しく書く予定です。

すでにapacheが稼動していて/home/html以下でCGIを使えるようにするとします。

手順
1.apacheの設定ファイルを開きます。
# vi /etc/httpd/conf/httpd.conf


---ファイルの中身---
〜〜〜〜
AddHandler cgi-script .cgi .pl<これも追加
↑この行がコメントアウトされてるので#を消して有効にしましょう。
〜〜〜〜〜〜〜

  Options Includes ExecCGI<基本的にはここが重要

∧を書き足すか編集する。

--------------------

2.httpdを再起動します。
# /etc/rc.d/init.d/httpd restart

これで完了です。適当なCGIを置いてテストしてみてください。



※問題点
この方法ですとCGIが生成したファイル(アップローダでアップされたモノやログファイル)の所有者がapacheになってしまい、HP管理ユーザがCGIを管理する事が出来なくなってしまいます。(つまりroot以外はCGIの保守活動が出来ない)
更に所有者がapacheになってしまっているのでアップローダ等の容量制限をquotaで行なえません。(多分)もしかしたら上層ディレクトリの所有者がユーザなら問題無いかも。

そこで次の記事でそれらの対策を書こうと思っています。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

WEBサーバで拡張子ごとにブラウザでの挙動を制御の怪(mime.types編)

2009年02月07日

Linux(CentOS,Fedora)でWEBサーバの怪

.htaccess編でディレクトリごとの方法を紹介しましたが本来こっちが正しい設定方法らしいです。

手順
vi /etc/mime.types

ここにMIMEの書き方で足しましょう。

application/octet-stream exe

MIMEリファレンス
http://www.geocities.co.jp/Hollywood/9752/mime.html
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

WEBサーバで拡張子ごとにブラウザでの挙動を制御の怪(.htaccess編)

2009年02月06日

Linux(CentOS,Fedora)でWEBサーバの怪

ダウンロードする時にダイアログが出ずブラウザで開かれてしまい文字化けがずらずらっと出てしまう時の対処法です。
※IEはファイルの中身で判別してるので関係ありません。

概略は.htaccessファイルを置く事によって、そのディレクトリ以下のサーバ設定をします。.htaccessは上層ディレクトリの物ほど強く、上書き出来る項目については下層ディレクトリに存在している.htaccessファイルの設定項目を上書きしてしまいます。なのでよく考えて設定しましょう。

手順
1.まず.htaccessファイルの使用をサーバ側で許可します。
# vi /etc/httpd/conf/httpd.conf

---ファイルの中身---
AllowOverride All(デフォルトではnoneになってます。)
--------------------

2.httpdを再起動しましょう。
# /etc/rc.d/init.d/httpd restart

3..htaccessファイルを用意します。
適用したいディレクトリに.htaccessというファイルを作り、置きましょう。そのディレクトリ以下のファイルは.htaccessファイルに書いた通りのサーバ挙動になります。

---ファイルの中身---

# .exe 実行ファイル
AddType application/octet-stream exe

# .lzh アーカイブ
AddType application/octet-stream lzh

# Macintosh .hqx 圧縮
AddType application/mac-binhex40 hqx

# Flash コンテンツ
AddType application/x-shockwave-flash swf

# ZIP ファイル
AddType application/zip zip

--------------------

これで完了です。

※制御はページにでは無くDLする物にかかってます。
つまり適用されてない上層ディレクトリからのリンクでもDLする物が適用されているディレクトリにあれば、そのディレクトリにある.htaccessファイルの挙動になります。



・何をしているか。
.htaccessの設定でhttpd.confの設定の上書きを許可しています。

AllowOverride

None
上書きを許しません。
ALL
全ての種類の設定について上書きを許します。
AuthConfig
認証に関する設定について上書きを許します。
Limit
ホスト名やIP addressによるアクセス制御の上書きを許します。
Options
Options指定子で設定する機能について上書きを許します。
FileInfo
ディレクトリ表示の設定について上書きを許します。


.htaccessリファレンス
http://memorva.jp/memo/linux/htaccess.php

MIMEリファレンス
http://www.geocities.co.jp/Hollywood/9752/mime.html

※この方法はサーバ管理者でなくとも役立ちますが、サーバ管理者の立場だとユーザ任せになってしまうので怠慢管理者と呼ばれるそうです。サーバ設定としては違う方法を次に紹介します。

WEBサーバで拡張子ごとにブラウザでの挙動を制御の怪(mime.types編)
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

WEBサーバ(Apache)でインデックスファイル形式を追加の怪

2009年02月06日

WEBサーバ導入は下
Linux(CentOS,Fedora)でWEBサーバの怪

Apacheではディレクトリにアクセスするとindex.htmlを表示するインデックスファイル機能があります。つまりhttp://IPアドレス/sis/にアクセスするとLinux上のファイルの./sis/index.htmlを表示します。

デフォルトではindex.htmlにだけ対応しています。それだけでは不便なのでindex.htm等も対応させましょう。

手順
1.設定ファイルを開きます。
# vi /etc/httpd/conf/httpd.conf

---ファイルの中身---

DirectoryIndex index.html index.html.var index.htm index.php index.cgi

-------------------
このように書き足したら保存しましょう。

2.httpdを再起動します。
# /etc/rc.d/init.d/httpd restart


これで完了です。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

Linux(CentOS,Fedora)でWEBサーバの怪

2009年02月05日

Apacheを使ってWEBサーバを作る方法です。これがあればhttp://サーバのIPアドレス/でHPを作ったりファイルを公開したり出来るようになります。
最終的にIPアドレスになれば良いのでドメインがあればドメインでも可能です。


導入手順
1.まずApacheをインストールします。
# yum install httpd

2.とりあえず使えるようにするために最低限の設定をします。
/home/htmlディレクトリをhttpで公開する設定です。

# vi /etc/httpd/conf/httpd.conf

---ファイルの中身---

これはサーバ本体の場所なので変えてはいけません。
ServerRoot "/etc/httpd"

#httpで公開するディレクトリを指定
DocumentRoot "/home/html"


#ページの文字コードを指定。
#・全てのページの文字コードを指定する場合。
AddDefaultCharset UTF-8 #unicode
(AddDefaultCharset Shift_JIS #シフトJISの場合はこっち)
#ページごとにMETAタグで文字コードを指定する場合
AddDefaultCharset none

---------------------
とりあえず、これで最低限設定しました。

3.Firewallに穴を開けます。
# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport http -j ACCEPT
設定保存
/etc/rc.d/init.d/iptables save
火壁再起動
/etc/rc.d/init.d/iptables restart

4.httpdを起動します。
# /etc/rc.d/init.d/httpd start
(設定反映の場合はrestart)

5.自動起動するようにする。
# chkconfig httpd on

これで完了です。外部に公開する場合はルータの80番ポートを開けましょう。これで外部からもアクセス出来ます。


その他HTTP設定
WEBサーバ(Apache)でインデックスファイル形式を追加の怪
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

Linuxでユーザごとに使用容量制限の怪

2009年02月05日

公開サーバの場合は容量制限を活用したくなります。そこでLinuxに限らずユーザごとにディスクの使用容量制限をかけられるquotaという物を利用します。

まずquotaは/以外のパーティションでしか使えません。つまり/homeではsisユーザは10GBまでしか使えないという風に制限をかけます。
ユーザに関係無くディレクトリ自体に制限かけたい場合はパーティション切ってディレクトリを隔離すれば良いでしょう。

quotaはパッケージとしての提供ですが機能としてはOS標準の機能を使ってる、らしいです。

導入手順
1.まずquotaが入ってるか確認しましょう。最近のLinuxならBaseだけインストールでも入ってます。CentOS5とFedora10は入ってました。
# rpm -q quota
バージョンが表示されれば入ってます。
入ってない場合や確認が面倒な場合は以下でインストール
# yum install quota
でも最近のなら入ってます。OSサポートもしてます。OSサポートしてないとOSを再構築しなくてはいけないようですが、結局そこが問題ではなく泥沼になりました。

2.quotaを使うパーティションを指定します。
まずパーティションを確認
# df -h
/dev/hda0       **G **M *G **%  /
/dev/hda1       **M **M  *M **% /boot
/dev/hda2       **G **G  *G **% /home

ここでは/homeに利用制限をかける事にしましょう。
# vi /etc/fstab
---ファイルの中身---
LABEL=/         /            ext3  defaults    1 1
LABEL=/boot       /boot          ext3  defaults    1 2
LABEL=/home       /home          ext3  defaults    1 1
--------------------
こんな風になっていると思います。適当に書いたので細部が違うかもしれませんが。これを以下のように書き換えます。
---ファイルの中身---
LABEL=/         /            ext3  defaults    1 1
LABEL=/boot       /boot          ext3  defaults    1 2
/dev/hda2        /home          ext3  defaults,usrquota    1 2
--------------------

3.マウントし直しますが面倒なのでrebootしましょう。
# reboot

4.quotaを使用出来るようにします。
制限用ファイル生成
# quotacheck -acug
# quotacheck -avug

5.quotaを起動します。
# quotaon -guv -a
停止は
# quotaoff -guv -a

6.ユーザごとに容量制限設定をします。
# edquota sis(ユーザ名)
viが起動します。
---------------
Disk quotas for user sis (uid 501):
 Filesystem   blocks      soft    hard   inodes    soft     hard
 /dev/hda2    2334196      0      0     17     0      0
  意味   使用容量(KB) 容量警告(KB) 容量制限(KB) iノード数 file数警告 file数制限
---------------
保存して終了したら一応quotaをオフ⇒オンをしてください。


これで完了です。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:OS設定関連 | このブログの読者になる | 更新情報をチェックする

FTPサーバでPASVモードの怪

2009年02月05日

FTPサーバ導入については下
CentOSでFTPサーバの怪

そもそもPASVモードとは。

FTPの通常通信ではクライアントからサーバ⇒サーバからクライアントという手順を踏んで接続を確立します。
なので、クライアントがFirewallの内側にありFTPを拒否してる場合通常モードでは接続を確立出来ません。
そこで出来たのがPASV(パッシブ)モード通信です。
PASVモード通信ではクライアントからサーバ⇒クライアントからサーバという確認方法で一方向への流れしかありません。そのお陰でFirewallの内側からも接続を確立出来るようになります。

今回はVSFTPDでPASVモードを使う手順です。使用方法はあまりに簡単です。

手順
1.VSFTPDの設定ファイルにPASVモード有効設定を書き足しましょう。
# vi /etc/vsftpd/vsftpd.conf

---ファイルの中身---
〜末尾

#PASVモード有効
pasv_promiscuous=YES

#PASVモードで使うポートの範囲
pasv_min_port=50000 #最小
pasv_max_port=50005 #最大
-------------------

※開けるポートはFTPサーバを使用するユーザの総定数で適当な値にしましょう。

2.設定は終わったのでVSFTPDを再起動します。
# /etc/rc.d/init.d/vsftpd restart

3.PASVモードが使うポートの穴をFirewallに開けましょう。
# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 50000:50005 -j ACCEPT

設定保存
# /etc/rc.d/init.d/iptables save

4.後はルータのポートも忘れず開けましょう。
※もし、WAN─ルータ─サーバという構成の場合は追記に進んでください。


これでFFFTPなどでPASVモードにチェックを入れて通信する事が出来ます。


<追記>
PASVモードの場合1回目の通信で、2回目は何処に通信すれば良いのかをクライアントPCに教えます。普通はNICに割り当てられているIPアドレスを自動取得してクライアントに教えるのですが上で書いたようにルータなどでプライベートアドレスが割り振られている場合はプライベートアドレスを返してしまう場合があるようです。(何故かうまく行く時もありますが。)
そこで/etc/vsftpd/vsftpd.confの最後に以下を書き足しましょう。
[固定IPアドレスの場合]
pasv_address=ルータのWAN側IPアドレス

[非固定IPアドレスでDDNSを使用している場合]
pasv_addr_resolve=YES
pasv_address=ドメインアドレス

ドメインアドレスを使う場合はpasv_addr_resolveを必ず有効にしましょう。でないと下のエラーが出ます。
500 OOPS: invalid pasv_address: //
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする

CentOSでFTPサーバの怪

2009年02月04日

微妙に苦労しました。慣れると楽です。

導入手順
1.FTPサーバをインストールします。
# yum install vsftpd

2.vsftpdの設定をします。設定ファイルは一つで楽なのですが、設定によって外部ファイルの役割が変わる仕様なのでまずは手順通りに設定して後から弄りましょう。
# vi /etc/vsftpd/vsftpd.conf

---ファイルの中身---

YESにすると匿名ユーザのログインを許可。
anonymous_enable=NO(推奨)

ローカルユーザ(Linuxユーザ)のログイン許可。
local_enable=YES

ローカルユーザのumask設定(パーミッションのビットマスクっぽい)
local_umask=022

YESにすると接続転送ログを保存する。
xferlog_enable=YES
保存場所
xferlog_file=/var/log/vsftpd.log
ログ保存するためにはここをNOにする。
xferlog_std_format=NO

アスキー転送を許可。許可しないと後々苦労します。
ascii_download_enable=YES
ascii_upload_enable=YES

Activeモード時のポート(変えてはいけない。)
connect_from_port_20=YES

FTPサーバのバージョンを隠す場合
ftpd_banner="適当な文字列が表示される"

デフォルトでホームディレクトリより上にアクセス出来ない。(※重要)
chroot_local_user=YES
リストファイルで許可する。NOにするとリストファイルで禁止する。
chroot_list_enable=YES
項目が無い場合は足しましょう。
上のリストファイル指定
chroot_list_file=/etc/vsftpd/chroot_list

ディレクトリ削除許可
ls_recurse_enable=YES

ユーザ制限設定(※重要)
NOにするとユーザ制限一切しない。
userlist_enable=YES
上がYESの場合有効。NOだとリストファイルに書かれたユーザのみログイン許可
YESだとリストに書かれたユーザのみ規制。
userlist_deny=NO
リストファイル指定
userlist_file=/etc/vsftpd/user_list

ユーザごとにホームディレクトリを設定するファイルを置くディレクトリ指定
user_config_dir=/etc/vsftpd/user_conf

--------------------


PASV設定は次の機会にします。
FTPサーバでPASVモードの怪

3.設定ファイルで指定したファイル達を作り設定します。
# cd /etc/vsftpd
# vi chroot_list
---ファイルの中身---
#ホームフォルダより上層にアクセス出来るユーザを指定
#基本は空ファイル
aaa
bbb
ccc
-------------------


# vi user_list
---ファイルの中身---
#色々書いてあるけどここは許可するユーザ設定にしたので
#全てのユーザをコメントアウトしてログインするユーザを書き足しましょう。
#root
sis
-------------------


# vi ftpusers
---ファイルの中身---
#ここに書いてあるユーザは設定に関係無くログイン出来ない。
root

--------------------


ユーザごとにホームディレクトリを設定する。
# mkdir /etc/vsftpd/user_conf
# cd /etc/vsftpd/user_conf
# vi sis(ユーザ名)
---ファイルの中身---
local_root=/home/html/sis(FTPのホームディレクトリパス)
-------------------



4.Firewallに穴を開けましょう。
# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport ftp -j ACCEPT
設定保存
/etc/rc.d/init.d/iptables save
火壁再起動
/etc/rc.d/init.d/iptables restart

5.VSFTPDを起動しましょう。
/etc/rc.d/init.d/vsftpd start
(設定変更の場合はrestart)

後はFFFTP等でアクセスするだけです。
PASVモード設定をしてないのでそのチェックを外しましょう。

最後にホームディレクトリのパーミッションに注意しましょう。
Linuxでログインして書き込めるようにしないとFTP上でも書き込めません。
chgrpとかchmodで検索すると良いです。


このままFTPサーバを外部に公開すると通信した物は簡単に読み取れてしまいます。もし外部に公開する場合は下の記事に進みましょう。

FTPサーバにSSL通信を導入の怪


[追記]
FFFTP ver1.17 and 1.96dにてファイル所有者が違うとファイルが表示されなかったり自分が所有者なのに表示されないという不具合があるのでおかしい場合は違うソフトを使いましょう。
書いた人 sis | Comment(0) | TrackBack(0) | Linux:サーバー | このブログの読者になる | 更新情報をチェックする