2009年9月30日水曜日

BitNami::Redmine 0.8.5対応版

以前プロジェクト管理で紹介したWindowsPCにも構築できるオールインワンタイプのBitNami::RedmineがRedmine0.8.5に対応したようですね。

こちらからどうぞ。
 

2009年9月17日木曜日

Apache configure エラー

CentOS5.3にApacheをソースからインストールしようとしたらconfigureでエラーが発生した。

# tar zxvf  httpd-2.2.13.tar.gz
# cd httpd-2.2.13
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all
  ・
  ・
  ・
checking whether to enable mod_deflate... checking dependencies
checking for zlib location... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures

mod_deflateモジュールで条件が満たされていないため構築できないと言われてしまった。ということでzlib関連の状況を確認したところ・・・

# rpm -qa | grep zlib
zlib-1.2.3-3

あっzlib-develがありませんでした。
ソースからインストールするときは開発ライブラリが必要なんですね。

# yum install zlib-devel

これで解決です。

※mod_deflate(サーバからの出力データを圧縮する)詳しくはこちらを参照してください。
 

2009年9月8日火曜日

告知

自宅で飼っているカブトムシが卵を産み幼虫になりました。
せっかくなので来年の成虫までの記録をブログにしてみました。
こちら
興味のある方はどうぞ・・・
写真が多くあります。幼虫など苦手な方はご注意ください。

2009年9月4日金曜日

CentOS 5.4 いつ?

Red Hat Enterprise Linux 5.4の提供がスタート。
Hyper-V 2.0でも正式サポートされたように仮想化機能が強化されたようですね。

●発表資料より
Red Hat Enterprise Linuxの5.4ソリューションのはRed Hat Enterpriseの仮想化ポートフォリオの基盤であり、カーネルを含めると、仮想化機能を仮想マシンベースの拡大を実現監督のI / O用(KVM)の技術と、インテル®バーチャライゼーションテクノロジー(インテル® VT - d)およびPCI - SIGのSR - iovは、できるインテル® Xeon ®プロセッサー5500番台ベースのプラットフォームの直接I / Oデバイスを共有することで複数の仮想マシンです。 一方、認定済ハードウェアや顧客へのソフトウェアの広範なエコシステムを提供し続けて、リリースには、I / Oスループットおよび開発者のための追加のツールを含めることが改善しています。
※発表資料全文はこちら

CentOS5.4のリリースが待ち遠しいですね。
 

2009年7月28日火曜日

特定の国からのパケットを破棄

自前でCentOS+Postfixにてメールサーバを立てていて月平均で2万通を処理しています。
S25R+Greylistingである程度はスパム対策をしているつもりですが、
それをすり抜けてくるスパムが後を絶たない!
特に韓国、中国がひどく最悪です。また最近ではポーランド、ロシアも多くなっています。
そこでkrfilterというサイトを見つけて韓国、中国からのパケット自体を破棄していました。
(CIDR表記されたフィルターファイルをkrfiler様からダウンロードしてiptablesで読み込み定義する)
しかし最近そのフィルターがダウンロードできずフィルタリングできない状態です。
ということで、自分でAPNIC等からIPアドレス割当リストを取得してフィルターを作ることにしました。
 
とりあえず韓国と中国からのパケット(IPv4)を破棄するよう構築します。
その前に・・・
このフィルター設定で受けた不利益に対しては一切の責任を負えません。
必ず自己責任で行うようにしてください。

また、運用にはそれなりに負荷が掛かりますので非力なマシンでは注意してください。 


1.アジア圏を管轄しているAPNICからIPアドレス割当リストの取得する。
2.リストからCIDR表記に変換してiptablesが読み込める形式でファイルを作成する。
3.iptablesを定義して2で作成したファイルを読み込む。

では実際に行ってみましょう。(尚、作業はrootで行います)
●準備
ファイル保存場所を作成する。
# mkdir /etc/myfilter
# cd /etc/myfilter

●IPアドレス割当リストの取得
# wget -O list_apnic ftp://ftp.apnic.net/pub/apnic/stats/apnic/delegated-apnic-latest
※wgetオプション-Oは別名でファイル保存します。
 ですのでダウンロードするとlist_apnicというファイル名になります。

このリストは以下のような感じで羅列されています。
1列目:管轄先
2列目:国コード
3列目:IPv4またはIPv6の判断
4列目:IPv4なら開始IPアドレス
5列目:割当個数
apnicCNipv4203.128.32.0819220050311allocated
apnicIDipv4203.128.64.0819220000613allocated
apnicCNipv4203.128.96.0819220050314allocated
apnicKRipv4203.128.160.0819220050314allocated

●CIDR表記に変換
「うざい国からのアクセスを全て遮断」で公開されている変換スクリプトを使わせていただきます。
※公開に感謝いたします。
# wget http://www.42ch.net/~shutoff/prog/countryfilter.pl

CentOSで使うために一部修正が必要なので変更します。
91行目iptablesのpathを変更します。(事前に# which iptablesでpathを確認)
================================================
print "$CommentChar variables. change these values before run.\n";
if ($FilterType == 1) { # iptables
   #print "IPTABLES=/usr/sbin/iptables\n"; ← コメント
   print "IPTABLES=/sbin/iptables\n"; ← 追記
   print "FILTERNAME=CKFILTER\n";
   print "TARGET=CKFILTERED\n";
} elsif ($FilterType == 2) { # ipfw
================================================

countryfilter.plにオプションを渡して変換します。
# perl countryfilter.pl iptables KR,CN < ist_apnic > filter_apnic.sh
※<>は実際は半角で・・・

変換されたファイルは以下のような感じで羅列されています。
$IPTABLES -A $FILTERNAME -s 222.250.0.0/16 -j $TARGET
$IPTABLES -A $FILTERNAME -s 222.251.0.0/17 -j $TARGET
$IPTABLES -A $FILTERNAME -s 222.251.128.0/17 -j $TARGET

●iptables定義
iptablesを初期化する
# /etc/init.d/iptables restart

チェインを作成する
# iptables -N CKFILTER
# iptables -N CKFILTERED

チェインにルールを追記する(変換したファイル)
# sh filter_apnic.sh

フィルターに引っかからなかったパケットを許可するルールをCKFILTERチェインに追加する
# iptables -A CKFILTER -j ACCEPT

フィルターに引っかかったパケットを破棄するルールをCKFILTEREDチェインに追加する
さらに破棄されたパケットのログを取るようにする
# iptables -A CKFILTERED -j LOG --log-prefix "Reject-TCP "
# iptables -A CKFILTERED -j DROP

TCP接続開始パケットをINPUTからCKFILTERに飛ばすようにする
# iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER

確認
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
CKFILTER tcp -- anywhere anywhere state NEW

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain CKFILTER (1 references)
target prot opt source destination
CKFILTERED all -- 58.14.0.0/15 anywhere
CKFILTERED all -- 58.16.0.0/16 anywhere
CKFILTERED all -- 58.17.0.0/17 anywhere
CKFILTERED all -- 58.17.128.0/17 anywhere
  ・
  ・
  ・
こんな感じでリストが出てくればOKです。

ログの確認
# cat /var/log/messages
Jul 28 15:08:41 mail01 kernel: Reject-TCP IN=eth1 OUT= MAC=Macアドレス SRC=送信元IP DST=受けIP LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=5926 DF PROTO=TCP
SPT=42975 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

こんな感じでログが書き込まれます。

私は一連の流れをスクリプト化して1日1回実行するようcronに登録しています。
※2009/10 1週間に1回に変更した。


アジア圏以外は以下からリストを取得することができます。
AfriNIC管轄:アフリカ地域
ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
ARIN 管轄:アメリカ北部圏
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
LACNIC管轄:ラテンアメリカ及び西インド諸島地域
ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
RIPE NIC管轄:ヨーロッパ地域
ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest


参考にしたサイト
「うざい国からのアクセスを全て遮断」
krfilter - deny accesses from .kr


※2013/05/13 ご要望頂いたので自動化スクリプトを以下に公開しました。

2009年7月27日月曜日

Linux初心者

これからLinuxを始めようと思う方・・・
 
「Linuxサーバー構築標準教科書」(無償)というのが公開されており
OSのインストールからDNS,Web,Mailと基本的な構築方法を学ぶことができます。
 
GUIによるインストール説明ですが基礎を学ぶには十分な内容でしょう。
とにかく何度もインストールをして体で(!?)覚えることをお勧めします。
 
ダウンロードはこちらからどうぞ!
 

2009年7月8日水曜日

PostgreSQL 8.4

今まで日付時刻に64bit整数型を使うためconfigureに--enable-integer-datetimes が必要でしたが、8.4よりデフォルトで64bit整数型になるそうです。
使わない場合は、--disable-integer-datetimes オプションを指定してconfigureを実行する必要があります。

こちらに8.4に関する技術情報が詳しく掲載されています。
 

Google検索