CentOSにパケットキャプチャWireSharkをインストールする。
サーバーを運営していると、実際の通信データのやり取りをキャプチャしたい事がありますが、パケットキャプチャソフトとして有名なWireShark(ワイヤシャーク)をServersMan@VPS(CentOS)にインストールしてみる。
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
CentOSのmanコマンドを日本語化する
manコマンドで出力される説明が日本語だと、とてもありがたいので、その手順。
1.日本語manページをインストールする
yum -y install man-pages-ja
2.サーバーのローケルを日本語にする
サーバーのローケルを日本語する方法は「ServersMan@VPSの初期設定など」を参照。
すると、manコマンドの出力結果が、以下のように日本語で表示される。
# man tcpdump
名前
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 言語の一部として利用可能なかたちでダンプする。
パッケージ管理システム『pip』をインストールする。
パッケージ管理システム『pip』をインストールする。
easy_install pip
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@VPS(CentOS)に 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
ダウンロードは以下から
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/ にアクセス)