Java(サーブレット,JSPなど),Linuxその他のメモ書きです。 まとまった情報ではないので、何かお探しの方はSearchで検索することをおすすめします。 |
2002年7月7日 1:22:11
2099番のアクセスの正体分かりました。別に不正アクセスでも何でもないようです。 というのも、昔このサイトはYahooの80番塞ぎの対策のため、2099番で運用していたのでした。 誰かがそのアドレスを登録したままなのでしょう。いやいや、大騒ぎしたのがお恥ずかしい・・・。 |
どうも、これは勘違いじゃなさそうなんだよなー。 ある熊本の映画館情報を載せたサイトにアクセスすると113番宛のTCPパケットが大量に飛んできている。 何をしたいのかねー。ちなみに113番はidentやauthで使われます。FTP等でファイルをダウンロードするときにident認証を使うところがあるらしいが、Webサイトのページを開いただけでこんなに送ってくるものかねぇー・・・ |
2002年7月2日 19:36:17
最近、多い2099番アクセスはどうも以下のソフトの管理用ポートをねらってるのかなーなんて思ってみたり。 http://nwizard.ashisuto.co.jp/outline/index_v41.htm http://nwizard.ashisuto.co.jp/outline/faq/faq.htm#dousa-A7 ここのQ&Aにそのあたりが書かれてます。 なぜか、210.199.215.14から、このアクセスが不定期にあるんだよね。なんだろ。何かのいやがらせか(笑) ※Webの巡回に2099番なんて関係ないからなー、意味不明である。 そういや、最近1433番のアクセスも多いね。最近、パッケージソフトでMSDEって多いから、それねらいかな。 ウワサの次期OSに似た物が標準搭載されるらしいので、今後増えるかもなー(笑) |
2002年6月15日 13:24:29
受け付けないパケットのログを取るようにしてみたが、これが膨大な量のログになっている。自分に関係ないパケットがかなり飛んできていることがわかった。他のプロバイダ使っていたときはそんなのよく知らなかったから確かめてないのだけど、これってYahooBBがケーブルテレビと一緒でLANと同じネットワーク形態になっているからなのかも・・・。 たとえば、宛先が239.255.255.250:1900のログが大量に残っている。これはIPアドレス239.255.255.250の1900番ポートへの通信ということだ。ポート番号1900番(UDP)はMSMessengerのポートらしい。俺はそんなの使ってないが・・・。 ではIPアドレス239.255.255.250とは何か?当然、自分のマシンはこんなIPではない。 実はこれはブロードキャストを表すIPで、ここにパケットをとばすと、同じネットワークアドレスのマシンに同報通信されるというものである。 ブロードキャストに使うIPには決まりがあるらしい↓ http://www.zdnet.co.jp/help/howto/win/win2000/0010exchange/03/14.html これまたよく飛んでくるIGMPパケットについても少し書いてある。 IPからかえってきたホスト名がYahooBBの他のユーザーの物だったので、その人がMessengerを立ち上げているのだろう。 Linuxのsyslogの514番(UDP)ブロードキャストも飛んできてたな。 それってよく知らないけど大丈夫なのだろうか。サービス名からするとすごくやばそうだが(笑) ※後で見てみたらルーターのログを送る機能などで使われてるみたいだけど、受け取ったやつを処理すればログが見れてしまうのだろうか(笑)それになぜブロードキャストで送るのか?! |
2002年6月8日 19:42:50
メールの宛先のユーザーがいない場合に、送り主にエラーメールを返すが、その時のメールに表示されるホスト名を指定するのがbouncehost。 このファイルが無い場合はmeファイルにかかれているホスト名を使う。 meファイルにはホスト名を指定するので、xxxx.a-tak.comという形の物を入れなくてはいけない。 bouncehostを指定していない場合はMAILDAEMON@xxx.a-tak.comというアドレスからメールが送られるような形になるので、そういう風にしたくない場合に使う。 |
localsファイルはどのドメインからのメールをローカル処理とするかをしているするファイルらしいです。 これを指定しない場合meファイルが使われます。ドメインなんで、ホスト名まで指定しているmeファイルを使われては困るということで、localsファイルに記述しましたが、メールが届かなくなりました。 ・・・って同じ間違い前もやってますね。 localsファイルを使ってはいけないようです。 |
スクリプトの最後の行は必ず改行しないと、うまく動かないことがあるみたい。 pop3メールのログをとるスクリプトを書いたが最後に改行を入れてなかっただけで、どうやってもログをとってくれないことがありました。 |
2002年6月5日 21:33:14
勝手に型変換がかかるのはVBだけかと思ってましたが、Javaでも面倒を無くすため(?)勝手に型変換が行われるようです。 しかし、勝手に型変換されるのは小さい物から大きいもの(intからlongなど)だけで、縮小変換に関しては(int)などのように明示的キャスト指定しないといけません。ただ、縮小変換は気をつけないと思いも掛けない結果になります。 自分は小数を含むdouble型の数値を整数にしようと思い(int)を使いまくってたところ、思いも寄らぬ結果になりました。たとえば、
もし今回のように、無理矢理double型からint型に置き換えると、int型に入れることが出来る最大値が入ります。2147483647というのがint型で表せる一番大きい数値です。 ですから、本来は小数点以下を切り捨てたいときはMath.floorなどを使うべきでしょう(^_^) 数値リテラル(ソースに直に書いている数値)にも型があります。上の例のように小数点を含めると、その数値はdouble型として扱われます。ためしに上のソースで小数点以下の.0を外すとエラーになります。小数点以下がない数値リテラルは整数型として扱われ、整数型では最大でlong型の9223372036854775807までの数値しか表せないからです。 また、足し算、かけ算などで範囲を超える数値になってしまった場合も、予想もしないことになります。たとえば、
なぜこうなるか、すぐには私も説明できません(笑)。 数値をビット列にしたときに、どういう結果になるかを考えればたぶんわかるでしょう(笑)Javaのint型は32ビット符号付きです。 31ビットで数値を表し、1ビットで符号を示します。関数電卓とかあれば、2進数モードで1を31個打ち込んで10進数に変換すれば、2147483647になります(^_^) 確か、最初か最後のビットに「1」がついているときにマイナスだ、という判断になっていたと思います。 10進数で2147483647を表すビット列に1を足したときにどのようなビットの並びになるか見ればわかるでしょう。 面倒なので、ここではやりませんが(笑) 今回、FreeTalkにあるヴァナ・ディール時間表示アプレットを作っていてハマりました(笑) Date.getTimeクラスはミリ秒単位の数値を返してくるので、とても大きな数値を扱うことになります。 そして、間違った範囲にたいしてint型でキャストを掛けていたので、見事に今回の罠に引っかかったわけです(笑) まあ、いろいろ作ってみると勉強になりますね(^_^) その点JavaScriptは適当に処理してくれるので楽だったわけですね。 |
2002年5月13日 23:33:11
Interfaceって実装ができんAbstractなクラスみたいなものか?じゃあ、いらん!とか思っていたが、いろいろ調べてみると必要性が何となく分かってきた。 機能は一緒だけど用途が違うわけです。インターフェースだけにインタフェースとして使うわけです・・って訳分からんか。 たとえば、下の例。 マイクロソフトのwmv形式に対応したムービー再生ソフトを作ることを想像して欲しい。 wmv形式を再生するにはMicrosoftクラスを継承して、自分でクラスを作らないといけないとする。 playメソッドを作って、それを実行することでムービーが再生されるようなクラスにしてみる。
このPlayerクラスはwmvクラスと密接に関係を持っている。引数の型がwmv型だからだ。これじゃ、他の用途に使えん!! たとえば、QuickTimeを再生させたくなった場合、QuickTime形式を再生するにはAppleクラスを継承して、自分でクラスを作らないといけないとする。
こういう時はポリモーフィズムで実現するのがベストだが、親のクラスが違うから、継承によるポリモーフィズムは使えません。 無理矢理、MicrosofとAplleクラスのソースを書き換えて、その上にMovieというクラスを作ってしまう? それもありかもしれませんが、MicrosoftやAppleクラスがMovieに特化したものでなければ、なんだかオブジェクト指向ぶちこわしな継承構造を作ってしまうようでよろしくありません。そもそも、その二つのクラスのソースがさわれない場合はどうしようもありません。 じゃあ、あきらめてそれぞれ、別々にクラスを作って、メソッド作って、・・って似たようなプログラム二つ作るのと同じなんじゃ?、ということなるでしょう。 そんな時どうするか、共通のインターフェースを作成するという手法を使います。
wmvとQuickTimeのplayメソッドはIplayインターフェースのplayメソッドを実装するという形になる。
・・・という心配は必要ありません。インターフェースのルールで、インターフェースをImplementsした場合は、そのクラスは必ずインターフェースに定義してあるメソッドを必ず定義しないといけないようになっているからです。 また、インターフェースはいくつでも実装(implements)できるので、今回のように既に継承を行っているクラスでも問題なく適用できます。 うまいこと出来てますね。 Playerクラスを見ると最初の例と違って、Iplayインターフェースを実装しているクラスならば、何でも受け取れるので、mpegだって、RealPlayerだってOKです。 まあ、こんな感じでインターフェースだけに、二つ(とも限らない?)のクラスをつなぐインターフェースとして意味があるわけです。 Abstract Classにこんな芸当はできません。やはり、継承の為のひな形であるAbstract Classとインターフェースの用途は大きく違います。 |
2002年5月11日 23:24:11
外からコネクションを掛けてくるものを防ぎたい場合は「-y」オプションを使う。 -yはSYNパケットを示すので、これをDENYしておけば、よろし。 以下を参照しました。 http://www.gcd.org/sengoku/Welcome.ja.html http://hp.vector.co.jp/authors/VA000770/docs/NikkeiLinux00-11/Welcome.ja.html もちろんWebとか立てるなら、そこに関するSYNは拒否したらダメだぞ(^_^) |
ステルススキャンについて調べていたところ、こんなページ見つけました。 なるほど、そういうことなのか。 為になります。「家庭内LANハードウェア以前」が笑えます(^_^) http://www.geocities.co.jp/SiliconValley-Cupertino/5128/index.html |
最近のバージョンのanalogは、検索文字列が文字化けしたような形になって、何で検索してうちのサイトに来たのかわからない。 %df%deとかいう文字の羅列はURLエンコードという形で日本語をアスキー形式に置き直したもの。 これを簡単に日本語に直す裏技を発見!(笑) やり方はYahooで何か適当なキーワードで検索した後、URL欄の「query?p=」の後に、解読したい文字をペースト!あーんどEnterキー それを日本語にデコードして、Yahooが検索してくれるので、結果を見れば元々の文字が分かります(^_^) あ、これnamazuでも一緒のこと出来るや。 |
2002年5月11日 0:27:26
思わずrootで、rm -frでanalogのフォルダ消しちゃいました(笑) 最近のanalogは日本語をURLエンコードのまんま(?)で出力しちゃうし、クロスサイトスクリプティング問題も見つかってるので、AWStatsに変えてみました。 日本語で紹介している素晴らしいサイトがあったので、それを参考にAWStats4.0を入れてみます(ここは3.0のインスト方法なので、4.0とはちょっと違うみたいですが)。 「LinuxとフレッツISDN/フレッツADSLによるInternet Serverの構築」 http://www.ryu.dyn.to/ http://www.ryu.dyn.to/Tools/AWStats.html 結局、バージョンが違うので英語のマニュアルを元に設定して、とりあえず、画面は出るようになりましたが、さっぱりログを拾ってこずに、すべての値が0の状態(涙) 今日はひとまずこれにて終わる。 画面がかっこいいので使えるようにしたいんだけどね。 (でも、ほんと日本語表示が直訳です。「いつ」、「だれ」って(笑)) |
2002年5月9日 22:24:14
inputのデバイス指定はパケットが入ってくるデバイス outputのデバイス指定はパケットが出て行くデバイス 内から外のみを許したい場合は ipchains input -i 内側デバイス名 -j ACCEPT ipchasins forward -i 外側デバイス名 -j ACCEPT ipchains output -i 外側デバイス名 -j ACCEPT という感じで設定する。 最近、Linuxサーバーブーム(笑)でありがちな以下のような構成の場合、
input -p tcp --dport http -i eth0 -j ACCEPT output -p tcp --sport http -i eth0 -j ACCEPT outputも指定しているのは、インターネット側からリクエストされた接続に対し、レスポンス(返答)を返さないといけないため。 ルーター専用機であれば、このあたりは自動でやってくれるはずだが、Linuxはちゃんと設定しておかないとだめ。 サーバーまでではなく、クライアントマシンまで届く必要があるパケットはforwardも指定する。DNSが参照できるようにする。 input -p udp --sport 53 -i eth0 -j ACCEPT forward -p udp --sport 53 -i eth1 ACCEPT output -p udp --sport 53 -i eth1 ACCEPT forwardとoutputのデバイス指定は出力先のデバイスを選択する。今回はクライアントマシン側のeth1デバイスを指定。 それと、最後のoutputの時のソースIPはeth1のIPになるんだね。逆に内から外だと、ソースIPはeth0のIPになります。 IPを元にフィルタリングしている場合は注意。 |
ipchainsの-lオプションでsyslogに出力されるログについては以下の「パケットログの記録」の章に説明されている。 http://www.linux.or.jp/JF/JFdocs/IPCHAINS-HOWTO-4.html#ss4.1 ここを見て分かったが、ログにあるPROTOはプロトコルを表す番号で、対応するプロトコルは/etc/protocolsに入っている。ま、こんな感じ。
ポート番号が65535の物というのはプロトコルがTCP,UDP,ICMP以外の物はそうなるみたい。ICMPではICMPのタイプを表す。 |
2002年5月9日 1:38:25
この前からコンテストが始まった「Terrarium」をやってみようかなーということで、試してみるがさっぱり他の生物が自分の所に来ない。 たぶん、ファイアウォールの設定だろうなーということで、適当な設定のファイアウォールをある程度ちゃんとやり直すことに。 ipchainsで「-l」オプションをつけて、ログを見ながらポートをあけて、普通にインターネット環境とサービスの公開は出来る状態になったが、テラリウムで使用するポートを開けても、やっぱり生物はやってこない。 確かにポートの穴は空いてるのに、ログにすら出ないと言うことは何も来ていないということか?!と思い、ちょっと自分の勘違いに気づきはじめる。 「もしかして、内向きの接続ってipchainsだけではダメなのか?」ということで、会社の友人に聞くが、やはりダメだということで(笑) ファイアウォール内のマシンに外からセッションをはることは、基本的には出来ない」らしい・・ Linuxではipmasqadmというものがどうも必要らしい。 これで、あるポートに通信が来たときに、指定したマシンに転送をかけるようだ。IPフォワーディングで同じ事が出来ると思ってた(^_^) 内部ネットワーク内のサーバーに外から接続できるようにするには、ポートフォワーディングを行うこと。 確かに聞いたことあったけど、NATとなんか混同してたみたい。さらに恥の上塗り(笑) ついでにIPマスカレードはこういうことだったんですね。 #よく読んでたここにもしっかり書いてあった。そういやNATと同じだと思ってたから読まなかったんだった(汗) |
Vineの場合/etc/servicesの中に記述がある。 ここのサービス名を書き換えると、netstatなどを実行した際にその名前で表示される |
2002年5月8日 0:05:08
下で紹介したページがなぜかアプレットのエラーで使えなくなってたので、他を探してみた。 こちらのサイトに使い方と共に、ポートスキャンをかけくれるサイトの紹介がありました。 鷹巣の自宅サーバー http://sakaguch.com/top.html http://sakaguch.com/ServicePort.html Sygate Online Services http://scan.sygatetech.com/ ここって、よく使うポートだけじゃなくて、1番から順番にしらみつぶしにポートスキャンすることもできるという強力なサイトです。 当然、自分自身のIPにしかスキャンできませんよ。 |
2002年5月1日 1:12:54
自分のファイアウォールの設定がちゃんと出来ているかは、内部LANからではわかりません。外からポートスキャンを掛けてもらえば一目瞭然ですが、毎回友達に頼んでスキャンしてもらうのも大変。 で、ポートスキャンしてくれるページを見つけました。 これは便利です。 パーソナルセキュリティー研究所 http://210.143.99.143/~p-sec/pscan.html |
2002年4月29日 0:18:23
たとえば、固定IPではない環境で、Linuxでルーター兼ファイアウォールを構築する場合は、ローカルのIPは分かったとしてもリモート(インターネット側)のIPは時々変わってしまう。 そんな時は、以下のようなスクリプトでリモートIPを取ってきて、ファイアウォールのルールに適用すれば良い。 (サンプルは以下のリンクにあり。ファイアウォール構築目的なら、これをそのまま使った方がいいのかもしんない)
grepは文字列を検索するのに利用されるコマンド。 awkはここ。 これで、ちゃんとしたファイアウォールが作れるね(^_^) ちなみにRedHatLinux社のページに、これを使ったファイアウォールのルール設定スクリプトがある。 http://www.redhat.com/support/resources/tips/firewall/firewallservice.html |
|
2002年4月26日 23:09:11
UMLとかオブジェクト指向とか為になります。 http://www.mamezou.com/ 最近、さっぱりJava触ってないです。 残業しまくりなのと.NETをよく使ってるので。 |
会社からどうしても家に繋がらなかったのだが、なぜかnslookup2発目で名前解決成功、wwwにも繋がるようになる。 なんでだろう? |
2002年3月25日 0:42:21
Jamchiってどっかの言葉で「駅伝」を意味する言葉らしい・・・ ほんと、どうでもいいんですけどね。 |
2002年3月10日 13:38:54
セキュリティーホールが見つかったようなので、アップグレードしてみる。 以下を参照して行ってみた。前回は、sshのインストールの方法のリンクを貼っていたので、なんか勘違いしてたのかも。 RPMでインストールしようとしたら、opensslのバージョンが違うとか、なんとかかが無いとか言ってきた。以下のリンクを元にそれも落としときましょう。 http://www.unixuser.org/~haruyama/security/openssh/INSTALL_nihongo.txt |
2002年3月7日 21:48:41
メール送信の激遅現象の原因はこれかも http://www.debian.or.jp/Lists-Archives/debian-users/200106/msg00261.html qmailはhostsファイル見ないらしい・・・・ tcpserverに「-H」オプションをつけるといいみたいね というわけでtcpserverのマニュアル日本語訳 -Hをつけるとリモートホスト名を調べないらしい。何かあったときに危険と言えば危険だな・・・。 でも、かなり激早に。というか、最初dynodns時代に早かったのはなぜ? |
2002年3月5日 2:11:16
ホスト名を変更してからか、またメールの送信まで一分近くかかるようになってしまった。 やっぱり前回のリンク先にあった情報のようにネームサーバーの設定がまずいのかも。 Received: from unknown (HELO xxx) (x.x.x.x) by yahoobbxxxxxxxxxx.bbtec.net with SMTP; ってメールのヘッダに出てる。普通はunknownになっていない。 自分はネームサーバーは立ててないので、そこをどのようにするか考えないといけない。 |