Простые шаги с нуля, чтобы показать вам, как вы можете сканировать вредоносные файлы в вашем приложении 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% защищены от злоумышленников, это позволит нам немного опередить их и сохранить наши ресурсы в безопасности.