囮VPSを設置して先日のbtmp追跡でブラック判定したホストを晒していくカテゴリです。
一発目のお客さん
210.13.73.30
116.228.164.3
どちらも中国からのお客さんで日本人名の辞書アタックをしています。
IPが離れているけど、試行しているユーザ名が同じです。 BOTネットとか同一ホストの複数経路とか?
囮VPSを設置して先日のbtmp追跡でブラック判定したホストを晒していくカテゴリです。
一発目のお客さん
210.13.73.30
116.228.164.3
どちらも中国からのお客さんで日本人名の辞書アタックをしています。
IPが離れているけど、試行しているユーザ名が同じです。 BOTネットとか同一ホストの複数経路とか?
昨日、ログイン試行して失敗した場合にbtmpに記録が取られる関連の記事を書いた。
今日は、このファイルを監視して、サイズが変更された(ログイン失敗した)場合に通知するようにしてみる。
#!/bin/bash
LAST_SIZE_FILE='/var/log/last_btmp_size'
BTMP_SIZE=`wc -c < /var/log/btmp`
LAST_SIZE=`cat $LAST_SIZE_FILE`
if test $BTMP_SIZE -ne $LAST_SIZE; then
NOW=`LC_ALL=en_US.utf8 date`
LOG=`lastb -n 20`
echo "HOGEHOGE's btmp file size was changed.[old:$LAST_SIZE, now:$BTMP_SIZE]
$LOG"|mail -s "HOGEHOGE's btmp file size was changed.[$NOW]" hoge@piyo.tld
fi
echo $BTMP_SIZE > $LAST_SIZE_FILE
こんな感じのスクリプトをCRONで回してみる。
btmpファイルのサイズをLAST_SIZE_FILEに設定したファイルに保存しておいて、現在のbtmpファイルのサイズと差違があった場合、hoge@piyo.tld宛にサイズが変わったことと、最近20行のbtmpログをメール送信するスクリプト。
まぁ、とりあえず回しておくとある程度は役立つだろう。
Linuxで不正アクセスっぽいモノを記録するログが
/var/log/btmp
で、こいつはプレーンテキストではないので
lastb
コマンドで中身を確認する。
セキュリティ対策をしていないサイトだと膨大なログになるのでちょっとフィルタする。
不正アクセスっぽいモノのIPを抽出するには
lastb -ia|sed -e "s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g"|sort|uniq
lastbの出力でホスト名ではなくIPで表示して、一番最後にアドレスを出す。 それをsedに流してIP部分を切り出して、ソートして、重複を取り除いている。
正常なアクセスっぽいモノが記録されるログは
/var/log/wtmp
で、こいつもプレーンテキストではないので
last
コマンドで中身を確認できる。
不正アクセスっぽいモノ同様に
last -ia|sed -e "s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g"|sort|uniq
を通すと正常ログイン出来たアドレス一覧が得られる。
それぞれをリダイレクトして、
lastb -ia|sed -e "s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g"|sort|uniq > btmp.list
last -ia|sed -e "s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g"|sort|uniq > wtmp.list
の様にファイルに落として・・・
cat btmp.list wtmp.list|sort|uniq -d > dup.list
-dオプション=重複行のみを出力する
すると、ログインを成功したり失敗したりしたアドレスのリストが得られるので、このアドレス一覧がセーフかどうか確認する。
>このセーフでないモノがあったら、不正アクセスでログインされている訳で、システム総チェックが必要になる・・・
このセーフなリストを(safe.listとでもして)保存して
cat btmp.list safe.list|sort|uniq -u
-uオプション=重複していない行のみを出力する
みたいにすると、セーフリストに記載されていない不正アクセスっぽいモノが得られる。
(「失敗リスト」+「成功リスト」に存在するモノから作ったセーフリストを失敗リストから除外すると「失敗リストだけに載っているモノ」+「失敗リスト+成功リストに存在するモノのうちセーフリストに載っていないモノ」が得られる)
この不正っぽいリストをまとめて拒否するなら
cat btmp.list safe.list|sort|uniq -u|sed -e "s/\(.*\)/ALL:\1/" >> /etc/hosts.deny
で、拒否ホストリストに全部突っ込める(但し、最終行にbtmp~と言う行がつくので、これだけ削除する)
お名前.com VPS
やさくらのVPS
で標準状態だと不正っぽいリストがいっぱい出てくるのでアクセス制限に注意。
しかし、基本的には、フレッツ光対応、固定IPサービスの「ZOOT NEXT for フレッツ光」
みたいな固定IPを契約して、hosts.deny sshd:ALLにして、hosts.allow ALL:固定IPみたいにして接続できるIPを制限しておいた方が安全で良い。
昨日のTwitterに続いてFacebookにも投げてみる
リンクをシェアする為のURL
http://www.facebook.com/sharer.php
URLへの引数
u リンク先URL
t リンクタイトル
当たり前だけど、全てURLエンコードする
例えば
<a href='http://www.facebook.com/sharer.php?t=This%20is%20test%20link.&u=http%3A%2F%2Fserversmanvps.xn--ockc3f5a.com%2F' target='_blank'>リンクをシェアする</a>
参考:http://developers.facebook.com/docs/share/
お名前.com VPS
やさくらのVPS
を使ってWeb開発している時。
Twitterへの発信を絡めたいと言うニーズが結構ある。
そんなときに必要になるサイトからツィートする基本操作。
ツイート画面のURL
https://twitter.com/intent/tweet
URLへの引数
text ツィート本文初期値
url リンク先URL
via @になる値
original_referer ツィート完了後に戻るリンクに入る値
当たり前だけど、全てURLエンコードする
例えば
<a href='https://twitter.com/intent/tweet?text=This%20is%20test%20tweet.&url=http%3A%2F%2Fserversmanvps.xn--ockc3f5a.com%2F&via=VPS&original_referer=http%3A%2F%2Fserversmanvps.xn--ockc3f5a.com%2F' target='_blank'>ツイートする</a>
みたいなアドレスを作ると
ツイート画面で
This is test tweet. http://serversmanvps.xn--ockc3f5a.com/ @VPSさんから
みたいに入力された状態のツィートウィンドウが開ける。
↓実際に作ったリンク
ツイートする
仕事で作るサイトは常識的にSEOを考慮して作る。
趣味とテストをかねて、個人的に持っているサイトにも色々なSEOをやっている。
SEOをしていて気になる要素の一つがGooglePageRank(PR)なんだけど、最近、大きく変化した様に感じる。
従来、ブログサイトはコンテンツ量が多くても、キーワードやタグ調整をしても、被リンクが多くても、PRは低い感じだった(先日までこのブログはPR0だったし、別の週一更新で毎日数千アクセス回るブログもPR1だった。 しかし、滅多に更新しない固定ページはPR3だった)
しかし、気づくとこのブログはPR1に上がっていて、PR1のブログはPR2に、固定ページはPR3からPR2にダウン。
先日、バックリンクの評価が変わると言うニュースがあったので、それに併せてPRのパラメータ調整が入ったのかな?
ビッグキーワードでの順位も59位>40位に大幅アップしていたし、上位サイトが評価変更で落ちたのが原因なのかな。
とりあえず、Googleの状況を追跡してみよう。
・基本
●先月の末日
DATE( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) DAY) )
現在 - 今月の今までの日数 = 先月末日の現時刻 で、DATEで日付に丸める。
●今月の初日
DATE( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW())-1 DAY) )
現在 - (今月の今までの日数-1) = 今月初日の現時刻 で、DATEで日付に丸める。
●今月の末日
LAST_DAY(NOW())
●Nヶ月前の初日
DATE( DATE_SUB( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) -1 DAY), INTERVAL N MONTH))
●Nヶ月前の末日
LAST_DAY( DATE( DATE_SUB( DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) -1 DAY), INTERVAL N MONTH)))
月次集計バッチで前月の期間を指定する場合・・・
SELECT * FROM logs WHERE logs.created >= DATE(DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW()) DAY)) AND logs.created < DATE(DATE_SUB(NOW(), INTERVAL DAYOFMONTH(NOW())-1 DAY))
VPNのパターンとして、一般的なのは↓図の上のパターンだけど、お名前.com VPS
でもさくらのVPS
でもグローバルIPでネットに直結されているから、下のパターンを構築しなければいけない。

しかし、この下のパターンの設定例がイマイチ見つからないので、色々試行してみた。
MR504DVの場合はごくごく普通に設定を書けば下のパターンで動くんだけど、RTX1000の場合には普通の設定だとHost Aへの暗号化されたルートが自動で生成されないために、Host AからPINGを送るとRTXに受信されるけど、応答が宛先不明になる。
ならば静的ルートを設定すればいいと言うことになるけど、
ip route XXX.XXX.XXX.XXX gateway tunnel 1
とか書いてみる事になるけど、これっておかしい。 だって、XXX.XXX.XXX.XXXとの間に設定されているのがトンネル1だけど、XXX.XXX.XXX.XXXとの経路はそのトンネルを必要とする訳だから、鶏と卵になってしまう気がする。 で、実際、これじゃ動作しない。
色々調べた結果、
ip route XXX.XXX.XXX.XXX gateway tunnel 1 filter 1001 1002 1999
ip filter 1001 reject * * udp * 500
ip filter 1002 reject * * esp
ip filter 1999 pass * *
みたいに、フィルターを付けてやる事で通信できるようになった。
IPSecまわりの設定のみ抜き出した
ip route XXX.XXX.XXX.XXX gateway tunnel 1 filter 1001 1002 1999
tunnel select 1
tunnel name VPSIPSec
ipsec tunnel 1
ipsec sa policy 1 1 esp des-cbc md5-hmac
ipsec ike always-on 1 on
ipsec ike encryption 1 des-cbc
ipsec ike esp-encapsulation 1 off
ipsec ike group 1 modp1024
ipsec ike hash 1 md5
ipsec ike local address 1 192.168.0.1
ipsec ike local id 1 YYY.YYY.YYY.YYY
ipsec ike payload type 1 3
ipsec ike pfs 1 off
ipsec ike pre-shared-key 1 text 事前共有鍵
ipsec ike remote address 1 XXX.XXX.XXX.XXX
ipsec auto refresh 1 on
ip tunnel tcp mss limit auto
tunnel enable 1
ip filter 1001 reject * * udp * 500
ip filter 1002 reject * * esp
ip filter 1999 pass * *
これで、IPSecを実装したVPSと、RTX1000ルータ間でIPSec VPNが実現した。
この状態だと、RTX1000側のLANにあるPCからVPSに平文通信を行ってもネット上では全て暗号化されるので、かなりセキュアである。
RTX1000はかなり安く入手できて高機能&コンパクトでなかなかの優良ルータだ。 帯域制御とか優先制御とかも入れたくなると
CISCO 1812Jあたりが良い。
どちらも、業務用だから設定がコマンドを基本としていてなかなか取っつきにくいところもあるが、色々と高度なことが出来るので導入して損はないと思う。 エンジニアとしては、CISCOがいじれるというのは一種のステータスでもあるし。
なお、メインモードIPSecでは両端に固定IPが必要である。
VPS側は普通に固定IPだからお名前.com VPS
やさくらのVPS
あたりを利用して構築して、RTX1000側は固定IPが月額1,155円と激安のGMOとくとくBB
を利用した。
一年半ほど付き合ってきたServersMan@VPSを解約した。
やはりメモリ確保で転けるなんて、サーバとしてあり得ない。 複数IPが無料なのは良かったけれど、Apacheが途中で死んだりするからなぁ。
基本性能もお名前.com VPS
の方が遥かに高い。
コスト的にはさくらのVPS
の1GBプランが980円でServersManのプロプラン(1980円)の約半額で保証メモリ同量&確保エラー無しでかなり良好な性能だから、IP2個ならさくらの1GBを2本契約した方が幸せになれるだろう(展開の手間はこのブログで紹介しているイメージ複製方を使えば簡単)
また、お名前.com VPS
を継続的に利用していくことにしたので、GMOインターネット株(9449.T)を100株購入した。
GMOインターネットの株は現在1株400円位なんだけど、株主優待でお名前レンタルサーバーサービス等で使える5000円優待&カラメル等の通販サイトで使えるとくとくポイント2000円分が貰える等、色々な特典がある。
前者の優待は年間1万円をお名前.com VPSにも使えるから、1380x12-5000=11560円で1年使えるようになる。 後者はカラメルBOOKSあたりで本を買って消費すればいいだろう。
なお、この株を買う場合、クリック証券から購入すると株主優待で買い付け手数料をキャッシュバックして貰えるので、クリック証券の口座を開設してから購入するのがお勧め。
新しいさくらのVPS
に移行が完了した。
早速、以前構築したffmpegで地デジ録画をトランスコードするシステムを2GBプランで走らせて実効レートを測定してみた。
high(1280x720 High@L4.1)プロファイルの場合14fps
walkman(400x240 Base@L3.0)プロファイルの場合63fps
従来の3980円コースの8割前後のスピード処理できて1480円なので、かなり良い感じ。
HDDの容量が200GBもあるから、変換後のデータをストリーミング用に保存するのに別サーバがいらない感じ(Walkmanプロファイルは30分で85MB)
性能にとりあえず満足したので、2台を本契約にした。
メインのシステムの運用コストが3980+1480>1480x2に下がったので、追加で2GBプラン1台をテストに使っていたのだけど、お名前.comで登録してあるドメインの管理をしに見に行ったらお名前.com VPS
サービスが新しくなっていて、従来、高くていまいちなVZだけだったのに、KVMのサービスが始まっていたため、さくらの試用期間が切れる前にこちらもテストしてみることにした。
このお名前のサービスは明らかにさくらを狙っていて、さくらとUnixBench比較したり、サービス比較表を作ったりしている。
お名前.com VPS
は、月額1380円のコースがほぼさくら 2GB(月額1480円)に対応した状態。
CPUは3コア、メモリは2GBと同等だが、HDDが70GBと少ない。
しかし、ベースがKVMで、VirtioがON/OFFを自由に切り替えられたり、持ち込みのISOイメージからブートしたり出来るなど、細かいところで良い感じを出している。
いつものイメージバックアップ展開法を使って、KNOPPIXのCDでブートしたお名前に、さくら上に配置してあったフルバックアップをddで流し込む(自前CDイメージが使えるので、GRUBからブートの処理をしなくて良い)
なお、旧さくらのVPS同様にドライブが2デバイスに分かれていて、vda=20GB vdb=50GB(hda/hdb)の状態になっていた。
何の問題もなくVirtioでさくら上で使っていたイメージが動作開始。 仮想コンソールの操作性がイマイチ(ハングしたり重い)なのだけど、がんばってIP設定などを修正して、リブートすると普通にSSHで操作して残りのセットアップ。
で、動画トランスコードシステムを走らせてみた結果・・・
high(1280x720 High@L4.1)プロファイルの場合21fps
walkman(400x240 Base@L3.0)プロファイルの場合90fps
はやっ。 さくら速いなと思っていたけどそれ以上に速い。
ディスク性能が著しく低下する事があるけど、それでもこの演算能力は魅力的だ。
実環境でUnixBenchを測定すると、公式で謳っている3000は出ないことが多いものの(ディスクアクセスがイマイチ)、ウェットストーンが2000近く、演算能力の高さを伺わせる。
ディスクの並列アクセス性能が非常に低い様だ。
UnixBenchのディスク周りの結果を抜き出してみる(Virtio_blkオン)
並列無し
File Copy 1024 bufsize 2000 maxblocks 3960.0 994972.6 2512.6 File Copy 256 bufsize 500 maxblocks 1655.0 300975.3 1818.6 File Copy 4096 bufsize 8000 maxblocks 5800.0 1546515.3 2666.4
3パラ
File Copy 1024 bufsize 2000 maxblocks 3960.0 169015.8 426.8 File Copy 256 bufsize 500 maxblocks 1655.0 52920.8 319.8 File Copy 4096 bufsize 8000 maxblocks 5800.0 417300.7 719.5
並列にすると細かいほど低下していて、ごく普通のダイレクトディスクアクセスを思わせる結果。
さくら2GBの3パラの結果が
File Copy 1024 bufsize 2000 maxblocks 3960.0 829565.8 2094.9 File Copy 256 bufsize 500 maxblocks 1655.0 217180.7 1312.3 File Copy 4096 bufsize 8000 maxblocks 5800.0 2098879.5 3618.8
であるから、DB処理等でランダムなディスクアクセスが発生するとお名前は一気に遅くなりそうな傾向。 さくらは親OS側かRAID周りで大きいキャッシュを切っているのかもしれない。
また、実際の利用だと、さくらよりもネットワーク帯域も狭めで大きいファイルの転送にはちょっといらつく。
さくらの3本化はやめて、さくらのVPS
2本+演算用にお名前.com VPS
を1本契約して、演算済みの物をさくらに転送する感じで運用してみよう(用途的にHDD容量も重要な要素なので)
演算性能重視ならお名前、ディスク容量・バランス重視ならさくらが良いかと思う。