Простые шаги с нуля, чтобы показать вам, как вы можете сканировать вредоносные файлы в вашем приложении Node.js

Безопасность - важное ключевое слово, когда речь идет об Интернете и веб-приложениях. Мы всегда стараемся защитить нашу систему от кибератак. Нарушение безопасности может привести к раскрытию нашей ценной информации и, таким образом, может разрушить наш бизнес.

Большинство атак на систему безопасности совершаются путем загрузки вредоносных файлов на сайт. Многие веб-сайты позволяют пользователям загружать такие файлы, как фотографии профиля, резюме и т. Д. Хакеры могут использовать эту возможность для загрузки уязвимых файлов на сайт и получения несанкционированного доступа.

Итак, если наше веб-приложение позволяет пользователям загружать файлы, нам необходимо обеспечить определенный уровень безопасности для сканирования уязвимостей в файлах. Мы должны установить антивирусное программное обеспечение на наш сервер и сканировать загруженные файлы.

ClamAV - отличный вариант для сканирования файлов в веб-приложениях. Благодаря своей универсальности он поддерживает несколько форматов файлов и языков подписи. Существует также отличный пакет Node.js под названием clamscan, который предоставляет API для сканирования файлов из внутреннего приложения.

В этой статье мы рассмотрим, как мы можем использовать clamscan для сканирования файлов на предмет обнаружения вирусов и вредоносного содержимого на сервере. Итак, без лишних слов, давайте перейдем к делу.

Установка и настройка ClamAV в Ubuntu

Сначала нам нужно установить ClamAV на наш сервер или локальный компьютер. Установить ClamAV на Linux-машину довольно просто:

  • Для установки в дистрибутивах на основе Fedora:
sudo yum install clamav
  • Для установки в дистрибутивах на основе Debian:
sudo apt-get install clamav clamav-daemon
  • Для OS X,
sudo brew install clamav

После установки ClamAV на нашу Linux-машину нам нужно настроить некоторые параметры. Для компьютеров, на которых в качестве операционной системы используется Ubuntu, выполните в терминале следующую команду, чтобы запустить clamav-freshclam.

sudo service clamav-freshclam restart
sudo service clamav-freshclam status

После этого мы должны запустить службу clamav-daemon. Этот процесс очень важен, потому что он создаст файл сокета в /var/run/clamav/clamd.ctl, который будет использоваться для сканирования файлового потока, загруженного на сервер.

Давайте запустим следующую команду в терминале, чтобы запустить clamav-daemon:

sudo service clamav-daemon start
sudo service clamav-daemon status

После установки и настройки ClamAV на нашем Linux-компьютере мы готовы продолжить сканирование файлов в нашем приложении Node.js.

Настройка проекта

Сначала давайте создадим новый проект и настроим основные конфигурации.

Чтобы создать новое приложение Node.js с нуля, нам нужно ввести в терминал следующую команду:

npm init -y

Будет создан package.json файл с некоторой информацией. Затем мы должны установить необходимые пакеты вместе с express js, выполнив следующую команду в терминале:

npm install express

Эта команда установит express js и все другие зависимости, необходимые для запуска приложения Node.js. Затем давайте создадим файл с именем server.js в корневом каталоге проекта. Здесь мы вставим следующие блоки кода.

Чтобы запустить сервер, давайте добавим следующий код в package.json.

{
  // ...
  "scripts": {
    "start": "node server.js",
    // ...
  },
  // ...
}

Теперь, если мы запустим npm start в терминале, мы должны увидеть сообщение «Сервер прослушивает порт 3000». Это означает, что наше приложение успешно настроено.

Установка и настройка Clamscan

Теперь, когда мы инициализировали наш проект и реализовали некоторые базовые конфигурации, пришло время установить и настроить clamscan для проекта.

Чтобы установить clamscan, мы должны написать в терминале следующую команду:

npm install clamscan

Он установит все необходимые зависимости и API, необходимые для использования ClamAV для сканирования и обнаружения вредоносных файлов.

Теперь нам нужно изменить наш код в server.js, как показано ниже, чтобы настроить clamscan.

Сканирование файлов

Теперь мы можем сканировать файлы на нашем сервере, используя следующий блок кода:

Мы также можем изменить наш код для сканирования файлов, загруженных через API. Таким образом, мы можем легко обнаружить вредоносный контент еще до того, как сохранить файлы в хранилище.

Но прежде чем углубиться в это, нам нужно установить еще пару пакетов: cors и express-fileupload. Эти пакеты нужны нам для реализации загрузки файлов на сервер. Мы можем установить эти два пакета, выполнив в терминале следующую команду:

npm install cors express-fileupload

Теперь давайте создадим новый файл с именем config.js и переместим clamscanConfig в config.js. Давайте также добавим fileUploadConfig в config.js, который будет параметрами конфигурации для express-fileupload.

Теперь давайте добавим в server.js файл следующие блоки кода:

Здесь мы будем использовать req.clamscan в каждом маршрутизаторе, где нам нужно загрузить файл или несколько файлов.

После такого изменения server.js полный server.js будет выглядеть примерно так:

Реализация API загрузки

Пока что мы столько всего настроили! Пришло время создать маршрут загрузки, по которому будут загружены файлы.

Давайте сначала создадим простой POST API для загрузки файлов:

Здесь мы реализовали простой POST API для загрузки изображений аватаров. Мы можем протестировать этот API, загрузив файл с помощью Почтальона или любой другой платформы. Перед этим нам нужно создать папку с именем upload в корневом каталоге проекта, чтобы предотвратить ошибку поиска каталога.

Если файлы успешно загружены, перейдем к следующему этапу, на котором мы просканируем файлы перед их сохранением.

Давайте изменим приведенный выше код, чтобы сканировать файлы перед их сохранением на сервере:

Результат

Пришло время протестировать API. Давайте загрузим вредоносный файл и посмотрим, что будет на выходе с сервера.

Мы видим, что антивирусное программное обеспечение успешно обнаружило вредоносный файл и остановило сохранение файла на сервере веб-приложением. Мы также можем предупредить пользователей, уведомив их о вирусе.

Резюме

Пока что мы установили ClamAV на нашу Linux-машину и создали приложение Node.js, в котором мы можем сканировать загруженный файл и определять, заражен ли файл или нет. Мы также протестировали наш API, загрузив вредоносный файл.

Теперь мы можем использовать эти знания и реализовать сканирование вредоносных файлов во всех наших серверных приложениях. Это повысит надежность и уверенность наших пользователей в использовании нашего приложения.

Кроме того, мы можем защитить наши веб-сайты от вредоносных атак и нарушений безопасности. Хотя мы не можем быть на 100% защищены от злоумышленников, это позволит нам немного опередить их и сохранить наши ресурсы в безопасности.

Ресурсы