- 우분투 14.04
- 클라 마프 0.98.7
이 문제는 clamav-daemon
거의 매일 다시 시작됩니다.
Sep 1 06:30:00 x-master clamd[6778]: Pid file removed.
clamd[6778]: --- Stopped at Tue Sep 1 06:30:00 2015
clamd[5979]: clamd daemon 0.98.7 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
clamd[5979]: Running as user root (UID 0, GID 0)
clamd[5979]: Log file size limited to 4294967295 bytes.
clamd[5979]: Reading databases from /var/lib/clamav
clamd[5979]: Not loading PUA signatures.
clamd[5979]: Bytecode: Security mode set to "TrustSigned".
clamdscan
실행중인 경우 문제가 발생했습니다 .
/etc/cron.daily/clamav_scan:
ERROR: Could not connect to clamd on x.x.x.x: Connection refused
처음에 “거의”라고 말했습니다.
/var/log/syslog:Sep 1 06:30:00 x-master clamd[6778]: Pid file removed.
/var/log/syslog.1:Aug 31 06:27:54 x-master clamd[20128]: Pid file removed.
/var/log/syslog.4.gz:Aug 28 06:28:34 x-master clamd[4475]: Pid file removed.
/var/log/syslog.5.gz:Aug 27 06:27:47 x-master clamd[21466]: Pid file removed.
보다시피 :
- 8 월 29 일과 30 일에 일어나지 않았습니다
-
그것은 종종 시간
cron.daily
이 실행 되는 06:27 주위에 다시 시작되었습니다.27 6 * * * root nice -n 19 ionice -c3 run-parts --report /etc/cron.daily
내용 /etc/cron.daily/clamav_scan
:
find / $exclude_string ! \( -path "/tmp/clamav-*.tmp" -prune \) ! \( -path "/var/lib/elasticsearch" -prune \) ! \( -path "/var/lib/mongodb" -prune \) ! \( -path "/var/lib/graylog-server" -prune \) -mtime -1 -type f -print0 | xargs -0 clamdscan --quiet -l "$status_file" || retval=$?
clamav-daemon에 대한 로그 파일이 있습니다.
/var/log/clamav/clamav.log {
rotate 12
weekly
compress
delaycompress
create 640 clamav adm
postrotate
/etc/init.d/clamav-daemon reload-log > /dev/null
endscript
}
그러나 그것은 단지 로그를 다시로드합니다 :
Sep 1 02:30:24 uba-master clamd[6778]: SIGHUP caught: re-opening log file.
auditd
이진 파일을 모니터링하는 데 사용할 수 있으며 다음 은 로그 예입니다.
ausearch -f /usr/sbin/clamd [2/178]
----
time->Tue Sep 1 07:56:44 2015
type=PATH msg=audit(1441094204.559:15): item=1 name=(null) inode=2756458 dev=fc:00 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1441094204.559:15): item=0 name="/usr/sbin/clamd" inode=3428628 dev=fc:00 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1441094204.559:15): cwd="/"
type=EXECVE msg=audit(1441094204.559:15): argc=1 a0="/usr/sbin/clamd"
type=SYSCALL msg=audit(1441094204.559:15): arch=c000003e syscall=59 success=yes exit=0 a0=7ffd277e03dc a1=7ffd277dfa78 a2=7ffd277dfa88 a3=7ffd277df570 items=2
ppid=5708 pid=5946 auid=4294967295 uid=109 gid=114 euid=109 suid=109 fsuid=109 egid=114 sgid=114 fsgid=114 tty=pts1 ses=4294967295 comm="clamd" exe="/usr/sbin/clamd" key=(null)
109는 clamav
사용자 의 UID입니다 .
getent passwd clamav clamav:x:109:114::/var/lib/clamav:/bin/false
이 경우 문제를 해결하는 다른 방법이 있습니까?
@HBruijn에 답장 :
AV 정의를 업데이트 한 후 아마도 freshclam?
나는 그것에 대해 생각했다. 로그는 다음과 같습니다.
Sep 1 05:31:04 x-master freshclam[16197]: Received signal: wake up
Sep 1 05:31:04 x-master freshclam[16197]: ClamAV update process started at Tue Sep 1 05:31:04 2015
Sep 1 05:31:04 x-master freshclam[16197]: main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Sep 1 05:31:05 x-master freshclam[16197]: Downloading daily-20865.cdiff [100%]
Sep 1 05:31:09 x-master freshclam[16197]: daily.cld updated (version: 20865, sigs: 1555338, f-level: 63, builder: neo)
Sep 1 05:31:10 x-master freshclam[16197]: bytecode.cvd is up to date (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Sep 1 05:31:13 x-master freshclam[16197]: Database updated (3979610 signatures) from db.local.clamav.net (IP: 168.143.19.95)
Sep 1 05:31:13 x-master freshclam[16197]: Clamd successfully notified about the update.
Sep 1 05:31:13 x-master freshclam[16197]: --------------------------------------
Sep 1 04:34:10 x-master clamd[6778]: SelfCheck: Database status OK.
Sep 1 05:31:13 x-master clamd[6778]: Reading databases from /var/lib/clamav
Sep 1 05:31:22 x-master clamd[6778]: Database correctly reloaded (3974071 signatures)
잘 모르겠지만 freshclam에 업데이트에 대해 clamd에 알리는 “내부 메커니즘”이있는 것 같습니다. 그런 다음 데이터베이스를 다시로드 할 수 있으므로 프로세스를 다시 시작할 필요가 없습니다. 확인 할수 있어요?
또한 타임 스탬프에서 freshclam 업데이트 데이터베이스 1 시간 후에 clamav-daemon이 다시 시작된 것을 알 수있었습니다. 정상입니까?
업데이트 화요일 9 월 1 일 22:10:49 ICT 2015
freshclam에 업데이트에 대해 clamd에 알리는 “내부 메커니즘”이있는 것 같습니다. 그런 다음 데이터베이스를 다시로드 할 수 있으므로 프로세스를 다시 시작할 필요가 없습니다.
테스트를 수행하여 이것이 올바른지 확인할 수 있습니다.
- freshclam.conf 파일을 편집하여 간격을 분 (
Checks 1440
) 으로 변경하십시오. - clamav-freshclam을 다시 시작하십시오.
- cd / var / lib / clamav
- rm 매일 .cvd
-
1 분 동안 기다리십시오
Sep 1 14:49:25 p freshclam[7654]: Downloading daily.cvd [100%] Sep 1 14:49:28 p freshclam[7654]: daily.cvd updated (version: 19487, sigs: 1191913, f-level: 63, builder: neo) Sep 1 14:49:28 p freshclam[7654]: Reading CVD header (bytecode.cvd): Sep 1 14:49:28 p freshclam[7654]: OK Sep 1 14:49:28 p freshclam[7654]: bytecode.cvd is up to date (version: 245, sigs: 43, f-level: 63, builder: dgoddard) Sep 1 14:49:31 p freshclam[7654]: Database updated (3616181 signatures) from clamav.local (IP: 10.0.2.2) Sep 1 14:49:31 p freshclam[7654]: Clamd successfully notified about the update. Sep 1 14:49:31 p freshclam[7654]: -------------------------------------- Sep 1 14:49:32 p clamd[6693]: Reading databases from /var/lib/clamav Sep 1 14:49:39 p clamd[6693]: Database correctly reloaded (3610621 signatures)
clamav-daemon은 다시 시작되지 않습니다.
답변
Puppet, Chef, CFEngine 등과 같은 구성 관리 시스템을 사용하고 있는지 확인하십시오. 정기적 인 간격으로 서비스를 방해 할 수 있습니다. 이를 해결하기위한 정확한 조치는 구성 관리 시스템에서 서비스가 사용되는 방식에 따라 다릅니다.
답변
나 자신을 참고하십시오.
작업 캐시의 출력 :
----------
ID: clamav-daemon
Function: service.running
Result: True
Comment: Service restarted
Started: 06:27:52.736890
Duration: 12997.632 ms
Changes:
----------
clamav-daemon:
True
클라 마브 공식을보십시오 :
clamav-daemon:
service:
- running
- order: 50
- require:
- service: clamav-freshclam
- watch:
- pkg: clamav-daemon
- file: clamav-daemon
- user: clamav
watch
ed 상태의 아무것도 변경 되지 않았습니다 :
----------
ID: clamav-daemon
Function: pkg.latest
Result: True
Comment: Package clamav-daemon is already up-to-date.
Started: 06:27:51.531415
Duration: 53.224 ms
Changes:
----------
ID: clamav-daemon
Function: file.managed
Name: /etc/clamav/clamd.conf
Result: True
Comment: File /etc/clamav/clamd.conf is in the correct state
Started: 06:27:51.760019
Duration: 625.075 ms
Changes:
----------
ID: clamav
Function: user.present
Result: True
Comment: User clamav is present and up to date
Started: 06:27:51.590214
Duration: 2.455 ms
Changes:
서비스가 다시 시작된 이유는 무엇입니까?
을 찾고 watch_in
, 나는 PID 파일이 변화를 가지고있는 경우 PID 파일과 서비스가 다시 시작됩니다 관리 상태를 발견 :
{%- macro manage_pid(path, user, group, watch_in_service, mode=644) -%}
{%- if salt['file.file_exists'](path) %}
{{ path }}:
file:
- managed
- user: {{ user }}
- group: {{ group }}
- mode: {{ mode }}
- replace: False
{%- if caller is defined -%}
{%- for line in caller().split("\n") -%}
{%- if loop.first %}
- require:
{%- endif %}
{{ line|trim|indent(6, indentfirst=True) }}
{%- endfor -%}
{%- endif %}
- watch_in:
- service: {{ watch_in_service }}
{%- else %}
# {{ path }} does not exist, no need to manage
{%- endif -%}
{%- endmacro -%}
{%- call manage_pid('/var/run/clamav/clamd.pid', 'clamav', 'clamav', 'clamav-daemon', 664) %}
- pkg: clamav-daemon
{%- endcall %}
의 출력 salt-run jobs.lookup_jid <job id number>
에서 나는 이것을 보았다.
----------
ID: /var/run/clamav/clamd.pid
Function: file.managed
Result: True
Comment:
Started: 06:27:52.392555
Duration: 2.364 ms
Changes:
----------
group:
clamav
user:
clamav
따라서 해당 pid 파일의 소유자 / 그룹이로 변경되었습니다 clamav
. 마지막으로 clamav 데몬이 네트워크 모드에서 root
사용자 로 실행되고 있기 때문입니다 . 따라서 pid 파일은로 생성되었습니다 root
. 따라서 pid 파일을 관리하는 상태는 다음과 같이 변경되어야합니다.
{%- call manage_pid('/var/run/clamav/clamd.pid', 'root', 'root', 'clamav-daemon', 664) %}
- pkg: clamav-daemon
{%- endcall %}