2015年6月25日木曜日

世界一かんたんな「うるう秒」対応

LeapIndicator(LIフラグ)を受け取る前にntpdを停止
うるう秒の調整が終わったら起動。


#cronに以下を挿入
01 00 30 06 * /etc/init.d/ntpd stop >/dev/null 2>&1
05 09 01 07 * /etc/init.d/ntpd start >/dev/null 2>&1


以上、これ以外なにも必要なし。




相変わらずIT業界恒例のマッチポンプ。
 ni●tは、Liフラグを送信しないntpサーバーを建てろよ糞が。




【参考情報】
https://access.redhat.com/ja/node/1362753
 うるう秒挿入後に Leap Second Insertion フラグを削除する

http://www-06.ibm.com/jp/linux/tech/doc/0019db89.html
【Technical Notes】Linux システムクロックの『うるう秒』調整

http://hiroki.jp/leap-second-2015
7/1の閏秒を迎えるにあたってLinuxでは何をすべきか?


2014年3月25日火曜日

Tera Term ログ出力の改行についてのメモ

Tera Termでは、ログ出力するとタームの画面の端で改行が入るため、後からエディターで見た場合に読みづらいログになることがある。


この解決方法は、INIファイルに
Enablecontinuedlinecopy=on
を書けばよい。

 ※デフォルトは off になっている。


オリジナルのINIを作成する場合は、
[設定(S)]→[設定の保存(S)]  で名前をつけて現状を保存し、macroファイル内で
strconcat msg ':22 /ssh /KR=UTF-8 /KT=UTF-8 /F=example.ini /auth=password /user='
のように指定する。



「tera term ログ出力 改行」
でググったらたまたま見つけたんだけど、このオプションは潮田って人のおかげなのね。
http://www.freeml.com/teraterm/76/latest








Linuxカーネル解析入門 (I・O BOOKS)  平田 豊(著) 
Linuxカーネル解析入門 (I・O BOOKS)  平田 豊 (著)
 


2013年1月21日月曜日

google急上昇ワードの謎

この概要は表示できません。投稿を閲覧するには ここをクリック してください。

2008年6月4日水曜日

Burpsuite (Burp Proxy) の使い方


今日はよい子のためのWebセキュリティの講座です!
Web Vulnerability Scanners でいいのがリストされているページがあるので見ましょう。

http://sectools.org/web-scanners.html



 
このサイトにはセキュリティ関係のツールが
沢山紹介されています。
もちろん、全OS対象ですので安心です。

今日はこの中から6位にランキングされている
Burpsuite(バープスイート)というツールを導入
してみましょう。

Burpsuite : An integrated platform for attacking web applicationsBurp suite allows an attacker to combine manual and automated techniques to enumerate, analyze, attack and exploit web applications. The various burp tools work together effectively to share information and allow findings identified within one tool to form the basis of an attack using another.
訳:こいつはグレイトなツールだ! Webのアタックにも使えるぜ!ha-ha-ha-!



Burp suite のダウンロードは以下から行えます。
http://portswigger.net/suite/download.html

Windows版 http://portswigger.net/suite/burpsuite_v1.1.zip
Linux版   http://portswigger.net/suite/burpsuite_v1.1.tar.gz




今回はWindows版をダウンロードします。
解凍すると、左のようなファイル群が出てきます。
特にインストール作業は無いようですので、不要になればディレクトリごと削除して下さい。


ここで suite.bat を実行すれば burpsuite が動作するわけですが、今の段階では何も起こりません。
サイトをよく見ると

Burp Suite is a Java application, and runs on any platform for which a Java Runtime Environment is available. It requires version 1.5 or later. The JRE can be obtained for free from http://java.sun.com/j2se/downloads.html.
訳:バープスイートはJavaアプリだから、Java ランタイム v1.5以上 が無いと動かないんだよね。


と書いてありました。

JREが必要、というわけで、Java ランタイムを落とします。
sunのサイトを見るとバージョンがいろいろあって迷いますが、私はJava Runtime Environment (JRE) 6 Update 6 を入れました。
Java SE Runtime Environment 6 Windows Offline Installation






jre-6u6-windows-i586-p.exe (JRE 6本体)





jre-6u6-windows-i586-p.exe を実行するとインストーラーが起動します。
長いので説明は読まずに同意して下さい。







特にWindowsの再起動は必要ありません。
先ほどの suite.bat を実行すると、今度はDOSのウィンドウが開いてburpsuite が起動します。










●Burp Suite の設定方法


起動した直後の画面です。
基本的な機能としては

リクエスト
Webサーバ <----- BurpSuite <----- ブラウザー
応答
Webサーバ -----> BurpSuite -----> ブラウザー

といった具合に、ブラウザーとWebサーバの中間に立って、リクエストやデータを横取りしてしまおうという機能です。
もちろん BurpSuite 上で、サーバに渡る直前のデータを改変して渡すことも可能です。
一般的に、FORM からの送信内容をブラウザー側のJava Script で入力チェックをし、問題の無いデータをサーバに送信するといった仕組みも多く存在します。
そのような、ブラウザーでのエラー確認の機構をすり抜けてチェックをかけることができます。


まずはブラウザーの設定から

IE の
[ツール]→ [インターネットオプション]→ [接続]→ [LANの設定]
からプロキシーの設定をします。





Burpsuite は Proxy として動作します。
個別の環境で変更も可能ですが、下記のデフォルト設定でまず問題はありません。

■LANにプロキシーサーバを使用する にチェック
    アドレス  [ 127.0.0.1 ]
    ポート   [ 8080 ]


通常の環境であれば、設定は以上で完了です。


もし、あなたの環境が Proxy を使用しなければ Webサーバにアクセスできない場合は、Burpsuite の [ comms ] タブをクリックしプロキシーサーバを経由するよう設定を追加しましょう。

■ use proxy server  にチェックを入れる
   server [ プロキシーサーバのIP]
   port [ プロキシーにアクセスするためのポート]



   

Webサーバ <--- Proxy <--- Burpsuite <--- ブラウザ という構造になります。 ちなみに、うちの環境の場合だとこんな設定です。




●BurpSuite の使用方法



例として、ブラウザー上で Google.co.jp にアクセスしてみます。
URL に http://www.google.co.jp/ を指定して実行しますが、この時点ではブラウザー上に何も表示されません。







ブラウザーからの全ての要求は、Burpsuite で堰き止めているため
通過させたい場合には、[ forward ] ボタンを押さなくてはなりません。


特定のリクエストを廃棄したい場合には、[ drop ] ボタンを押します。
ブラウザーからリクエストがある度に、選択することになりますのでサイトによっては何十回も forward することになります。





では、
試しに、Google のテキストボックスに [ burp suite ] として検索実行してみて下さい。

intercept タブの中で、さらに params というタブがありますが
その中に今自分が入力した文字列を見つけることができるでしょう。




今回の場合、GET request 中の type URL q=burp+suite
という部分がそれです。

パラメータを直接ダブル・クリックして内容を改変してみましょう。

burp+suite +root99.blogspot.com

と入力し、 [ forward ] ボタンを押します。
Webサーバには、書き換えられた burp+suite +root99.blogspot.com の情報で送信されます。



Google の応答結果を見ると、検索内容が書き換わっていることがわかります。








インストールできた?
そしたらはやく俺の作業手伝って!!!

つづく

2008年3月16日日曜日

Advanced/W-ZERO3[es]でSSH2で公開鍵認証

アドエス(WS011SH)で SSLVPN で SSH  のつづきです。
参考:SSH2で公開鍵認証を利用する

前回までに
・Advanced/W-ZERO3[es]上でSSH2接続が使えるPocketPuTTYの入手
・サーバ上で公開鍵認証を行うためのsshd.confの設定
を行いました。


今回行いたいことは

W-ZERO3 ------(ssh2)--------> Linuxサーバ
Aの秘密鍵             Aの公開鍵は認証済みの状態

となります。
上記の[Aの秘密鍵]とは id_rsaですが、W-ZERO3上で動作する PocketPuTTY では
Faqinなことに OpenSSHで作成したid_rsaのままでは利用できません。
そのためid_rsaファイルをPuTTY形式に変換する必要があります。
全くもってPuxxyな野郎だ!



PuTTY Download Page
からhttp://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exeをダウンロードして下さい。

puttygen.exe はWindowsクライアント側で各種sshのkey pairを作成する機能の他に
OpenSSHの鍵ファイルの変換機能もあります。


以下の手順で
id_rsaの秘密鍵をPuTTY形式に変換したもの→id_rsa.ppkを作成します。


1.puttygen.exe を起動する。




2.既存のid_rsaファイルを開く

[File] → [Load private key] を選択します。

ダイアログが開くので、ファイル形式を
[PuTTY Private Key Files(*.ppk)] から [All Files(*.*)] にして

全表示にした上で既存の id_rsa ファイルを指定します。





すると鍵を作成した時に決めたパスフレーズを聞かれます。
(前回Textのroot99hogeにあたるもの)









パスフレーズが正しければ
Successfully imported foreign key
(OpenSSH SSH-2 private key).
To use this key with PuTTY, you need to
use the "Save private key" command to
save it in PuTTY's own format.
と表示されます。




3.PuTTY形式に変換する。

●SSH-2 RSA のチェックが入っていることを確認し
[Save private key] ボタンを押します。











ファイル名を id_rsa.ppk として保存先を指定して下さい。






あとは、このid_rsa.ppkファイルを W-ZERO3 側のPocketPuTTYフォルダに入れておけばOK。

4.PocketPuTTYの設定

今回使用しているバージョンは
PocketPuTTY.wm6.2007-11-22.zip
です。もし画面の構成が違う場合はバージョンを確認して下さい。

[SSHタブ]を選択し、
先ほど作成した id_rsa.ppk ファイルをフルパスで指定します。






[Dataタブ] では使用するユーザ名を指定します。
Terminalサイズ等は特に変更する必要はありません。










最後に、[Sessionタブ]から

接続するサーバ名を [Host Name (or IP address)] の部分に
記述。
先ほどのタブで設定した内容を名前をつけて保存します。
[Save]ボタンを押すと、[Stored session] 欄に表示されますので
次回からは、その行を選択して [Load]ボタンを押すことで
いちいち入力する手間が省けます。



接続するとこんな画面が出ます
Using username "root99".
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key" :

ここでパスフレーズを入力してログイン完了。



              つづく







2008年3月7日金曜日

BackDoorを作成する方法は?

・SetUID とは
UNIXのファイルには、UID(ユーザーID)とGID(グループID)があり、それぞれの単位で
ファイルを参照・書き込み・実行といった権限を設定することができます。

例えば、/etc/shadowファイルはrootユーザにのみパーミッションがついていますから
一般ユーザは読み書きすることができません。
なのに passwdコマンドを使って自分のログイン・パスワードを変更、つまり shadowファイルを
書き換えることが可能です。

どうしてこんなことが可能になるんでしょう? passwdコマンドの権限を見てみましょう。

-rwsr-xr-x 1 root root 22984  1月 7  2007 /usr/bin/passwd

所有者がrootになっていて権限のところが rws となっています。
これはプログラムに所有者のUID を Set したという意味の表示で、どのユーザから実行したとしても
実行中はrootの権限で動きます。だから shadowファイルの変更もできていたんですね。



hogeというコマンドにSetUIDする場合は次のコマンドで行います。
#chmod u+s hoge もしくは #chmod 4755 hoge



さて、
世の中にはRootKitというものがありまして、これをコンパイルしてどっかに置いといて
一般ユーザで実行したらアラ不思議 root になってしまうという物です。
要するに、rootでSuIDの仕掛けを施した普通のコマンドに見えるプログラムのことですね。


では簡単に作ってみることにしましょう。

えーと・・・。
単に /bin/sh に SuID するだけです・・・。

# whoami
root        ←※rootで実行します。

# cp /bin/sh /home/root99/changeroot.sh
#chmod 4755 /home/root99/changeroot.sh ←※SuIDします。

# ls -l /home/root99/changeroot.sh
-rwsr-xr-x 1 root root 722684 3月15 16:22 /home/root99/changeroot.sh*

# exit
# whoami      ←※一般ユーザに戻る
root99

次に一般ユーザでこのプログラムを実行したらrootで動くはず。
# /home/root99/changeroot.sh ←※実行
changeroot.sh-3.1$
changeroot.sh-3.1$ whoami     ←※ユーザを確認してみる
root99


アレっ?? 一般ユーザのままですね。



実は Linux の /bin/sh と /bin/bash には SuID した場合の対策が取られています。
手元の Unux で確認したところ、Linux 以外のshは正常にSuIDで機能しました。

#cp /bin/ksh /home/root99/chgroot.ksh
#chmod 4755 /home/root99/chgroot.ksh   ←※コピーしたkshにSuID

#/home/root99/chgroot.ksh    ←※実行
#
# whoami
root                    ←※rootになった。




上記のように、一回でもrootになることができれば、いつでもrootになれるコマンドを作ることが
できます。これが即ち rootkitの基本 。
定期的に SuIDビットの立ったファイルをチェックしてない管理者がいたとしたら、そのサーバは
知らぬ間にクラッカーの巣になっているかも知れませんよ?


※shell scriptにはセキュリティ上の理由からSuIDが正常に機能しません。
 perl の場合はperl-suidperlモジュールをインストールすることで可能です。



次回は、SuID ファイルなんかチェックしても無駄無駄無駄ぁぁぁぁぁぁ!!!!
です。

2008年3月5日水曜日

TeraTermからSSH2で公開鍵認証

●Windowsから公開認証鍵を利用する

ググったら、出来ない君な設定方法が多いので、この通りやったら絶対できるはず
というテキストをメモ代わりに置いておきます。

動作検証は以下の通りな感じ
SentOS5
 openssh-4.3p2-24.el5
 openssh-server-4.3p2-24.el5
 openssh-clients-4.3p2-24.el5

RedHat EL4/WS3
 openssh-server-3.6.1p2-33.30.14
 openssh-3.6.1p2-33.30.14
 openssh-clients-3.6.1p2-33.30.14



まずは、telnetクライアントソフトを用意しましょう。

・UTF-8 TeraTerm Pro with TTSSH2  4.58 2008-02-29 22:16
http://sourceforge.jp/projects/ttssh2/

いろいろありますが、TeraTerm がお勧めです。っていうかコレ以外ダメです。
しかし、上記以外から TeraTerm 落としてきて「SSH2で接続できません!」などと、のたまわれても
サポート出来ません。ちょっと前のだと 1.5 までしか対応してません。

あと最近主流になってきた PuTTY も無理です。理由は名前が卑猥だからです。



1.鍵の作成

Linuxサーバ側で鍵を作成します。 (鍵ペアを作るだけなので、OpenSSHに準拠(略)ならどこでも良い)

[root99@~/.ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/root99/.ssh/id_rsa): <エンター>
Enter passphrase (empty for no passphrase): root99hoge (実際には見えない)
Enter same passphrase again: root99hoge (実際には見えない)
Your identification has been saved in /home/root99/.ssh/id_rsa.
Your public key has been saved in /home/root99/.ssh/id_rsa.pub.
The key fingerprint is:c5:e0:fc:1b:94:f5:f4:89:7e:64:da:3f:39:cb:b9:91 root99@server

水色の部分はパスフレーズです。ログインのパスワードとは別物なんですが、分からなければ
まぁ、パスワードみたいなもんなので好きに決めて下さい。
これで鍵ペアが作成できました。


[root99@server ~/.ssh]# ls -lartF
drwxr-x--- 6 root99 root99 4096 2月 10 14:43 ../
-rw-r--r-- 1 root99 root99 239 12月 27 21:23 known_hosts
-rw------- 1 root99 root99 391 3月 5 06:14 id_rsa.pub
-rw------- 1 root99 root99 1743 3月 5 06:14 id_rsa
drwx------ 2 root99 root99 4096 3月 5 06:14 ./

こんな風になってますか?なってなければ
# chmod 600 id_rsa.pub id_rsa
しといて下さいね。



これからやりたいことは、

クライアントA -----SSH接続---→ サーバ
Aの秘密鍵                Aの公開鍵は認証済みの状態

という風にしたいわけです。 さっき作成したファイルで言うと
id_rsa     秘密鍵
id_rsa.pub 公開鍵
という組み合わせです。
ですので id_rsa ファイルはクライアント側で使用する物ですので、サーバで鍵ペアを作った場合は
ダウンロードして、クライアントの TeraTermフォルダにでも入れておいて下さい。
ダウンロードし終わったらサーバ側の id_rsa ファイルは削除しておきましょう。
他人に盗まれたらせっかく認証鍵を作った意味が無いですからね。


2.サーバへの認証
先ほどの公開鍵をサーバ側で認証済みの状態にするにはどうすれば良いかというと
ユーザーディレクトリの下、つまり /home/root99/.ssh/authorized_keys に記述を追加することで
可能です。
既存ファイルが無い場合は新しく作ってもいいですが
# mv /home/root99/.ssh/id_rsa.pub  /home/root99/.ssh/authorized_keys
としても同じことですね?
アクセス権が
-rw------- 1 root99 root99 221 3月 5 04:46 authorized_keys
となっていることを確認して下さい。



3.TeraTermの設定
TeraTerm を起動して [Setup] → [SSH Authentication...] を選択
User name: にログインアカウントを入力。
[Use RSA/DSA key to log in]ボタンにチェックを入れ、先ほどの[id_rsa]を選択して下さい。
[OK]ボタンを押し、
[Setup] → [Save setup...]で、TERATERM.ini ファイルを保存しておきましょう。
ちなみに、ini ファイル名は何でも構いませんので、サーバが複数ある場合は分けて作成しても
良いでしょう。


4.sshd_configの編集
これまでは一般ユーザの権限で作業していましたが、次はroot権限で作業します。

# vi /etc/ssh/sshd_config
#必ずする設定
RSAAuthentication yes #RSA認証を使う
PubkeyAuthentication yes #公開認証鍵を使う
PasswordAuthentication no #パスワードを使用しない(パスフレーズを使用する)
AuthorizedKeysFile .ssh/authorized_keys #ここのファイル名と合わせること!

#あった方が良い設定
PermitRootLogin no #rootでのログインを許可しない
ChallengeResponseAuthentication no #チャレンジレスポンス認証を許可しない
PermitEmptyPassword no #パスワード無しを許可しない
RhostsRSAAuthentication no #サーバ間のパス無しアクセスを許可しない
IgnoreRhosts yes #サーバ間のパス無しアクセスを許可しない
HostbasedAuthentication no #特定のホストのパス無しアクセスを許可しない
IgnoreUserKnownHosts yes #拒否するホストを設定するかもしれない


sshdを再起動して反映する
# service sshd restart または # /etc/init.d/sshd restart
としてサービスの再起動をします。
ちなみに、初心者の方は
「ssh でつないで作業してる時にサービス再起動していいのだろうか?」
と心配するかも知れませんが、今現在繋がってるセッションは維持されますので
サービスを停止したとしても大丈夫です。

[root@server /home/root]# /etc/init.d/sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]

正常に起動できたら、[ OK ] となるはず。これでサーバ側の設定も完了しました。
クライアントから接続できるか確認してみて下さい。

TeraTerm からのアクセスの場合は
TCP/IP Host:[ hoge.example.com ]
Service ●SSH SSH version: [ SSH2 ]
の状態で [OK] ボタンを押すと、先ほどの id_rsa キーを設定した画面が出てきますので、
認証鍵のペアを作成した時に入力したパスフレーズを
Passphrase: [ ] に入力します。 今回の例だと root99hoge
●Use RSA/DSA key to log in Private key file [ id_rsa ]
とチェックが入っていることを必ず確認して下さい。

他の Unix クライアントからアクセスする場合は
# ssh -i /home/hoge/id_rsa serverB.example.com -l root99
として、秘密鍵とユーザ名の指定をします。



※おまけ   TeraTermマクロの書き方 例(root99.ttl ) 
;Macroココカラ============================================
username = 'root99' ;ログインユーザ名
hostname = 'xxx.xxx.xxx.xxx' ;サーバのIPアドレス
LinuxPrompt = 'root99' ;ログインに成功した時に表示される文字列
PasswordPrompt = 'パスワード:' ;パスワードを要求される時に表示される文字列
getpassword 'password.dat' 'passwordROOT99' PasswordROOT99

msg = hostname
strconcat msg ':22 /ssh /KR=UTF8 /KT=UTF8 /F=TTERM001.INI /keyfile=id_rsa /auth=publickey /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg PasswordROOT99
connect msg
settitle 'hoge.example.jp'

wait LinuxPrompt
sendln 'su -' ;自動的にrootになりたければここから下も記述
wait PasswordPrompt
getpassword 'password.dat' 'passwordROOT' PasswordROOT
sendln PasswordROOT

sendln "cd /home/root/"
sendln "alias ll='ls -lartF --color=none'"

;Macroココマデ============================================


完成したら root99.ttl アイコンをWクリックしてみましょう。
一番最初の実行時のみパスワードを聞いてきます。
(もし入力に失敗したら、TeraTermディレクトリのpassword.datの中の該当行を削除)
自動的に接続して ROOT にまでなれたら成功。

.