Является ли итеративное добавление дополнительных правил AppArmor плохим?

ssmtp— это всего лишь одна из многих обёрток Sendmail. Все они принимают сообщение на стандартный ввод и, возможно, список адресов в качестве аргументов строки команды -, и все они предлагают двоичный файл с именем sendmail, который реализует (по крайней мере основные функции )традиционного Команда Sendmail -строка API. Но, собственно говоря, это сообщение должно быть -правильно сформированным сообщением RFC822. Как минимум, он должен иметь заголовок Subject:.

ssmtp address@example.com <<<$'Subject: testing 1...2...3'

ssmtpsendmail— это просто символическая ссылка на ssmtp. Postfix, Exim и я полагаю, что любой другой MTA, который Provides: mail-transport-agentимеет аналогичную структуру, за исключением, конечно, sendmail, где двоичный файл sendmailявляется "настоящим".)

Чаще всего вы можете объединить простое сообщение электронной почты с документом здесь.

/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: recipient@example.net

Here we interpolate the shell variable $result
____HERE

(Опция Sendmail -tговорит, что нужно брать список получателей из заголовков сообщения, которое вы получаете при стандартном вводе. Точный путь к Sendmail зависит от платформы.)

Другим распространенным вариантом является объединение вывода нескольких команд. Позаботьтесь о том, чтобы между заголовками и телом сообщения была пустая строка ("шея" ).

( printf "Subject: random number\n\n"
  dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail elsewhere@example.org

Для всего, кроме очень простых текстовых -только сообщений ASCII, вам необходимо понять, как составить правильное сообщение MIME, и в этот момент обычно имеет смысл использовать такой инструмент, как mutt. Некоторые платформы имеют mailили mailx, которые знают, как отправлять вложения и текст, отличный от -ASCII, но это не полностью переносимо.

Проблема здесь не в том, чтобы найти клиент, который может принять сообщение электронной почты и попытаться отправить его, а в том, чтобы настроить его для специфики Gmail.который требует, чтобы MTA знал имя пользователя и пароль для использования для удаленного сервера, чтобы иметь возможность использовать его в качестве исходящего смарт-хоста.

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

1
03.08.2019, 08:14
1 ответ

Конечно, технически это возможно... но это не самый эффективный способ работы.

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

Если вы сначала запретите все, вы получите сообщения об ошибках программы, содержащие информацию о том, что программа пытается сделать и терпит неудачу (, вероятно, из-за чрезмерно строгих правил AppArmor ). Вы также получите сообщения в журнале системного аудита, в которых будет указано, что именно AppArmor помешал программе сделать, что будет большим подспорьем в разрешении именно того, что нужно программе, и не более того.

Обратите внимание, что профили AppArmor также можно настроить в режиме жалоб :. В этом режиме AppArmor на самом деле не будет мешать программе выполнять какие-либо действия, а будет генерировать сообщения журнала аудита , как если бы это было так. Итак, если вам нужно свести к минимуму сбои в работе конкретного приложения, для которого вы разрабатываете профиль AppArmor, вы можете начать с профиля «разрешить -ничего» в режиме жалоб, просмотреть полученный журнал аудита,добавьте правила, чтобы разрешить вещи, которые выглядят законными и в настоящее время генерируют сообщения аудита, и продолжайте итерацию таким образом, пока любые сообщения аудита об этом приложении не будут касаться того, что вы не хотите, чтобы приложение делало в первую очередь.

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

1
27.01.2020, 23:41

Теги

Похожие вопросы