httpアクセスの確認方法いろいろ

最近はhttpプロトコルでのアクセスが異様に多くて何でもかんでもhttp/httpsになってきているので接続の確認方法いろいろ紹介します。
やたらとプロキシ・サーバーがあったり妙なアクセス制限があったりFWの設定情報を開示してくれなかったり世の中いったいどうなってんでだというところではありますが、順を追えばわかったりしますので根気強くハックしましょう。

特定ホストに接続できない(返り値を得ることができない)

例えば以下のようなURLにアクセスできないとします。ステータスが403になってしまったなどです。

host.example.com

digでIPを探す

どういう理由かはわからないので、取り急ぎdigでIPアドレスを求めます。

$ dig host.example.com
xxxxx.com. 60 IN A 12.34.56.789
xxxxx.com. 60 IN A 12.34.56.780

こんな感じになっていたら、pingしてみます。

pingしてみる

ping 12.34.56.789
ping 12.34.56.780

疎通してなかったらそれはそれで。pingを禁止しているサーバーもたくさんあるので、これは参考程度に。

traceroute

ではどこで止まっているかtracerouteしてみます。

# traceroute 12.34.56.789
traceroute to 12.34.56.000 (12.34.56.000), 30 hops max, 60 byte packets
 1  foo.example.com (12.34.56.1)  0.704 ms  0.641 ms  0.583 ms
 2  bar.example.com (12.34.56.2)  0.878 ms  0.836 ms  6.363 ms
 3  boo.example.com (12.34.56.3)  0.983 ms  0.942 ms  0.897 ms
 ....(省略)
15  puu.example.com (12.34.56.999)  3.635 ms 12.34.56.888 (12.34.56.888)  3.536 ms 12.34.56.777 (12.34.56.777)  3.469 ms
16  * * *
17  * * *

12.34.56.999で止まっている、という感じで調べます。
そしてIPアドレスを調べるサイトがたくさんあるので、そういうところでLocationを調べます。
Lookup IP Address Location
国内のどっかだったり、GOMだったりAWSだったりいろいろわかります。
とまっているところが実際にとまっているところなので、そこでIP制限されている可能性が高いです。

wgetしてみる

ダメ元でやってみる。

$ wget http://host.example.com/

当然何も取得できない。

curlでやってみる

curl http://host.example.com/

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
</body></html>

当然とれない。
httpヘッダーを取得してみる。

$ curl --dump-header - http://host.example.com/
HTTP/1.1 403 Forbidden
Accept-Ranges: bytes
Cache-control: no-cache="set-cookie"
Content-Type: text/html
Date: Tue, 12 Dec 2017 15:23:03 GMT
ETag: "8d-5512397f9f7c0"
Last-Modified: Sun, 04 Jun 2017 14:56:39 GMT
Server: WebOTX_Web_Server
Set-Cookie: AWSELB=1FCD552C90F3EB40D3AE75B59F57C6AF9D958404D8130213FD7BE35CD1529F0ABA0F51E49AAA3A39052E9CCEA3D26933F712FA3FA8A2B1CB680C7613888942540C9462D9;PATH=/
Vary: Accept-Encoding,User-Agent
Content-Length: 141
Connection: keep-alive

ダメですね。

FWとか制限かかっているものを全部外す

こうなったら全部はずしで。考えられるもの全部。

  • SULinux
  • firewalld
  • iptables
  • フォームウェアやコンパネなんかで設定するFWとか
  • .htaccessのIP制限や認証系のもの
  • httpd.confやssl.confなどでのアクセス制限など。grantとか。

ここらを全部はずして最初からやってみる。

Last update: 2017.12.13 (水)