2015年7月8日水曜日

mod_owaでORA-06512

DBのリストをHTP.PRINTで出力して遊んでいたらバッファーが小さいって以下のエラーが。

PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SYS.HTP"

出力する文字の数に制限があるのかなと思ったが、以下のパラメータをmod_owa.confに書き加える事で回避できた。

OwaCharsize 4

マルチバイトの文字を扱う場合にバッファが溢れるってことなのかな?デフォルトでは1がセットされているらしい。

2015年7月1日水曜日

iptablesでブルートフォースアタック対策

同一IPアドレスから大量にSSHでアクセスして認証突破しようとするアホがいる。認証方式的に拒否する方法でセキュリティが担保できるかもだが、都度ポートにアクセスされるのはかなわないのでiptablesで拒否する事に。
一秒館に3回もアクセスするものをはじくサンプル。

iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 3/minute --hashlimit-burst 3 --hashlimit-mode srcip --hashlimit-htable-expire 60000 -j ACCEPT

iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j DROP

2015年6月23日火曜日

PL/SQLでX-FORWARDED-FORヘッダを読む

Oracle ASの前段にリバースプロキシを入れる予定があったので調査。

HTTPヘッダのRemote-Addrは以下のようにすれば取得できるが、リバースプロキシ環境ではプロキシサーバのIPが入ってしまう。

owa_util.get_cgi_env('REMOTE-ADDR')

試しに以下のようになってみたが、空だった。ログ上はX-Forwarded-Forがヘッダになるのに。

owa_util.get_cgi_env('X-FORWARDED-FOR')

Oracleコミュニティのサイトを調べてみると、dads.confの該当するLocationディレクトリブに以下を追加すれば良いらしい。

PlsqlCGIEnvironmentList X-FORWARDED-FOR

うちの環境ではこれで取得できた。

2015年5月19日火曜日

アクセスログから接続IPのアクセス数を集計したい

cat access_log | cut -d' ' -f1 | sort | uniq -c | sort

2015年4月23日木曜日

Oracle Walletの情報から秘密鍵を取り出す

OracleのWebサーバからApacheに載せ替える用事があって、既存環境がOracle Walletだったのでどうやって秘密鍵取り出すんやと思ったので調査。 既存環境にあるewallet.p12ファイルに以下のコマンドうてば取り出せる。

openssl pkcs12 -in ewallet.p12 -nocerts -nodes -out privatekey.pem

2015年3月31日火曜日

nasneのデータをBDに書き出す

基本的にTVはほとんど見てなかっただが、去年末に友達と話して気になったnasneを買ってしまった。

nasneはiPadで外から録画した動画みれるから便利なんだな。実家の四国に帰った時も、その機能で実家から関東のテレビ見れて退屈をしのげた。

その辺は別途ネタとして書くか、ほかの方のブログに譲るとして。

毎日Dlifeで連続ドラマをとりまくっていると1TBなんてすぐリーチしてしまう。 そこでBlue-Rayに録画する為にドライブを買ってみた。




こちらは付属のソフト「Dixim BD Burner 2013」でnasneを認識させてBDに書き込める。らしいが、我が家では全く認識せず(一回だけひょっこり見えたが、OS再起動後見えなくなった)使えない野郎だという評価が他のブログでもちらほら。

ということでソニーが最近VAIO事業を売ったためか、VAIO以外もサポートするようになった「PC TV with nasne」の体験版をダウンロードして試すことに。

初めはこちらでもnasneが認識しなかったけど、NICに設定されていたVirtualPC関連の設定を外すことで認識するようになった。

無事書き込みも確認。これで容量を気にせずにnasneで海外ドラマ録画しまくれる。追加で3000円払ってソフト買うのもなぁ。

2015年3月24日火曜日

SFTPのChroot化

今までFTPでファイル転送を行って頂いていたのだけれども、
暗号化せずのやり取りだし、SFTPをやってみる事にした。
以下はCentOS5.5でやった時の備忘録

まずSFTPはOpenSSHを利用して、SSHの接続として処理される。
のでSSHでログインしないユーザ、SFTPのみの利用のユーザを設定し、
特定ディレクトリより上位にいけないようにCHROOT化の設定をした。

1. SFTP専用ユーザグループの作成
特定ディレクトリ"hoge"にアクセスするSSH専用ユーザのグループ“hoge”を追加し、
ログインシェルのないユーザをそのグループに所属させる。
これにより、SSHでのコンソールログインを抑制する。
# grouadd hoge
# useradd ユーザ名 -g hoge -s /sbin/nologin -M

2.OpenSSHのインストール
CentOS5.5の標準でインストールされるOpenssh4.3と古いので
OpenSSH をソースからダウンロード(4.4以降にchrootの機能がサポートされる)
# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.3p1.tar.gz
# tar xvzf openssh-5.3p1.tar.gz
# cd openssh-5.3p1
# ./configure --sysconfdir=/etc/ssh
# make
# yum erase openssh
# make install
# cp contrib/redhat/sshd.init /etc/init.d/sshd

3.起動スクリプトの編集(/etc/init.d/sshd)
ソースからインストールしたスクリプトではパスが異なるなど問題があるので
以下を修正。
KEYGEN=/usr/local/bin/ssh-keygen
SSHD=/usr/local/sbin/sshd
$SSHD $OPTIONS && success || failure

またyumからの削除により、chkconfigから削除されているので、
手動で再度追加。
chkconfig --add sshd
chkconfig --level sshd

SSHDのサービスを起動して正常動作を確認する。
/etc/init.d/sshd start


4. SFTP専用ユーザのCHROOT化設定 (/var/www/html/hoge)
SFTP専用ユーザのグループ“hoge”を指定して、“/var/www/html/hoge”へCHROOT化する。
/etc/ssh/sshd_configを以下のように修正。
・書き換え
Subsystem sftp /usr/libexec/openssh/sftp-server
 ⇒ 
Subsystem sftp internal-sftp

・追加
Match Group hoge
ChrootDirectory /var/www/html
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

※/hoge配下のディレクトリは自由に作成したいとの依頼があったため、
 chroot化したのは/hogeより上位の階層とした。
 (/hogeをchrootすると、root以外がディレクトリを作成できないため)

上記設定変更後にSSHDのサービスを再起動する。
/etc/init.d/sshd restart

さらにCHROOTするフォルダのオーナーをrootにし、パーミッションを755にする。
chown root:root /var/www/html
chmod 755 /var/www/html

そしてCHROOTしたフォルダ配下のディレクトリにSFTP専用ユーザグループの
書き込み権限を与える。
cd /var/www/html/
chown -R ユーザ名:hoge *
chmod -R 775 *

大筋でこんな感じ。