2014年2月27日木曜日

複数の.htaccessと.htpasswdによるBasic認証

複数の.htaccessと.htpasswdを使用してWebサイトの複数個所にBasic認証を設定する手順です。
どこか1箇所のBasic認証を通過したユーザが他の個所に設定したBasic認証を認証なしで表示でき
ないようにアクセス制御できることを考慮しています。

.htpasswdはWebサイト管理者が管理する想定(CMSでは管理せず、変更は申請制)とし、
.htaccessはWebコンテンツの一部として扱う想定(CMS等で管理可能)とする。

OS: CentOS 6.4(64-bit)
Apache: 2.2.15
hostname: dcf-web
ip: 192.168.3.246


■.htpasswd作成
user10,user11 → ldap1.htpasswdで管理
user20,user21 → ldap2.htpasswdで管理
※ .htpasswdファイルはなるべくDocmentRoot以外のブラウザから直接アクセスできない場所に配置する。
[root@dcf-web ~]# mkdir /etc/httpd/htpasswd/
[root@dcf-web ~]# htpasswd -bc /etc/httpd/htpasswd/ldap1.htpasswd user10 10user
Adding password for user user10
[root@dcf-web ~]# htpasswd -b /etc/httpd/htpasswd/ldap1.htpasswd user11 11user
Adding password for user user11
[root@dcf-web ~]# cat /etc/httpd/htpasswd/ldap1.htpasswd
user10:iYP5xGnK32WPU
user11:lQXWHpaPkcB2c
[root@dcf-web ~]# htpasswd -bc /etc/httpd/htpasswd/ldap2.htpasswd user20 20user
Adding password for user user20
[root@dcf-web ~]# htpasswd -b /etc/httpd/htpasswd/ldap2.htpasswd user21 21user
Adding password for user user21
[root@dcf-web ~]# cat /etc/httpd/htpasswd/ldap2.htpasswd
user20:JQ0GxC.9s6Ips
user21:cwhMtpgo9dJOg
[root@dcf-web ~]#
htpasswd コマンドのオプション
-b: パスワードを直接指定
-c: .htpasswdを新規作成

■httpd.confに.htaccess使用許可設定
最下行に下記のような内容を追記する。
[root@dcf-web ~]# tail -6 /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/ldap1">
    AllowOverride All
</Directory>
<Directory "/var/www/html/ldap2">
    AllowOverride All
</Directory>
[root@dcf-web ~]#
※ 上位階層のディレクティブに対してAllowOverride Allを設定するとWebサーバのパフォーマンスが落ちる可能性があるので注意。

■.htaccess作成
[root@dcf-web ~]# cat /var/www/html/ldap1/.htaccess
AuthType Basic
AuthName "Basic Authentication Area"
AuthUserFile /etc/httpd/htpasswd/ldap1.htpasswd
AuthGroupFile /dev/null
require valid-user
ErrorDocument 401 /401.html
[root@dcf-web ~]# cat /var/www/html/ldap2/.htaccess
AuthType Basic
AuthName "Basic Authentication Area"
AuthUserFile /etc/httpd/htpasswd/ldap2.htpasswd
AuthGroupFile /dev/null
require valid-user
ErrorDocument 401 /401.html
[root@dcf-web ~]#
"401"は認証エラー時のステータスコード。
認証エラーページとして /var/www/html/401.html を準備しておく。

■動作確認
                            user10 user11 user20 user21
http://192.168.3.246/ldap1/    ○      ○      ×      ×
http://192.168.3.246/ldap2/    ×      ×      ○      ○

## access_log
http://192.168.3.246/ldap1/ に user11 でアクセスしたときのログ。
[root@dcf-web ~]# tail -f /var/log/httpd/access_log
192.168.3.13 - - [21/Feb/2014:18:57:15 +0900] "GET /ldap1/ HTTP/1.1" 401 16262 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"
192.168.3.13 - user11 [21/Feb/2014:18:57:20 +0900] "GET /ldap1/ HTTP/1.1" 200 16109 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"

こちらの情報が何かのお役に立てましたら幸いです。サイト継続ご協力のほどお願い申し上げます。m(_ _)m

2014年2月22日土曜日

How to configure the Linux static routes

If the server is connected to multiple network segments, you might not be able to access if properly only set the default gateway. 

Access from the Internet to route the DMZ segment, access from the Corporate Network will be routed to the maintenance segment. I will describe how to configure a static route to each network interface. 

Because the only route command, setting may be cleared to OS reboot, I will also describe how to do the routing configuration permanently.

OS: RedHat EL 6.4(64-bit)


Network Overview


Network Overview it is assumed this is as of FIG.
Default gateway will not face the Internet side.

Routing table information before setting

[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
If you leave this, for example, it will return to the DMZ segment is also access from the PC of 192.168.xxx.xxx.
Therefore, it can not communicate.

Set the gateway of maintenance segment side

[root@dcf-web-a ~]# route add -net 10.0.0.0 gw 10.5.117.254 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
10.0.0.0        10.5.117.254    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
I added a Lou Funding set to the network from 10.0.0.0/8.
It was assumed 10.5.117.254 the gateway, but in fact was 10.5.117.170 ....
Please set according to each environment.

Deleting a static route

[root@dcf-web-a ~]# route del -net 10.0.0.0 gw 10.5.117.254 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#

Set the gateway of maintenance segment side again

[root@dcf-web-a ~]# route add -net 10.0.0.0 gw 10.5.117.170 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
10.0.0.0        10.5.117.170    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
The above settings will be cleared when you OS reboot.

Static route permanently set

[root@dcf-web-a ~]# vi /etc/sysconfig/network-scripts/route-eth1
[root@dcf-web-a ~]# cat /etc/sysconfig/network-scripts/route-eth1
10.0.0.0/8 via 10.5.117.170
192.168.0.0/16 via 10.5.117.170
[root@dcf-web-a ~]#
I manually create a route-eth1.

Setting reflection

[root@dcf-web-a ~]# /etc/init.d/network restart
インターフェース eth0 を終了中:  デバイスの状態: 3 (切断済み)
                                                           [  OK  ]
インターフェース eth1 を終了中:  デバイスの状態: 3 (切断済み)
                                                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:  アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/5
                                                           [  OK  ]
インターフェース eth1 を活性化中:  アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/6
                                                           [  OK  ]
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
192.168.0.0     10.5.117.170    255.255.0.0     UG    0      0        0 eth1
10.0.0.0        10.5.117.170    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#

The above setting is also reflected OS reboot. I'm glad this information if beneficial to you.

Linux スタティックルート(static route)の設定方法

サーバが複数のネットワークセグメントに接続している場合、デフォルトゲートウェイの設定だけでは正しくアクセスできない場合があります。

インターネットからのアクセスはDMZに、社内からのアクセスはメンテナンスセグメントにルーティングされるようにネットワークインターフェース別にスタティックルートの設定方法を記載します。

routeコマンドだけでは、OS再起動時に設定がクリアされてしまうため、恒久的にルーティング設定を行う方法も記載します。

OS: RedHat EL 6.4(64-bit)


■ネットワーク概要


今回想定しているネットワーク概要は上記図のとおりです。
デフォルトゲートウェイはInternet側を向いています。

■設定前のルーティングテーブル情報

[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
このままだと、たとえば、192.168.xxx.xxxのPCからのアクセスもDMZセグメントに返してしまう。
よって通信できない。

■メンテナンスセグメント側のゲートウェイを設定

[root@dcf-web-a ~]# route add -net 10.0.0.0 gw 10.5.117.254 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
10.0.0.0        10.5.117.254    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
10.0.0.0/8からのネットワークへのルーディング設定を追加してみました。
ゲートウェイを10.5.117.254と想定したが、実は10.5.117.170だった…。
このあたりはそれぞれの環境に応じて設定ください。

■スタティックルートの削除

[root@dcf-web-a ~]# route del -net 10.0.0.0 gw 10.5.117.254 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#

■改めてメンテナンスセグメント側のゲートウェイを設定

[root@dcf-web-a ~]# route add -net 10.0.0.0 gw 10.5.117.170 netmask 255.0.0.0 eth1
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
10.0.0.0        10.5.117.170    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#
上記の設定はOS再起動時にはクリアされてしまいます。

■スタティックルート恒久設定

[root@dcf-web-a ~]# vi /etc/sysconfig/network-scripts/route-eth1
[root@dcf-web-a ~]# cat /etc/sysconfig/network-scripts/route-eth1
10.0.0.0/8 via 10.5.117.170
192.168.0.0/16 via 10.5.117.170
[root@dcf-web-a ~]#
route-eth1を手動で作成

■設定反映

[root@dcf-web-a ~]# /etc/init.d/network restart
インターフェース eth0 を終了中:  デバイスの状態: 3 (切断済み)
                                                           [  OK  ]
インターフェース eth1 を終了中:  デバイスの状態: 3 (切断済み)
                                                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:  アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/5
                                                           [  OK  ]
インターフェース eth1 を活性化中:  アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/6
                                                           [  OK  ]
[root@dcf-web-a ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.116.0      *               255.255.255.0   U     1      0        0 eth0
10.5.117.0      *               255.255.255.0   U     1      0        0 eth1
192.168.0.0     10.5.117.170    255.255.0.0     UG    0      0        0 eth1
10.0.0.0        10.5.117.170    255.0.0.0       UG    0      0        0 eth1
default         10.5.116.254    0.0.0.0         UG    0      0        0 eth0
[root@dcf-web-a ~]#

OS再起動時も上記設定が反映されます。この情報がお役にたてれば幸いです。

2014年2月16日日曜日

VMware ESXiにOVFテンプレートのデプロイで仮想マシンを作成

VMware ESXiにOVFテンプレートからデプロイして仮想マシンを作成する手順です。
仮想マシン名はデプロイ設定の中で自由に変更することが可能です。

デプロイした仮想マシンはネットワーク関連設定(仮想MACアドレス等)を修正する必要があります。
そのあたりの手順も少し紹介したいと思います。

ESXi: 5.0.0


■OVFテンプレートのエクスポート


■ソース


■OVFテンプレートの詳細


■名前と場所
"centos64-custom" に変更してみました。


■ストレージ


■ディスクのフォーマット
シックプロビジョニング(Lazy Zeroed)
指定したサイズを初めから確保します。仮想ディスク作成時にはゼロで初期化しないため作成時間は短くてすみます。現場では最も多く利用されているタイプです。
シックプロビジョニング(Eager Zeroed)
最初の段階でゼロ初期化を行うので作成には時間がかかります。データをディスクに書き込む際にはゼロで初期化済みなので最もパフォーマンスの良い方式です。
シンプロビジョニング
仮想OSの使用量のみがデータストア上で専有するタイプのフォーマットで容量を節約できます。 

■ネットワークのマッピング


■終了準備の完了


■デプロイ中・・・


■MACアドレスの確認
VI Clientにて仮想マシンを右クリック
デプロイした仮想マシンを起動する前にMACアドレスをメモりましょう。
OSのデバイスファイルを変更する必要があります。


■ネットワーク接続でeth0を選択
GUIがあれば、システム > 設定 > ネットワーク接続
CUIの場合は、/etc/sysconfig/network-scripts/ifcfg-eth0 を修正。


■System eth0 の編集
デバイスのMACアドレスとIPアドレスを修正してください。

以上で、デプロイした仮想マシンを利用できるようになると思います。
その他、必要に応じてホスト名等を変更してください。


OVFテンプレートを利用すると一から仮想マシンを作成する場合に比べ非常に効率的です。
まぁ、AWSのAMI機能には遠く及ばない気もしますが・・・。

こちらの情報が何かのお役に立てましたら幸いです。サイト継続のご協力ありがとうございます。m(_ _)m


2014年2月15日土曜日

VMware ESXi上の仮想マシンをOVFでエクスポート

VMware ESXi上の仮想マシンをOVFでエクスポートする手順です。
OVF(Open Virtualization Format)とは、VMware独自のフォーマットと思われがちですが、
異なる仮想化ソフト同士で仮想マシンのイメージ・ファイルを相互にやりとりできるようにするための
標準フォーマットです。

今回はOSがCentOS6.4で仮想ディスクに16GBを割り当てた仮想マシンをWindows7のPCにOVF
テンプレートでエクスポートしてみます。

ESXi: 5.0.0


■OVFテンプレートのエクスポート
対象の仮想マシンを選択した状態で、画面のメニューを実行してください。


■OVF関連ファイル名を設定
デフォルトで仮想マシン名が表示されますが、変更することも可能です。
OVFテンプレート関連ファイルの保存先も任意に指定できます。


■ダウンロード中・・・
ネットワーク環境やディスク回転速度にもよりますが、今回は約10分程度でダウンロード完了しました。


■OVF関連ファイルのサイズ
仮想マシンに割り当てたサイズは16GBですが、エクスポートされたファイルサイズはそれより小さいです。
今回は約1.7GBでした。仮想マシンの使用済みディスクサイズに関連するようです。
centos64.mf                 (1KB)
centos64.ovf                (6KB)
centos64-disk1.vmdk (1,748,084KB)

次回はOVFテンプレートから仮想マシンをデプロイして作成する手順を記載したいと思います。
こちらの情報が何かのお役に立てましたら幸いです。サイト継続のご協力ありがとうございます。m(_ _)m

2014年2月8日土曜日

ESXi上の仮想マシン起動時にBIOS画面を表示

仮想マシンであっても起動順序の調整等でBIOS画面をいじりたくなる場合が多々、いえ、時々あります。忘れがちなので設定方法のメモを残しておきます。



■仮想マシン起動時にBIOS画面表示
対象の仮想マシンを右クリックして「設定の編集」画面を表示
オプションタブ > 強制的にBIOSセットアップ > 次回仮想マシンの起動時に・・・にチェック

※このチェックは1度きりで外れます。次々回はBIOS画面ではなく普通にOSが起動します。

仮想マシンを起動するとコンソールにBIOS画面が表示されます。


以上です。こちら情報が何かのお役にたてれば幸いです。m(_ _)m

2014年2月7日金曜日

VMware ESXiに直接SSHでログインする方法

以前はサーバルームの鍵を借りて、物理サーバの前まで行って、キーボードとディスプレイをつないで、"unsupported"コマンドなるものを打っていましたが、ESXi 5系からはvSphere ClientでSSHを有効化できるようになったので今さらですがメモを残しておきます。



■vSphere Clientの設定
構成 > ソフトウェア > セキュリティプロファイル > サービス > プロパティ


SSH(停止)を選択してオプションボタン


開始 > OKボタン


SSHが実行中になったことを確認して、OKボタン

以上で設定完了です。


■SSHでログインしてみる
putty等でLinux VMに接続するのと同じようにESXiサーバのIPを指定してSSHログイン。
Using username "root".
Server refused our key
Using keyboard-interactive authentication.
Password:
The time and date of this login have been sent to the system logs.

VMware offers supported, powerful system administration tools.  Please
see www.vmware.com/go/sysadmintools for details.

The ESXi Shell can be disabled by an administrative user. See the
vSphere Security documentation for more information.
~ # pwd
/
~ # ls -l
lrwxrwxrwx   1 root   root       49 Feb 10 13:31 altbootbank -> /vmfs/volumes/56a9157c-ead5c024-c408-3aff00d6f9ce
drwxr-xr-x   1 root   root      512 Feb 10 13:30 bin
lrwxrwxrwx   1 root   root       49 Feb 10 13:31 bootbank -> /vmfs/volumes/6f9e437d-5e7ca139-8701-cb7a8ae27e15
drwxr-xr-x   1 root   root      512 Feb 10 13:52 dev
drwxr-xr-x   1 root   root      512 Feb 10 13:49 etc
drwxr-xr-x   1 root   root      512 Feb 10 13:30 lib
drwxr-xr-x   1 root   root      512 Feb 10 13:30 lib32
drwxr-xr-x   1 root   root      512 Feb 10 13:30 lib64
-r-x------   1 root   root    13884 Apr 30 21:16 local.tgz
lrwxrwxrwx   1 root   root        6 Feb 10 13:31 locker -> /store
drwxr-xr-x   1 root   root      512 Feb 10 13:30 opt
drwxr-xr-x   1 root   root   131072 Feb 10 13:52 proc
lrwxrwxrwx   1 root   root       23 Feb 10 13:31 productLocker -> /locker/packages/5.0.0/
drwxr-xr-x   1 root   root      512 Feb 10 13:30 sbin
lrwxrwxrwx   1 root   root       49 Feb 10 13:31 scratch -> /vmfs/volumes/4fa9b24f-cd223c10-7347-3c4a927216ed
lrwxrwxrwx   1 root   root       49 Feb 10 13:31 store -> /vmfs/volumes/2dc678ef-40e5d96b-90bf-855aab9c5547
drwxr-xr-x   1 root   root      512 Feb 10 13:30 tardisks
drwxrwxrwt   1 root   root      512 Feb 10 13:43 tmp
drwxr-xr-x   1 root   root      512 Feb 10 13:30 usr
drwxr-xr-x   1 root   root      512 Feb 10 13:31 var
drwxr-xr-x   1 root   root      512 Feb 10 13:30 vmfs
drwxr-xr-x   1 root   root      512 Feb 10 13:30 vmimages
lrwxrwxrwx   1 root   root       18 Feb 17  2012 vmupgrade -> /locker/vmupgrade/


こちら情報が何かのお役にたてれば幸いです。m(_ _)m