Category Archives: Linux (Server) - Page 8

対ボット+外国人用 平仮名+和製漢字CAPTCHA Perl用ライブラリ

―――――――――――――――――――――――――――――――――――――
【ソフト名】かんたん日本語画像認証(アルファベットも可)
【著作権者】ORBIT
【制作日】2011年07月05日
【種 別】Perlモジュール
【連絡先】https://www.orsx.net/blog/
【配布元】https://www.orsx.net/blog/
【圧縮形式】zip
【動作環境】Perl5とImage::Magick、sazanami-gothicをインストールしたLinux
Windows系OSでは動作しない事が確認されております。
【開発環境】
CentOS5.6 perl, v5.8.8
―――――――――――――――――――――――――――――――――――――
≪著作権および免責事項≫

 本ソフトはフリーソフトです。自由にご使用ください。なお,著作権は作者
であるORBITが保有しています。

 このソフトウェアを使用したことによって生じたすべての障害・損害・不具
合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、
一切の責任を負いません。各自の責任においてご使用ください。

・はじめに
 新しいフォームを作った時の副産物の公開です。わずか数行で画像認証機能
を実装することが可能です。
 海外のスパム・人間、共に日本特有の和製漢字・平仮名は入力できないこと
に着目し今回の日本語画像認証を作成しました。

・ファイル構成
readme.txt 当取説ファイル
JCaptcha.pm 本ソフト
background.jpg 画像認証用の下地となる画像ファイル
tmp/imgs/ 作成済みの画像ファイルを保存するディレクトリ

sazanami-gothic.ttf
↑さざなみゴシック(フォント) ライセンスの関係上同封しておりません。

・導入方法
efont プロジェクト日本語トップページ – SourceForge.JP
http://sourceforge.jp/projects/efont/
よりさざなみフォントをダウンロードし、sazanami-gothic.ttfのみ取り出し
ファイル構成のようにJCaptcha.pmと同じディレクトリに格納する。

 画像認証機能を追加したい対象のプログラムと同じディレクトリに上記、
ファイル構成を設置する。

・利用方法
下記の使用例を参考にプログラムに組み込んでください。

簡単な使用例

#!/usr/bin/perl

# 当モジュールを呼び出し
use JCaptcha;

# オブジェクトの生成
my $obj = JCaptcha->new(
		Key    => RX, # 鍵を指定
		Lang   => JP, # 言語を指定(JP/ENG)
		Length => 5   # 文字の長さを指定
	);

# 認証画像作成用メソッドを呼び出す
my $tmp1 = $obj->makeimgcode(); # 認証用画像を作成し、その画像までのパスを受ける
print "$tmp1\n"; # 認証画像までのパスを受け取る

#==============================================#
# 画像を表示し、入力を行う処理を書いてください #
#==============================================#

# 認証
# 入力された文字列で認証を行い、正しければ"1"間違っていれば"0"を受ける
#(受け渡す文字列はフラグ無しUTF-8とする)
my $tmp2 = $obj->enimgcode('入力を受けた文字列');
print "$tmp2\n"; # if文などで認証の成功失敗を判別する

・履歴

2011年09月05日 Ver 1.0.0 公開

作成された画像認証用画像の一例

ライセンス形態:GPL
Download:JCaptcha

Webアプリケーションファイアウォール mod_security を導入した上でmuninでApacheのグラフを表示させる方法

中々、mod_securityを導入した中でmuninでApacheのグラフを表示させてる人がいないのか対策方法が紹介されていないのでメモします。

muninはApacheのデータを取得するためlocalhostのserver-statusにアクセスする。
しかし、mod_securityを導入している環境だとError 406 で取得できない。
(wget http://127.0.0.1 と実行すると分かりやすい。)
そのため、muninが通るようにWebアプリケーションファイアウォールに穴を開ける。

対象となるルール ユーザエージェントでボットを判別している。
# /etc/httpd/modsecurity.d/base_rules/modsecurity_crs_35_bad_robots.conf
アクセス規制対象のロボット一覧から対象のボット名を探し削除する。
# vi /etc/httpd/modsecurity.d/base_rules/modsecurity_35_bad_robots.data

削除対象
perl
libwww-perl
wget ←必要があれば削除

Apacheに設定適用
# service httpd restart

PHP error_reporting .htaccess 設定

下記のような警告が出た時、警告を非表示にする方法。
Deprecated: Function set_magic_quotes_runtime() is deprecated in
/path/file.php on line 718

php.ini で設定する場合は
error_reporting = E_ALL & ~E_NOTICE
を追記すれば良いようですが全部で適用されちゃってセキュリティー的にどうなのか?とか気になります。

.htaccessで設定する場合をメモします。下記を追記して対象のディレクトリに設置してください。
php_value error_reporting 6135

その他の設定は次のサイトで詳しく紹介されてるのでそちらを御覧ください。
.htaccess で error_reporting を設定するときの注意点 | Sun Limited Mt.

ハッキング対策 コマンドの隠蔽

不正アクセスによく使用されるコマンドは大体決まってます。
そこでよく使用されるコマンドの中でもつかられるとリスクの大きいコマンドを一般ユーザから利用できないようにします。

※ ls dir find rm cp このあたりも制限する事が望ましいですが他のプログラムに影響を及ぼす可能性が高いため今回は下記に絞りました。

# chown -c root:wheel /sbin/ifconfig
# chmod -c 2710 /sbin/ifconfig
# chown -c root:wheel /bin/ps
# chmod -c 2710 /bin/ps
# chown -c root:wheel /usr/bin/top
# chmod -c 2710 /usr/bin/top
# chown -c root:wheel /usr/bin/pstree
# chmod -c 2710 /usr/bin/pstree
# chown -c root:wheel /usr/sbin/lsof
# chmod -c 2710 /usr/sbin/lsof
# yum remove finger

nagios等の監視ソフトや一般管理者ユーザでエラーが出ると困ることからwheelグループからも一応アクセスできるようにする。
そして普通に使っているだけならfingerコマンドなんて使うことはないのでこれは削除します。

CentOS 5.6 最新Snort + SWATCH で不正アクセスを検知しリアルタイムで規制する

本来IDS(侵入検知システム)は不正アクセスを検知し管理者に通知するだけであるが、今回SWATCHと組み合わせることで強力なセキュリティー機能を備えたいと思う。
※ SWATCHはログ監視ツール導入(SWATCH)の設定が行われていることを前提とする

Snortのダウンロード
# wget http://vscojot.free.fr/dist/snort/snort-2.9.0.5/RHEL5/x86_64/snort-2.9.0.5-12.el5.x86_64.rpm
# wget http://vscojot.free.fr/dist/snort/snort-2.9.0.5/RHEL5/x86_64/daq-0.5-9.el5.x86_64.rpm
# wget http://vscojot.free.fr/dist/snort/snort-2.9.0.5/RHEL5/x86_64/libdnet-1.12-7.el5.x86_64.rpm
# wget http://vscojot.free.fr/dist/snort/snort-2.9.0.5/RHEL5/x86_64/libpcap1-1.1.1-10.el5.x86_64.rpm

依存関係でエラーが出るため下記の順番にインストールする
# rpm -Uvh libdnet-1.12-7.el5.x86_64.rpm
# rpm -Uvh libpcap1-1.1.1-10.el5.x86_64.rpm
# rpm -Uvh daq-0.5-9.el5.x86_64.rpm
# rpm -Uvh snort-2.9.0.5-12.el5.x86_64.rpm

ルールはsnortrules-snapshot-2905.tar.gzをダウンロードする
ルールのダウンロードにはアカウント作成がいるようである
# tar zxvf snortrules-snapshot-2905.tar.gz
# cp rules/* /etc/snort/rules/
# /etc/snort/snort.conf

LAN内のPCは例外とするように設定ファイルを書き換える
var HOME_NET 192.168.1.0/24
var EXTERNAL_NET !$HOME_NET

下記のコメントを解除しルールを有効化する
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/blacklist.rules
include $RULE_PATH/botnet-cnc.rules
include $RULE_PATH/chat.rules
include $RULE_PATH/content-replace.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/imap.rules
include $RULE_PATH/info.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/multimedia.rules
include $RULE_PATH/mysql.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/nntp.rules
include $RULE_PATH/oracle.rules
include $RULE_PATH/other-ids.rules
include $RULE_PATH/p2p.rules
include $RULE_PATH/phishing-spam.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/scada.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/snmp.rules
include $RULE_PATH/specific-threats.rules
include $RULE_PATH/spyware-put.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/virus.rules
include $RULE_PATH/voip.rules
include $RULE_PATH/web-activex.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/x11.rules

# vi /etc/logrotate.d/snort
不要(存在しないログファイル)な部分を削除する
/var/log/snort/alert /var/log/snort/*log {

SWATCHの設定
# vi /etc/swatch/snort.conf

# logfile /var/log/snort/alert

# 不正なアクセスを3回以上検知したら該当ホストからのアクセスを24時間規制
watchfor /Priority/
    pipe "/usr/local/bin/swatch_action.sh 13"
    throttle=00:00:10

P7H55-M BIOS設定

BIOS SETUP UTILITY を起動させる。

とりあえず言語設定ができるようなので設定する。
MainのLanguage [English]を[日本語]へ。

オンボードGPU(iGPU)を使う設定を行う(PCI-E x16にRAIDカードを挿すとグラフィックボードと誤認するため)
詳細設定からInitiate Graphic Adapter を[PCI/iGPU]を選択。(何故か[iGPU]ではうまく動作しなかった。)

起動時にIDE用ディバイスを使わないのにスキャンされるのでスキャンしないようにする。
詳細設定からオンボードディバイス設定構成を選択しVT6415 IDE Controllerを[無効]にする。

停電時、電源復旧で自動起動するように設定する。(自動動時に確認としてF2を押すように促す保護機能を外す。)
電源からAnti Sure Supportを[無効]に設定。
APM Configurationを選択しAC 電源切断後の復旧モードを[Power On]に設定する。

RAIDカードの設定はHP SC40Geホスト バス アダプタ リファレンス ガイドを見る。
普段はこんな事はまとめないですが複数導入する予定なので次設定するとき設定し忘れが無いようにww

P7H55-M + i3(内蔵GPU) + CentOS5

先日記述したとおりのパーツがひと通り揃った(RAIDカードは注文中なので除く)ので仮組みしてみました。

結論的には何も問題はありませんでした。

ただ、CentOS5.4ではNICやGPUにドライバが認識しませんでしたがCentOS5.6では普通に認識しました。

__追記__

HP SC40Ge(SAS3042EL)も設定すれば問題なく使える事が分かりました。

自作サーバの構成予定

8月ぐらいには構築したいので構成を決めて想定されるなるべく正確な金額をだしてみました。
=========================================
ハードディスク
=========================================
Yahoo!オークション(ID:************)
WD3200JS 2,799円 x 4 *
送料 945円 *

合計 13,120円 *
=========================================

=========================================
一般ユーザ向けサーバ
=========================================
ドスパラ
SILVERSTONE SST-GD05B 7,980円 *
HuntKey Jumper350 350W 3,980円 *
送料 740円 *

BESTDO! 通販部
P7H55-M 5,940円 *
送料 740円 *

Yahoo!オークション(ID:************)
HP SC40Ge(SAS3042EL) 3,990円 *
通常プラッタへの加工費 1,000円 *
SFF-8484 to SATAのケーブル 1,400円 *
送料 740円 *

合計 25,770円 *
=========================================

=========================================
高負荷CGI専用サーバ
=========================================
購入予定
=========================================
EC-JOY
Core i5 680 BOX 25,679円
送料 450円

TSUKUMO
CMX8GX3M2A1600C9 8,380円
送料 0円

ドスパラ
SILVERSTONE SST-GD05B 7,980円
HuntKey Jumper350 350W 3,980円
送料 740円

BESTDO! 通販部
P7H55-M 5,940円
送料 740円

Yahoo!オークション(ID:************)
HP SC40Ge(SAS3042EL) 3,990円
通常プラッタへの加工費 1,000円
SFF-8484 to SATAのケーブル 1,400円
送料 740円

合計 61,019円
=========================================

* 印 購入完了

全て合わせて大体10万円くらいでしょうか高いです・・・当初の予想より遥かに高い金額・・・
それでも毎月何もしなくても3万円ほどの電気代が飛んでいることを考えれば・・・

省エネで処理能力を落とさず冗長性を保ち、なおかつLinuxに対応させる構成を決めるのは予想以上に大変です。
誰かマジで寄付してください!いくらでも喜びます>ω<。

CentOS 5.5 Ruby on Rails 環境構築

 Red Hat系Linuxのパッケージ管理システムyumからインストールされたRubyはバージョンが古くRailsがインストール出来ないためソースからビルドしインストールした。
 しかし、ソースからビルドし直接インストールした場合、削除・アップデートが非常に困難なためソースから管理を行い易いrpmパッケージを作成しインストールする。

rpmパッケージを作成するためのコマンドcheckinstallのインストール
# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/checkinstall-1.6.0-3.el5.rf.i386.rpm

Rubyをソースからrpmパッケージを作成しインストールする

rubyのソースファイルをダウンロード
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2

展開
# bzip2 -dc | tar xvf ruby-1.8.7-p302.tar.bz2

展開されたruby-1.8.7-p302ディレクトリへ移動
# cd ruby-1.8.7-p302

Makefileを作成する
# ./configure –prefix=/usr

ビルドする
# make

rpmパッケージを作成する checkinstallの使い方は下記に記載
# checkinstall –fstrans=no

checkinstall 1.6.0, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: ← Enter

Preparing package documentation…OK

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? r ← Enter

Please write a description for the package.
End your description with an empty line or EOF.
>> ← Enter

**************************************
**** RPM package creation selected ***
**************************************

This package will be built according to these values:

1 – Summary: [ Package created with checkinstall 1.6.0 ]
2 – Name: [ ruby-1.8.7 ]
3 – Version: [ p302 ]
4 – Release: [ 1 ]
5 – License: [ GPL ]
6 – Group: [ Applications/System ]
7 – Architecture: [ x86_64 ]
8 – Source location: [ ruby-1.8.7-p302 ]
9 – Alternate source location: [ ]
10 – Requires: [ ]
11 – Provides: [ ruby-1.8.7 ]

Enter a number to change any of them or press ENTER to continue: ← Enter

rpmパッケージが作成されたディレクトリへ移動
# cd /usr/src/redhat/RPMS/x86_64

作成されたrpmパッケージでRubyをインストール
# rpm -ivh ruby-1.8.7-p302-1.x86_64.rpm

Rubyがインストールされたかを確認する
# ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

Rubyのライブラリを管理するrubygemsをソースからrpmパッケージを作成しインストールする

rubygemsのソースファイルをダウンロード
# wget http://rubyforge.org/frs/download.php/74234/rubygems-1.5.2.tgz

展開
# tar zxvf rubygems-1.5.2.tgz

展開されたrubygems-1.5.2ディレクトリへ移動
# cd rubygems-1.5.2

rpmパッケージを作成する checkinstallの使い方は上記に記載
# checkinstall -R ruby setup.rb

rubygemsからRailsをインストール
# gem install rails –include-dependencies

Railsがインストールされているか確認する
# rails -v
Rails 3.0.7

Shuttle XS35 CentOS 5.5 インストール NICドライバ簡単インストール

インターネットで調べると皆必死にソースからmake installしてるサイトしか見当たらないので一応rpmパッケージもあるよと紹介しちゃいます。

とりあえずrpmをダウンロードしてきます。そして適当なUSBメモリーの直下に保存しましょう。
http://pkgs.org/download/centos-5-rhel-5/centos-rhel-x86_64/module-init-tools-3.3-0.pre3.1.60.el5_5.1.x86_64.rpm.html
http://pkgs.org/download/centos-5-rhel-5/elrepo-x86_64/kmod-jme-1.0.7.1-1.el5.elrepo.x86_64.rpm.html

そのままだとUSBメモリーをXS35に挿しても認識しないかと思いますので一応kudzuを起動しておきます。
# service kudzu start

毎回起動するのは面倒なので自動起動させちゃいます。
# chkconfig kudzu on

マウント先を作成します。
# mkdir /media/usb

マウントします。(私の環境では/dev/sdaとなってましたが各自合わせてください)
# mount /dev/sda /media/usb

マウント先に移動します。
# cd /media/usb

module-init-tools-3.3-0.pre3.1.60.el5_5.1.x86_64.rpmをインストールします。
# rpm -Uvh module-init-tools*.rpm

kmod-jme-1.0.7.1-1.el5.elrepo.x86_64.rpmをインストールします。
# rpm -Uvh kmod-jme*.rpm

毎回USBメモリーをマウントしてインストールするのは面倒なのでとりあえずrootディレクトリにコピーしておきます。
# cp module-init-tools*.rpm /root/
# cp kmod-jme*.rpm /root/

アンマウントするために戻りましょう。
# cd

USBをアンマウントして取り外します。
# umount /media/usb

これでドライバのインストールは完了しました。system-config-networkでもrebootでもお好きにどうぞ。

他のサイトのソースからビルドするやり方は一斉にパッケージをアップデートするとドライバが外れてNICが認識されなくなってしまうようですが上記のやり方ならそのような事はありませんでした。

参考
Shuttle XS35にCentOS5.5を導入して無音サーバ構築 (CentOS導入編)
Shuttle XS35買ってきたよ CentOSインストール
OpenVPN専用サーバ作成