Skip to content
Snippets Groups Projects
.gitlab-ci.yml 5.40 KiB
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
stages:
  - mirror_clamav_db

variables:
  CLAMAV_DB_PATH: "/var/lib/clamav"
  REPO_PATH: "${CI_PROJECT_DIR}"

update_clamav_db:
  stage: mirror_clamav_db
  image: ubuntu:latest
  before_script:
    - apt-get update && apt-get install -y clamav git-lfs wget bind9-host
    - git lfs install
    - apt-get install -y clamav-freshclam

  script:
    - |
      cat << EOF > /etc/clamav/freshclam.conf
      DatabaseMirror https://database.clamav.net
      DatabaseDirectory ${CLAMAV_DB_PATH}
      LogFileMaxSize 1M
      LogTime no
      LogVerbose no
      LogSyslog yes
      LogFacility LOG_LOCAL6
      LogRotate no
      DatabaseOwner clamav
      MaxAttempts 3
      ScriptedUpdates yes
      CompressLocalDatabase yes
      NotifyClamd no
      Foreground yes
      Debug yes
      ConnectTimeout 30
      ReceiveTimeout 60
      Bytecode yes
      Checks 12
      EOF
    # Run Freshclam to download the latest ClamAV database files
    - freshclam
    # Copy the database files to the repository
    - cp "$CLAMAV_DB_PATH"/*.cvd "$REPO_PATH"
    #- cp "$CLAMAV_DB_PATH"/*.cld "$REPO_PATH"
    #- cp "$REPO_PATH"/daily.cld "$REPO_PATH"/daily.cvd

    # Fetch database diff
    - DB_LATEST_VERSION=$(echo $(host -t txt current.cvd.clamav.net 1.1.1.1) | cut -d ':' -f7)
    - |
      for iter in {0..9}; do
        TO_DOWNLOAD_VERSION=$(($DB_LATEST_VERSION - $iter))
        if [ ! -f "daily-${TO_DOWNLOAD_VERSION}.cdiff" ]; then
          wget --user-agent="CVDUPDATE/1.1.2 (3b7f06ec-5337-4030-8856-d3840301cfe3)" https://database.clamav.net/daily-${TO_DOWNLOAD_VERSION}.cdiff
        fi
      done

    # Fetch additional database files
    - wget -O badmacro.ndb https://ftp.swin.edu.au/sanesecurity/badmacro.ndb
    - wget -O blurl.ndb https://ftp.swin.edu.au/sanesecurity/blurl.ndb
    - wget -O bofhland_cracked_URL.ndb https://ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb
    - wget -O bofhland_malware_URL.ndb https://ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb
    - wget -O bofhland_malware_attach.hdb https://ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb
    - wget -O bofhland_phishing_URL.ndb https://ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb
    - wget -O foxhole_filename.cdb https://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
    - wget -O foxhole_generic.cdb https://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
    - wget -O foxhole_js.cdb https://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
    - wget -O foxhole_js.ndb https://ftp.swin.edu.au/sanesecurity/foxhole_js.ndb
    - wget -O hackingteam.hsb https://ftp.swin.edu.au/sanesecurity/hackingteam.hsb
    - wget -O junk.ndb https://ftp.swin.edu.au/sanesecurity/junk.ndb
    - wget -O jurlbl.ndb https://ftp.swin.edu.au/sanesecurity/jurlbl.ndb
    - wget -O jurlbla.ndb https://ftp.swin.edu.au/sanesecurity/jurlbla.ndb
    - wget -O lott.ndb https://ftp.swin.edu.au/sanesecurity/lott.ndb
    - wget -O malwarehash.hsb https://ftp.swin.edu.au/sanesecurity/malwarehash.hsb
    - wget -O phish.ndb https://ftp.swin.edu.au/sanesecurity/phish.ndb
    - wget -O phishtank.ndb https://ftp.swin.edu.au/sanesecurity/phishtank.ndb
    - wget -O porcupine.ndb https://ftp.swin.edu.au/sanesecurity/porcupine.ndb
    - wget -O rogue.hdb https://ftp.swin.edu.au/sanesecurity/rogue.hdb
    - wget -O scam.ndb https://ftp.swin.edu.au/sanesecurity/scam.ndb
    - wget -O shelter.ldb https://ftp.swin.edu.au/sanesecurity/shelter.ldb
    - wget -O spamattach.hdb https://ftp.swin.edu.au/sanesecurity/spamattach.hdb
    - wget -O spamimg.hdb https://ftp.swin.edu.au/sanesecurity/spamimg.hdb
    - wget -O spear.ndb https://ftp.swin.edu.au/sanesecurity/spear.ndb
    - wget -O spearl.ndb https://ftp.swin.edu.au/sanesecurity/spearl.ndb
    - wget -O winnow.attachments.hdb https://ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb
    - wget -O winnow_bad_cw.hdb https://ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb
    - wget -O winnow_extended_malware.hdb https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb
    - wget -O winnow_extended_malware_links.ndb https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb
    - wget -O winnow_malware.hdb https://ftp.swin.edu.au/sanesecurity/winnow_malware.hdb
    - wget -O winnow_malware_links.ndb https://ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb
    - wget -O winnow_phish_complete_url.ndb https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb
    - wget -O winnow_spam_complete.ndb https://ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb
    - wget -O urlhaus.ndb https://urlhaus.abuse.ch/downloads/urlhaus.ndb

    # Configure git
    - git config --global user.email "git+bmi-opendesk-tooling-clamav-db-mirror-3684-issue-@opencode.de"
    - git config --global user.name "openDesk ClamAV DB Mirror"

    # Ensure database files are using Git LFS
    - git lfs track "*.cvd" "*.ndb" "*.cdb" "*.hdb" "*.hsb" "*.ldb" "*.cdiff"
    - git add .gitattributes

    # Check if there are any changes, add, commit, and push if needed
    - if ! [[ `git status --porcelain` ]]; then exit; fi
    - git add *.cvd *.ndb *.cdb *.hdb *.hsb *.ldb *.cdiff
    - git commit -m "Update ClamAV database files on $(date)"
    - git push https://gitlab-ci-token:${CI_PUSH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git HEAD:${CI_COMMIT_REF_NAME}

  only:
    - schedules
...

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.