CentOSにパケットキャプチャWireSharkをインストールする。

サーバーを運営していると、実際の通信データのやり取りをキャプチャしたい事がありますが、パケットキャプチャソフトとして有名なWireShark(ワイヤシャーク)をServersMan@VPSCentOS)にインストールしてみる。

http://www.wireshark.org

1.インストール

yum -y install wireshark

2.使い方

WireShark自体はモニターがないネットワーク上のサーバであるServersMan@VPS上では使えないので、かわりに、WireShark付属のCUIコマンド、tsharkで

(1) 使用できるインタフェースを確認する。

# tshark -D
1. venet0
2. any (Pseudo-device that captures on all interfaces)
3. lo

(2) 183.181.10.26宛てのhttp通信だけをキャプチャする。

tshark -i 1 -l host 183.181.10.26  and port http

実行結果はこんな感じ。

# tshark -i 1 -l host 183.181.10.26  and port http
Running as user "root" and group "root". This could be dangerous.
Capturing on venet0
  0.000000 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1334 WS=1 TSV=651970830 TSER=0
  0.000046 183.181.10.26 -> 182.55.178.3 TCP http > 58276 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=96255708 TSER=651970830 WS=7
  0.010557 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [ACK] Seq=1 Ack=1 Win=66100 Len=0 TSV=651970841 TSER=96255708
  0.010903 182.55.178.3 -> 183.181.10.26 HTTP GET /pagerank/ HTTP/1.1 
  0.010942 183.181.10.26 -> 182.55.178.3 TCP http > 58276 [ACK] Seq=1 Ack=489 Win=6912 Len=0 TSV=96255719 TSER=651970841
  0.011534 183.181.10.26 -> 182.55.178.3 TCP [TCP segment of a reassembled PDU]
  0.011568 183.181.10.26 -> 182.55.178.3 TCP [TCP segment of a reassembled PDU]
  0.022072 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [ACK] Seq=489 Ack=171 Win=65930 Len=0 TSV=651970851 TSER=96255719
  0.022103 183.181.10.26 -> 182.55.178.3 TCP [TCP segment of a reassembled PDU]
  0.022113 183.181.10.26 -> 182.55.178.3 HTTP HTTP/1.1 200 OK  (text/html)
  0.022138 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [ACK] Seq=489 Ack=172 Win=66098 Len=0 TSV=651970851 TSER=96255719
  0.031902 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [ACK] Seq=489 Ack=1494 Win=64778 Len=0 TSV=651970862 TSER=96255730
  0.031910 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [ACK] Seq=489 Ack=2349 Win=63924 Len=0 TSV=651970862 TSER=96255730
  0.034140 182.55.178.3 -> 183.181.10.26 TCP 58276 > http [FIN, ACK] Seq=489 Ack=2349 Win=66100 Len=0 TSV=651970862 TSER=96255730
  0.034164 183.181.10.26 -> 182.55.178.3 TCP http > 58276 [ACK] Seq=2349 Ack=490 Win=6912 Len=0 TSV=96255742 TSER=651970862
  0.182031 182.55.178.3 -> 183.181.10.26 TCP 8773 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1334 WS=1 TSV=651971009 TSER=0


まぁ、Linuxベースならtcpdumpでもよさげだけどねっ♪

CentOSのmanコマンドを日本語化する

manコマンドで出力される説明が日本語だと、とてもありがたいので、その手順。

1.日本語manページをインストールする

yum -y install man-pages-ja

2.サーバーのローケルを日本語にする

サーバーのローケルを日本語する方法は「ServersMan@VPSの初期設定など」を参照。



すると、manコマンドの出力結果が、以下のように日本語で表示される。

# man tcpdump

TCPDUMP(1) TCPDUMP(1)

名前
tcpdump - ネットワークのトラフィックをダンプする

書式
tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ]
[ -i interface ] [ -m module ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ]
[ expression ]

説明
tcpdump は真偽値の 条件式 に一致するネットワークインターフェイス上のパケットのヘッダを表示する。

オプション
-a ネットワークとブロードキャストアドレスを DNS 名に変換する。

-c count 個のパケットを受信したのちに終了する。

-d コンパイルされたパケットマッチングコードを人間が読める形式で標準出力にダンプし、終了する。

-dd パケットマッチングコードを C 言語の一部として利用可能なかたちでダンプする。

python-bitlyとpython-twitterを使ってTwitterにポストしてみる。

python-bitlyとpython-twitterを使ってTwitterにポストしてみる。

import urllib
import bitly_api
import twitter

login_name = 'bit.lyのログイン名'
api_key = 'bit.lyのAPIキー'

# bitly APIの生成
bitly = bitly_api.Connection(login_name, api_key)

# ロングURLを短縮URLに変化する
longUrl = 'http://d.hatena.ne.jp/addition/20130413/1365817498' ← このページのアドレス。
quote_url = urllib.quote(longUrl, ':/?&=')
short_url = bitly.shorten( quote_url )['url'].encode('utf-8')


# twitter APIの生成
api = twitter.Api(
      consumer_key='Consumer keyの値', 
      consumer_secret='Consumer secretの値', 
      access_token_key='Access Tokenの値', 
      access_token_secret='Access Token Secretの値'
      )

# Twitterにポストする
status = api.PostUpdate( "python-bitlyとpython-twitterを使ってTwitterにポストしてみる。" + short_url  )

Pythonのbitly_apiライブラリーでbitlyの短縮URLを取得する

Pythonのbitly_apiライブラリーで、短縮URLサービス「bit.ly」の短縮URLを取得する

https://github.com/bitly/bitly-api-python

1.インストール

pip install bitly_api

2.使い方

% python

>>> import urllib
>>> import bitly_api
>>> bitly = bitly_api.Connection('ログイン名','APIキー')

# ロングURLを短縮URLに変換してみる
>>> longUrl = 'http://www.google.com/'
>>> quote_url = urllib.quote(longUrl, ':/?&=')
>>> result=bitly.shorten( quote_url )
>>> print result
{u'url': u'http://bit.ly/XtHPCB', u'hash': u'XtHPCB', u'global_hash': u'2V6CFi', u'long_url': u'http://www.google.com/', u'new_hash': 0}
>>> print result['url'].encode('utf-8')
http://bit.ly/XtHPCB


# 短縮URLをロングURLに変換してみる

>>> result=bitly.expand(shortUrl='http://bit.ly/XtHPCB')
>>> print result
[{u'short_url': u'http://bit.ly/XtHPCB', u'global_hash': u'2V6CFi', u'long_url': u'http://www.google.com/', u'user_hash': u'XtHPCB'}]
>>> print result[0]['long_url'].encode('utf-8')
http://www.google.com/
>>> 

ServersMan@VPS(CentOS)に phpMyAdmin をインストールする。

ServersMan@VPSCentOS)に phpMyAdmin をインストールしてみる。

1.CentOSのバージョンを調べる

# cat /etc/redhat-release
CentOS release 6.4 (Final)

2.phpのバージョンを調べる

# php -v
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

3.phpの拡張モジュールをインストールする

yum install php-\*

4.phpMyAdminをインストールする

インストールされているCentOS release 6.4 (Final)のPHP バージンが5.3.3なので、phpMyAdmin3系の最新版をインストールする。
http://www.phpmyadmin.net/

wget http://jaist.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.8/phpMyAdmin-3.5.8-all-languages.tar.gz
tar xvzf phpMyAdmin-3.5.8-all-languages.tar.gz
mv phpMyAdmin-3.5.8-all-languages /var/www/phpMyAdmin
chown -R root:admin /var/www/phpMyAdmin/
chown root:admin /var/lib/php/session/ 
↑phpのsession管理用のテンポラリーをapacheのオナーに合わせておく
 apacheのオナーを変えてな相場合は、通常root:apache

5.php-mcryptのインストール

ダウンロードは以下から
http://dl.fedoraproject.org/pub/epel/6/x86_64/

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/php-mcrypt-5.3.3-1.el6.x86_64.rpm 

rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm
rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
rpm -ivh php-mcrypt-5.3.3-1.el6.x86_64.rpm

6.phpMyAdminの設定

サンプル初期設定ファイルをコピーして

cp /var/www/phpMyAdmin/config.sample.inc.php /var/www/phpMyAdmin/config.inc.php

vi /var/www/phpMyAdmin/config.inc.php で以下に変更

【以下を変更】
$cfg['blowfish_secret'] = '';
↓
$cfg['blowfish_secret'] = '適当なパスフレーズ';

なお、上のパスフレーズはcookie認証でパスワードを暗号化する際に使用する為のもので、
64文字以内の適当パスフレーズ設定してくださいとのことなので、
以下のようなmkpasswdコマンドでも使って適当な文字列でも設定しておく。

# mkpasswd -l 46
2diejAtrAxommpzzfmuixtesufnwrrt&aikmz0rjjtqpfb

【以下を追加】
$cfg['DefaultLang'] = 'ja-utf-8';
$cfg['Lang'] = 'ja-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

7.apacheの設定

vi /etc/httpd/conf.d/phpmyadmin.conf  で phpmyadmin.conf を作成
(内部と特定の外部IPからのみアクセスできるように設定する)

Alias /phpMyAdmin /var/www/phpMyAdmin

<Directory /var/www/phpMyAdmin>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ← サーバー自身からのアクセスを許可
    Allow from 183.181.10.26 ← 内部ネットワークからのアクセスを許可
    Allow from 186.15.110.0/24← 特定の外部IP(186.15.110.0から186.15.110.0.255)からのアクセスを許可
</Directory>

/etc/rc.d/init.d/httpd reload でapacheをリスタート

8.phpMyAdminへのアクセス制限

上のapacheの設定で、自ネットワークぐらいからしphpMyAdminにアクセス出来ないようにはなっていますが、一応、Basic認証による、パスワードによるアクセス制限もかけておく。

(1) パスワードファイルの作成

htpasswd -c /var/www/phpMyAdmin/.htpasswd ユーザー名
New password: ←パスワード入力
Re-type new password: ←パスワード再入力

(2) .htaccessファイルの作成

vi /var/www/phpMyAdmin/.htaccess

AuthUserFile /var/www/phpMyAdmin/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret"
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
	deny from all
</Files>

9.ブラウザで確認 (http://www.ドメイン名/phpMyAdmin/ にアクセス)