カテゴリー別アーカイブ: LAMP[Linux, Apache, MySQL, PHP]

VPSを開発で利用する為にバーチャルドメイン&キャッチオールメールを活用する – postfix

 お名前.com VPSさくらのVPSを利用している人は、サイト運用以外に開発環境としている人も結構居ると思う。
 Web系の開発をしていると、メールアドレスを色々使ってテストしたい場合があるけど、アドレスをいくつも作るのは面倒なので、キャッチオールで飛んできたメールを全て特定のアドレスで受信してしまうのが便利。 しかし、本番環境共存の場合にキャッチオールするとぐちゃぐちゃになるので、開発テスト用のバーチャルドメインも設定しておく。

・前準備 DNS設定
 DNSのMXレコードを設定する。

mx mail.hoge.tld. 10 orange
mx mail.hoge.tld. 10 yellow

のように、サブドメインのMXを受信するメールサーバに向ける。

・postfixの設定
main.cfに追記する

/etc/postfix/main.cf

virtual_alias_domains = orange.hoge.tld, yellow.hoge.tld
virtual_alias_maps = hash:/etc/postfix/virtual

・virtualを設定する

/etc/postfix/virtual

@orange.hoge.tld orange@hoge.tld
@yellow.hoge.tld yellow@hoge.tld

dbを生成して、postfixを再起動する
#postmap /etc/postfix/virtual
#/etc/init.d/postfix restart

以上の設定で、foo@orange.hoge.tldやbar@orange.hoge.tldはorange@hoge.tldに、foo@yellow.hoge.tldやbar@yellow.hoge.tldはyellow@hoge.tldに配信されるようになる。
 開発時にテストユーザのメール受信を一括できて良い。

(418)

カテゴリー: サーバ設定 | コメントをどうぞ

お名前.com VPS(KVM)のHDD容量が増えていた

 先日までさくらVPSに比べてHDD容量で大きくマイナス評価になっていたお名前.com VPS(KVM)のHDD容量が増量されて1380円プランで200GBにアップしていて、さくらの1480円より100円安く同じリソース量に揃った感じ。
 200GBあると、トランスコードシステムで変換した動画を100時間以上保管することも出来るだろう。
 さくらでの記事だけどこんな風にSubsonicを入れてメディアサーバ化するのも良いかもしれない。

 従来からCPUの演算性能はお名前の方が高くて、HDD容量さえあればなぁと思っていたところに良い感じのリソース追加が行われたので、イメージコピー法を使ってサックリと移行してしまおうかな・・・

(206)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

攻撃を受けた可能性がある場合にメール送信する – VPSセキュリティ設定

 昨日、ログイン試行して失敗した場合に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ログをメール送信するスクリプト。
 まぁ、とりあえず回しておくとある程度は役立つだろう。

(222)

カテゴリー: サーバ設定 | コメントをどうぞ

不正アクセス元っぽいIPを集計する – btmpとwtmpを元にVPSセキュリティ設定

 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を制限しておいた方が安全で良い。

(1121)

カテゴリー: サーバ設定 | タグ: , , , , | コメントをどうぞ

Web開発でのFacebookの基本操作 – このリンクをシェア を追加する

昨日の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/

(294)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

Web開発でのTwitterの基本操作 – リンクをあなたのフォロワーに共有する を追加する

 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さんから
みたいに入力された状態のツィートウィンドウが開ける。
↓実際に作ったリンク
ツイートする

(816)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

MySQLで特定日(月初・月末)を求めるクエリ

・基本
●先月の末日

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))

(1076)

カテゴリー: MySQL | コメントをどうぞ