sftp接続のカスタマイズ

以前構築した、OpenSSHを使って、chroot環境下でSFTPを動かす方法のカスタマイズを行った。

今回設定したのは、ログ出力と、bash権限を持つアカウントだけ鍵認証を行う設定。

理想の状態はこんな感じ。

  1. chroot後の環境で、データのやりとりをsyslogで管理したい
  2. sftpのログ専用のファシリティを設ける
  3. rsshユーザーはパスワード認証、bashユーザーは鍵認証をさせる

【 chroot環境下のログの採取方法 & sftpファシリティの追加】
通常、chroot環境では、/dev/logを参照することが出来ないので、ログ出力は行えない。
そこで、syslogのオプションに、chroot後のディレクトリのdev/に、ソケットを作成する記述を行う。

[/etc/sysconfig/syslog]
 変更前:SYSLOGD_OPTIONS=”-m 0″
 変更後:SYSLOGD_OPTIONS=”-m 0 -a chrootディレクトリ/dev/log”

通常では-aオプションは19個までしか設定出来ないっぽい。

オプションの変更後、syslogを再起動すると、設定したchrootディレクトリ/varにlogファイルが作成されている。

次に、sshd_configのSubSystemの箇所に、internal-sftpにログを出力するように編集し、編集後sshdの再起動を行う。

[/etc/ssh/sshd_config]
 変更前:Subsystem       sftp    internal-sftp
 変更後:Subsystem       sftp    internal-sftp -f local1 -l info

※-fはsyslogのファシリティ、-lでログレベルを指定する。

参考にしたサイトとかだと、ファシリティをauthprivに設定しているとこが多かったけど、/var/log/secureにsftpのログを追記したくなかったので変更する。
新規にlocal1というファシリティを作成して、そのログを/var/log/sftp.logに出力するように設定。
作成後、syslogの再起動が必要。

 echo “local1.* /var/log/sftp.log” >> /etc/syslog.conf

【 SSHの認証方法の変更 】
最後にbashも持つアカウントは鍵認証をさせて、sftp専用のユーザーはパスワード認証をさせる。

[/etc/ssh/sshd_config]
全ユーザー共通の設定(鍵認証させる)
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no

sftpユーザーはMatchのこんな感じになる。
 
Match Group chrootgroup
PasswordAuthentication yes
AllowAgentForwarding no
AllowTcpForwarding no
ChrootDirectory /usr/local/chroot/
PubkeyAuthentication no

ここまで設定したら、sshdを再起動。

試しに、teratermからsftpユーザーで接続してみると、ユーザー名とパスワードの入力プロンプトは表示されるが、正常なパスワードであっても、一瞬rsshのエラーが出てきて接続が終了する。

BlueCoat ProxySGの監視

nagiosのプラグインを幅広く揃えてあるMonitoringExchangeにも、BlueCoatProxySGのプラグインが存在しなかった為、自作でプラグインを用意する事にしました。

nagiosのプラグインの作成方法を少し調べたら、どうやら決められた終了コードを返せばよいらしい。

終了コードはこれらしい。
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3
DEPENDENT=4

で、作ってみた。
BlueCoatProxySGのMIBを追加している環境で作ったので、MIB定義も念の為アップロードしておく。

bcmib.zip

全てbashで書いています。

例によって、私はプログラマではありませんので、ご使用は自己責任でお願いします。

両方のdiskの状態を取得出来るOIDはあったのですが、snmpwalkでの取得結果が2行表示されますが、nagiosのWEB画面には1行しか送信出来ないの部分をどのように表示させれば分かりやすいのかを考えるのがメンドくさかったので、プラグイン自体を2つに分けていますw

チェックファイルの使い方は、各ファイルをエディタで開き、
 HOST=監視対象のIPアドレス
 COMMUNITY=SNMPのコミュニティ名
 CRITICAL=クリティカルにする値(パーセント)
 WARNING=ワーニングにする値(パーセント)
を修正して下さい。

来週は内部温度監視と、ファン回転数監視のプラグインを作成してみますw

それにしても、BlueCoat ProxySGのCPU使用率が、夜中でも100%に達してクリティカルのアラートがガンガン飛んでくる。
全て2分程度で正常値に戻るので、保存されたキャッシュのクリーニングとかの処理を定期的に実施しているのかな。

なんにしても、アラートメールが結構うざいので、BlueCoat ProxySGのCPU監視のインターバルだけ調整が必要かもしれない。

centreonよりnagiosの日本語版の方が使いやすい

http://www.centreon.com/

先週末に、会社のnagiosに、フロントエンドGUIのcentreonをインストールしてみたが、インストールが面倒くさい割には、思ったよりインターフェースが使い辛い。

上司にチラっと画面を見せたけど、案の定反応がイマイチだったので、会社での利用はしない事にする。

拡張MIBの設定

拡張MIBの追加設定でハマったので、自分用のメモ。

・RPMでnet-snmpをインストールした時に作成される、標準のMIBディレクトリは、/usr/share/snmp/mibsになる。

・MIBの定義は1つしかインストールできない。同じ定義をロードさせた場合、後から追加した定義が既存の定義を上書きする形でロードされる為、拡張MIBを追加する場合は、標準のMIB定義を上書きしないように必要なものだけをロードさせる。

※ベンダーが提供しているMIB全てをロードさせると、大変な目に合う ← ここで1日はまった。

・拡張MIBは、場所を指定するだけで勝手にロードされる。

拡張MIBを追加する方法は以下の3つ。

・/usr/share/snmp/mibsディレクトリに定義ファイルを入れる。

・/etc/snmp.confファイルを作成し、
 mibdirs /usr/share/snmp/mibs:拡張MIBを格納ししているディレクトリ
 mibs = ALL
 と記述する。(システム全体に適用する場合)
※標準のMIBディレクトリと、拡張MIBディレクトリの間は、「:(コロン)」で区切る。

・$HOME/.snmp/snmp.confに、
 mibdirs /usr/share/snmp/mibs:拡張MIBを格納ししているディレクトリ
 mibs = ALL
 と記述する。(ユーザーだけに適用する場合)

Linux版のnrpe

現在、シコシコと社内用の監視システムを構築中。

監視対象はWindowsOSとLinuxOSが混在しているのが、リソース監視やらプロセス監視などの手法は統一したかったので、nrpeを使うことにした。

インストール方法などは省くが、Windows版のnrpeはdont_blame_nrpeの値を「1」にするだけで、$ARG$での引数設定が行えたが、Linux版のnrpeはdont_blame_nrpeを変えても
「CHECK_NRPE: Received 0 bytes from daemon.  Check the remote server logs for error messages.」
と言ったエラーメッセージが表示されて接続出来なかった。

半日ググッてやっと解決。

どうやら、セキュリティ上の理由から、nrpeインストール時にのconfigureに–enable-command-argsを付加してあげないとダメらしい。

先週Linuxサーバにインストールしたnrpeを全部入れ直しかよ!

ディスクが死んだ

会社で個人的に使っているCentOSからのlogwatch

 
 ——————— Kernel Begin ————————

 WARNING:  Kernel Errors Present
    end_request: I/O error, dev hda, sector …:  3 Time(s)
    hda: dma_intr: error=0x40 { Uncorrect …:  3 Time(s)
    hda: dma_intr: status=0x51 { DriveReady SeekComplete Error } …:  3 Time(s)

再起動してもダメっぽいので、また作り直しか。
最悪、書き換えのデータとかは引っ張ってこれないかな。

tracのタイムライン

会社で使っているTracのタイムラインが、1/13を境に表示されなくなってしまった。

更新ボタンを押してもダメ。

いろいろ情報をググッていると、どうやらtrac.iniファイルのパラメータを設定してあげると良いらしい。


[timeline]
ticket_show_details = true

にして、Apacheを再起動。

問題く表示されるようになったが、今まで「false」に設定されていてもタイムラインが表示されていたのは何故だろう?

ソースから入れたapacheのlogwatchの設定

apacheに限らず、/var/log/配下にログを出力しないものは、デフォルトのlogwatchでは集計されない。

/var/log/意外の場所にあるログファイルも集計の対象とする場合、logwatchのサービス毎の設定を変更する必要がある。

(以下はCentOS5.4の場合。CentOS4はディテクトりが違うらしい。)

【場所:/usr/share/logwatch/default.conf/logfiles】

ディテクトりの中は、使っている、使っていないに関わらず、サービス毎の設定ファイルがたくさんあります。
autorpm.conf      emerge.conf            maillog.conf              qmail-pop3ds-current.conf  secure.conf     windows.conf
cisco.conf        exim.conf              messages.conf             qmail-send-current.conf    sonicwall.conf  xferlog.conf
clam-update.conf  extreme-networks.conf  netopia.conf              qmail-smtpd-current.conf   syslog.conf     yum.conf
cron.conf         http.conf              netscreen.conf            resolver.conf              tac_acc.conf
daemon.conf       iptables.conf          pureftp.conf              rt314.conf                 up2date.conf
dnssec.conf       kernel.conf            qmail-pop3d-current.conf  samba.conf                 vsftpd.conf

Apacheのログ出力に関する設定を変更する場合、「http.conf」を修正します。

LogFile行と、Archive行にApacheのログ出力場所を記述

# What actual file?  Defaults to LogPath if not absolute path….
LogFile = httpd/*access_log
LogFile = apache/*access.log.1
LogFile = apache/*access.log
LogFile = apache2/*access.log.1
LogFile = apache2/*access.log
LogFile = apache-ssl/*access.log.1
LogFile = apache-ssl/*access.log

LogFile = “/usr/local/httpd-2.0.63/logs/access_log”
LogFile = “/usr/local/httpd-2.0.63/logs/access_log.1”

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are…
#If you use a “-” in naming add that as well -mgt
Archive = archiv/httpd/*access_log.*
Archive = httpd/*access_log.*
Archive = apache/*access.log.*.gz
Archive = apache2/*access.log.*.gz
Archive = apache-ssl/*access.log.*.gz

Archive = “/usr/local/httpd-2.0.63/logs/access_log”
Archive = “/usr/local/httpd-2.0.63/logs/access_log.1”

これだけで次回のlogwatchの実行から、ソースでインストールしたApacheの情報も集計されます。

cpanのプロキシ認証の設定

CPANの初回実行時のプロファイル作成で、

Your ftp_proxy?  http://hogehoge:8080
Your http_proxy?  http://hogehoge:8080
Your no_proxy?
Your proxy user id?  ユーザー名
Your proxy password?  パスワード

と入力。

既にCPAMを実行後の場合、
/usr/lib/perl5/5.8.8/CPAN/Config.pmにCPANの設定ファイルがあるので、この中を以下の通り編集する。
  ‘ftp_proxy’ => q[http://192.168.4.1:8080],
  ‘http_proxy’ => q[http://192.168.4.1:8080],