そらとぶへび

仕事・プライベートを通しての気づき、JavaやPHP、データベースやサーバの話などこつこつと書いていきます

SSL通信時にプロキシのトンネリングでエラーになる場合の対処

プロキシサーバを通して、wget,curlなどでSSLでアクセスする際、プロキシサーバのトンネリングでSSLを通せずエラーになる。

[hogehoge@hogehoge ~]$ wget --no-check-certificate -e HTTPS_PROXY=proxy.com:8080 "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD"
--2018-02-23 17:10:44--  https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD
proxy.com をDNSに問いあわせています... 192.168.0.100
proxy.com|192.168.0.100|:8080 に接続しています... 接続しました。
プロクシのトンネリングに失敗しました: Internal Server ErrorSSL による接続が確立 できません。
[hogehoge@hogehoge ~]$

Apacheのサイトによると、以下モジュールが必要。
Apache モジュール mod_proxy_connect
http://web.archive.org/web/20140119065146/http://httpd.apache.org:80/docs/2.2/ja/mod/mod_proxy_connect.htmlhttp://web.archive.org/web/20140119065146/http://httpd.apache.org:80/docs/2.2/ja/mod/mod_proxy_connect.html

本モジュールには mod_proxy が必要です。 CONNECT HTTP メソッドをサポートします。 このメソッドは主にプロキシに SSL リクエストを通す (訳注: SSLトンネリング)に使われます。


つまり、SSLリクエストでプロキシを通す場合は、以下のモジュールをconfに設定する必要がある。

LoadModule proxy_module modules/mod_proxy.so   
LoadModule proxy_connect_module modules/mod_proxy_connect.so

以下、設定と確認手順。

■プロキシサーバのhttpd.confの編集してmod_proxy_connect.soを読み込むようにする。

[root@proxy ~]# cd /home/webs/proxy/conf/
[root@proxy conf]# cp httpd.conf httpd.conf.bk
[root@proxy conf]# vi httpd.conf
[root@proxy conf]# diff httpd.conf httpd.conf.bk
5,6d4
< LoadModule proxy_module modules/mod_proxy.so   
< LoadModule proxy_connect_module modules/mod_proxy_connect.so
<

■構文チェック

[root@proxy conf]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@proxy conf]#

■再起動して設定を反映する。

[root@proxy conf]# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

■正常にSSL通信ができるようになった。

[hogehoge@hogehoge ~]$ wget --no-check-certificate -e HTTPS_PROXY=proxy.com:8080 "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD"
--2018-02-26 09:55:12--  https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD
proxy.com をDNSに問いあわせています... 192.168.0.100
proxy.com|192.168.0.100|:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`index.html?a=1&s=JPY&t=USD' に保存中

    [ <=>                                   ] 48,550      --.-K/s 時間 0.01s

2018-02-26 09:55:12 (3.18 MB/s) - `index.html?a=1&s=JPY&t=USD' へ保存終了 [48550]

以上。

CentOS ディスクの追加、パーティションの新規作成、マウント処理

仕事でCentOSのディスク新規追加や、取り外しをした際の作業Tips。


対象OS:CentOS 6.6 64bit Plain (CentOS 64bit)


アンマウント、ディスクを取り外す場合に、対象ディスクを認識したまま切断すると、
異常な状態になるので、以下の処理を行う。


マウントを解除

 #umount -l /home/test

認識を外すデバイスを確認する

# dmesg | grep -i 'Attached SCSI disk'
sd 2:0:0:0: [sda] Attached SCSI disk
sd 2:0:1:0: [sdb] Attached SCSI disk

外すデバイスを指定。

/sys/class/scsi_device/2:0:1:0/device/delete

正常に外れているかを確認をする。

# fdisk -l



ディスクを再接続後、スキャンで追加されたDISKが見えるようにする

# for i in $(find /sys/class/scsi_host -name 'scan') $(find /sys/devices -name 'scan') ;do echo "- - -" > $i ; done

追加されたDISKを確認

# fdisk -l
ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0004bc0c

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          66      524288   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              66         334     2150400   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sda3             334        3917    28781568   83  Linux

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

領域を作成します。

# fdisk /dev/sdb

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-13054, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-13054, 初期値 13054):
初期値 13054 を使います

コマンド (m でヘルプ): p

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x083d66ef

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1       13054   104856223+  83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

パーティションの更新情報を認識させます。

# partprobe

パーティションをフォーマットします。

# mkfs -t ext4 /dev/sdb1

自動マウント設定を行ないます。再起動した場合も自動的にマウントするよう設定を行ないます。

# vi /etc/fstab
# diff /etc/fstab /etc/fstab.ORG
12d11
< /dev/sdb1               /home/test                   ext4    defaults        1 2

作成したディレクトリにマウントします。

# mount /dev/sdb1 /home/test

マウントしたディスクが認識されているか、確認。

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       28198044 1297680  25461288   5% /
tmpfs            4028756       0   4028756   0% /dev/shm
/dev/sda1         499656   30892    442552   7% /boot
/dev/sdb1      103079868   61044  97776016   1% /home/test


一応、これで完成。


なお、同じディスクで、パーティションの削除、作成を繰り返していると、下記のエラーが出ることがあります。

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

メッセージを読むとリブートするの??って思いますが、partprobe コマンドで再読み込みをすれば、OSを再起動しなくても認識されます。

ChromeやSafariで現在地情報が取得できない件

GPS関連(Geolocation API )を調べていて気が付いたのですが、
ChromeSafariの仕様変更により、http接続の場合、現在地情報の取得ができなくなったため、
スマートフォン関連での現在地検索が利用できなくなっていました。

続きを読む

【情報処理試験対策】サイバー攻撃手法と対策まとめ

 そろそろ情報処理試験まで一か月を切りましたね。合格を目指して勉強している皆様は、順調でしょうか。

 

基本情報処理、応用情報処理から、セキュリティスペシャリスト試験、セキュリティマネジメント試験まで幅広く出題される情報セキュリティ分野でとりあげられるサイバー攻撃手法を紹介します。

主要なものだけリストアップしてもかなりの量になりますが、攻撃対象(システム、人)で分類するなども一つの手です。 

続きを読む