(!!)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)
- プライマリースキャナーのclamdに対して失敗したと警告。
- 「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をアップデートする。
ntpをアップデートすることにしました。
ntpのバージョンを「4.2.8」以上にせよ。とのことなのですが、
4.2.8でパッケージを探しても見当たらず、ソースから入れるかぁ。
と検索していると、『ZDnet Japan』の記事に、使用しているOSのベンダーに問い合わせることが推奨される。とあったので、
に行ってみました。
NTPに関する記述が見つけられたので、其処を開いてみることにしました。
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
因みに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-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]:
「y」を入力しました。
Removed:
「ファイル名.バージョン.リリース」
Cleaning up completed transaction file
と出たので、たぶん大丈夫だと思います。
yum info <パッケージ名>で、今削除したファイルがどうなっているか
確認しました。
上記の「ファイル名.バージョン.リリース」より、新しいものがインストールされていました。
古いパッケージがあったのが、ダメだったのかな?
再度、/var/lib/yumに行ってみると、
日付入りのファイルが無くなっていました。
コレで様子を見ようと思います。
CentOS5 wgetをアップデートする
先日発表された「CVE-2014-4877」の対策のため、wgetをアップデートしました。
1台はすんなり行ったのに、残りのサーバで、おもいっきりハマってしまい、往生したので、今後のために記しておきます。
wget1.16にアップデートするのに、rpmが見つからなかったので、
ソースからインストールすることになりました。
1.ソースを取りに行く
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
あれ? 何処行った?
which wget
/usr/local/bin/wget
しまった!--prefix=/usrオプションつけ忘れた。(デフォルトでは、/usr/localに入る)
シンボリックリンクを付けて対応します。
ln -s /usr/local/bin/wget /usr/bin/wget
バージョンを確認します。
wget -V
やっと出来た。
10.おわり
試しに、wgetで適当なファイルをhttpsサイトから取ってみました。
無事にダウンロードできたので、たぶんコレで大丈夫だと思います。
canonプリンター 急に印刷が出来なくなった時に
長年愛用しているプリンターBJ F900。
普段、特に印刷するものが沢山あるわけでもないので、現役として動いておりました。
それが突然、印刷の途中でエラーを吐いて止まってしまいました。
オレンジランプが7回点滅。
メーカーサイトによると、「プリントヘッドが故障しているか、他機種のプリントヘッドが取り付けてある。」だそうです。
我が家にcanonのプリンターは、1台しかないので他機種のプリントヘッドが付いてるとは、考えにくく、況してや他メーカーさんのヘッドを取り付けるわけもないので、「プリントヘッドが故障している」のだと思いました。
購入してすぐの頃、一度、ヘッドエラーでヘッド交換をしたことがあります。
当時は、メーカーサイトからオンライン購入出来たのですが、出来なくなったようですね。まっ、そもそも、この機種のヘッドは、もう手に入らないでしょうけどね。
1.ダメ元でウェットティッシュで拭いてみた
昔、コレとは別の機種ですが、同じようなエラーが出た時に、水道の水圧で、無理やりインクを弾き出したら、直ったことを思い出し、(真似しないでくださいね。たまたま上手くいっただけで、たぶん、壊れますから)ウェットティッシュで、ヘッドのインクが出る部分のみを拭いてみました。
インクが混ざらないように、同じ方向へ綺麗になるまで拭いてみたのですが、エラーは、解消されませんでした。
相変わらず、印刷を始めて直ぐに、オレンジのランプが7回点滅。
2.メンテナンスモード突入
もしかして、廃インク的な問題かな?と思い、メンテナンスモードで見てみることにしました。
2-1.メンテナンスモードへの切り替え
電源オフの状態からスタートします。
- リセットボタンを押しながら、電源ボタンを押す。
- リセットボタンだけ離す。
- 電源ボタンを押したまま、リセットボタンを2回押す。(色が変化します)
- 電源ボタンを離す。
これで、メンテナンスモードに切り替わります。
2-2 詳細を表示してみる(廃インクタンクの状況とか)
メンテナンスモードのまま、
- リセットボタンを2回押す。
- 電源ボタンを押す。
何やら、ごちゃごちゃ書かれたものが、印刷されます。
たぶん、DIと書かれたものが、廃インクタンクの使用状況だと思われます。
DI=072.30%
エラーを出すほどの量じゃないなぁ~。
他の項目で読み取れたのは、Pageぐらいです。恐らく、印刷した枚数だと思うのですが…。10年以上使ってるのに、
Page=03122
って...。少なすぎるよね。いくらなんでも…。
結論として、何が問題だかわからなかったのですが、取敢えず、リセットしちゃえ!
2-3カウンターリセット
- リセットボタンを3回押す。
- 電源ボタンを押す。
たぶん、コレでリセット出来てるハズなのですが、このプリンターには液晶がないので、何の表示も出ません。
確認したい時は、「2-2 詳細を表示してみる」をもう一度おこなってみます。
さっき、DI=072.30%だった表示が、DI=000.00%になってると思うんで…。
3.メンテナンスモードを抜ける
- 電源ボタンを1回押す。
これで、再び電源を入れて印刷してみると、エラーが出ることもなく、ちゃんと印刷出来ました。良かった。
NTPがDDoS攻撃の踏み台にならないために
「NTPサーバの設定を見なおして欲しい」と言うメールを頂いたので、対策してみました。
NTPサーバ
今更ですが、NTPサーバはネットワーク経由で、コンピュータの時間を同期させる為のものです。通信には、UDP123を使っています。
問題点
JVNVU#96176042によると、脆弱性が存在するのは、ntpd 4.2.7p26以前のもので、第三者によるDDoS攻撃への踏み台として使われる可能性があるとのことです。
この脆弱性は、NTPサーバのmonlist機能を悪用したものだそうです。
では、どのような仕組みなのか簡単に触れておきます
登場人物
- どこからの要求にも応えしまうNTPサーバ(踏み台)
- 悪意のある第三者
- DDoS攻撃を受ける攻撃対象
踏み台にならないための対策
- NTPサーバを外部に公開しないようにします。
- 「monlist」機能を無効にします。
ntp.confに「disable monitor」の1行を追加します。 - 「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の両方をリネームしました。
今度こそ、
freshclam
main.cvdが勝手にダウンロードされました。
特に「ERROR:」とか「WARNING:」とか出なかったので、
たぶん、コレでいけると思います。
後は、ログテートを変更しておきます。
(コレは前回、変更し忘れて、ログファイルがローテーションする時に、
怒られたので…。)
vi /etc/logrotate.d/freshclam
一応、clamscanしておきます。
オプションは好きなモノを付ければいいと思います。
clamscan -r -i --remove
----------- SCAN SUMMARY -----------
Engine Version: ココが更新した新しい「 0.98.1」になってるはず。
Infected files:0 ココが感染しているファイル数なので0ならOK
コレでやっとOKだと思います。