Linuxの最近のブログ記事
月曜日に、会社のプロバイダから連絡が来た。
どうやら、2月24日に会社のIPアドレスからのDDos攻撃されたらしい・・・。
該当のサーバをネットワークから切り離して確認してみると、テスト用として開発業者に渡しているサーバのpostgresユーザを乗っ取られていて、/tmpの中に攻撃用のスクリプトを置いて動かしていたみたい。
ログを追ってみると、2月9日からこのセキュリティ侵害が発生していた模様。
テスト用サーバはDMZエリアに設置していて、通常、SSHの鍵認証のみの許可の設定にしているんだけど、開発業者側のSSHアプリケーションで渡したrsa鍵が読み込めなかったから、このサーバだけパスワード認証にしていた気がする。
でもさ、postgresのパスワードが「postgres」のままで動かしていたって・・・ありえねぇ・・・。
プロバイダ経由で言って来た人と、直接クレームを言ってきた人。
ご迷惑をお掛けしてしまって、本当にスミマセン。
会社内で”ネタ収集の場”を作ることになりました。
wiki文法が分かれば、pukiwiki程度で済む話だけど、俺もwiki文法は分からないので、「どうやったら皆が飽きずに情報提供をしてくれるか?」を考えた結果、UsagiProjectのMyNETSを使ってSNS的なサイトを作ることにしました。
MyNETSは、OpenPNE(オープンピーネ)から派生したSNSエンジンらしい。
インストールしてみて分かったが、mixiにそっくり。
つか、まんまmixiだろ・・・。
オープンソースで提供されていて、中身はphpなのでカスタマイズする事は可能と思うけど、PHP初心者+αのスキルしかない俺にとっては、既に完成されたソースの一部をいじってリンク先ひとつ追加する事ですら時間が掛かると思う。
まぁ、社内利用だから期限もないし、勉強がてらやってみるか。
週末、部屋の模様替えをした際に、サーバの電源を久しぶりに落としてみたら、それっきりで立ち上がらなくなってしまった・・・orz
おそらく、オンボードのVGA部分が逝ってしまったらしい。
また、このマザボも人から譲り受けたものだし、壊れたからと言って財布は痛くはないけど、サーバが起動しないのは痛い!
変わりに動かすマシンを探していたら、前回3Dデスクトップで遊ぶためにFedora8をフルインストールしたノートPCがあるでわないかwwwww
幸い、HDDからのデータ吸出しは問題なく成功したから、さっそくFedora8を臨時サーバとしてセッティングする。
Apache、perl、PHPはFedora6からの相違点も無くRPMでサクッと設定完了。
問題はPostgreSQL・・・。
Fedora6の時にRPMで導入していたバージョンは「 postgresql-8.1.10-1.fc6.i386.rpm」
対して、Fedora8のRPMは「postgresql-8.2.5-1.fc8.i386.rpm 」
これもRPMでサクっと設定しようと思って、Fedora6の時のdataディレクトリをコピーしてpg_ctlコマンドを叩いたら、
「古いバージョンのデータベースフォーマットが見付かりました。」
とか注意されて起動出来なかった。
調べる時間も惜しいので、今回はPostgreSQLの公式サイトから、8.1系の最新である「 8.1.11」をソースからインストールして動かしています。
古いバージョンのデータベースからのアップグレードの方法は存在すると思うけど、時間が出来たら調べてみよう。
Apache2でセッション数制限や、帯域制限を行うには、mod_cbandと言ったモジュールを使うらしい。
FedoraCore6には、yumでmod_cbandが提供されているので、さっそく入れてみた。
yumなので、インストール手順は省くが、/etc/httpd/conf.d/の中にmod_cband.confファイルが作成される。
mod_cband.confの中の、VirtualHost部分を修正する。
※今回は、ダウンロードツール対策として、
1.同じ人からのファイルのアクセスは、1秒間に10個まで。
2.自宅で動いているので、Apache自身へのアクセスを20個まで。
とします。
DocumentRoot /var/www/html/
ServerName jhh-style.homelinux.com
CustomLog /var/log/httpd/access.log combined
ErrorLog /var/log/httpd/error.log
RewriteEngine On
RewriteOptions inherit
#
# # Maximal 1024kbps speed for this virtualhost
# # Maximal 10 requests per second for this virtualhost
# # Maximal 30 open connections for this virtualhost
※Apacheへの接続に対して最大の転送速度を1024kb/s。一秒間に20リクエスト、同時接続数を5に制限。
CBandSpeed 1024 20 5
#
# # Maximal 10kB/s speed, 3 requests/s and 2 open connections for any
# remote client
※同一のIPアドレスからの接続対して、最大の転送速度が1024kb/s。一秒間に10リクエスト、同時接続数を 5に制限している。
CBandRemoteSpeed 1024kb/s 10 5
#
# # Maximal 20kB/s speed, 2 requests/s and 3 open connections for
# remote
# # clients from class googlebot_class :P
# CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
最後に、Apacheを再起動すると完了。
ためしに、自宅からダウンロードツールを使って、連番の画像ファイルを根こそぎダウンロードしてみると、ファイルはダウンロードされずに、0バイトの空のjpgが複数作成されただけでした。
データセンターに運用委託してあるサーバのデータを他のサーバにバックアップする為、バックアップの方法論や処理に掛かる時間等の資料を作らなくちゃならなくなった。
今回で言うと、バックアップはrsyncで行い、データの転送は管理用のネットワーク(100MB)を使用する。
理論値は、「データ容量/ディスク回転速度」と計算すればいいのだが、ディスク回転速度ってどうやって調べるんだ?と思い、ググッてみると「hdparm」というコマンドで判るらしい。
バックアップ元の各サーバで調べてみると、
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 188 MB in 3.02 seconds = 62.30 MB/sec
とまぁ、100MB/secとは行かないものの、なかなかの転送速度が確認できた。
このぐらいであれば、1GBのデータを100MBの回線を使って転送しても、1024(MB)÷62(MB)=16(sec)で転送出来る事になる。
ちなみに、このブログが動いている自宅のサーバはと言うと・・・
hdparm -t /dev/hdc
/dev/hdc:
Timing buffered disk reads: 76 MB in 3.02 seconds = 25.14 MB/sec
ちょwww
SATA接続のHDDと、IDE接続のHDDはこれほど書き込み速度に違いがあるのかwww
ちょっとへこんだ・・・orz
5年ぐらい前のPCで動いているからしょうがないのか・・・。
3Dデスクトップ用にFedora8を乗せているVAIOノートの方が性能がいいみたいだし、それをサーバにしてみるか。
