「KURO-BOX/T4」タグアーカイブ

DoS攻撃対策 Apache mod_antiloris

mod_evasive、mod_limitipconnと攻撃対策のモジュールを導入しましたが
今回は一番厄介なSlowlorisの対策モジュールを導入します。

最初にmod-pacify-slowlorisを入れてみましたが
ページが正常に表示されなかったりしたので、mod_antilorisを入れる事にしました。
(mod-pacify-slowloris、mod_antilorisでも完全に防ぐのは、現状では難しいようです)

まずは、適当なディレクトリにソースをDL。

ディレクトリ移動
#cd /usr/local/src

mod_antiloris-0.4.tar.bz2のDL
#wget ftp://ftp.monshouwer.eu/pub/linux/mod_antiloris/mod_antiloris-0.4.tar.bz2

解凍
#tar -xjvf mod_antiloris-0.4.tar.bz2

解凍したソースディレクトリに移動
#cd mod_antiloris-0.4

APXSを利用してコンパイル&インストール
#/usr/bin/apxs2 -i -a -c mod_antiloris.c
※APXSが未インストールの場合は
#apt-get install apache2-prefork-devで先にインストールしてください。

以下の行をapache2.confに追加
LoadModule antiloris_module /usr/lib/apache2/modules/mod_antiloris.so

設定が終わったらconfが正しく設定されたかを確認。
#apache2ctl -M

上記コマンド実行後にantiloris_moduleとSyntax OKが表示されれば、設定自体は問題ない事になります。

設定が問題なければ、apacheを再起動
#/etc/init.d/apache2 restart

暫くこれで様子を見てみる予定です。
それでもSlowlorisの被害にあうようであればiptablesのrecentで弾く事も検討します。

Slowlorisについて

Apacheに、DoS攻撃に繋がる脆弱性が新たに見つかったそうだ(本家/.記事より)

この脆弱性は、これを利用したHTTP DoSツール「Slowloris」がリリースされたことから明らかになったとのこと。この攻撃ツールはApacheに不完全なリクエストヘッダーを送り続けるもので、Apacheが最後のヘッダが送られてくるのを待つ間、偽のヘッダを送ることで接続をオープンにし続け、Apacheのプロセスを一杯にさせるものだという。

脆弱性はApache 1.x、 2.x、 dhttpd、 GoAhead WebServer、そしてSquidにて確認されているが、IIS6.0、 IIS7.0、およびlighttpdでは確認されていないとのこと。

SANSでは詳細のレポートが挙がっており、TimeOutディレクティブでタイムアウト値の設定を変えることでこの攻撃を軽減することが可能とのことで、今のところ対策はこれくらいしかないそうだ。

DoS攻撃対策 Apache mod_limitipconn

前回DoS攻撃対策としてmod_evasiveを導入しました。
今までは攻撃をあまり気にしていませんでしたが
そこそこmod_evasiveが働いているようなので、更に攻撃対策を強化することに。

今回導入するのは、同時接続数を制限してくれるmod_limitipconnというモジュールです。
このモジュールは同一IPからの同時接続数を制限してくれます。

まずは、適当なディレクトリにmod_limitipconnのページからソースをDLしてインストール。

ディレクトリ移動
#cd /usr/local/src

mod_limitipconn-0.23のDL
#wget http://dominia.org/djao/limit/mod_limitipconn-0.23.tar.bz2

解凍
#tar xjvf mod_limitipconn-0.23.tar.bz2

解凍したソースディレクトリに移動
#cd mod_limitipconn-0.23

Apache2用にMakefileを変更
#vi Makefile

7行目のAPXSコマンドをApache2用に変更
※APXSが未インストールの場合は
#apt-get install apache2-prefork-devで先にインストールしてください。

#   the used tools
APXS=apxs
APACHECTL=apachectl

↓ のように書き換え

#   the used tools
APXS=/usr/bin/apxs2
APACHECTL=apachectl

コンパイル&インストール
#make install

Apacheの設定にモジュールの記述を追加
#vi /etc/apache2/apache2.conf

LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so

ExtendedStatus On



MaxConnPerIP 3
NoIPLimit image/*


※Locationの設定は複数記述することが出来ます。
また、.httaccessに記述することも可能です。
複数の設定を行うことで、より細かく制限を行う事が出来ます。

上記の設定の意味は、/(httpルート)以下のディレクトリで
同一IPからの同時接続数を3に制限する。
但し、MIMEタイプ image/* は除く、という設定になります。
MaxConnPerIPが3だとサイトによっては少ないかもしれません。
ZIPや大きなファイルなど、回線負荷に関わるものを、MIMEで少なめに指定するのは有効だと思います。
しかし通常のページを3に制限してしまうと、JavaScriptファイルを裏で読んでくれなかったりしますので
ページとして問題が出る場合があります。
その場合は数字を少し大きくしてあげるか、特定のファイルタイプのみカウントの対象(または非対象)にするか
MIMEタイプでカウントの対象外になるようにしましょう。

設定が終わったらconfが正しく設定されたかを確認。
#apache2ctl -M

上記コマンド実行後にlimitipconn_moduleとSyntax OKが表示されれば、設定自体は問題ない事になります。

設定が問題なければ、apacheを再起動
#/etc/init.d/apache2 restart

最後にうまく動作するかテストを行うといいと思います。
※ページによってはうまく読み込めなかったりしますので、テストされる事をお勧めします。
ブラウザを複数開いて、一気にアクセスしてみると簡単にテスト出来ます。

DoS攻撃対策 Apache mod_evasive

最近、稀にサーバー負荷が非常に高い時があります。
その時でも完全にフリーズしているわけではないが、ログインして再起動するのがやっとな状況で
サーバーとしては機能しておらず、何かの対策を行う必要が出て来ました。

まずはKernelを最新の2.6.32.2にアップ。
これだけでは解決しないと考えているので、一番疑わしいhttpdにも対策を。
既にiptablesにてヤバそうな国からのアクセス自体をブロックしているが
DoS攻撃などは、ウィルス感染により足場サーバーから行われるので
DoS攻撃をブロックすることにしました。

今回はDoS攻撃に有効なアパッチ用のモジュールmod_evasiveを使用することにました。

まずは、適当なディレクトリにzdziarski.comのmod_evasiveページからソースをDLしてインストール。
※既にリンク先のサイトはなくなっているようです

ディレクトリ移動
#cd /usr/local/src

mod_evasive v1.10.1のDL
#wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz

解凍
#tar xzf mod_evasive_1.10.1.tar.gz

解凍したソースディレクトリに移動
#cd mod_evasive

このモジュールはAPXSを使用してコンパイル&インストールを行うのですが
デフォルトではAPXSが入っていなかったので、パッケージをインストール。
#apt-get install apache2-prefork-dev

APXSを利用してコンパイル&インストール
#/usr/bin/apxs2 -i -a -c mod_evasive20.c

※ブラックリスト追加時にメールを送信したい場合は
mod_evasive20.cの中にメールコマンドがハードコーディングされているので
コマンドを書き換える必要があります。

45行目の以下の行がメール送信コマンド部分です。
#define MAILER “/bin/mail %s”

/* BEGIN DoS Evasive Maneuvers Definitions */

#define MAILER	"/bin/mail %s"
#define  LOG( A, ... ) { openlog("mod_evasive", LOG_PID, LOG_DAEMON); syslog( A, __VA_ARGS__ ); closelog(); }

Exim4の場合は ↓ のように書き換えることで送信出来ます

/* BEGIN DoS Evasive Maneuvers Definitions */

#define MAILER	"mail -t %s"
#define  LOG( A, ... ) { openlog("mod_evasive", LOG_PID, LOG_DAEMON); syslog( A, __VA_ARGS__ ); closelog(); }

件名も付けたい場合は ↓ のように書き換えることで件名付きで送信出来ます

/* BEGIN DoS Evasive Maneuvers Definitions */

#define MAILER	"mail -s 'ここに件名を入れます' -t %s"
#define  LOG( A, ... ) { openlog("mod_evasive", LOG_PID, LOG_DAEMON); syslog( A, __VA_ARGS__ ); closelog(); }

当然ならがApacheの設定ファイルのDOSEmailNotifyに(後述の設定部分参照)
送信先のメールアドレスを書いて有効にする必要があります。

コンパイルとインストールに成功したようですが
なんかモジュールのデフォルト設定書き込みに失敗したみたいなので、手動で書きこみます。

confファイルに追記(追記はhttpd.confで良いと思いますが、私はファイル分けが面倒な人なので・・・)
#vi /etc/apache2/apache2.conf

以下の行をapache2.confに追加

LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so


DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSLogDir "/var/log/apache2/mod_evasive/logs"
#DOSEmailNotify info@domain
#DOSSystemCommand   ""
#DOSWhitelist       127.0.0.1

これらの設定の意味は、「mod_evasive 設定」などで検索すると沢山出て来ますので、省略させて頂きます。
ちなみにこの設定では、1秒間に同じページに2回アクセスがあるか
1秒間にサイトに50回以上アクセスがあった場合に、60秒間 403Eroorを返すような動作となります。
ブロックの記録は、DOSLogDirで設定した場所へブロックしたIPが保存されます。

設定が終わったらconfが正しく設定されたかを確認。
#apache2ctl -M

上記コマンド実行後にevasive20_moduleとSyntax OKが表示されれば、設定自体は問題ない事になります。

設定が問題なければ、apacheを再起動
#/etc/init.d/apache2 restart

ちゃんとブロック出来るかmod_evasiveのソースに付属していた、テストスクリプトを実行
#perl test.pl

テストのレスポンスが、途中からHTTP/1.1 403 Forbiddenを返すようになれば
うまくブロックが出来ている事になります。

mod_evasive自体は設定通りの振る舞いをするだけで
決して万能なブロックツールというわけではありません。
他のブロック方法との併用や、環境にあった適切な設定を行うことが大切だと思います。

Kernel 2.6.32をコンパイル

※書いてあるカーネルより新しいカーネル用のdiffファイルは下の方にあります。
コマンド部分はカーネルのバージョンに合わせ、2.6.32.○のように書き換えて実行してください。

Kernelの2.6.32が正式にリリースされたので、T4のカーネルを2.6.32に上げてみることに。

まずは、適当なディレクトリを作成。
# mkdir kernel_complie
# cd kernel_complie

The Linux Kernel Archivesから2.6.32のカーネルソースをDL
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2

解凍
# tar jxvf linux-2.6.32.tar.bz2

作業ディレクトリに2.6.32用のパッチをDL
↓これがパッチです。
kuro-nas-t4-2.6.32.diff

解凍したカーネルソースのディレクトリに移動。
# cd linux-2.6.32

initrd.img、its、dtbファイルをソースディレクトリにDL
(これらはFitImage作成用のディレクトリにDLでも構いません)
initrd.img
kuro_nas_t4.its
kuro_nas_t4.dtb
※dtbファイルは時刻のズレ対応済みです。

2.6.32用のパッチを実行
# patch -p 1 < ..//kuro-nas-t4-2.6.32.diff T4デフォルトのconfigファイルをコピー # cp arch/powerpc/configs/kuro_nas_t4_defconfig .config ※既にオプション変更したconfigを利用する場合は、変更済みのconfigをコピーしてください。

oldconfig実行
# make oldconfig

※カーネルのコンパイルオプションを変更する場合は、ここでオプション変更してください。
デフォルトで選択されていない機能やデバイスを有効にするには
コンパイルオプションを必要に応じて変更する必要があります。

コンパイルオプションを変更する場合
# make menuconfig

カーネルのコンパイル
# make

カーネルのコンパイルがうまく行けばmoduleのインストール
# make modules_install

コンパイルされたカーネルバイナリを名前変更
# mv vmlinux.bin.gz vmlinuz

fitImageの作成
# mkimage -f kuro_nas_t4.its uImage-2.6.32.buffalo

作成したfitImageを/bootにコピー
# cp uImage-2.6.32.buffalo /boot

試しに正常起動できるかテスト。
再起動してu-bootからコマンドを実行。

BUFFALO>> setenv kernel uImage-2.6.32.buffalo
BUFFALO>> run hdboot

正常起動したら/bootのシンボリックリンクを書き換えて、通常起動カーネルを新しく作成したカーネルに変更。
# cd /boot
# rm uImage.buffalo
# ln -s uImage-2.6.32.buffalo uImage.buffalo
※もし正常起動しなかった場合、シンボリックリンクを書き換えてなければ
普通にリセットすることで、正常動作時のカーネルで起動します。

今のところエラーも無く正常に2.6.32が動作中です。

以下は参考にさせて頂いたサイトです、感謝。
FrontPage – PukiWiki
D Blog

2009/12/21 追記
Kernel2.6.32.2をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.bz2

Kernel2.6.32.2対応パッチファイル
kuro-nas-t4-2.6.32.2.diff

2010/01/09 追記
Kernel2.6.32.3をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.3.tar.bz2

Kernel2.6.32.3対応パッチファイル
kuro-nas-t4-2.6.32.3.diff

2010/01/20 追記
Kernel2.6.32.4をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.4のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.4.tar.bz2

Kernel2.6.32.4対応パッチファイル
kuro-nas-t4-2.6.32.4.diff

2010/01/24 追記
Kernel2.6.32.5をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.5のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.5.tar.bz2

Kernel2.6.32.5対応パッチファイル
kuro-nas-t4-2.6.32.5.diff

2010/01/29 追記
Kernel2.6.32.6をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.6のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.6.tar.bz2

Kernel2.6.32.6対応パッチファイル
kuro-nas-t4-2.6.32.6.diff

2010/01/30 追記
Kernel2.6.32.7をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.7のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.7.tar.bz2

Kernel2.6.32.7対応パッチファイル
kuro-nas-t4-2.6.32.7.diff

2010/02/11 追記
Kernel2.6.32.8をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.8のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2

Kernel2.6.32.8対応パッチファイル
kuro-nas-t4-2.6.32.8.diff

2010/02/26 追記
Kernel2.6.33をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.tar.bz2

Kernel2.6.33対応パッチファイル
kuro-nas-t4-2.6.33.diff

2010/03/19 追記
Kernel2.6.33.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.bz2

Kernel2.6.33.1対応パッチファイル
kuro-nas-t4-2.6.33.1.diff

2010/04/03 追記
Kernel2.6.33.2をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2

Kernel2.6.33.2対応パッチファイル
kuro-nas-t4-2.6.33.2.diff

2010/04/28 追記
Kernel2.6.33.3をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.3.tar.bz2

Kernel2.6.33.3対応パッチファイル
kuro-nas-t4-2.6.33.3.diff

2010/05/14 追記
Kernel2.6.33.4をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.4のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.4.tar.bz2

Kernel2.6.33.4対応パッチファイル
kuro-nas-t4-2.6.33.4.diff

2010/05/19 追記
Kernel2.6.34をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.34のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2

Kernel2.6.34対応パッチファイル
kuro-nas-t4-2.6.34.diff

2010/07/06 追記
Kernel2.6.34.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.34.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2

Kernel2.6.34.1対応パッチファイル
kuro-nas-t4-2.6.34.1.diff

2010/08/12 追記
Kernel2.6.35.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.1.tar.bz2

Kernel2.6.35.1対応パッチファイル
kuro-nas-t4-2.6.35.1.diff

2010/08/16 追記
Kernel2.6.35.2をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.2.tar.bz2

Kernel2.6.35.2対応パッチファイル
kuro-nas-t4-2.6.35.2.diff

2010/08/24 追記
Kernel2.6.35.3をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.3.tar.bz2

Kernel2.6.35.3対応パッチファイル
kuro-nas-t4-2.6.35.3.diff

2010/09/30 追記
Kernel2.6.35.7をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.7のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.7.tar.bz2

Kernel2.6.35.7対応パッチファイル
kuro-nas-t4-2.6.35.7.diff

SSHでのホスト制限

SSHで外から接続出来ると何かと便利です。
しかし、セキュリティ的にはあまり良くありません。
秘密鍵の利用や、SSHポート番号の変更は当然ですが
それでもアタックしてくる奴はいるものです。

私はアタックが多い国のIPをiptablesで規制しています。
(当然ながらその国のIPからは全く繋がりません)
この対応でアタック自体はかなり減らすことが出来ました。
※詳しくはblog内に書いてます。

それでも稀にアタックはあるかもしれません。
より安全にするためにSSHに接続出来るIPを規制します。
(会社などで固定IPがある場合で無いと有効には出来ませんが)

編集するファイルは以下となります。
/etc/hosts.allow

当然ながらローカルの接続は許可となります。
sshd : 192.168. : ALLOW

複数のIPを登録する場合は、スペースで区切って登録します。
(最後の: ALLOWは無くても構いません)
sshd : 192.168.  xxx.xxx.xxx.xxx: ALLOW

それ以外は拒否しなければならないので
/etc/hosts.denyにsshd: ALLと書き加える必要があります。

個人的には面倒臭がりなので
/etc/hosts.allowに拒否の行まで書き加えます(笑)
sshd: ALL : deny

許可・非許可のルールはファイル内では上から一致するまで
ファイルの優先順位は/etc/hosts.allowから/etc/hosts.denyへと解釈されます。
どちらにも一致しなかった場合は許可となりますので/etc/hosts.denyの最後に
次の一行を追加しておくことをお勧めします。
ALL : ALL : deny

またsshdにアクセスがあった場合にメールを送ることも可能です。
※メールを送信出来る環境の場合です。
下にサンプルを書いておきます。

# for sshd local access
sshd : 192.168. : ALLOW
# for sshd etc access with mail
sshd : xxx.xxx.xxx.xxx : spawn ( /usr/bin/mail -s “sshd connected from %h” yourname@yourmail.com) &

上の行が192.168から始まるアドレスを許可(メールは送られません)
下の行がxxx.xxx.xxx.xxxからアクセスがあった場合に許可しますが、同時にメールを送信します。
※ポートへの接続自体の許可であって、SSHの認証は当然必要です。
“sshd connected from %h”の部分がメールの件名として送られてきます。
%hは接続してきたホスト名(又はIP)に置き換えられて送信されます。
yourname@yourmail.comは送信先のメールアドレスとなります。
※標準の25番ポートを開けて使うのは、かなりの確率でアタックを受けるのでお勧めしません。

cronのログ出力先変更

MRTGを動かしていると5分に1回syslogにcronのログが出力され
syslogを見ても非常に見難くなります。

cronの-Lオプションでwarn以上しか出力しないように設定してみましたが
上手く動かずsyslogに出力されてしまいます。
そこでcronのログをsyslogではなく独立して出力するように変更します。

T4のlennyではrsyslogが使用されているので/etc/rsyslog.confを修正します。
以下の行があるので変更します。

#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
cron.* /var/log/cron.log  ←追加
*.*;auth,authpriv.none;cron.none -/var/log/syslog  ←cron.noneの追加
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

変更後にrsyslogをリスタートするか、システムをリブートすれば適応されます。

続いてntpのログもsyslogから切り離します。
ntpのログ設定はntpdオプション用のファイルを修正します。

# vi default/ntp

NTPD_OPTSに以下の用に追加してください。
-l /var/log/ntp.log

ntpデーモンを再起動すれば/var/log/ntp.logが出来ているはずです。

未確認ですが、恐らくこのままではログは肥大化を続けるので
logrotateを使って、ログをローテーションさせてあげます。

新規にlogrotate用のファイルを作成して登録します。
# vi /etc/logrotate.d/ntp

内容はご自分でローテーションさせたい値に書き換えてください。

/var/log/ntp.log {
weekly
rotate 12
compress
missingok
}

これで/var/log/ntp.log がローテーションされます。

dhcp3-serverのログも結構頻繁に出るので独立させます。
基本的にはcronと同じ方法ですが、/etc/dhcp3/dhcpd.confの以下の行をまず確認します。

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

log-facility local7;が該当箇所です。
これはsyslogでlocal7というfacilityを使うという意味です。
もし他のデーモンがlocal7を使っていると、そのログまで一緒に別のファイルに書き込まれることになるので、local7の数字の部分を書き換える必要があります。
他で使われていなければそのままで構いません。

/etc/rsyslog.confを開いてcronと同様に追加、修正します。
追加、修正する文字はlocal7(書き換えていたら書き換えたもの)となります。
両サービスを再起動すれば、ログは別れて出力されます。

またlogrotateもcronと同じように設定する必要があります。

これらのログファイルを分けることでsyslogは大変見やすくなりました。
(ntpやdhcp-serverなどは、システムのログに比べて重要性は下がりますが、チェックはした方が良いと思います)

追記
smartmontoolsも同じようにsyslogのfacilityを指定可能です。

smartdのオプションを見ると以下のように書いています。

smartd version 5.38 [powerpc-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Usage: smartd [options]

-c NAME|-, –configfile=NAME|-
Read configuration file NAME or stdin [default is /etc/smartd.conf]

-d, –debug
Start smartd in debug mode

-D, –showdirectives
Print the configuration file Directives and exit

-h, –help, –usage
Display this help and exit

-i N, –interval=N
Set interval between disk checks to N seconds, where N >= 10

-l local[0-7], –logfacility=local[0-7]
Use syslog facility local0 – local7 or daemon [default]

-n, –no-fork
Do not fork into background

-p NAME, –pidfile=NAME
Write PID file NAME

-q WHEN, –quit=WHEN
Quit on one of: nodev, errors, nodevstartup, never, onecheck, showtests

-r, –report=TYPE
Report transactions for one of: ioctl[,N], ataioctl[,N], scsiioctl[,N]

-V, –version, –license, –copyright
Print License, Copyright, and version information

/etc/default/smartmontoolsのsmartd_optsに–logfacility=local6などと追加すればOKです。
後はsyslogの設定でlocal6(オプションで指定したlocal)のログを切り離せば別にログを吐き出せます。