• Расшарить Папку по HTTP с помощью Python
  • Добавление Заданий для Cron в Linux — Примеры Crontab
  • Цветной BASH
  • Обнаружение Атаки Методом Грубой Силы на FTP
  • Команда для определения количества подключений к порту

Расшарить Папку по HTTP с помощью Python

Иногда возникает необходимость быстро расшарить файлы или папки на Linux машине.

Нет способа быстрее и проще, чем …

Использование модуля для Python (>= 2.4) — Simple HTTP Server. В большинстве случаев, Вам не придется ничего устанавливать или настраивать!

Этот модуль поднимает Простой HTTP Сервер, который превращает текущую директорию в корневую директорию вэб-сервера. Таким образом, директория вместе со всем ее содержимым становится доступной по HTTP.

# Для Python >=2.4
python -m SimpleHTTPServer
# Для Python 3.x
python -m http.server

Теперь, перейдя по адресу http://ваш_ip_адрес:8000, Вы получите доступ к содержимому директории.

Simple HTTP Server, по умолчанию слушает 0.0.0.0:8000, но номер порта может быть изменен :

# Для Python >=2.4
python -m SimpleHTTPServer 8888
# Для Python 3.x
python -m http.server 8888

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

Добавление Заданий для Cron в Linux — Примеры Crontab

Демон сrond — это сервис, который читает crontabs (таблицы cron-а) и выполняет запланированные задания.

В данной статье описано как планировать выполнение регулярных задач с помощью планировщика cron в Linux, а также показаны формат (синтаксис) задач в crontab и примеры заданий для cron.

Первым делом необходимо убедиться что сервис crond запущен и добавлен в автозагрузку.

# chkconfig —list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service crond status
crond (pid 3760) is running…

Запустите сервис crond если он остановлен и добавьте его в автозагрузку если он еще не там.

Добавление Заданий для Cron в Сrontab

Выполните следующую команду для редактирования crontab текущего пользователя :

# crontab -e

Редактировать crontab пользователя username :

# crontab -u username -e

Просмотреть содержимое crontab-а текущего ползователя и пользователя username :

# crontab -l
# crontab -u username -l

По умолчанию, задания для планировщика cron хранятся в директории /var/spool/cron/

Формат Планирования Задач в Сrontab

Каждое запланированное задание описывается одной строкой и определяет время начала выполнения задачи и команду которая будет выполнена.

Для задания времени можно использовать конкретное значение минуты, часа, дня месяца, месяца и дня недели.

Вместо конкретных значений можно использовать знак ‘*‘, который буде означать ‘все‘ значения или ‘каждое‘ из значений.

Напоминалка :

.---------------- минута (0 - 59)
| .-------------- час (0 - 23)
| | .------------ день месяца (1 - 31)
| | | .---------- месяц (1 - 12) ИЛИ jan,feb,mar ...
| | | | .-------- день недели (0 - 6) (Воскресенье=0 или 7) ИЛИ sun,mon,tue ...
| | | | |
* * * * * команда для выполнения

Временная метка может быть целым значением, несколькими значениями, диапазоном, дробью или дробным диапазоном.

Примеры временных меток для колонки ‘Час‘ :

Значение Описание
9 целое значение : выполнять в 9am
6,7,10 несколько значений : выполнять в 6, 7 и 10am
6-9 диапазон : выполнять каждый час между 6-9 AM (включительно)
*/2 дробь : выполнять каждый 2-ой час, т.е. 0 (полночь), 2am, 4am, 6am, и т.д.
3-12/3 дробный диапазоном : выполнять каждый 3-ий час между 3am и 12pm, т.е. 3am, 6am, 9am, 12pm

Существует насколько предопределенных значений, которыми можно заменять время выполнения задания :

Значение Описание Эквивалент
@reboot выполнять при загрузке операционной системы
@yearly выполнять ежегодно в полночь 1-го января 0 0 1 1 *
@annually выполнять ежегодно в полночь 1-го января 0 0 1 1 *
@monthly выполнять ежемесячно в полночь 1-го числа 0 0 1 * *
@weekly выполнять в полночь каждый понедельник 0 0 * * 0
@daily выполнять ежедневно в полночь 0 0 * * *
@midnight выполнять ежедневно в полночь 0 0 * * *
@hourly выполнять в начале каждого часа 0 * * * *

Примеры Crontab

Рассписание Задание
* * * * * echo «Выполнять задание каждую минуту«
*/5 * * * * echo «Выполнять задание каждые 5 минут«
*/30 * * * * echo «Выполнять задание каждые 30 минут«
0 * * * * echo «Выполнять задание каждый час«
0 */3 * * * echo «Выполнять задание каждые 3 часа«
0 13 * * * echo «Выполнять задание каждый день в 13:00«
30 2 * * * echo «Выполнять задание каждый день в 2:30«
0 0 * * * echo «Выполнять задание каждый день в полночь«
0 0 * * 0 echo «Выполнять задание каждое Воскресенье«
0 0 * * 1 echo «Выполнять задание каждый Понедельник«
0 0 1 * * echo «Выполнять задание в первый день каждого месяца«
0 0 1 1 * echo «Выполнять задание каждый год первого Января«

Добавить Сервис в Автозагрузку

Довольно частой является ситуация, когда возникает необходимость добавить какой-либо сервис в автозагрузку.

Например Вы установили Apache с MySQL и теперь хотите чтобы при загрузке сервера они каждый раз запускались автоматически.

В этой небольшой заметке показано как добавить сервис в автозагрузку в Linux Mint, Ubuntu, Debian, CentOS and RedHat.

Автозапуск Сервиса — Linux Mint, Ubuntu, Debian

Автоматический запуск сервиса во время загрузки системы в Linux Mint, Ubuntu, Debian :
# update-rc.d servicename defaults

Добавление Сервиса в Автозагрузку — CentOS, RedHat

Включение автозагрузки сервиса в CentOS, RedHat :
# chkconfig servicename on

Цветной BASH

Cкрипт, написанный на BASH, можно сделать намного красивее и интерактивнее если раскрасить его вывод.

С помощью управляющих ANSI кодов можно менять цвет текста и фона.

Разукрашиваем Shell

Шаблон для написания цветного текста :
echo -e «\e[ЦВЕТmКакой-то Текст\e[0m»

Опция Описание
-e Включить интерпретацию управляющих кодов
\e[ Начинаем изменять цвет
Цветm Код Цвета + ‘m’ в конце
\e[0m Заканчиваем изменять цвет

Примеры :

$ echo -e «\e[31mКрасный Текст\e[0m»
Красный Текст
$ echo -e «\e[42mЗеленый Фон\e[0m»
Зеленый Фон

ANSI — Коды Управления Цветом

В BASH скриптах, для изменения цвета вывода, используются управляющие коды ANSI :

Цвет Кода цвета текста Код цвета фона Пример
Black 30 40
Red 31 41
Green 32 42
Brown 33 43
Blue 34 44
Purple 35 45
Cyan 36 46
Light Gray 37 47

Управляющие коды также позволяют контролировать в каком виде символы выводятся на экран:

ANSI Код Описание
0 Нормальные шрифт
1 Жирный шрифт
4 Подчеркнутый шрифт
5 Мигающие шрифт
7 Инверсия шрифта

Примеры :

$ echo -e «\e[1mЖирный Текст\e[0m»
Жирный Текст
$ echo -e «\e[3mПодчеркнутый Текст\e[0m»
Подчеркнутый Текст

Комбинируя управляющие коды, можно достичь интересных эффектов :

echo -e «\e[Цвет1;Цвет2mSample Text\e[0m»

Цвета немного отличаются если их комбинировать с жирным шрифтом :

Цвет Кода цвета текста Код цвета фона Sample
Dark Gray 1;30 1;40
Light Red 1;31 1;41
Light Green 1;32 1;42
Yellow 1;33 1;43
Light Blue 1;34 1;44
Light Purple 1;35 1;45
Light Cyan 1;36 1;46
White 1;37 1;47

Примеры :

$ echo -e «\e[1;34mСветло-синий Текст\e[0m»
Светло-синий Текст
$ echo -e «\e[1;33;4;44mЖелтый Подчеркнутый Текст на Синем Фоне\e[0m»
Желтый Подчеркнутый Текст на Синем Фоне

Обнаружение Атаки Методом Грубой Силы на FTP

Простые команды, приведенные ниже, помогут обнаружить попытки взлома FTP сервера методом грубой силы, т.е. с помощью «атаки по словарю» или «перебора».

1. Подсчитайте количество запущенных процессов FTP.

Во время атаки методом грубой силы, количество процессов может значительно возрасти.
$ ps -ef | grep -i ftp | grep -v grep -c
2. Проверьте, осуществляется ли атака в реальном времени.
$ tail -f /var/log/vsftpd.log | grep -i «FAIL LOGIN»
ЗАМЕЧАНИЕ : Следующие параметры могут отличаться, в зависимости от Вашей системы :

  • /var/log/vsftpd.log — путь к логам FTP;
  • FAIL LOGIN — сообщение, которое информирует о попытке подключения к FTP серверу, с использованием неправильного логина или пароля.
  • OK LOGIN -сообщение, которое информирует о успешной аутентификации.

3. Получите IP-адрес злоумышленника, путем подсчета количества ответов «FAIL LOGIN».
$ grep «FAIL LOGIN» /var/log/vsftpd.log | grep -Eo ‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}’ | sort | uniq -c | sort -rn | more
5. Проверьте, была ли атака успешна, путем поиска в логах сообщения «OK LOGIN» и IP-адреса злоумышленника, например 192.168.1.2.
$ grep -i «OK LOGIN» /var/log/vsftpd.log | grep 192.168.1.2
5. Заблокируйте IP-адрес злоумышленника.

Самый простой способ, это добавить IP-адрес злоумышленника в файл ‘/etc/hosts.deny’.

Вот некоторые примеры :

Заблокировать все сервисы для IP-адреса ‘192.168.1.2’.
ALL: 192.168.1.2
Заблокировать все сервисы для IP-адресов ‘192.168.1.2’ и ‘192.168.1.3’.
ALL: 192.168.1.2 192.168.1.3

Команда для определения количества подключений к порту

netstat -plan | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n