По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Если вы когда-то пользовались какой-нибудь серверной версией Linux, то скорее всего сталкивались с командой curl. Эта мощная утилита системы Linux позволяет скачивать и загружать файлы на сервер и поддерживает более 20 протоколов.
Раньше мы писали про первые 15 примеров cURL в Linux. Статья зашла - это продолжение :)
cURL идеальная команда для взаимодействия с веб-сайтом или API, отправления запросов и получения ответов на терминал или с выводом в файл. Иногда она используется как часть сложного скрипта для передачи полученных данных другим функциям на дальнейшую обработку.
Наряду с получением файлов из сервера, cURL так же используется для закачки части вебсайта. Несмотря на то, что она довольно хорошо справляется с работой, но всё же wget лучше наточен под такую работу.
В конце материала мы рассмотрим несколько отличий и сходств этих двух утилит, но а пока расскажем как пользоваться утилитой curl.
Скачивание файла
Самая базовая команда, которую можно дать утилите cURL это скачать сайт или файл. По умолчанию, cURL использует протокол HTTP, но мы можем задать любой другой. Чтобы открыть исходный код сайта просто нужно ввести команду:
$ curl http://www.google.com
Когда мы вводим указанную команду, окно терминала заполняется HTML и другим кодом, используемым для создания веб страницы, но от такого вывода мало пользы. Изменим команду так, чтобы вывод перенаправлялся в HTML файл, чтобы затем можно было просмотреть содержимое.
$ curl www.likegeeks.com --output likegeeks.html
Теперь файл можно открыть любым браузером.
Если нужно скачать какой-то файл, то команда остается та же. Только нужно добавить опцию output, как мы и сделали ранее. Если не сделать команда вернёт бинарный код файла, что может привести к сбою.
Ниже показано что мы видим при попытке загрузить Word документ размером 500Кб.
Файл начинает закачиваться, и мы видим текущий статус закачки. Когда загрузка завершится файл будет расположен по пути, указанной во время запуска команды. Если такового не было указано, то файл будет расположен в текущей директории.
Также, вы, наверное, заметили ключ L в команде. При загрузке файла этот ключ необходим, но о его назначении поговорим чуть позже.
Отслеживание редиректа
Если после выполнения команды ничего не вернулось это значит, что на сайте есть редирект (переадресация) на другую ссылку, но cURL не понимает этого. Это можно исправить, указав ключ L при вводе команды.
Во время подготовки материала мы заметили, что данный ключ нужен в подавляющем большинстве случаев. Так что возьмите себе эту фишку на вооружение.
Остановка и продолжение скачивания
Если во время закачки файла что-то пошло не так или же качаете большой файл, но ввиду каких-то причин не хотите делать это за одну сессию, cURL предоставляет возможность остановки и продолжения закачки.
Чтобы остановить процесс вручную, нужно нажать комбинацию CTRL+C, которая используется для остановки почти всех процессов, запущенных в терминале.
Итак, загрузка была начата, но мы прервали её комбинацией клавиш, а теперь нам нужно продолжить закачку. Для этого вводим следующую команду.
$ curl -C - example.com/some-file.zip --output MyFile.zip
Ключ C говорит утилите cURL продолжить закачку, но обратите внимание, что сразу после ключа указан дефис. Этот дефис указывает команде перед продолжением просмотреть уже закачанную часть, чтобы понять с какого места нужно продолжать загрузку.
Закачка продолжилась и успешно завершилась.
Указание времени выполнения команды
Если нужно чтобы прервать выполнение команды cURL по истечении указанного времени, мы можем указать таймер выполнения команды. Это особо полезно так как некоторые операции выполняются бесконечно, что может привести к зависанию системы. Чтобы избежать этого можно указать максимальный период в секундах, по истечении которого cURL прервёт выполнение команды. Вышесказанное реализуется следующим образом:
$ curl -m 60 example.com
Также есть возможность указать в течении какого времени держать соединение активным. Это позволит избежать бесконечных попыток соединения с узлом, который не доступен. Эта опция тоже в качестве аргумента принимает значение в секундах. А команда выглядит так:
$ curl --connect-timeout 60 example.com
Указание логина и пароля
Утилита cURL позволяет указывать имя пользователя и пароль при подключении. Чаще всего это нужно при аутентификации на FTP сервере. Для этого используется ключ u. Синтаксис команды указан ниже:
$ curl -u username:password ftp://example.com
Данную опцию можно использовать с любым протоколом, но FTP является самым распространённым для простой передачи файлов.
Если нужно скачать файл указанный на скриншоте ниже запускаем ту же команду, только указываем полный путь к нужному документу.
$ curl -u username:password ftp://example.com/readme.txt
Использование прокси
cURL можно указать, чтобы подключение выполнялось через прокси сервер. По умолчанию, она использует HTTP прокси, но можно указать и другие. Чтобы направить трафик через прокси используется ключ x.
$ curl -x 192.168.1.1:8080 http://example.com
Данная команда обязует cURL подключиться к прокси по адресу 192.168.1.1 на порту 8080 перед обращением на example.com
Прокси можно использовать и с другими протоколами. Ниже показан пример использования прокси сервера для получения файла с фтп сервера.
$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt
cURL поддерживает много типов прокси и соответствующих ключей, но охватить их всех в одном руководстве сложно. Для более подробной информации о туннелировании, SOCKS прокси, аутентификации и т.п. можете прочитать man по команде cURL.
Загрузка больших файлов по частям
Мы уже показывали как можно остановить и запустить закачку, но что если мы хотим скачать файл большого размера по частям? cURL имеет и такую возможность. Чтобы реализовать это достаточно указать ключ -range и размер загружаемой части. Размер должен быть указан в байтах.
Чтобы скачать последнюю версию Ubuntu частями по 100 МБ нужно прописать следующую команду:
$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
Во вторая команде нужно указать с какого байта начинать загрузку. И так пока не скачается весь файл.
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2
Затем просто нужно собрать воедино скачанные части:
$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso
Аутентификация по сертификату
Для подключения к сайту использованием сертификата вместо обычной аутентификации можно указать опцию cert и путь к сертификату.
$ curl --cert path/to/cert.crt:password ftp://example.com
cURL поддерживает большое количество форматов сертификатов и имеет очень много опций для работы с ними: -cacert, cert-status, -cert-type, и т.д. Для списка всех ключей посмотрите man.
Тихий режим
Если вас раздражают разные сообщения об ошибках во время работы с cURL, то можно запустить её в тихом режиме. Для этого используется ключ s. Но, чтобы увидеть результат выполнения команды вывод нужно перенаправить в файл. Для сохранения файла в текущей директории просто нужно указать ключ O.
$ curl -s -O http://example.com
Как альтернатива, команду можно запустить с опцией --output и указать название и путь к месту сохранения файла.
$ curl -s http://example.com --output index.html
Получение заголовков
cURL позволяет легко получать заголовков какого-либо сайта. Для этого достаточно запустить команду с ключом I.
$ curl -I example.com
Если запустить команду с ключами I и L совместно, то cURL выведёт заголовки даже если на сайте стоит переадресация.
Множественные заголовки
Команде cURL можно передать и заголовки. Для этого есть ключ H. Для передачи нескольких заголовков перед каждым из них нужно поставить данный ключ.
$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com
POST Закачка файла на сервер
POST самый распространённый метод получения данных на веб-сайтах. Например, когда заполняете форму на сайте, скорее всего данные из форм передаются серверу методом пост. Чтобы отправить сайту данные этим методом нужно использовать ключ d.
$ curl -d 'name=geek&location=usa' http://example.com
Чтобы загрузить файл вместо текста нужно ввести следующую команду
$ curl -d @filename http://example.com
Используйте ключ d столько раз, сколько данных или файлов нужно отправить на сайт.
Чтобы загрузить файл через протокол FTP используйте ключ T
$ curl -T myfile.txt ftp://example.com/some/directory/
Отправка почты
Отправка почты это один из видов загрузки данных на почтовый сервер. Так как cURL может загружать файлы, то мы можем использовать ее и для отправки почты. Есть много вариантов сделать это, но здесь мы рассмотрим, как посылать почты через SMTP сервер.
$ curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt john@domain.com --upload-file email.txt
Учтите, что файл e-mail должен быть отформатирован нужным образом. Что-то вроде этого:
$ cat email.txt
From: Web Administrator <me@example.com>
To: John Doe <john@domain.com>
Subject: An example email
Date: Sat, 7 Dec 2019 02:10:15
John,
Hope you have a great weekend.
-Admin
Как всегда, за подробной информацией можете обратиться к man.
Чтение почты
Для получения почты используется IMAP и POP3 и сurl поддерживает оба протокола. Зайдем на почту используя протокол IMAP:
$ curl -u username:password imap://mail.example.com
Данная команда выведет список доступных почтовых ящиков, но не покажет их содержание. Чтобы прочитать письмо нужно указать UID письма аргументов для опции X.
$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'
Разница между cURL и wget
Иногда пользователей путаются между curl и wget, так как обе они могут получать информацию с сервера. Но это единственное сходство между ними.
В этом материале мы показали возможности curl. wget дает другие возможности. wget лучшая утилита для скачивания файлов, а также у него есть возможность делать это рекурсивно, переходя по всем ссылкам и директория и скачать сайт полностью.
Таким образом, если вам нужно скачать все исходные файлы сайта используйте wget. Если же используется протокол отличный от HTTP или HTTPS, или нужно закачать файл на сервер, выберите curl. cURL удобен для скачивания одиночных файлов, хотя и wget неплохо справляется с данной задачей.
На сервера с системами семейства Linux всегда направлен большой уровень атак и сканирования портов В то время как правильно настроенный фаервол и регулярные обновления системы безопасности добавляют дополнительный уровень безопасности системы, вы также должны следить, не смог ли кто-нибудь пробраться через них.
Инструменты, представленные в этой статье, созданы для этих проверок безопасности и могут идентифицировать вирусы, вредоносные программы, руткиты и вредоносные поведения. Вы можете использовать эти инструменты для регулярного сканирования системы, например, каждую ночь и отправлять отчеты на ваш электронный адрес.
Lynis – Security Auditing and Rootkit Scanner
Lynis - это бесплатный, мощный и популярный инструмент с открытым исходным кодом для аудита и сканирования безопасности для операционных систем Unix или Linux. Это средство сканирования на наличие вредоносных программ и обнаружения уязвимостей, которое сканирует системы на наличие информации и проблем безопасности, целостности файлов, ошибок конфигурации; выполняет аудит брандмауэра, проверяет установленное программное обеспечение, права доступа к файлам и каталогам, а также многое другое.
Важно отметить, что он не выполняет автоматическое усиление защиты системы, однако просто дает предложения, позволяющие повысить уровень защиты вашего сервера.
Мы установим Lynis (версия 2.6.6) из исходных кодов, используя следующие команды.
# cd /opt/
# wget https://downloads.cisofy.com/lynis/lynis-2.6.6.tar.gz
# tar xvzf lynis-2.6.6.tar.gz
# mv lynis /usr/local/
# ln -s /usr/local/lynis/lynis /usr/local/bin/lynis
Теперь вы можете выполнить сканирование вашей системы с помощью команды ниже:
# lynis audit system
Initializing program
- Detecting OS... [DONE]
- Checking profiles... [DONE]
Program version: 2.6.6
Operating system: Linux
Operating system name: CentOS
Operating system version: CentOS Linux release 7.4.1708 (Core)
Kernel version: 4.17.6
Hardware platform: x86_64
Hostname: merionet
Profiles: /usr/local/lynis/default.prf
Log file: /var/log/lynis.log
Report file: /var/log/lynis-report.dat
Report version: 1.0
Plugin directory: /usr/local/lynis/plugins
Auditor: [Not Specified]
Language: en
Test category: all
Test group: all
- Program update status... [NO UPDATE]
Чтобы запускать Lynis автоматически каждую ночь, добавьте следующую запись cron, которая будет запускаться в 3 часа ночи и отправлять отчеты на ваш адрес электронной почты.
0 3 * * * /usr/local/bin/lynis --quick 2>&1 | mail -s "Lynis Reports of My Server" you@yourdomain.com
Chkrootkit – A Linux Rootkit Scanners
Chkrootkit - это еще один бесплатный детектор руткитов с открытым исходным кодом, который локально проверяет наличие признаков руткита в Unix-подобных системах. Он помогает обнаружить скрытые дыры в безопасности. Пакет chkrootkit состоит из сценария оболочки, который проверяет системные двоичные файлы на наличие изменений руткита, и ряда программ, которые проверяют различные проблемы безопасности.
Средство chkrootkit можно установить с помощью следующей команды в системах на основе Debian:
$ sudo apt install chkrootkit
В системах на базе CentOS вам необходимо установить его из источников, используя следующие команды:
# yum update
# yum install wget gcc-c++ glibc-static
# wget -c ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
# tar –xzf chkrootkit.tar.gz
# mkdir /usr/local/chkrootkit
# mv chkrootkit-0.52/* /usr/local/chkrootkit
# cd /usr/local/chkrootkit
# make sense
Чтобы проверить ваш сервер с помощью Chkrootkit, выполните следующую команду:
$ sudo chkrootkit
Или
# /usr/local/chkrootkit/chkrootkit
После запуска начнется проверка вашей системы на наличие известных вредоносных программ и руткитов, а после завершения процесса вы сможете увидеть отчет.
Чтобы запускать Chkrootkit автоматически каждую ночь, добавьте следующую запись cron, которая будет запускаться в 3 часа ночи, и отправляйте отчеты на ваш адрес электронной почты.
0 3 * * * /usr/sbin/chkrootkit 2>&1 | mail -s "chkrootkit Reports of My Server" you@yourdomain.com
Rkhunter – A Linux Rootkit Scanners
RKH (RootKit Hunter) - это бесплатный, мощный, простой в использовании и хорошо известный инструмент с открытым исходным кодом для сканирования бэкдоров, руткитов и локальных эксплойтов в POSIX-совместимых системах, таких как Linux. Как следует из названия, это средство для обнаружения руткитов, мониторинга и анализа безопасности, которое тщательно проверяет систему на наличие скрытых дыр в безопасности.
Инструмент rkhunter можно установить с помощью следующей команды в системах на основе Ubuntu и CentOS
$ sudo apt install rkhunter
# yum install epel-release
# yum install rkhunter
Чтобы проверить ваш сервер с помощью rkhunter, выполните следующую команду.
# rkhunter -c
Чтобы запускать rkhunter автоматически каждую ночь, добавьте следующую запись cron, которая будет работать в 3 часа ночи и отправлять отчеты на ваш адрес электронной почты.
0 3 * * * /usr/sbin/rkhunter -c 2>&1 | mail -s "rkhunter Reports of My Server" you@yourdomain.com
ClamAV – Antivirus Software Toolkit
ClamAV - это универсальный, популярный и кроссплатформенный антивирусный движок с открытым исходным кодом для обнаружения вирусов, вредоносных программ, троянов и других вредоносных программ на компьютере. Это одна из лучших бесплатных антивирусных программ для Linux и стандарт с открытым исходным кодом для сканирования почтового шлюза, который поддерживает практически все форматы почтовых файлов.
Он поддерживает обновления вирусных баз во всех системах и проверку при доступе только в Linux. Кроме того, он может сканировать архивы и сжатые файлы и поддерживает такие форматы, как Zip, Tar, 7Zip, Rar и многие другие.
ClamAV можно установить с помощью следующей команды в системах на основе Debian:
$ sudo apt-get install clamav
ClamAV можно установить с помощью следующей команды в системах на базе CentOS:
# yum -y update
# yum -y install clamav
После установки вы можете обновить сигнатуры и отсканировать каталог с помощью следующих команд.
# freshclam
# clamscan -r -i DIRECTORY
Где DIRECTORY - это место для сканирования. Опция -r означает рекурсивное сканирование, а -i - показать только зараженные файлы.
LMD – Linux Malware Detect
LMD (Linux Malware Detect) - это мощный и полнофункциональный сканер вредоносных программ для Linux с открытым исходным кодом, специально разработанный и предназначенный для общедоступных сред, но его можно использовать для обнаружения угроз в любой системе Linux. Он может быть интегрирован с модулем сканера ClamAV для повышения производительности.
Он предоставляет полную систему отчетов для просмотра текущих и предыдущих результатов сканирования, поддерживает оповещения по электронной почте после каждого выполнения сканирования и многие другие полезные функции.
LMD недоступен в онлайн-хранилищах, но распространяется в виде тарбола с веб-сайта проекта. Тарбол, содержащий исходный код последней версии, всегда доступен по следующей ссылке, где его можно скачать с помощью:
# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
Затем нам нужно распаковать архив и войти в каталог, в который было извлечено его содержимое. Там мы найдем установочный скрипт install.sh
# tar -xvf maldetect-current.tar.gz
# ls -l | grep maldetect
Далее запускаем скрипт
# ./install.sh
На этом пока все! В этой статье мы поделились списком из 5 инструментов для сканирования сервера Linux на наличие вредоносных программ и руткитов.
Временные списки доступа ACL (Time Based Access-List) – это такие ACL, которые позволяют ограничивать или разрешать доступ до ресурсов в зависимости от времени. Например, запретить выход в интернет для компьютеров в нерабочее время.
Настройка на оборудовании Cisco
Про настройку стандартных ACL можно прочесть тут;
Про настройку расширенных ACL можно прочесть здесь;
Для реализации списков доступа, основанных на времени, существует несколько простых шагов:
Определить временной диапазон когда должен действовать ACL
Определить что должен ограничивать и разрешать ACL и применить к нему временной диапазон
Применить ACL к нужному интерфейсу
Сначала на маршрутизаторе создадим временной диапазон, используя команду time-range [имя_диапазона] . Затем определяем, будет он периодическим (задаем периоды работы) или абсолютным (задаем начало и конец). Если он будет периодическим, то мы используем команду periodic [день_недели][час:минуты]to[день_недели][час:минуты] (также можно использовать аргументы weekend - Суббота и Воскресенье, weekdays - с Понедельника по Пятницу, и daily - Каждый день), а если абсолютным, то используем команду absolute [дата_начала] [дата_конца] .
Пример создания периодического временного диапазона:
Router#conf t
Router(config)#time-range weekends
Router(config)#periodic weekend 08:00 to 22:00
Либо можно указать отдельные дни:
Router#conf t
Router(config)#time-range mwf
Router(config)#periodic Monday Wendsday Friday 08:00 to 16:00
Пример создания абсолютного временного диапазона:
Router#conf t
Router(config)#time-range cisco
Router(config)#absolute start 00:00 1 May 2018 end 00:00 1 April 2019
Далее создаем ACL и указываем в нем созданный диапазон при помощи аргумента time-range [название]
Router(config)#ip access-list extended deny-weekends
Router(config)#deny tcp any any eq 80 time-range weekens
И после этого применим этот лист на интерфейсах:
Router(config)#interface fa0/1
Router(config)#ip access-group deny-weekends out
После этого лист контроля доступа будет применяться в зависимости от времени, выставленном на маршрутизаторе, поэтому очень важно, чтобы оно было выставлено верно. Посмотреть созданные временные диапазоны можно при помощи команды show time-range.