ELIFE眞空 ぼちぼちいきます

日常自分が忘れてしまいそうなことをクリップしています。

(!!)WARN: all primary virus scanners failed, considering backups

1.amavisとClamAVが、うまく連携できないらしい

先日、サーバを起動し直した後、以下の様なerrorがでるようになりました。

 (!!)WARN: all primary virus scanners failed, considering backups

(!)ClamAV-clamd av-scanner FAILED: CODE(0x55ac1a0) unexpected , output="/var/amavis/tmp/amavis-20150128T166643-01739/parts: lstat() failed: Permission denied. ERROR\n" at (eval 60) line 596.: 14 Time(s)

  (!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/amavis/tmp/amavis-20150128T166643-01739/parts: lstat() failed: Permission denied. ERROR\n": 14 Time(s)

  1. プライマリースキャナーのclamdに対して失敗したと警告。
  2. 「Permission denied」:アクセス権限がない。

 

どうやら、「clamd.conf」のユーザーと

「amavis」のユーザーが違うから、アクセス権限がない。

と言っているようです。

 

2.idコマンドで確認してみる

$ id clamav

 uid=103(clamav) gid=159(clamav) 所属グループ=159(clamav)

 

$ id amavis

uid=102(amavis) gid=157(amavis) 所属グループ=157(amavis)

 

3.clamavをamavisのグループに入れてやる

 # usermod -a -G amavis clamav

 

※a オプションを付けるとサブグループが、上書きされることなく、追加できるようです。

Gだけでやると、追加じゃなくて、上書きになるので、作業前に入っていたグループから削除されます。気をつけて。

 

4.再びidコマンドで確認してみる

$ id clamav

 uid=103(clamav) gid=159(clamav) 所属グループ=159(clamav),157(amavis)

 

5.関連してるサービスを再起動させる

/etc/init.d/clamav-daemon restart
/etc/init.d/amavis restart
/etc/init.d/postfix restart

 

6.maillogを確認してみる

自分宛てにメールを送ってみて、ログを見る。

今まで出てたワーニング出てないはず。

 

たぶん、コレでいけるハズ。

暫く様子みよう。

面倒臭い時は、

clamd.confの「User clam」的なやつをコメントアウトして、root権限で動かせば良いと思う。

CentOS5 ntpをアップデートする。

 

ntpdに複数脆弱性があるとのアナウンスが出ていたので、

ntpをアップデートすることにしました。

ntpのバージョンを「4.2.8」以上にせよ。とのことなのですが、

4.2.8でパッケージを探しても見当たらず、ソースから入れるかぁ。

と検索していると、『ZDnet Japan』の記事に、使用しているOSのベンダーに問い合わせることが推奨される。とあったので、

Red Hat Customer Portal

に行ってみました。

 

f:id:enjoylifevc:20141223142531p:plain

NTPに関する記述が見つけられたので、其処を開いてみることにしました。

RHSA-2014-2025

 

CVE-2014-9293 デフォルト設定だと弱い鍵が自動で作られるよ。
CVE-2014-9294 NTP-keygenが弱い乱数を使って鍵を作っちゃうよ。
CVE-2014-9295 メモリ領域を溢れさせて、NTPをクラッシュさせたり、遠隔で任意のコードを動かすよ。

については、書かれているのですが、

CVE-2014-9296 エラー処理を行なうコードに欠陥があって、処理が停止しないよ。

 については、書かれていません。

何故だろう?

ちなみに、CentOS6,CentOS7のerrataページには、記載があるんですけどね。

 

とにかく、「ntp-4.2.2p1-18.el5」という、アップデートパッケージが用意されているようなので、ひとまず確認してみました。

yum info ntp

 

ちゃんと存在していましたので、そのままアップデートしました。

yum update ntp

 もう一度、パッケージのバージョンの確認

yum info ntp

f:id:enjoylifevc:20141223144748g:plain

因みにCentOS6だと、「ntp-4.2.6p5-2.el6」、CentOS7だと「ntp-4.2.6p5-19.el7」のようです。

自動で、再起動してくれるそうなので、暫く待って

ntpd -q

同期サーバの頭にアスタリスク(*)が付いたので、たぶんコレで大丈夫。

 

 

 

yumでのダウンロードに失敗した時に

Error Downloading Packages」と怒られた。

その時のエラーメッセージ、

There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.

 と出てた。

英語が得意ではないので、Google先生に翻訳してもらいました。どうやら、『yum-complete-transaction』というプログラムを使って、中途半端になってる作業を完了させろ。ということらしい。

そして、その『yum-complete-transaction』は『yum-utils package』の中にあるらしい。

 

man pageによると、

/var/lib/yumに「transaction-all」と「transaction-done」というファイルがあるらしい。

/var/lib/yumに行ってみると、

  • transaction-all.<日付>
  • transaction-done.<日付>

 のファイルが存在しました。中を見ると、詳細がわかります。

それじゃ、「yum-utils」をインストールしてみます。

yum install yum-utils

それから、コマンドを打ってみます。

yum-complete-transaction

There are 1 outstanding transactions to complete. Finishing the most recent one
The remaining transaction had 11 elements left to run
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them. 

と出でて、Removingするよ。

Remove 1 Package(s)
Reinstall 0 Package(s)
Downgrade 0 Package(s) 

Is this ok [y/N]:

」を入力しました。

Removed:

  「ファイル名.バージョン.リリース」

Cleaning up completed transaction file 

 と出たので、たぶん大丈夫だと思います。

 

yum info <パッケージ名>で、今削除したファイルがどうなっているか

確認しました。

 上記の「ファイル名.バージョン.リリース」より、新しいものがインストールされていました。

古いパッケージがあったのが、ダメだったのかな?

再度、/var/lib/yumに行ってみると、

日付入りのファイルが無くなっていました。

 

コレで様子を見ようと思います。

 

CentOS5 wgetをアップデートする

先日発表された「CVE-2014-4877」の対策のため、wgetをアップデートしました。

1台はすんなり行ったのに、残りのサーバで、おもいっきりハマってしまい、往生したので、今後のために記しておきます。

wget1.16にアップデートするのに、rpmが見つからなかったので、

ソースからインストールすることになりました。

 

1.ソースを取りに行く

wgetの公式サイト: GNU Wget に行くと、

http://ftp.gnu.org/gnu/wget/ からダウンロード出来るということなので、

 

wget http://ftp.gnu.org/gnu/wget/wget-1.16.tar.gz

 でファイルをダウンロードします。

 

2.圧縮ファイルを展開

オプションにxzvfを付けます。

因みに

 x:書庫からファイルを取り出す。

 z:gzipの処理

 v:処理ファイルの一覧表示

 f:指定した書庫ファイルとか、デバイスを使う。

tar -xzvf wget-1.16.tar.gz

 

3.展開したファイルに移動

cd wget-1.16

 

4.Makefileを作成失敗

いきなり、./configureしたら

configure: error: --with-ssl was given, but GNUTLS is not availableと怒られてしまいました。

色々調べると、オプションに「--with-ssl=openssl」を付ければ良いということでした。そこで改めて、

./configure --with-ssl=openssl

 画面上を色々な文字列が流れ過ぎた後…。またもやエラー。

configure: error: --with-ssl=openssl was given, but SSL is not available

GNUTLSがSSLに変わっただけじゃん。

どうしたら良いのか、分からなくなったので、取り合えすHelpを見ることに…。

./configure --help

 

5.SSL要らなければいいかもね

--without-sslオプションを使えば、SSL無視できるよ

でも、httpsからはダウロードできないけど…。

試しに、このオプションを付けてるとMakefileが作れ、コンパイル、インストールができました。

しかし、httpsサイトからのダウンロードができません。

やはり、不便なので、他の方法を探すことにしました。

再び、色々検索し「gnutls-devel」と言うパッケージが必要だ。

と言う文言に当りました。

 

6.gnutls-devel入れてみる

パッケージなので、ココは素直にyumを使いました。

yum info gnutls-devel

パッケージが存在していたので、そのままインストールしました。

yum install gnutls-devel

そして再びMakefile作成をしてみましたが、ダメでした。

configure: error: --with-ssl was given, but GNUTLS is not available

configure: error: --with-ssl=openssl was given, but SSL is not available

「./configure」しても、「./configure --with-ssl=openssl」してもエラー。

 

 7.手詰まりから一転

正直どうしたらいいのか、わからなくなりました。

console.logを見ろとのことで、見てみましたが、さっぱり読解できませんでした。

 

そんな折、ふとgnutls-develがあるんだったら、openssl-develもあるんじゃない?と

思い、「devel」について、調べてみました。

ソースからコンパイルする時に、必要なヘッダファイルなどを含んでいるファイル。 

 

 あっ! もしかして、コレ?!

この間、「Heartbleed」でOpenSSLアップデートしたけど、openssl-develなんて表示観た覚えがない。

 rpm -qa | grep openssl

openssl-0.9.8e-31.el5_11

あっ、やっぱり…。openssl-develない。

 

yum install openssl-devel

 

それでは、再々度Makefile

./configure --with-ssl=openssl

 

無事成功したようなので、makeする前に旧パッケージ版のwgetを削除しておきます。

yum remove wget

 

8.やっとコンパイル・インストール

rootユーザーとして、一気に連続処理します。

make && make install

出来た!

 

9.一難去ってまた、一難

よし、バージョンの確認

wget -V

-bash: /usr/bin/wget: そのようなファイルやディレクトリはありません 

 

あれ? 何処行った?

which wget

/usr/local/bin/wget

 

しまった!--prefix=/usrオプションつけ忘れた。(デフォルトでは、/usr/localに入る)

シンボリックリンクを付けて対応します。

ln -s /usr/local/bin/wget /usr/bin/wget

 

バージョンを確認します。

wget -V

GNU Wget 1.16 built on linux-gnu

やっと出来た。

 

10.おわり

試しに、wgetで適当なファイルをhttpsサイトから取ってみました。

無事にダウンロードできたので、たぶんコレで大丈夫だと思います。

 

canonプリンター 急に印刷が出来なくなった時に

長年愛用しているプリンターBJ F900。

普段、特に印刷するものが沢山あるわけでもないので、現役として動いておりました。

それが突然、印刷の途中でエラーを吐いて止まってしまいました。

 

オレンジランプが7回点滅。

 

メーカーサイトによると、「プリントヘッドが故障しているか、他機種のプリントヘッドが取り付けてある。」だそうです。

 

我が家にcanonのプリンターは、1台しかないので他機種のプリントヘッドが付いてるとは、考えにくく、況してや他メーカーさんのヘッドを取り付けるわけもないので、「プリントヘッドが故障している」のだと思いました。

 

購入してすぐの頃、一度、ヘッドエラーでヘッド交換をしたことがあります。

当時は、メーカーサイトからオンライン購入出来たのですが、出来なくなったようですね。まっ、そもそも、この機種のヘッドは、もう手に入らないでしょうけどね。

 

1.ダメ元でウェットティッシュで拭いてみた

昔、コレとは別の機種ですが、同じようなエラーが出た時に、水道の水圧で、無理やりインクを弾き出したら、直ったことを思い出し、(真似しないでくださいね。たまたま上手くいっただけで、たぶん、壊れますから)ウェットティッシュで、ヘッドのインクが出る部分のみを拭いてみました。

 

インクが混ざらないように、同じ方向へ綺麗になるまで拭いてみたのですが、エラーは、解消されませんでした。

 

相変わらず、印刷を始めて直ぐに、オレンジのランプが7回点滅。

 

 

2.メンテナンスモード突入

もしかして、廃インク的な問題かな?と思い、メンテナンスモードで見てみることにしました。

2-1.メンテナンスモードへの切り替え

電源オフの状態からスタートします。

  1. リセットボタンを押しながら、電源ボタンを押す。
  2. リセットボタンだけ離す。
  3. 電源ボタンを押したまま、リセットボタンを2回押す。(色が変化します)
  4. 電源ボタンを離す。

これで、メンテナンスモードに切り替わります。

2-2 詳細を表示してみる(廃インクタンクの状況とか)

メンテナンスモードのまま、

  1. リセットボタンを2回押す。
  2. 電源ボタンを押す。

何やら、ごちゃごちゃ書かれたものが、印刷されます。

たぶん、DIと書かれたものが、廃インクタンクの使用状況だと思われます。

DI=072.30%

エラーを出すほどの量じゃないなぁ~。

 

他の項目で読み取れたのは、Pageぐらいです。恐らく、印刷した枚数だと思うのですが…。10年以上使ってるのに、

Page=03122

って...。少なすぎるよね。いくらなんでも…。

 

結論として、何が問題だかわからなかったのですが、取敢えず、リセットしちゃえ!

 

2-3カウンターリセット
  1. リセットボタンを3回押す。
  2. 電源ボタンを押す。

たぶん、コレでリセット出来てるハズなのですが、このプリンターには液晶がないので、何の表示も出ません。

確認したい時は、「2-2 詳細を表示してみる」をもう一度おこなってみます。

さっき、DI=072.30%だった表示が、DI=000.00%になってると思うんで…。

 

3.メンテナンスモードを抜ける

  1. 電源ボタンを1回押す。

 

これで、再び電源を入れて印刷してみると、エラーが出ることもなく、ちゃんと印刷出来ました。良かった。

NTPがDDoS攻撃の踏み台にならないために

 「NTPサーバの設定を見なおして欲しい」と言うメールを頂いたので、対策してみました。

 

NTPサーバ

 今更ですが、NTPサーバはネットワーク経由で、コンピュータの時間を同期させる為のものです。通信には、UDP123を使っています。

 

問題点

 JVNVU#96176042によると、脆弱性が存在するのは、ntpd 4.2.7p26以前のもので、第三者によるDDoS攻撃への踏み台として使われる可能性があるとのことです。

 

  この脆弱性は、NTPサーバのmonlist機能を悪用したものだそうです。

 では、どのような仕組みなのか簡単に触れておきます

 

登場人物
  1. どこからの要求にも応えしまうNTPサーバ(踏み台)
  2. 悪意のある第三者
  3. DDoS攻撃を受ける攻撃対象
f:id:enjoylifevc:20140220164659p:plain

踏み台にならないための対策

  1.  NTPサーバを外部に公開しないようにします。

  2. 「monlist」機能を無効にします。
    ntp.confに「disable monitor」の1行を追加します。

  3. 「restrict」でアクセス制限をします。

restrict default ignore  デフォルト設定で全NTPパケット拒否。

restrict -6 default ignore デフォルト設定で全NTPパケット拒否。(IP6)

restrict 127.0.0.1    ローカルホストからのアクセス許可。

restrict ntp.xxxxxxxx.jp kod nomodify notrap nopeer noquery 

上位サーバからの通信を制限します。

 

 restrictのフラグ
ignore 全パケット拒否。
kod 問い合わせが閾値を超えた時、「問い合わせの中止」を伝えるパケットを送る。このパケットを受け取ったクライアントは、解除されるまでサーバへの問い合わせができなくなります。
nomodify 時間の問い合わせには応じるが、変更要求等は拒否。
notrap リモートイベントのログ記録機能の提供拒否。
nopeer 相互同期拒否。
noquery 設定変更や状態の確認要求拒否。

 

コレで暫く様子を見ます。

ClamAV アップデート  EPELリポジトリ編

いつものように、

WARNING: Your ClamAV installation is OUTDATED!

WARNING: Local version: 0.98 Recommended version: 0.98.1

 更新しろよ。

と言われて暫く経ったので、rpmパッケージで更新することにします。

今回はEPELリポジトリを使って更新します。

 

yum  -y --enablerepo=epel update clamd

 

以下のWarningが出てる時は、修正しておきます。

warning: /etc/freshclam.conf created as /etc/freshclam.conf.rpmnew

warning: /etc/clamd.conf created as /etc/clamd.conf.rpmnew

 

取敢えず、今使ってるconfを別名保存しておきます。

mv /etc/fresfclam.conf /etc/freshclam.conf.old

mv /etc/clamd.conf /etc/clamd.conf.old

 

rpmnewとして保存されたファイルをconfファイルにリネームします。

mv /etc/freshclam.conf.rpmnew /etc/freshclam.conf

mv /etc/clamd.conf.rpmnew /etc/clamd.conf

 

リネームした「fresh.conf」と「clamd.conf」の設定を別名保存したファイルと同じようにします。

 

私の場合、特に変更する部分は無かったのですが、ユーザーがoldファイルの時は、「clamav」だったのに、今回「clam」になっていたので、ファイルのオーナ変更をします。

 気づかないまま、

 freshclam

 

としてウィルス定義ファイルを最適化すれば、恐らく

ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).

 

 とかエラーが出ると思います。

「ログ書きたいけど、ファイル開けない。許可されてるか調べて!」って言われて、

気づくと思います。

chown clam:clam /var/log/clamav/freshclam.log

chown clam:clam /var/log/clamav/clamd.log

 

再度、

freshclam

 

今度は

Warning: Detected duplicate databases /var/lib/clamav/main.cvd and /var/lib/clamav/main.cld, please manually remove one of them 

 

 と怒られました。道のり長いです。

 「データベースが重複してるから、どっちか手動で消して」ってw

どっち?

判らないので、main.cvdとmain.cldの両方をリネームしました。

mv /var/lib/clamav/main.cld /var/lib/clamav/main.cld.old

mv /var/lib/clamav/main.cvd /var/lib/clamav/main.cvd.old

 

今度こそ、

freshclam

 

main.cvdが勝手にダウンロードされました。

特に「ERROR:」とか「WARNING:」とか出なかったので、

たぶん、コレでいけると思います。

 

後は、ログテートを変更しておきます。

(コレは前回、変更し忘れて、ログファイルがローテーションする時に、

怒られたので…。)

 

vi /etc/logrotate.d/freshclam

create 644 clamav clamav  →  create 644 clam clam

 

一応、clamscanしておきます。

オプションは好きなモノを付ければいいと思います。

 

 

clamscan -r  -i  --remove 

 

 

 ----------- SCAN SUMMARY -----------

Engine Version: ココが更新した新しい「 0.98.1」になってるはず。 

Infected files:0  ココが感染しているファイル数なので0ならOK

 

 

コレでやっとOKだと思います。