Proftpd攻撃されやすいのか?※FreeBSDです

仕事先でproftpd経由だと思われる侵入が発見された。
幸い、個人情報などが皆無というか・・・
社内用のサーバだったのでエンドユーザーに迷惑かかることなく事なきを得たのだが、
強い権限で動かしていたらと思うとぞっとする。

調べたら、12月の頭がかなり危険だった様子。
http://www.watchguard.co.jp/secwire/2010/12/proftpd.html
上記で書かれているように、配布元すらゼロデイ攻撃にあって、バックドア入りのインストールソースを
ばら撒いてしまった期間があるとか・・・

http://vrda.jpcert.or.jp/feed/ja/NISTNVD_CVE-2010-4221_AD_1.html
これを見てもわかるようにほぼ最新のソースですら危ないという状態。

もし、侵入されてしまっていたら、/etc/ディレクトリにランダムな文字列のファイルが一杯出来ているかも。
(職場でのパターンでした)
ps でも見えるので、全てKILL すべき。バックドア開けているので気をつけて。

ファイアーウォールが使えるなら、FTP可能なIPを絞ることや、外向けの怪しいポートは塞いでおきましょう。

とりあえず、21番ポートをやめるとか、SFTPにするとかっていう対応は即座に検討したほうが良いでしょうね。
※ProftpdはSFTPプロトコルをしゃべれるみたいなので、自宅はFTPやめちゃいましたがこっちの脆弱性はどうだろう?


■FreeBSDのPortsで再インストール方法まとめ
※毎日portsnap cron を回していること前提です。
↓こんなの

portsnap cron && portsnap update

/etc/crontab
—-
# PORTS update cron
0 3 * * * root portsnap cron && portsnap update >/dev/null

アップグレードはこんな感じ。

# cd /usr/ports/ftp/proftpd/
# make install

===> An older version of ftp/proftpd is already installed (proftpd-1.3.3_1)
You may wish to “make deinstall” and install this port again
by “make reinstall” to upgrade it properly.
If you really wish to overwrite the old port of ftp/proftpd
without deleting it first, set the variable “FORCE_PKG_REGISTER”
in your environment or the “make install” command line.

こんな事いわれるので、

# export FORCE_PKG_REGISTER=1;make reinstall
# /usr/local/etc/rc.d/proftpd restart

これでOK。
でも、インストールしているバージョンを確認しようとするとこんな感じに重複するので、停止できる人はmake deinstall ,make reinstallのほうが良いかもしれないです。

proftpd-1.3.3_1 Highly configurable ftp daemon
proftpd-1.3.3c_3 Highly configurable ftp daemon

んで、いつもportsnap cronやっていない人のための再インストール方法

# portsnap fetch
# portsnap extract ftp/proftpd/
# cd /usr/ports/ftp/proftpd/
# make

■エラーパターン1 autoconfで問題が出る。

===> proftpd-1.3.3c_3 cannot install: unknown AUTOCONF version: autoconf.

ごめんなさい、今手元にエラーメッセージが無いです。こんな感じのもの。
make clean すると/usr/local/bin/autoconfautoconf cannot find とか言われたような。

見事に再現したので上記に書き加えました。

こんな場合、Makefile の下記の場所を書き換えましょう。

USE_AUTOTOOLS= autoconf:262

USE_AUTOTOOLS= /usr/ports/devel/autoconf

■エラーパターン2 distinfo でエラーが出る

=> proftpd-1.3.3c.tar.bz2 is not in /home/ports/ftp/proftpd/distinfo.
=> Either /home/ports/ftp/proftpd/distinfo is out of date, or
=> proftpd-1.3.3c.tar.bz2 is spelled incorrectly.

これは、他のものをアップグレードしていないのが原因だけれど・・・
MD5での記述からSHA256に変わったのに対応していないのが原因。

# cat distinfo
—-
MD5 (proftpd-1.3.3.tar.bz2) = 8571bd78874b557e98480ed48e2df1d2
SHA256 (proftpd-1.3.3c.tar.bz2) = ea7f02e21f81e6ce79ebde8bbbd334bd269a039ac9137196a35309f791b24db1
SIZE (proftpd-1.3.3c.tar.bz2) = 4166609

これは新旧の比較だけれど、1.3.3の時にはMD5でチェックサムしていて、最近はSHA256なわけです。
ちょっとどの辺をアップグレードしたらMD5→SHA256になるのか分からないので、本家からproftpd-1.3.3c.tar.bz2をダウンロードして

# md5 proftpd-1.3.3c.tar.bz2

で出た値をdistinfoに書き込むとうまくいくでしょう。
ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3c.tar.bz2
こんなふうに公開されているURLは少し変えてダウンロードしたらOK

で、make できたら# export FORCE_PKG_REGISTER=1;make reinstall
のコマンドでインストールしなおした上でrestartかけるのは同じ。

うーん、ざっくりとしすぎている感じがするなぁ。
SHA256に変更のところはちゃんと調べようと思いました。