<   2011年 01月 ( 16 )   > この月の画像一覧
(Linux)OpenVPN設定
(Linux)OpenVPNのインストール でCentOS5でのOpenVPNのインストールを行いましたが、ここからは実際に設定に入ります。

CA証明書、秘密鍵作成
まず証明書、鍵作成用ディレクトリをコピーし etc/openvpn/easy-rsa に移動後、各スクリプトへ実行権限付加を付加します。

# cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/ /etc/openvpn/easy-rsa
# cd /etc/openvpn/easy-rsa
# chmod +x *


CA証明書、秘密鍵作成のための環境変数設定ファイルを編集します。

# vi /etc/openvpn/easy-rsa/vars
最下部に住所やサーバ名、管理者メールアドレス等を設定する環境変数があるので任意の値に変更します。
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Hatioji"
export KEY_ORG="hogehoge.com" ←サーバー名
export KEY_EMAIL="admin@hogehoge.com" ←管理者メールアドレス

上記で設定した環境変数を反映します。

# source vars

証明書、鍵作成先の初期化を行います。(OpenVPNインストール後の初回のみ必要みたいです。)

# /etc/openvpn/easy-rsa/clean-all

CA証明書、秘密鍵の作成を行います。

# /etc/openvpn/easy-rsa/build-ca
Generating a 1024 bit RSA private key
................++++++
..............++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
↓vi varsで設定した値がデフォルトで入るはずなので、Enterを連打します。
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Hatioji]:
Organization Name (eg, company) [hogehoge.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [hogehoge CA]:
Email Address [admin@hogehoge.com]:

これで、CA証明書、CA秘密鍵が作成されました。
CA証明書をOpenVPN設定ファイル格納ディレクトリへコピーします。

# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/



サーバー証明書・秘密鍵作成
下記コマンドでサーバ証明書、秘密鍵が作成できます。

# /etc/openvpn/easy-rsa/build-key-server server
....
↓またvi varsで設定した値がデフォルトで入るはずなので、Enterを連打します。
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Tokyo]:
Locality Name (eg, city) [Hatioji]:
Organization Name (eg, company) [hogehoge.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Email Address [admin@hogehoge.com]:
....
↓y を連打します。
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated


サーバ証明書をOpenVPN設定ファイル格納ディレクトリへコピーします。

# cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/

サーバ証明書をOpenVPN設定ファイル格納ディレクトリへコピーします。

# cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/



DH(Diffie Hellman)パラメータ作成
下記コマンドでパラメータを作成し、OpenVPN設定ファイル格納ディレクトリへコピーします。(ちょっと時間かかります。)

# /etc/openvpn/easy-rsa/build-dh
# cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/



証明書廃止リスト作成
これが何を意味するのかよくわかりませんが、とりあえず下記のようにコマンドを打っていけばいいようです。

# /etc/openvpn/easy-rsa/build-key dmy

またvi varsで設定した値がデフォルトで入るはずなので、Enterを連打します。
その後、yes/no聞いてくるので、yを選びます。

vi /etc/openvpn/easy-rsa/openssl.cnf を開き、末尾の下記の行をコメントアウトします。

----------------------------
#[ pkcs11_section ]
#engine_id = pkcs11
#dynamic_path = /usr/lib/engines/engine_pkcs11.so
#MODULE_PATH = $ENV::PKCS11_MODULE_PATH
#PIN = $ENV::PKCS11_PIN
#init = 0
----------------------------

そして、下記コマンドを実行します。

# /etc/openvpn/easy-rsa/revoke-full dmy
# cp /etc/openvpn/easy-rsa/keys/crl.pem /etc/openvpn/



OpenVPN設定

↓TLS認証鍵をOpenVPN設定ファイル格納ディレクトリへ作成
# openvpn --genkey --secret /etc/openvpn/ta.key
↓OpenVPN設定ファイルをサンプルよりコピー
#cp /usr/share/doc/openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/
↓設定ファイル編集
#vi /etc/openvpn/server.conf
設定ファイルで変更したのは下記の項目です。
port 9999 ←待ち受けポート変更
proto tcp ←udpを;で無効化し、tcpを使うように。
server 10.8.1.0 255.255.255.0 ←サーバ側からクライアントに割り当てるIPアドレス範囲指定。
tls-auth ta.key 0 ←コメントアウト除去 TLS認証有効化
user nobody ←コメントアウト除去
group nobody ←コメントアウト除去
log-append openvpn.log ←コメントアウト除去
management localhost 7505 ←管理インターフェイス有効化
crl-verify crl.pem ←証明書廃止リストの有効化



VPNインタフェース用ファイアウォール設定用スクリプト作成(OpenVPN起動時)

# vi /etc/openvpn/openvpn-startup
-------------------------------------
#!/bin/bash
# VPNインタフェースiptablesルール削除スクリプト実行
/etc/openvpn/openvpn-shutdown
# VPNサーバーからの送信許可
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
# VPNクライアントからVPNサーバーへのアクセスを許可する場合
iptables -I INPUT -i tun+ -j ACCEPT
# VPNクライアントからLANへのアクセスを許可(192.168.11.0/24へのアクセスを許可)
iptables -I FORWARD -i tun+ -d 192.168.11.0/24 -j ACCEPT
-------------------------------------

↓OpenVPN起動時スクリプトへ実行権限付加
# chmod +x /etc/openvpn/openvpn-startup 



VPNインタフェース用ファイアウォール自動設定解除

# vi /etc/openvpn/openvpn-shutdown
-------------------------------------
#!/bin/bash

# VPNインタフェース(tun+)用iptablesルール削除関数
delete() {
rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
for num in $rule_number
do
iptables -D $target $num
done
}
# VPNインタフェース(tun+)用iptables受信ルール削除
target='INPUT'
delete
# VPNインタフェース(tun+)用iptables転送ルール削除
target='FORWARD'
delete
# VPNインタフェース(tun+)用iptables送信ルール削除
target='OUTPUT'
delete
-------------------------------------

↓OpenVPN停止時スクリプトへ実行権限付加
# chmod +x /etc/openvpn/openvpn-shutdown



OpenVPNログローテーション設定

vi /etc/logrotate.d/openvpn
-------------------------------------
/var/log/openvpn.log {
missingok
notifempty
sharedscripts
postrotate
/etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true
endscript
}
-------------------------------------


OpenVPN起動(サーバー側)

↓起動スクリプト編集
vi /etc/rc.d/init.d/openvpn
-------------------------------------
↓コメントアウト除去
echo 1 > /proc/sys/net/ipv4/ip_forward
-------------------------------------
↓OpenVPN起動
# /etc/rc.d/init.d/openvpn start
openvpn を起動中: [ OK ]
↓OpenVPN自動起動設定
chkconfig openvpn on



OpenVPN設定(クライアント側)

↓クライアント証明書・秘密鍵作成(サーバー側で作業)
# cd /etc/openvpn/easy-rsa/
# source vars
# /etc/openvpn/easy-rsa/build-key-pass client1
Enter PEM pass phrase: ←任意のパスワードを入力
Verifying - Enter PEM pass phrase: ←任意のパスワードを入力
後は空Enterでデフォルト値を使います。最後に yes/no 聞いてきたらyを押下。

サーバ上の下記ファイルをWindowsクライアントの C:\Program Files\OpenVPN\config に格納します。
/etc/openvpn/ca.crt (CA証明書)
/etc/openvpn/easy-rsa/keys/client1.crt (クライアント証明書)
/etc/openvpn/easy-rsa/keys/client1.key (クライアント秘密鍵)
/etc/openvpn/ta.key (TLS認証鍵)

クライアントにOpenVPN Window版をインストールします。
インストール後、C:\Program Files\OpenVPN\sample-config\client.ovpn を C:\Program Files\OpenVPN\config へコピーします。

コピーした設定ファイルをテキストエディタで、下記のように編集します。

remote サーバ名 ポート番号 ←VPNサーバを指定
cert client1.crt ←サーバで作成したクライアント証明書ファイルを指定
key client1.key ←サーバで作成したクライアント秘密鍵ファイルを指定
ns-cert-type server ←コメント解除
tls-auth ta.key 1 ←コメント解除

設定ファイルを保存し、後はスタートメニューより、OpenVPNを起動します。
タスクバーにアイコンでるのでそこから接続を押下するとパスワードを要求されるので、クライアント証明書・秘密鍵作成時に設定したパスワードを入力すると接続が完了します。


なお、注意点として、クライアント証明書・秘密鍵はクライアント毎に作成しないといけません。
同じ証明書・秘密鍵を複数のクライアントで用いた場合、うまく接続できません。

OpenVPN,結構ややこしいです。。。
[PR]
by jehoshaphat | 2011-01-31 23:58 | Linux | Trackback | Comments(0)
(Linux)OpenVPNのインストール
CentOS5でOpenVPNサーバを構築し、Windowsクライアントからアクセスする方法です。

OpenVPNのインストール
まずOpenVPNのインストールをしなくてはいけません。

CentOS標準のリポジトリにはOpenVPNが無いので、下記配布サイトからRPMインストールしようとしたができませんでした。
http://dag.wieers.com/rpm/packages/openvpn/

で、RPMforge というリポジトリにopenvpnあるようなので、yumで使えるようにします。
まず、リポジトリの優先順位を設定するために、yum-priorities をインストールします。

[root@localhost pluginconf.d]# yum install yum-priorities

そして、RPMforge を http://packages.sw.be/rpmforge-release/ からダウンロードし、リポジトリのインストール、RPMforgeのGPGキーインストールをします。

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@localhost installsoft]# rpm -ihv rpmforge-release-0.5.1-1.el5.rf.i386.rpm
rpm --import rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt


CentOS Baseのリポジトリ優先度を1にします。(rpmforgeよりも優先にするため)

# vi /etc/yum.repos.d/CentOS-Base.repo
↓[base]や[updates],[addons],[extras]などそれぞれに下記行を追加します。
priority=1

RPMforgeのリポジトリの優先を CentOS Baseのリポジトリ優先度より低くします。(今回は10)

[root@localhost yum.repos.d]# vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=10 ←追加


これで、下記のように yum より openvpn のインストールを行います。(リポジトリの優先度順にインストールパッケージがあるかチェックしていってるようです)

[root@localhost yum.repos.d]# yum install openvpn



参考:
RPMforgeリポジトリ導入(RPMforge) - CentOSで自宅サーバー構築
CentOS 5.2 で yum の対象リポジトリに RPMforge を追加するには - Tosshi Note
STDMAN: CentOS RPMforgeリポジトリの導入
[PR]
by jehoshaphat | 2011-01-31 23:52 | Linux | Trackback | Comments(0)
XPでJIS第三、第四水準の漢字を表示したい
XPを使ってるユーザからJIS第三、第四水準の漢字を表示したいという要望がありました。

実はWindowsVista以降は、MS明朝やMSゴシック等のフォントはJIS X 0213:2004(通常JIS2004)に対応し、第三水準、第四水準の漢字も表示できるようサポートされています。
ただし、JIS2004では例示字体が変わったので、第一、第二水準の漢字でも一部の漢字の字体が変わってしまっています。

このあたりの話はVistaが発売された時に話題になりましたね。
で、マイクロソフトはXPでもVista以降で使われてるJIS2004対応フォントを提供してるので、それを入れると第三、第四水準の文字が使えます。
ただ、JIS2004で変更された例示字体になってしまいますけどね。

フォントのダウンロードはMicrosoft Windows Vista:Windows XP および Windows Server 2003 向けJIS2004 対応 MS ゴシック & MS 明朝フォントパッケージについてからできます。
また、もJIS2004に対応してるようです。

Vistaや7に入っているJIS2004対応フォントにはjp90タグという仕掛けがあり、JIS X 0208-1990の字体で文字を表現することができるようです。つまり、XPの時と同じ字体となるわけです。(ただし、厳密に同じというわけではないようなので注意が必要です。また、jp90タグを使うにはタグを指定できるアプリケーションじゃないとダメなようです。)

また、JIS2004対応になると、第三、第四水準の文字が4バイトになるのでアプリケーションによっては正しく動かなかったりするので注意が必要みたいです。

漢字ってのはホントややこしいですね。

参考:
ITpro:VistaをXPの字体に戻すというjp90タグの罠
ITpro:Vistaで化ける字,化けない字
ITpro:第1回:進まないJIS2004への移行,その原因は?
サロゲートペア入門:CodeZine

補足:
JIS2004で変更された表記(例示字体)は経済産業省のサイトにもPDFで配布されてました。
JIS2004対応フォントいれるときに、この資料をユーザに渡すといいかもしれません。
JIS漢字コード表の改正について-報道発表-経済産業省
[PR]
by jehoshaphat | 2011-01-17 22:07 | 豆知識 | Trackback | Comments(0)
(モバイル)基地局数を調べたい

携帯やイーモバイル、WiMax等の基地局数を調べる方法です。

総務省の総務省 電波利用ホームページ | 無線局免許情報検索から、検索ができるようです。(基地局一つにつき免許がいるということでしょうかね)

所轄総合通信局を選択後、無線局の種別を「基地力(PHS除く)」を選択します。
結果ですが、市区町村と事業所しか分からないのが残念です。基地局の住所が分かれば助かるのですが。。。

市区町村単位で大まかな目安としては役立つかもしれません。
[PR]
by jehoshaphat | 2011-01-17 22:04 | 豆知識 | Trackback | Comments(0)
SunRayサーバからターミナルサーバ接続のRDPセッション

通常WindowsターミナルサーバをWindowsクライアントOSからリモートデスクトップで接続したときは、「ターミナルサービスマネージャ」でセッションの状態を見た時は「Active」になってます。
で、ログオフせずにリモートデスクトップのウィンドウを閉じるとセッション状態は「Disconnect」になります。つまり切断状態ですね。
リモートデスクトップウィンドウは表示してても、何も操作しなければアイドル時間がカウントされます。

で、SunRay2 でSun Ray Connector for Windows(uttsc) を使って Windows ターミナルサーバに接続してるんですが、デスクトップユニットのスマートカードを抜くと、ターミナルサーバのRDPセッションはどうなるのか実験してみました。
(実際のセッションは SunRayサーバ~ターミナルサーバ間で張られています。)

Disconnect(切断)になると期待してたんですが、Activeのままでした。
ということで、ターミナルサービス構成でRDPセッションのタイムアウトを設定するときは、SunRayをクライアントにしてる場合、「アイドルセッションの制限」を設定しないといけないということですね。
「切断されたセッションを終了」は、SunRayがクライアントの場合意味をなさないようです。
[PR]
by jehoshaphat | 2011-01-17 22:02 | サーバがらみ | Trackback | Comments(0)
Word2003で印刷時に文字が重なってしまう
Word2003で印刷時に他のプリンタ(既定ではないプリンタ)を選び、印刷ボタンを押下すると、文字間隔が縮まり一部の文字が重なった状態で印刷・表示されてしまいます。

変な現象と思い調べてみたら、MSサポート:Word 2003 および Word 2002 でプリンタを変更して印刷すると文字が重なって印刷、表示されるにどんぴしゃな情報が載ってました。

解決策しては印刷ダイアログのオプションの「バックグラウンドで印刷する」チェックボックスをオフにすればいいようです。
もしくは印刷ダイアログからプリンタ選択後、OKを押下し、再度印刷するするといいとありますが、面倒なのとOK押した時点で印刷されてしまうのでこれはやっていません。

たしかにバックグラウンド印刷をしないようにするとうまく行きました。
[PR]
by jehoshaphat | 2011-01-17 22:00 | 豆知識 | Trackback | Comments(0)
(WindowsXP)Windowsの自動更新でメモリが大量に消費されるときの対処法
結構よく聞く現象です。
デフォルトの設定であればWindows起動後にWindowsUpdate関連のサービスが起動し、更新プログラムが無いかチェックされます。

ところが、この更新プログラムチェックの段階で大量のメモリを消費してしまい、物理メモリが少ないPCだと非常にレスポンスが遅くなることがあります。
この時メモリをばか食いするプロセスが svchost.exe と wuauclt.exe になります。この二つのプロセスでメモリ消費が多い場合は今回取り上げる更新プログラムチェック問題の可能性が高そうですね。(メモリばかりでなくCPUがしばらく100%になってしまうということもあるようです。)

WindowsUpdateのサービスは過去のパッチの履歴やキャッシュを持ってるそうなんですが、そのデータが内部で不整合になったりすると上記のような現象がおこりだすようです。

対応策はパッチの履歴やキャッシュを一旦消すことです。

具体的には、「Automatic Updates」(自動更新って場合もある)サービスを一旦停止し、%systemroot%\SoftwareDistribution\DataStore 内の全ての内容を削除し、サービスを再開するというものです。

これを行うと劇的にレスポンスが早くなりました。(しかし、残念なことにこれをしても次回再起動時にまた元に戻ってしまう端末もいくつかありました。)


参考:
wuauclt.exe のメモリ削減
マイクロソフトサポート
《高速化》WindowsXPが重く不安定なのでwuaucltを調整する
[PR]
by jehoshaphat | 2011-01-11 21:57 | 豆知識 | Trackback | Comments(1)
WindowsServer2003 x64にUltraVNCを入れる
UltraVNC本家からx64版をダウンロードして入れたんですが、ドライバーは入ってないようでどうもリモート時にもっさりします。
(UltraVNCx64版はUltraVNC本家の"Update バージョンNo"のリンクをたどっていくと最新版があります。)

で、肝心のドライバーですが、上記UltraVNC本家の"Update バージョンNo"のリンクの"Mirror Drivers Download"からダウンロードできるようです。
(1.0.8.2なら http://www.uvnc.com/download/1082/ の"Mirror Drivers Download)


参考:
UltraVNC on x64 Part2 - Kerosoft : Modus Operandi
[PR]
by jehoshaphat | 2011-01-11 21:56 | ツール | Trackback | Comments(0)
(Windows)削除の不思議な仕様
WindowsServer 2003上で共有フォルダを作成し、Windows XPからアクセスしています。

共有フォルダでユーザhogeに対するアクセス権を下記のような構成にしたいと考えていました。

共有ルートフォルダ → 参照のみ可能
└─shareフォルダ → 削除不可
  └─(自由にフォルダ・ファイル追加、変更、削除可)

NTFSアクセス権は下記のように設定しました。

共有ルートフォルダ
 hoge:フォルダの一覧/ファイルの実行の許可(このフォルダのみ。継承無)

shareフォルダ
 hoge:変更、読み取りと実行、フォルダの内容の一覧表示、読み取り、
書き込みの許可(このフォルダ、サブフォルダおよびファイル)
 hoge:削除の拒否(このフォルダのみ)


これでユーザhogeがshareフォルダを削除しようとすると削除のエラーダイアログは表示されるのですが、shareフォルダ配下のファイル・フォルダオブジェクトは削除されてしまいます。

MSフォーラム:フォルダの削除を制限する設定についてで情報が載ってましたが、どうやらWindowsの仕様のようですね。
Windows7では削除されないということでしたが、実際に評価してないので何とも言えません。

おそらくWindowsServer2003のフォルダ削除の仕様として、まず配下のファイル・フォルダを消してから、元のルートフォルダを消そうとするんでしょうね。

対比策としては、上記MSサポートにあるように最初にExplorerの削除対象となるフォルダ・ファイル(ファイル名0とか)を作り、アクセス拒否にするとかがあるようです。(あまりきれいな方法ではないですが。。)

なんかよりスマートな方法ありませんかね。。。
[PR]
by jehoshaphat | 2011-01-11 21:52 | サーバがらみ | Trackback | Comments(0)
(Windows)共有フォルダのアクセスログを取る
Windows共有フォルダで特定のファイル・フォルダが誰がいつアクセスしたかのログを取りたいという要件です。
これについてはWindowsのオブジェクトの監査機能があるのですが、ドメインコントローラでオブジェクトアクセス監査を有効にすると。。。に書いたような問題が発生し、うまくいきません。

でネットで探すと FAccLog Free というツールがあったので試してみました。
SOFT PAGEからダウンロードできます。(今回はFree版を使いました。)

特定のフォルダ配下だけや特定のIPアドレスという条件付与できるのもいいですね。
ログはCSV形式で落ち、ファイルへの操作内容は参照、新規、削除、改名という感じで残されます。
また、アクセス検出方法もWindowsAPIとSambaパケットの両方で検知できるようです。(パケット検出はソケットとドライバ方式があるようです。多分ドライバパケット検出が一番速いんでしょうね。)

ただ設定を変えたら、その毎にソフトを再起動しないといけないのがちょっと面倒ですね。

しかし、アクセスログが簡単に取れるのは魅力的です。

参考:
簡単な操作で共有フォルダをリアルタイムに監視できるフリーソフト フリーソフトの樹
Vector: FAccLog Free - 新着ソフトレビュー
[PR]
by jehoshaphat | 2011-01-11 21:48 | サーバがらみ | Trackback | Comments(0)