サーバの移管覚書 その1

サーバを移管するためのメモ書き

1、移管するハードを手に入れる
ハードが無ければ移管もできないので、まずは今回はハードを手に入れる。今回は知人からタダで譲り受けたFujitsuのマシンにサーバを移す。マシンスペックは次のとおり。

CPU AMD-K6-2 500MHz
チップセット Silicon Integrated Systems社製 SiS530/5595
メモリ 384MB(256MB+128MB)
HD 80GB(Deskstar 7K80に入れ換え)

チップセットが古くてHDの性能は十分に発揮できないけど、今までのマシンに比べたらたぶん神のような速さだな、こりゃ。

ちなみに今のサーバはこんな感じ。
CPU Cyrix 6×86-PR200MX(166MHz)
チップセット ALiだったような気がする
メモリ 256MB(128+128MB)
HD Quantum 4GB(5400rpm)+IBM13.7GB(7200rpm)
グラフィック ET-6000(TsengLabs)

2、OSをインストールする。
Debianはチップセット内蔵のグラフィックがうまく認識されず断念。ま、通常Xは使わないんだけど、なにかと無いと不便なのも確かなんで、今回もVineLinux3.2でいくことに決定。

to be continue…

もっと速く動いてくれ

くだらんたわごとばかり続いていましたが、久々にサーバネタです。

最近表示されるまでもたもたする感じが出てきてます。エントリ数とアクセス数が増えているせいかも知れません。サーバの入れ替えはおっくうがってまだやっていないのですが、ちょっとやな感じです。付け焼刃でもどうにかならんものかと思っていたらcles::blogのチューニング – cles::blogという素敵なエントリを発見。

このサーバはCPUがボトルネックになっているのは火を見るより明らかなので、MySQLをチューニングしてCPU負荷を下げてやれば効果があるかも、というか、絶対に効果ありのはず。

ということで早速試してみました。cles::blogのチューニング – cles::blogではきちんとボトルネックを調べて対策されていますが、めんどくせーので一番効果のありそうなクエリキャッシュを有効にすることだけやってみました。キャッシュは経験上効果絶大だもん。

設定は簡単簡単。要はMySQLにキャッシュクエリのパラメータを渡してMySQLを立ち上げるだけです。Vineの場合、起動時に立ち上げるサービスのシェルスクリプトは、/etc/rc.d/init.d/のディレクトリの中に大体入っています。MySQLの起動スクリプトも例にもれずこの中にありますので、これを少々いじります。

1、エディタで/etc/rc.d/init.d/mysqlを開きます。(編集する前に、念のためコピーを取っておくと幸せになれるかも)

shell>vi /etc/rc.d/init.d/mysql

2、次のところをパラメータを渡して起動するように修正します。

$bindir/mysqld_safe –datadir=$datadir –pid-file=$pid_file >/dev/null 2>&1 &

→ $bindir/mysqld_safe –datadir=$datadir –query_cache_size=16M –query_cache_type=1 –pid-file=$pid_file >/dev/null 2>&1 &

パラメータについてはMySQLマニュアル6.9.2. クエリキャッシュの設定を参照ください。俺の場合はキャッシュサイズとキャッシュタイプの設定だけにしておきました。

3、修正したらMySQLを再起動します。

shell>/etc/rc.d/init.d/mysql restart

念のため、apacheも再起動したほうがいいかも。

さて、結果は…

おおおっ、なんとなく速いぞ。NucleusのpluginでNP_Cacheと言うのがありますが、NP_Cacheを入れたときくらいに速くなりましたね(今はとある事情でNP_Cacheは外してます)。両サイドのJavaScriptを使ったものは速くなりませんけど、エントリ本体自体はかなり速く表示されるようになりました。

めでたしめでたし。

Vine3.2アップグレードで大チョンボ

今しがたまでサイトにアクセスできなくなっていた。原因はVine3.2へのアップグレードミスだ。
何をどうしてどうなったのかと言うと…

まず、/etc/apt/sources.listの該当箇所を3.1から3.2に書き換え、apt-get update、apt-get dist-upgradeを実行。まぁ、これは全然問題なし。次にカーネルも変わったんで/etc/lilo.confを修正してliloを実行。これも問題なし。そしておもむろに再起動したんだけど、さっき見たらサイトの閲覧が出来なくなっていた。

このページにはデータがありませんとか真っ白なページが表示されたりとか…

おかしいなぁと思い、PHPの設定を見てみると、アップグレードの際、PHP4からPHP5にバージョンがあがっていた。

これだ!

と言う事でphp.iniの設定を修正し、これで大丈夫だろとサイトを見たのだが真っ白なページしか表示されない。

phpやapacheの設定ファイルを穴があくほど見直したんだが、特段おかしいところはない。頭に来てphp4に戻してやることにした。

rpm -qa|grep php でインストールされているPHPを見てみると…あれれ?php5とphp5-pear,php5-apacheは入っているんだが、php5-mysqlがどこにも見当たらない。なんでじゃ。

つーことで、apt-get install php5-mysqlでphp用のmysqlモジュールを入れてやった。これでやっと正常に動きますた。めでたしめでたし。

ああ、しかし、こんなことも気が付かないなんて、マヌケの極みだな。

Vine3.2リリース

Vine Linux Home Pageにあります通り、Vine3.2がリリースされています。

蛇足ながらアップグレード方法を書いておきます。

1、vi等で /etc/apt/sources.listを開く。
2、3.0や3.1の記述を3.2に変更する。
3、apt-get update を実行。
4、apt-get dist-upgrade を実行。
5、/etc/lilo.conf を編集。
6、lilo を実行。

これでアップグレード完了です。詳しくはマニュアルを見よ!。

SSH不正ログインアタックの状況

さて、このサーバはLinuxで動いているわけですが、外部からもいじりたい時があるので、SSHを動かしています。

ポートを開いていると、どうしてもそこに向かってアタックをかけてくる人がいます。5月にSSHから不正ログインを試みたサイトは50サイト、回数は3019回にのぼっています。一日平均100回近く来ているわけです。300回近く試みている所もあります。

SSHを動かしているとはいえ、こちらのとおり、既にパスワード認証は行っていないのでいくらスクリプトによるログインを試みても無駄なのですが、あまりにも醜いので、管理者の参考の為、アタックしてきたIPは晒すことにしました。:-P
回数  IPアドレス
289 211.173.127.254
266 210.95.56.202
258 210.115.170.19
192 62.101.247.188
183 219.117.250.203
181 61.100.9.208
146 202.181.98.157
127 209.152.179.26
123 211.79.9.65
107 221.242.50.154
97 62.15.231.19
91 218.54.192.148
90 67.138.58.10
84 59.150.165.92
72 24.130.154.209
70 61.151.251.86
56 217.11.136.238
48 216.174.135.74
48 221.186.17.44
43 203.234.238.119
40 66.255.107.151
36 210.87.136.171
32 63.241.7.10
29 218.84.59.107
27 68.152.44.4
24 202.60.240.2
23 220.64.74.55
22 210.188.243.211
20 82.141.157.130
19 202.42.72.28
18 61.129.50.105
16 211.247.159.208
15 211.36.253.2
15 211.58.214.130
11 220.65.5.100
9 202.67.156.178
9 210.206.30.139
9 211.114.177.138
9 218.108.89.205
9 66.146.155.148
9 81.207.58.231
8 202.157.182.2
8 202.76.93.145
8 210.183.219.136
8 219.238.190.166
5 220.115.251.1
4 219.138.184.213
4 60.8.7.19
1 210.169.196.87
1 211.72.8.196

したいの?

といっても、スケベ系の話じゃないよ。

ここしばらく不正ログインしようとしてるやつが多いらしく、ログが派手なことになってます。そんなにしたいんですか?不正ログイン。

中見たって、面白いものないですよ。かっちょわりー自作スクリプトとかテキトーなディレクトリ配置とかプププな設定とか、ハッカーにとっては笑えるネタはあるかもしれませんが、それだけ。

私、パスワード認証じゃないの。そんなんじゃ入れたくないしテクニックも満足できないわ。だからあなたのそれじゃだめ。もっとやさしくしてくれなきゃいや。そうじゃないとあなたを受け入れられないわのよさ。

と、この鯖子が言ってるようですので、よろしくお願いしますね。

miniDNSおまえもか

先ほど2、3時間miniDNSのサービスが止まってしまっていた。めったに落っこちることのないminiDNSなんだが、こういうこともあるさ。

しかしminiDNSは非常にそっけないところなんで、いついつ止まりましたとかといったアナウンスは一切ない。これもまた一興であるが、ちょっとminiDNSのページを見に行ったら驚愕のアナウンスがあった。

注 意
残念ながらたいへん多くのspammer(迷惑メール業者)が本サービスをご利用のため、新規の無料サブドメインの受付は終了いたしました。すでに登録されている無料サブドメインについては、引き続き管理は可能ですが、こちらも近い将来廃止される可能性があります。長期的には独自ドメインをご用意下さい。ご不便をおかけしますが、ご理解とご協力をお願いいたします。

がーん、miniDNSおまえもか。どうすりゃいいんだよ。一部の心無い人間のせいで、ありがたいサービスがなくなっていくのはとても腹立たしい。

対策しなければならなくなるんだろうかなぁ。困った困った。

ポートスキャン対策してみた

またまたポートスキャンの話でなんだが、今度は12.43.53.196のアドレスから延々とポートスキャンがかかっている。19日の14時頃から先ほどまでに388回もかけられているので、もううんざり。

ということでLinuxでRouterを作る – iptablesの設定というページを参考にiptablesの設定に追加ルールを加えてみた。

加えたルール

#—ステルススキャン対策
# Halfopen scan
/sbin/iptables -N hopen-scan
/sbin/iptables -A hopen-scan -m limit –limit 1/s –limit-burst 4 -j RETURN
/sbin/iptables -A hopen-scan -j DROP
/sbin/iptables -A INPUT -p tcp –tcp-flags SYN,ACK,FIN,RST RST -j hopen-scan
/sbin/iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -j hopen-scan
# Stealth scan
/sbin/iptables -N stealth-scan
/sbin/iptables -A stealth-scan -j DROP
/sbin/iptables -A INPUT -p tcp ! –syn -m state –state NEW -j stealth-scan
/sbin/iptables -A FORWARD -p tcp ! –syn -m state –state NEW -j stealth-scan

いやぁ、よくわかんないけどうまくいってるのかなぁ。対策後ポートスキャンがぴたっと止まった。やってみるもんだな。と思ったのはまたまた俺の勘違い。ポートスキャン延々と続いております。なんなんだよオマエ(T_T) 。ハーフスキャンを完全に拒否することって出来ないのかなぁ?

apacheのエラーメッセージをカスタマイズ

apacheのエラーメッセージは、そのままにしているとアクセスされたファイルが存在してるのかとかアクセス制限されているのかとかポート番号とかいろんな情報を吐き出してくれる。

それはそれでいいんだけど、あまりにも味気ないし不心得者にとっては有効な情報だったりする訳で、ちょっといじってみようと思い立ちいじってみた。もともと俺のセンスはうちわみたいなレベルなんでカッコよくは作れなかったが、不必要な情報は流さないという目的は達成できたと日記には書いておこう。

参考サイト
Apacheのエラーメッセージを自作する
Apacheのエラーレスポンスをちょっと工夫して書く方法

本日のポートスキャン

前の奴がなくなったと思ったら、今度は違うところからのポートスキャンが延々と続いている。前のところに抗議のメールを送ったら、「当方は30分間隔でRSSフィードを取ってきているだけだ」との回答があったのだが、snortがRSSフィード取得をポートスキャンと認識するなんてことあるんだろうか?

いずれにせよそこからのパケットは破棄されてしまうから実害はないだろうが、このように執拗にやられるとなんとなく気分が悪い。しかし、こういったことの対策を考えるのもまた楽しいことも事実。必要は発明の母って例えはおかしいが、おかげで色々勉強させていただいた。ある意味感謝しなくてはならないな。

ポートスキャンもアクセス拒否の対象に

いままでsnortで不正アクセスが検出された場合そのアドレスからのアクセスを拒否するように設定していたのだが、このたびポートスキャンをかけてきたところに対してもアクセス拒否するように設定しなおした。あわせてアクセス拒否もREJECTからDROPに変更した。ステルススキャン(ハーフスキャン)に対してはまだ対策していないが、見られてもアクセスできないからよしとしよう。

ワームなどにやられているところからのアクセスも拒否になる。不幸にしてワームに感染しているのに気が付かず当方に訪れた場合、突然アクセスできなくなるのでご了承を。アクセス拒否されたところは永久ではなく一定期間のちアクセス解除となる。

まぁ、本来別にここまでやる必要はないんだろうけれど、俺のスキルアップのためにあれこれやってみているといったところだ。

iptablesをきちんと設定してみた

実をいうと、今まで不正アクセスされた場合アクセス拒否にするだけできちんとしたiptableの設定をしていなかった。ADSLルータである程度ブロックされているから、サーバ側での設定はあまり気にしていなかったからだ。

先日ものすごい数のポートスキャンが検出された為、思い立って設定してみた。まぁ、設定の方法はiptablesでググって出てくるような標準的な設定だけど。

そしたら気のせいかもしれないがアクセスが速くなったような気がする。もしかしたら結構いろんなパケットに反応してたのかなぁ。いままでREJECTしてたものをDROPにしたのが良かったのかもしれない。不親切かもしれないがいらん物は「捨て」だな、やっぱり。

www.rojo.comはなんのつもりだ

ついさっきまでwww.rojo.com(66.180.233.5)から延々とポートスキャンされていた。なんと驚くなかれ15:25:13から次の日01:30:39までの約10時間に渡り611回もスキャンしていただいた。これでは感謝の言葉もない。そんなことやったってなんにもでねーよこのタコ。

とっくの昔にパケットはREJECTされてるんだからやっても無駄なはずなんだが、Logを見ると一定周期でスキャンしてるから何かの操作ミスで自動的にスキャンしてたんだろうと思う。しかしそういうことをRojo Networks, Inc.ってところでやっていいのか?どうなんだ?100文字以内で明確に答えなさい、って気分だな。

ポートスキャンかけられまくり

さっきログみて驚いた。

なんとあるところから5時間近くもポートスキャンが続いている。最初のノックは 06:04:23 でその後ちょっとお休みしてたようだが、15:25:13から今もずーっとチャレンジしてるようだ。

既にというか自動的にiptabelsでそこからのパケットはREJECTしちゃってるから実害はないんだけど、そろそろやめたらどうなのかね。なにか恨みでもあるんだろうか。こういう人って怖いわ。ポートスキャンかけても何も応答がないはずだから何が楽しいくてやってるんだかさっぱりわからん。こんな貧相なサーバアタックするのはやめてくれ。

まだ続いてる…頭きたのでIPさらそう。www.rojo.com(66.180.233.5)ってところだ。みなさんもご注意あれ。おいおい、まだ続いてるよ。何なんだよオマエ。コンピュータ壊れてんじゃないのか?それともハッカーにのっとられたのか?ちょっと悪質だな、これ。多分機械が自動でポートスキャンかけてるよ、これ。抗議メールしてみっかな?でも英語サイトだしなぁ・・・自動翻訳のちょーおかしな英語で送ってやるか。

MySQLでエラー

データベースをBarkleyDBからMySQLへ移行させほくそえんでいた俺。しかし思わぬ落とし穴が…

いままで全く気が付いていなかったのだが、「最新のコメント」が表示されなくなっていた。再構築時にUse of uninitialized value in concatenation云々と エラー吐いているなと思っていたのだが、エントリはきちんと保存されているので気にしていなかったのだ。

最初はテンプレートの記述が間違っているのかと思い試行錯誤を重ねたがダメ。ほとほと困って探しまくったところ、解決策が見つかった。

それによるとMySQLの設定をお馬鹿さんしていたらしい。解決策のとおりやったらきちんと表示するようになった。めでたしめでたし。