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 *

大筋でこんな感じ。

csv ファイルをoracleに取り込む

sqlldrコマンドとCSVファイルを使って読み込むわけだが、コントロールファイルでcsvを定義するのでサンプルを残しておく。

---- 以下サンプル「flash_card.ctl」----
LOAD DATA
INFILE "flash_card.csv"
APPEND
INTO TABLE TIKTAK.FLASH_CARD
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
ENGLISH_WORD,
JAPANESE_WORD,
TRIAL,
SUCCESS,
FAKE1,
FAKE2,
FAKE3,
NO sequence(MAX)
)
----

上記を使って読み込むコマンドは以下の通り。
sqlldr userid="ユーザ名/パスワード" control='flash_card.ctl'

2015年3月13日金曜日

bashで文字列操作

# echo $HOME
/root
# echo ${HOME:2:2} ← 先頭から3文字目(0から数えて)を起点に2文字抜き出す。
oo
# echo ${HOME/oo/e}  ← 「oo」を「e」に置き換え。※「//」で完全一致
/ret