「KURO-BOX/T4」カテゴリーアーカイブ

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)のログを切り離せば別にログを吐き出せます。

snmpdのログレベル変更

snmpdにアクセスすると、その度にsyslogにログを吐いてかなりの量に・・・
ログの出力レベルを変更して、通常のレベルのログを出力しないようにします。

# vi /etc/default/snmpd

SNMPDOPTS=’-Lsd -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
この行を書き換えます。
※仕様が変わったのか、他と仕様が違うのか、よく書かれている方法ではうまく動きませんでした。

SNMPDOPTS=’-LS3d -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid

これでsyslogにログが出力されていないのを確認しました。
※ログレベルは3と書いてあるサイトや5と書いてあるサイトがあります。

kernel.hには以下のように書かれているのでerr以上の場合は3、notice以上の場合は5で良いとは思います。

#define KERN_EMERG “<0>” /* system is unusable */
#define KERN_ALERT “<1>” /* action must be taken immediately */
#define KERN_CRIT “<2>” /* critical conditions */
#define KERN_ERR “<3>” /* error conditions */
#define KERN_WARNING “<4>” /* warning conditions */
#define KERN_NOTICE “<5>” /* normal but significant condition */
#define KERN_INFO “<6>” /* informational */
#define KERN_DEBUG “<7>” /* debug-level messages */

USB-LANの交換

LinkStationの時から使用してたIOデータETG-US2があまり調子良くなかったので
BuffaloのLUA2-U2-KGTを購入。

チップはETG-US2と同じでカーネルのソースにはLUA-U2-GTとしてIDの登録もあり。
チップはAX88178です。

既にAsix.cはコンパイルしてmoduleとして入れてあるので差し替えるだけ。

eth1はETG-US2として記録されているのでeth2として認識。
設定を記録してる/etc/udev/rules.d/70-persistent-net.rulesを書き換え。

書き換え後に再起動で無事eth1として認識。

2009/11/08 追記
IOデータETG-US2、Buffalo LUA2-U2-KGT共に
/proc/net/devのパケット情報が全て0で取れていなかったのですが
カーネルのバージョンを2.6.31.5に上げることで、正常動作するようになりました。
(パケットカウントが取れないだけで動きは正常でした)
T4でUSB-LANを使用される方は、カーネルをバージョンアップした方が良いでしょう。

vimの色表示ON

T4のでエディターはvimを使用しているのですが
vi /etc/vim/vimrcでsyntax onにしてもエラーになりました。

Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on

バージョン的には問題ないと思うんですが。

ということでvimをフルでインストール(笑)
(パッケージが多くて結構時間掛かります)

#apt-get install vim-full

途中で設定画面が出て来ますが、変更なしで先へ進めば設定完了。
/etc/vim/vimrcのsyntax onを有効にしてvim起動!

ちゃんと色が付いて表示されました。
(vimに色なんて要らね~っていう方には、全く要らないですね)

ついでにlsコマンドでの表示も色表示をONにします。

ユーザー全員に色付けOKにするには/etc/skel/.bashrcの変更を。
と思ったら、こちらは既に色付けOKな設定でした。

という事は、rootが個別に色無しになっているのか確認。
# vi /root/.bashrc

以下の行が色付けの行なんですが、コメントアウトされていました。
# export LS_OPTIONS=’--color=auto’
# eval “`dircolors`”
# alias ls=’ls $LS_OPTIONS’

コメントを取って、上書きして、logout
export LS_OPTIONS=’--color=auto’
eval “`dircolors`”
alias ls=’ls $LS_OPTIONS’

再度ログインするとlsコマンドでちゃんと色付き表示されました。

mediatombの設定

LinkStationにてmediatombは導入済みでしたので
インストール&設定を行って起動でPS3から検索。
LinkStationでの導入記事

しかしPS3からDLNA機器は見つかりません・・・

再度、設定を見直しました。

# vi /etc/default/mediatomb

この中の以下の行が問題でした。

変更前:INTERFACE=””
変更後:INTERFACE=”eth0″

インターフェースをちゃんと指定しないとダメなようです。
mediatombを再起動後にPS3からちゃんと見えるようになりました。

ブラウザからDLNAに登録するディレクトリを選択できますが
設定を間違うとサーバーに非常に負担が掛かります。

mediatomb

各設定の意味は以下のようになります。
Scan Mode:
None スキャンしない
Timed 決められた時間でスキャンを行う
Inotify カーネルからファイル変更(追加、削除等)の通知を受けてDB登録する

Initial Scan:
Basic 単純にファイルの追加・削除の変更のみで更新を行う
Full 最後に登録されている情報と相違が無いかチェックして更新を行う

Recursive:
チェックを入れると再帰的に下位のディレクトリも検索の対象とします。

Include hidden files/directories:
チェックを入れると隠しファイルも検索の対象となります。

お勧めの設定は、上の画像の通りです。
Scan Mode:Timed + Initial Scan:Full + Recursive:チェックの設定にすると
ファイル数が多かったり、ディレクトリの階層が深いと、かなりの数の検索を行うことになり、サーバーに非常に負荷が掛かります。