Включение модуля full_audit, позволяет увидеть кто и к какому файлу обращался, кто создал, удалил или переименовал конкретный файл или каталог.
Количество сообщений, записываемых в лог-файлы, для всех VFS модулей может быть задано следующим параметром в секции [global]:
log level = 0 vfs:2
Если планируется сохранять лог-файлы длительное время, может быть полезным указание параметра
max log size = 0
Размер лог-файла задается в килобайтах. При достижении указанного значения файл будет переименован, путем добавления к имени файла расширения .old. Значение 0 отключает проверку размера (в этом случае необходимо самостоятельно позаботиться о размере лог-файла, к примеру, настроив соответсвующим образом logrotate).
Для активации модуля аудита, в секции, которая описывает расшаренный ресурс, добавляется строка
vfs objects = full_audit
В результате данные о доступе к файлам будут записываться в syslog, либо в лог-файл по умолчанию (log.smbd). Здесь же, через пробел, могут быть заданы другие VFS модули.
Можно указать дополнительные параметры модулю full_audit. Префикс, сообщений в лог-файле:
full_audit:prefix = %u|%I
(каждая строка будет начинаться с user|ip_adress)
Какие ошибки должны отображаться в лог-файле:
full_audit:failure = none
(не протоколируем ошибки)
Действия пользователей, которые записываются в лог-файл
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
Параметры, позволяющие управлять записью в журналы демоном syslogd:
После того как в конце года сотрудник по ошибке грохнул директорию с отчетами на сетевом диске я озаботился созданием корзины на шарах, для таких случаев.
recylce:excludedir – список исключения директорий, файлы из которых не будут попадать в корзину
recycle:exclude – список исключений для файлов. В данном случае указан в виде масок некоторых расширений.
recycle:versions – параметр отвечает за версионность удаленных файлов, если их имена совпадают. В таком случае к удаленном файлу в начале имени будет добавляться Copy #N of.
recycle:touch – параметр отвечает за то, будет ли указана дата изменения файла на время удаления файла, либо останется оригинальное значение файла.
recycle:keeptree – сохранять или нет дерево каталогов для удаленных файлов.
recycle:repository – указываем директорию, где будут храниться удаленные файлы. Она может располагаться где угодно. Если параметр не указан, используется значение по-умолчанию — .recycle в корне сетевого диска. %U – при установке этого параметра к каталогу корзины, все удаленные файлы будут храниться в директориях, с именами пользователей, которые их удалили, что довольно удобно.
В этом случае корзина будет одна для всех шар но не видима для пользователей samba.
Если вы хотите настроить корзину для каждого сетевого диска отдельно, то укажите эти же параметры в каждой сетевой шаре, указав уникальный путь для каждой корзины. И дополнительно добавьте к каждой шаре параметр:
vfs objects = recycle
Если у вас и аудит настроен для каждой шары отдельно, то не забудьте указать и этот модуль:
vfs objects = recycle full_audit
Для применения изменений необходимо перезапустить самбу.
Если вынести в шару – то она будет доступна пользователям (но тогда будет видно кто и, что удаляет). Что бы избежать этого стоит скрыть с глаз корзину добавив в [global]
# по умолчанию все файлы, начинающиеся с точки будут иметь атрибут "скрытый"
hide dot files = yes
а так же настроить права доступа к ней на уровне шары. И/или по ip ограничить доступ оставив только для системного администратора или избранных пользователей.
Полезная утилита, например для сборки всякого софта, если например у вас бывают обрывы с интернетом, либо просто нет времени сидеть и ждать наблюдая в консоли, и надо срочно отойти.
Устанавливаем
# yum install screen
запускаем:
# screen
после запускаем установку софта, например cpanel:
# cd /home # wget -N http://httpupdate.cpanel.net/latest # sh latest
Давим Ctrl+a+d
на экране появится
[detached]
проверим список наших скринов:
# screen -ls
There is a screen on:
22570.pts-2.server (Detached)
1 Socket in /var/run/screen/S-root.
при желании можно подключиться и проверить что творится в консоли
# screen -r 22570.pts-2.server
Таким образом, можем не переживать что у нас отвалится инет во время установки cpanel
Для того чтобы узнать другие комбинации клавиш работающие/полезные в screen наберите в окне
screen Ctrl+A затем «?»
Выделю несколько полезных комбинаций:
Ctrl+A затем «c» — создать окно
screen Ctrl+A затем «p» — переключиться к предыдущему окну
screen Ctrl+A затем «n» — переключиться к следующему окну
screen Ctrl+A затем «d» — отключиться от screen оставив сеансы работающими
Ctrl+D — выйти из всех сеансов screen
Ctrl+A затем «H» — записывать в журнал
Работа с несколькими скринами
Eсли вам нужно запустить лишь одну программу – вышеописанного более чем достаточно, но в случае если таких программ несколько – скринам нужно будет раздать имена, чтобы screen знала, к какому именно свернутому скрину вы хотите вернуться. Имя создаваемого скрина задается с помощью ключа -S:
screen -S rtor rtorrent
Cверните скрин с rtorrent’ом и запустите еще что-нибудь, к примеру nano:
screen -S nano nano
Этот скрин также сверните. Теперь можно вернуться к любому из двух скринов аналогично вышеописанному, только с указанием имени скрина, который вы хотите развернуть, например:
screen -r nano
Список запущенных скринов можно посмотреть с помощью:
screen -list
или
screen -ls
Возможно также вернуться к уже развернутому в ином терминале скрину:
screen -x nano
Запуск скрина в свернутом виде
Программу можно запустить сразу в свернутом скрине. Это полезно в случае с автозапуском, или когда вы знаете, что программа сама все сделает (установит соединение и продолжит закачку/раздачу в нашем примере с rtorrent), и смотреть там не на что. Делается все опять же просто. Команда на запуск будет такой:
screen -dmS rtor rtorrent
Ключ -d укажет, что скрин нужно свернуть, а ключ -m – что его нужно для начала создать. Процесс «усложняется» по той причине, что ключ -d по умолчанию используется для сворачивания ранее запущенного скрина, развернутого на другой консоли или в соседней вкладке, с той целью, чтобы развернуть его в текущем месте (ибо если одна и та же программа управляется из двух мест – это может и к конфузу привести). Таким образом нужная программа запустится сразу в фоне, а screen лишь выведет сообщение о том, что программа запущена, и скрин свернут.
Сетевые пакеты поступают в сетевой интерфейс, настроенный на стек TCP/IP и после некоторых простых проверок ядром (например, контрольная сумма) проходят последовательность цепочек (chain) (обозначены пунктиром). Пакет обязательно проходит первоначальную цепочку PREROUTING. После цепочки PREROUTING, в соответствии с таблицей маршрутизации, проверяется кому принадлежит пакет и, в зависимости от назначения пакета, определяется куда он дальше попадет (в какую цепочку). Если пакет НЕ адресован (в TCP пакете поле адрес получателя – НЕ локальная система) локальной системе, то он направляется в цепочку FORWARD, если пакет адресован локальной системе, то направляется в цепочку INPUT и после прохождения INPUT отдается локальным демонам/процессам. После обработки локальной программой, при необходимости формируется ответ. Ответный пакет пакет отправляемый локальной системой в соответствии с правилами маршрутизации направляется на соответствующий маршрут (хост из локальной сети или адрес маршрутизатора) и направляется в цепочку OUTPUT. После цепочки OUTPUT (или FORWARD, если пакет был проходящий) пакет снова сверяется с правилами маршрутизации и отправляется в цепочку POSTROUTING. Может возникнуть резонный вопрос: почему несколько раз пакет проходит через таблицу маршрутизации? (об этом – ниже).
Каждая цепочка, которую проходит пакет состоит из набора таблиц (table) (обозначены овалами). Таблицы в разных цепочках имеют одинаковое наименование, но тем не менее никак между собой не связаны. Например таблица nat в цепочке PREROUTING никак не связана с таблицей nat в цепочке POSTROUTING. Каждая таблица состоит из упорядоченного набора (списка) правил. Каждое правило содержит условие, которому должен соответствовать проходящий пакет и действия к пакету, подходящему данному условию.
Проходя через серию цепочек пакет последовательно проходит каждую таблицу (в указанном на иллюстрации порядке) и в каждой таблице последовательно сверяется с каждым правилом (точнее сказать – с каждым набором условий/критериев в правиле), и если пакет соответствует какому-либо критерию, то выполняется заданное действие над пакетом. При этом, в каждой таблице (кроме пользовательских) существует заданная по-умолчанию политика. Данная политика определяет действие над пакетом, в случае, если пакет не соответствует ни одному из правил в таблице. Чаще всего – это действие ACCEPT, чтобы принять пакет и передать в следующую таблицу или DROP – чтобы отбросить пакет. В случае, если пакет не был отброшен, он завершает свое путешествие по ядру системы и отправляется в сетевую карту сетевой интерфейс, которая подходит по правилам маршрутизации.
Компоненты
xtables iptables ip6tables arp_tables
nf_conntrack
ebtables
Utils
iptables/ip6tables/ip(6)tables-(save|restore)
ipset
ebtables
arptables
firewalld
В основном фильтрация L3-L4 уровней
Пакетный фильтр – это набор правил. Каждое правило – это набор таблиц и цепочек. Каждая таблица состоит из цепочек. Каждая цепочка – упорядоченный набор правил, просматриваемый начиная с первого.
Каждое правило состоит из
критерий срабатывания
действие Каждое правило имеет счетчик срабатываний.
raw – изначальная обработка, до conntrack mangle – модификация заголовков и маркировка пакетов nat – трансляция адресов filter – фильтры security – работа с SELinux
min запросов в http пакете – 6. SYN –> ACK, ACK-SYN –>, SYN-ACK
Критерии срабатывания L3
-i/–in-interface Входящий интерфейс -o/–out-interface Исходящий интерфейс -s/–source Адрес источника -d/–destination Адрес назначения -p/–protocol IP-Протокол (tcp, udp, icmp…) -f/–fragment Является ли фрагментом (2+ в серии)
Критерии срабатывания L4
TCP/UDP –sport port[:port] порт или диапазон портов –dport port[:port] порт или диапазон портов
ACCEPT – Принять пакет DROP – Отбросить пакет REJECT – Отбросить и сообщить источнику icmp-сообщением RETURN – Вернуться в вішестоящюю цепочку или применить правило поумолчанию LOG chain_name – Перейти в цепочку chain_name DNAT – Destination NAT SNAT – Source NAT MASQUARADE – Source NAT для динамически конфигурируемых интерфейсов SET – Добавление/Удаление адреса в ipset
Дополнительные модули срабатывания
conntrack/state – критерии срабатывания основанные на состоянии соединения multiport – критерий срабатывания, позволяющий указать список портов, а не диапазон iprange – критерий срабатывания, который позволяет указать ip-range вместо cidr-префикса mark/connmark – основан на маркировке пакета/соединения set – критерий основанный на ipset u32 – гибкий критерий, позволяющий работать напрямую с заголовками пакетов и отдельными битами
conntract
Подсистема отслеживания состояний соединений. Базово соединения имеют состояния: NEW – новое соединение. Отбираются пакеты устанавливающие соединения. ESTABLISHED – установленное соединение. Отбираются пакеты не !syn/syn+ack, !rst/fin, которые относятся к уже отслеживаемым соединениям RELATED – относятся к другому, уже установленному соединению (passive ftp, icmp-messages) INVALID – пакеты принадлежность которых к отслеживаемым соединения установить не удалось
Подсистема очень удобна при невысокой нагрузке. При высокой же требует настройки, иначе может приводить к потере пакетов или связности в целом из-за переполнения таблицы conntrack или слишком большого ее размера.
В HL рекомендуется отключать, так как просмотр таблиц добавляет время к обработке пакета повышая latency приложения.
В этой системе, размер таблицы поумолчанию, 15тыс соединений:
# sysctl -a | grep conntrack net.nf_conntrack_max = 15624
If this returns a string with or including “router bgp 7675”, delete it by executing:
configure terminal no router bgp 7675 router bgp 65500 no auto-summary no synchronization neighbor 192.168.1.64 remote-as 65500 neighbor 192.168.1.64 description "Net-R1" network 192.168.44.0 mask 255.255.255.0 do write
Для всех маршрутизаторов повторяем:
Net-R1# conf t Net-R1(config)# router bgp 65500 Net-R1(config-router)# neighbor 192.168.1.1 remote-as 65500 Net-R1(config-router)# end
Net-R2# conf t Net-R2(config)# router bgp 65500 Net-R2(config-router)# redistribute connected Net-R2(config-router)# end
Net-R1# conf t Net-R1(config)# router bgp 65500 Net-R1(config-router)# redistribute connected Net-R1(config-router)# end
Ищем строку и оставляем нужный протокол:
[root@Net-R1 sysconfig] # cd /etc/sysconfig [root@Net-R1 sysconfig] # vi quagga #Uncomment and edit this line to reflect the daemons you are actually using: #WATCH_DAEMONS="zebra bgpd ospfd ospf6d ripd ripngd" WATCH_DAEMONS="zebra bgpd"