1). Количество линий в файле
sed -ne '$=' ~/.bashrc
2). Сокращенный вывод при подсчете размера текущего каталога (оставляем только подкаталоги)
du -h . | grep -v '/.*/' | sort -n
3). календарь за месяц
cal 01 2011
4). uptime графически
uptime | awk '{while($3--) a=a"="; print "|" a ">"}'
5). к какому пакету относится файл txt1
fedora# rpm -qf txt1
debian# dpkg -S txt1
gentoo# equery belongs txt1
freebsd# pkg_info -W txt1
freebsd# pkg_info -E txt1
четверг, 27 января 2011 г.
вторник, 4 января 2011 г.
Консольные юниксовые снифферы паролей
Как отснифать
dsniff
dsniff -i eth0 -w ./password (если хотим сохранить в файл)
Как прочитать (если сохранено в файле)
dsniff -r ./password
http://www.protocols.ru/modules.php?name=News&file=article&sid=29 - можно почитать
еще утилитки из той же области
Arpspoof, спуфит указанный вами ip-адрес.
arpspoof 192.168.0.2
У этого компьютера будет, выходит сообщение, что ip-адрес занят и используется в сети, при этом иногда нарушается работа некоторых сетевых программ. К примеру, спуфинг кс-сервака закончился диссконектом всех клиентов.
Urlsnarf, перехват URL. Просто запускаем и ждем, все выводится прямо на экран, можно перенаправить в файл.
urlsnarf > url.log( Ждем…)
192.168.21.21 - - [19/Mar/2007:02:58:30 +0300] "GET http://club.itdrom.com/gallery/gal_source/delphi/d-a-p2 HTTP/1.1" - - "http://club.itdrom.com/gallery/gal_source/delphi/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Что нам дают эти на первый взгляд не нужные url? Можно узнать пароли к некоторым сайтам, где бывает человек, версии ОС, браузера.
Dsniff, основной сниффер, перехват POP, AIM, HTTP, FTP, NIS, NNTP…. Использовать лучше в фоне, а вывод направить в файл.
nohup dsniff 2>1 >> ds.log &
03/19/07 00:30:13 tcp 192.168.4.66.1044 -> 64.12.200.89.5190 (aim)
418823169
18
03/19/07 02:56:03 tcp 192.168.2.61.1744 -> 194.67.23.102.110 (pop)
USER daniil98
PASS 1234567890
03/19/07 02:16:26 tcp 192.168.2.61.1540 -> 213.24.222.132.21 (ftp)
USER fc1
PASS fc1
Остальные утилиты:
Macof - arp-флудер сети.
Dnsspoof – подделывает PTR-записи DNS(??).
Filesnarf – перехватывает файлы по NFS.
Msgsnarf – перехват сообщений IRC, ICQ, AIM (не знаю почему так и не заработал…)
Mailsnarf – перехват почты POP, SMTP. (ноу эффект…)
Sshmitm – какая-то сложная атака перехвата сеансов на SSH (не пробовал, да и врятли это получится…)
Webmitm – тоже только для web.
http://forum.antichat.ru/showthread.php?p=313506 - почитать
dsniff
dsniff -i eth0 -w ./password (если хотим сохранить в файл)
Как прочитать (если сохранено в файле)
dsniff -r ./password
http://www.protocols.ru/modules.php?name=News&file=article&sid=29 - можно почитать
еще утилитки из той же области
Arpspoof, спуфит указанный вами ip-адрес.
arpspoof 192.168.0.2
У этого компьютера будет, выходит сообщение, что ip-адрес занят и используется в сети, при этом иногда нарушается работа некоторых сетевых программ. К примеру, спуфинг кс-сервака закончился диссконектом всех клиентов.
Urlsnarf, перехват URL. Просто запускаем и ждем, все выводится прямо на экран, можно перенаправить в файл.
urlsnarf > url.log( Ждем…)
192.168.21.21 - - [19/Mar/2007:02:58:30 +0300] "GET http://club.itdrom.com/gallery/gal_source/delphi/d-a-p2 HTTP/1.1" - - "http://club.itdrom.com/gallery/gal_source/delphi/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Что нам дают эти на первый взгляд не нужные url? Можно узнать пароли к некоторым сайтам, где бывает человек, версии ОС, браузера.
Dsniff, основной сниффер, перехват POP, AIM, HTTP, FTP, NIS, NNTP…. Использовать лучше в фоне, а вывод направить в файл.
nohup dsniff 2>1 >> ds.log &
03/19/07 00:30:13 tcp 192.168.4.66.1044 -> 64.12.200.89.5190 (aim)
418823169
18
03/19/07 02:56:03 tcp 192.168.2.61.1744 -> 194.67.23.102.110 (pop)
USER daniil98
PASS 1234567890
03/19/07 02:16:26 tcp 192.168.2.61.1540 -> 213.24.222.132.21 (ftp)
USER fc1
PASS fc1
Остальные утилиты:
Macof - arp-флудер сети.
Dnsspoof – подделывает PTR-записи DNS(??).
Filesnarf – перехватывает файлы по NFS.
Msgsnarf – перехват сообщений IRC, ICQ, AIM (не знаю почему так и не заработал…)
Mailsnarf – перехват почты POP, SMTP. (ноу эффект…)
Sshmitm – какая-то сложная атака перехвата сеансов на SSH (не пробовал, да и врятли это получится…)
Webmitm – тоже только для web.
http://forum.antichat.ru/showthread.php?p=313506 - почитать
суббота, 6 ноября 2010 г.
торможение ssh и samba
Если у вас тормозит ssh и в логах (messages) такие сообщение
Nov 6 15:17:00 redhat smbd[13689]: Unable to connect to CUPS server localhost:631 - В соединении отказано
Nov 6 15:17:00 redhat smbd[13689]: [2010/11/06 15:17:00, 0] printing/print_cups.c:cups_connect(69)
то скорее ssh тормозит из-за samba, проблему решило добавление в конфиг samba таких строк
load printers = no
printing = bsd
printcap name = /dev/null
и после перезапуска samba все стало нормально
Nov 6 15:17:00 redhat smbd[13689]: Unable to connect to CUPS server localhost:631 - В соединении отказано
Nov 6 15:17:00 redhat smbd[13689]: [2010/11/06 15:17:00, 0] printing/print_cups.c:cups_connect(69)
то скорее ssh тормозит из-за samba, проблему решило добавление в конфиг samba таких строк
load printers = no
printing = bsd
printcap name = /dev/null
и после перезапуска samba все стало нормально
настройка аудита Linux
Ставим пакет audit, и пускаем сервис service auditd start (предварительно проверив уровни запуска chkconfig --list auditd)
1). Настраиваем наблюдение за конфигами и логами системы аудита
#vim /etc/audit/audit.rules
# наблюдение за конфигруционными файлами
-w /etc/audit/auditd.conf -p wa
-w /etc/audit/audit.rules -p wa
-w /etc/libaudit.conf -p wa
-w /etc/sysconfig/auditd -p wa
# наблюдение за журнальными файлами
-w /var/log/audit/
-w /var/log/audit/audit.log
где
-w - путь к файлу или директории (маски не позволительны)
-p - эквивалент фильтра perm (пример -F perm=aw, есть еще r (read), x (execute))
wa - w - запись (write), a - смена атрибутов (attribute change)
2). наблюдение за важными системными конфигурационнными файлами
# настройки и задания at
-w /var/spool/at/
-w /etc/at.deny
# задания cron
-w /etc/cron.deny -p wa
-w /etc/cron.d/ -p wa
-w /etc/cron.daily/ -p wa
-w /etc/cron.hourly/ -p wa
-w /etc/cron.monthly/ -p wa
-w /etc/cron.weekly/ -p wa
-w /etc/crontab -p wa
-w /var/spool/cron/root
# файлы паролей и груп
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow
# конфигурационные и журнальные файлы входа в систему
-w /etc/login.defs -p wa
-w /etc/securetty
-w /var/log/faillog
-w /var/log/lastlog
# список и имена хостов
-w /etc/hosts -p wa
# стартовый скрипты демонов
-w /etc/rc.d/init.d
-w /etc/rc.d/init.d/auditd -p wa
# пути поиска библиотек
-w /etc/ld.so.conf -p wa
-w /etc/ld.so.conf.d
# настройки времени
-w /etc/localtime -p wa
# системный переменные
-w /etc/sysctl.conf -p wa
# правила загрузки модулей
-w /etc/modprobe.d/
# модули системы PAM
-w /etc/pam.d
# настройки сервера SSH
-w /etc/ssh/sshd_config
3). настроим наблюдение за всеми системными вызовами, которые могут угрожать безопасности системы (применять в случае особой необходимости - высокая нагрузка на систему аудита и разрастание журналов файлов)
# изменения прав доступа к файлам
-a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32
-a - добавить правило в список
entry - события происходящие на входе в системный вызов
always - собитие записываетсь в журнал собитий
-S - имя системного вызова
# создание, открытие или изменение размеров файлов
-a entry,always -S crate -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64 -S
# создание и удаление каталогов
-a entry,always -S mkdir -S rmdir
# удаление и создание ссылок
-a entry,always -S unlink -S raname -S link -S symlink
# изменение расширенных атрибутов файлов
-a entry,always -S setxattr
-a entry,always -S lsetxattr
-a entry,always -S fsetxattr
-a entry,always -S removexattr
-a entry,always -S lremovexattr
-a entry,always -S fremovexattr
# создание файлов устройств
-a entry,always -S mknod
# монтирование файловых систем
-a entry,always -S mount -S umount -S umount2
# использование системного вызова ptrace для отладки процессов
-a entry,always -S ptrace
перегружаем демон
4). анализ журнальных файлов /var/log/audit/ нельзя делять редакторами (нечитабельны). Делает утилитами
aureport - общий анализ
aureport -f - список файлов к который происходил доступ
лучше запросить за определенный период (--end не обязателен)
aureport -f --start 09/20/10 13:00 --end 09/20/10 16:00
вместо времени можно использовать
now, recent (10 минут назад), today (начиная с полуночи), yesterday, this-week, this-month, this-year.
aureport -f --summary - какие файлы сколько раз были открыты
60. 06.11.2010 19:13:01 /etc/pam.d/crond 5 yes /usr/sbin/crond -1 11037
5 - номер системного вызова (чтобы видеть имя флаг -i)
yes - успешность или нет системного вызова
(deleted) -
-1 - UID (AUID) - пояснение ниже
11037 - номер события
каждое событие можно проанализировать утилитой
auserch -a номер_события (11037 - в нашем логе)
также можно искать события по именам системных вызовов (ключ -i)
auserch -sc ptrace -i
идентификаторам пользователей
ausearch -ui 500
именам исполняемых файлов
ausearch -x /usr/sbin/crond
имени терминала
ausearch -tm pts/0
именам демонов
ausearch -tm cron
или клуючам поиска
ausearch -k etc_access
можно также использовать временные промежутки
еще флаги aureport для генерации отчетов
-s - системный вызовы
-au - попытки аутентификации
-l - успешные логины
m - модификация экаунта
--failed - отчеты можно получать только для событий, завершившихся неудачно
пользователь может использовать команды su sudo, чтобы менять свой (UID), чтобы это обойти используется Audit UID (AUID), которые закрепляются за пользователем при входе в систему и не меняются, по умолчанию эта функция отключена по этому и -1, активация
/etc/pam.d/login добавить session required pam_loginuid.so
перед строкой (session include common-session - dedian), у меня (rpm based), можно до и после
session include system-auth
также нужно проверить или установщик не добавил уже эту строку, ту же операцию проделываем с другими файлами
/etc/pam.d/sshd gdm(kdm или kde) crond atd
1). Настраиваем наблюдение за конфигами и логами системы аудита
#vim /etc/audit/audit.rules
# наблюдение за конфигруционными файлами
-w /etc/audit/auditd.conf -p wa
-w /etc/audit/audit.rules -p wa
-w /etc/libaudit.conf -p wa
-w /etc/sysconfig/auditd -p wa
# наблюдение за журнальными файлами
-w /var/log/audit/
-w /var/log/audit/audit.log
где
-w - путь к файлу или директории (маски не позволительны)
-p - эквивалент фильтра perm (пример -F perm=aw, есть еще r (read), x (execute))
wa - w - запись (write), a - смена атрибутов (attribute change)
2). наблюдение за важными системными конфигурационнными файлами
# настройки и задания at
-w /var/spool/at/
-w /etc/at.deny
# задания cron
-w /etc/cron.deny -p wa
-w /etc/cron.d/ -p wa
-w /etc/cron.daily/ -p wa
-w /etc/cron.hourly/ -p wa
-w /etc/cron.monthly/ -p wa
-w /etc/cron.weekly/ -p wa
-w /etc/crontab -p wa
-w /var/spool/cron/root
# файлы паролей и груп
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow
# конфигурационные и журнальные файлы входа в систему
-w /etc/login.defs -p wa
-w /etc/securetty
-w /var/log/faillog
-w /var/log/lastlog
# список и имена хостов
-w /etc/hosts -p wa
# стартовый скрипты демонов
-w /etc/rc.d/init.d
-w /etc/rc.d/init.d/auditd -p wa
# пути поиска библиотек
-w /etc/ld.so.conf -p wa
-w /etc/ld.so.conf.d
# настройки времени
-w /etc/localtime -p wa
# системный переменные
-w /etc/sysctl.conf -p wa
# правила загрузки модулей
-w /etc/modprobe.d/
# модули системы PAM
-w /etc/pam.d
# настройки сервера SSH
-w /etc/ssh/sshd_config
3). настроим наблюдение за всеми системными вызовами, которые могут угрожать безопасности системы (применять в случае особой необходимости - высокая нагрузка на систему аудита и разрастание журналов файлов)
# изменения прав доступа к файлам
-a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32
-a - добавить правило в список
entry - события происходящие на входе в системный вызов
always - собитие записываетсь в журнал собитий
-S - имя системного вызова
# создание, открытие или изменение размеров файлов
-a entry,always -S crate -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64 -S
# создание и удаление каталогов
-a entry,always -S mkdir -S rmdir
# удаление и создание ссылок
-a entry,always -S unlink -S raname -S link -S symlink
# изменение расширенных атрибутов файлов
-a entry,always -S setxattr
-a entry,always -S lsetxattr
-a entry,always -S fsetxattr
-a entry,always -S removexattr
-a entry,always -S lremovexattr
-a entry,always -S fremovexattr
# создание файлов устройств
-a entry,always -S mknod
# монтирование файловых систем
-a entry,always -S mount -S umount -S umount2
# использование системного вызова ptrace для отладки процессов
-a entry,always -S ptrace
перегружаем демон
4). анализ журнальных файлов /var/log/audit/ нельзя делять редакторами (нечитабельны). Делает утилитами
aureport - общий анализ
aureport -f - список файлов к который происходил доступ
лучше запросить за определенный период (--end не обязателен)
aureport -f --start 09/20/10 13:00 --end 09/20/10 16:00
вместо времени можно использовать
now, recent (10 минут назад), today (начиная с полуночи), yesterday, this-week, this-month, this-year.
aureport -f --summary - какие файлы сколько раз были открыты
60. 06.11.2010 19:13:01 /etc/pam.d/crond 5 yes /usr/sbin/crond -1 11037
5 - номер системного вызова (чтобы видеть имя флаг -i)
yes - успешность или нет системного вызова
(deleted) -
-1 - UID (AUID) - пояснение ниже
11037 - номер события
каждое событие можно проанализировать утилитой
auserch -a номер_события (11037 - в нашем логе)
также можно искать события по именам системных вызовов (ключ -i)
auserch -sc ptrace -i
идентификаторам пользователей
ausearch -ui 500
именам исполняемых файлов
ausearch -x /usr/sbin/crond
имени терминала
ausearch -tm pts/0
именам демонов
ausearch -tm cron
или клуючам поиска
ausearch -k etc_access
можно также использовать временные промежутки
еще флаги aureport для генерации отчетов
-s - системный вызовы
-au - попытки аутентификации
-l - успешные логины
m - модификация экаунта
--failed - отчеты можно получать только для событий, завершившихся неудачно
пользователь может использовать команды su sudo, чтобы менять свой (UID), чтобы это обойти используется Audit UID (AUID), которые закрепляются за пользователем при входе в систему и не меняются, по умолчанию эта функция отключена по этому и -1, активация
/etc/pam.d/login добавить session required pam_loginuid.so
перед строкой (session include common-session - dedian), у меня (rpm based), можно до и после
session include system-auth
также нужно проверить или установщик не добавил уже эту строку, ту же операцию проделываем с другими файлами
/etc/pam.d/sshd gdm(kdm или kde) crond atd
источник: Пингвин под колпаком (Аудит системный событий в Linux) (Хакер, 11/142/2010 — 126)
Дополнительная информация
http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
http://linux.die.net/man/7/audit.rules
http://www.xakep.ru/post/54897/?print=true
Дополнительная информация
http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
http://linux.die.net/man/7/audit.rules
http://www.xakep.ru/post/54897/?print=true
пятница, 17 сентября 2010 г.
cisco спамеры и как их вычислить
Создаем access-list в котором прописываем строчку
deny tcp any any eq smtp log
а также увеличиваем буфер логирования
logging buffered 16000
и тогда в логе можно наблюдать спамеров или ботов, которые рассылают спам и потом их уничтожать. Приведу пример такого лога
.Sep 17 09:39:15: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2090) -> 168.215.84.83(25), 1 packet
.Sep 17 09:39:18: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2086) -> 213.83.66.209(25), 1 packet
.Sep 17 09:39:23: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2054) -> 64.18.4.10(25), 1 packet
.Sep 17 09:39:30: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2318) -> 207.126.147.12(25), 1 packet
.Sep 17 09:39:34: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2287) -> 207.17.33.102(25), 1 packet
.Sep 17 09:39:35: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2428) -> 204.4.187.100(25), 1 packet
.Sep 17 09:39:37: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2404) -> 88.27.242.43(25), 1 packet
.Sep 17 09:39:44: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2430) -> 199.43.38.109(25), 1 packet
.Sep 17 09:39:46: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2582) -> 208.15.91.13(25), 1 packet
.Sep 17 09:39:47: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2608) -> 32.97.182.143(25), 1 packet
.Sep 17 09:39:48: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2494) -> 129.41.169.246(25), 1 packet
.Sep 17 09:39:51: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2628) -> 64.18.7.11(25), 1 packet
deny tcp any any eq smtp log
а также увеличиваем буфер логирования
logging buffered 16000
и тогда в логе можно наблюдать спамеров или ботов, которые рассылают спам и потом их уничтожать. Приведу пример такого лога
.Sep 17 09:39:15: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2090) -> 168.215.84.83(25), 1 packet
.Sep 17 09:39:18: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2086) -> 213.83.66.209(25), 1 packet
.Sep 17 09:39:23: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2054) -> 64.18.4.10(25), 1 packet
.Sep 17 09:39:30: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2318) -> 207.126.147.12(25), 1 packet
.Sep 17 09:39:34: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2287) -> 207.17.33.102(25), 1 packet
.Sep 17 09:39:35: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2428) -> 204.4.187.100(25), 1 packet
.Sep 17 09:39:37: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2404) -> 88.27.242.43(25), 1 packet
.Sep 17 09:39:44: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2430) -> 199.43.38.109(25), 1 packet
.Sep 17 09:39:46: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2582) -> 208.15.91.13(25), 1 packet
.Sep 17 09:39:47: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2608) -> 32.97.182.143(25), 1 packet
.Sep 17 09:39:48: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2494) -> 129.41.169.246(25), 1 packet
.Sep 17 09:39:51: %SEC-6-IPACCESSLOGP: list ExtFW_Block_SMTP denied tcp 21.90.16.166(2628) -> 64.18.7.11(25), 1 packet
пятница, 10 сентября 2010 г.
fail2ban и борьба со спамом
Мне надоело смотреть на лог присланный logwatch который весил 3 мб, и 99% его составлял лог posfixа, которые очень часто одним и тем же айпишником пишет одни и те же ошибки и решил подключить в помощь postfixу fail2ban, который бы почтовики, не прошедшие проверку, после 1 проверки на час (раньше половину суток было - неоправдано, поскольку иногда недостуны днс провайдера и не проходит проверка обратной зоны и легитимный хост может пол суток быть отвергаемый не по своей вине) отправлял в бан, чтобы они не надоедали почтовику заниматься полезной нагрузкой.
Было создано правило (каждый из regexp объясню ниже)
cat /etc/fail2ban/filter.d/mail.conf (коментарии пропущены)
[INCLUDES]
before = common.conf
[Definition]
failregex =
cannot find your hostname\S \S<HOST>\S
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Client host \[<HOST>\] blocked using [\.\w]+;
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
RCPT from .+\[<HOST>\]: .+: Helo command rejected:
warning: .+\[ <HOST >\]: SASL LOGIN authentication failed:
milter-reject: END-OF-MESSAGE from .*\[<HOST >\]
ignoreregex =
а также добавлена секция в файл /etc/fail2ban/jail.conf
[mail-iptables]
enabled = true
filter = mail
action = iptables[name=mail, port=smtp, protocol=tcp]
logpath = /var/log/maillog
maxretry = 1
то есть после 1 неудачи спамер долго к почтовику подключится не может.
Теперь поясню правила на примерах лога (часть лога которая берется в качестве основы регулярного выражения выделена жирным):
1). баним хосты не имеющие обратной зоны;
cannot find your hostname\S \S<HOST>\S
Sep 5 05:10:17 redhat postfix/smtpd[26817]: NOQUEUE: reject: RCPT from unknown[91.218.38.132]: 450 4.7.1 Client host rejected: cannot find your hostname, [91.218.38.132]; from=<gais@allexperts.com> to=<olya@chucha.kiev.ua> proto=ESMTP helo <mail.ru>
в postfix (main.cf )должна быть включена проверка
smtpd_client_restrictions =
reject_unknown_client_hostname
2). баним хосты, которые не знают наших почтовых пользователей
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Sep 6 00:31:50 redhat postfix/smtpd[24421]: NOQUEUE: reject: RCPT from wpc4883.amenworld.com[85.10.140.230]: 550 5.1.1 <jdauaaysieugeniavoznyuk@chukcha.kiev.ua>: Recipient address rejected: User unknown in virtual mailbox table<jdauaaysieugeniavoznyuk@chukcha.kiev.ua>; from=<isaiah@gmail.com> to=<jdauaaysieugeniavoznyuk@chukcha.kiev.ua> proto=ESMTP helo=<wpc4883.home>
3). баним хосты, которые уже забанены каким-то DNSBL
Client host \[<HOST>\] blocked using [\.\w]+;
Sep 7 08:35:36 redhat postfix/smtpd[16967]: NOQUEUE: reject: RCPT from net-93-64-240-213.cust.dsl.vodafone.it[93.64.240.213]: 554 5.7.1 Service unavailable; Client host [93.64.240.213] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=93.64.240.213; from=<lulow5021@vodafone.it> to=<memory@chukcha.kiev.ua> proto=ESMTP helo=<vodafone.it>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client db.wpbl.info
reject_rbl_client psbl.surriel.com,
reject_rbl_client sbl.csma.biz,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcannibal.org,
4). баним хосты, домен которых не существует
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
Sep 8 18:41:46 redhat postfix/smtpd[21768]: NOQUEUE: reject: RCPT from host81-149-53-2.in-addr.btopenworld.com[81.149.53.2]: 450 4.1.8 <zelenii@bigart.com.ua&t;: Sender address rejected: Domain not found; from=<zelenii@bigart.com.ua> to=<olya@chukcha.kiev.ua> proto=ESMTP helo=<icasexch.icas.local>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_unknown_sender_domain,
5). баним хосты, у которых hello кривое
RCPT from .+\[<HOST>\]: .+: Helo command rejected:
Sep 23 00:20:09 redhat postfix/smtpd[28248]: NOQUEUE: reject: RCPT from 110-210.trifle.net[212.3.110.210]: 504 5.5.2 <silvina-bfam4c5>: Helo command rejected: need fully-qualified hostname; from=<stem8@eiras.ru> to=<igor@chukcha.kiev.ua> proto=ESMTP helo=<silvina-bfam4c5>
в postfix (main.cf )должна быть включена проверка
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_client_access hash:/etc/postfix/whitelisted_clients,
check_client_access hash:/etc/postfix/blacklisted_clients,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_invalid_hostname,
check_helo_access hash:/etc/postfix/access_helo,
permit
cat /etc/postfix/access_helo
127.0.0.1 REJECT Your server configured incorrectly
localhost REJECT Your server configured incorrectly
localhost.localdomain REJECT Your server configured incorrectly
localhost.domain.com REJECT Your server configured incorrectly
10 REJECT Your server configured incorrectly
172.16 REJECT Your server configured incorrectly
192.168 REJECT Your server configured incorrectly
1.2.3.4 REJECT Your server configured incorrectly
name1.domain.com REJECT Your server configured incorrectly
name2.domain.com REJECT Your server configured incorrectly
name3.domain.com REJECT Your server configured incorrectly
mail3.kc.sss OK
promkmos.PMK.local OK
romkmos2.PMK.local OK
обьяснения см. http://www.opennet.ru/docs/RUS/postfix_soho/
6). баним хосты, которые хотят подобрать авторизацию и отправить письмо через демон saslauth
warning: .+\[<HOST >\]: SASL LOGIN authentication failed:
Oct 23 11:53:31 redhat postfix/smtpd[13090]: warning: 190.172.0.4: hostname 190-172-0-4.speedy.com.ar verification failed: Name or service not known
Oct 23 11:53:31 redhat postfix/smtpd[13090]: connect from unknown[190.172.0.4]
Oct 23 11:53:33 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:36 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:54 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:56 redhat postfix/smtpd[13090]: too many errors after AUTH from unknown[190.172.0.4]
Oct 23 11:54:56 redhat postfix/smtpd[13090]: disconnect from unknown[190.172.0.4]
7). баним хосты которые не нравятся политике dkim-milter, а собственно
/etc/mail/dkim-milter/dkim-filter.conf
On-Default reject
On-BadSignature reject
On-DNSError tempfail
On-InternalError accept
On-NoSignature accept
On-Security discard
milter-reject: END-OF-MESSAGE from .*\[<HOST >\]
Apr 8 04:53:54 redhat postfix/cleanup[7219]: 4654B6A68001: milter-reject: END-OF-MESSAGE from mails.marsmail.com.ua[91.224.75.2]: 4.7.1 Service unavailable - try again later; from=<irina04041@marsmail.com.ua> to=<sales@chukcha.kiev.ua> proto=ESMTP helo=<mails.marsmail.com.ua>
что обозначают значки + \S и другие в регулярных выражениях можно почитать сдесь http://www.py-my.ru/post/4bfb3c691d41c846bc000081, а как пользоваться утилитой fail2ban-regex для проверки регулярных выражений на строке, файле здесь
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Usage
Теперь у меня в табличке iptables которая баних почтовики стандартно 900-1300 хостов:
hostname#iptables -n --list fail2ban-mail | wc -l
1041
и в логе fail2ban за 1 минуту 1-4 хоста или банится или разбанивается
#tail /var/log/fail2ban.log
2010-09-10 15:51:51,473 fail2ban.actions: WARNING [mail-iptables] Unban 77.120.122.24
2010-09-10 15:52:54,579 fail2ban.actions: WARNING [mail-iptables] Unban 186.203.62.80
2010-09-10 15:54:34,733 fail2ban.actions: WARNING [mail-iptables] Unban 201.240.87.5
2010-09-10 15:55:01,781 fail2ban.actions: WARNING [mail-iptables] Unban 124.105.93.2
2010-09-10 15:55:39,851 fail2ban.actions: WARNING [mail-iptables] Unban 116.114.83.32
2010-09-10 15:56:00,895 fail2ban.actions: WARNING [mail-iptables] Unban 212.30.218.11
2010-09-10 15:56:14,094 fail2ban.actions: WARNING [mail-iptables] Unban 125.165.34.1
2010-09-10 15:56:30,130 fail2ban.actions: WARNING [mail-iptables] Unban 196.205.231.112
2010-09-10 15:56:42,153 fail2ban.actions: WARNING [mail-iptables] Ban 195.184.220.242
2010-09-10 15:56:56,185 fail2ban.actions: WARNING [mail-iptables] Unban 115.75.224.221
и лог logwatch стал приятно меньше.
также sasl кракеров можно рубать и стандартными средствами из jail.conf
Было создано правило (каждый из regexp объясню ниже)
cat /etc/fail2ban/filter.d/mail.conf (коментарии пропущены)
[INCLUDES]
before = common.conf
[Definition]
failregex =
cannot find your hostname\S \S<HOST>\S
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Client host \[<HOST>\] blocked using [\.\w]+;
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
RCPT from .+\[<HOST>\]: .+: Helo command rejected:
milter-reject: END-OF-MESSAGE from .*\[<
ignoreregex =
а также добавлена секция в файл /etc/fail2ban/jail.conf
[mail-iptables]
enabled = true
filter = mail
action = iptables[name=mail, port=smtp, protocol=tcp]
logpath = /var/log/maillog
maxretry = 1
то есть после 1 неудачи спамер долго к почтовику подключится не может.
Теперь поясню правила на примерах лога (часть лога которая берется в качестве основы регулярного выражения выделена жирным):
1). баним хосты не имеющие обратной зоны;
cannot find your hostname\S \S<HOST>\S
Sep 5 05:10:17 redhat postfix/smtpd[26817]: NOQUEUE: reject: RCPT from unknown[91.218.38.132]: 450 4.7.1 Client host rejected: cannot find your hostname, [91.218.38.132]; from=<gais@allexperts.com> to=<olya@chucha.kiev.ua> proto=ESMTP helo <mail.ru>
в postfix (main.cf )должна быть включена проверка
smtpd_client_restrictions =
reject_unknown_client_hostname
2). баним хосты, которые не знают наших почтовых пользователей
RCPT from .+\[<HOST>\]: .+ Recipient address rejected: User unknown in virtual mailbox table
Sep 6 00:31:50 redhat postfix/smtpd[24421]: NOQUEUE: reject: RCPT from wpc4883.amenworld.com[85.10.140.230]: 550 5.1.1 <jdauaaysieugeniavoznyuk@chukcha.kiev.ua>: Recipient address rejected: User unknown in virtual mailbox table<jdauaaysieugeniavoznyuk@chukcha.kiev.ua>; from=<isaiah@gmail.com> to=<jdauaaysieugeniavoznyuk@chukcha.kiev.ua> proto=ESMTP helo=<wpc4883.home>
3). баним хосты, которые уже забанены каким-то DNSBL
Client host \[<HOST>\] blocked using [\.\w]+;
Sep 7 08:35:36 redhat postfix/smtpd[16967]: NOQUEUE: reject: RCPT from net-93-64-240-213.cust.dsl.vodafone.it[93.64.240.213]: 554 5.7.1 Service unavailable; Client host [93.64.240.213] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=93.64.240.213; from=<lulow5021@vodafone.it> to=<memory@chukcha.kiev.ua> proto=ESMTP helo=<vodafone.it>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client db.wpbl.info
reject_rbl_client psbl.surriel.com,
reject_rbl_client sbl.csma.biz,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcannibal.org,
4). баним хосты, домен которых не существует
RCPT from .+\[<HOST>\]: .+: Sender address rejected: Domain not found
Sep 8 18:41:46 redhat postfix/smtpd[21768]: NOQUEUE: reject: RCPT from host81-149-53-2.in-addr.btopenworld.com[81.149.53.2]: 450 4.1.8 <zelenii@bigart.com.ua&t;: Sender address rejected: Domain not found; from=<zelenii@bigart.com.ua> to=<olya@chukcha.kiev.ua> proto=ESMTP helo=<icasexch.icas.local>
в postfix (main.cf )должна быть включена проверка
smtpd_recipient_restrictions =
reject_unknown_sender_domain,
5). баним хосты, у которых hello кривое
Sep 23 00:20:09 redhat postfix/smtpd[28248]: NOQUEUE: reject: RCPT from 110-210.trifle.net[212.3.110.210]: 504 5.5.2 <silvina-bfam4c5>: Helo command rejected: need fully-qualified hostname; from=<stem8@eiras.ru> to=<igor@chukcha.kiev.ua> proto=ESMTP helo=<silvina-bfam4c5>
в postfix (main.cf )должна быть включена проверка
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_client_access hash:/etc/postfix/whitelisted_clients,
check_client_access hash:/etc/postfix/blacklisted_clients,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_invalid_hostname,
check_helo_access hash:/etc/postfix/access_helo,
permit
cat /etc/postfix/access_helo
127.0.0.1 REJECT Your server configured incorrectly
localhost REJECT Your server configured incorrectly
localhost.localdomain REJECT Your server configured incorrectly
localhost.domain.com REJECT Your server configured incorrectly
10 REJECT Your server configured incorrectly
172.16 REJECT Your server configured incorrectly
192.168 REJECT Your server configured incorrectly
1.2.3.4 REJECT Your server configured incorrectly
name1.domain.com REJECT Your server configured incorrectly
name2.domain.com REJECT Your server configured incorrectly
name3.domain.com REJECT Your server configured incorrectly
mail3.kc.sss OK
promkmos.PMK.local OK
romkmos2.PMK.local OK
обьяснения см. http://www.opennet.ru/docs/RUS/postfix_soho/
6). баним хосты, которые хотят подобрать авторизацию и отправить письмо через демон saslauth
warning: .+\[<
Oct 23 11:53:31 redhat postfix/smtpd[13090]: warning: 190.172.0.4: hostname 190-172-0-4.speedy.com.ar verification failed: Name or service not known
Oct 23 11:53:31 redhat postfix/smtpd[13090]: connect from unknown[190.172.0.4]
Oct 23 11:53:33 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:36 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:54 redhat postfix/smtpd[13090]: warning: unknown[190.172.0.4]: SASL LOGIN authentication failed: authentication failure
Oct 23 11:54:56 redhat postfix/smtpd[13090]: too many errors after AUTH from unknown[190.172.0.4]
Oct 23 11:54:56 redhat postfix/smtpd[13090]: disconnect from unknown[190.172.0.4]
7). баним хосты которые не нравятся политике dkim-milter, а собственно
On-Default reject
On-BadSignature reject
On-DNSError tempfail
On-InternalError accept
On-NoSignature accept
On-Security discard
milter-reject: END-OF-MESSAGE from .*\[<
Apr 8 04:53:54 redhat postfix/cleanup[7219]: 4654B6A68001: milter-reject: END-OF-MESSAGE from mails.marsmail.com.ua[91.224.75.2]: 4.7.1 Service unavailable - try again later; from=<irina04041@marsmail.com.ua> to=<sales@chukcha.kiev.ua> proto=ESMTP helo=<mails.marsmail.com.ua>
что обозначают значки + \S и другие в регулярных выражениях можно почитать сдесь http://www.py-my.ru/post/4bfb3c691d41c846bc000081, а как пользоваться утилитой fail2ban-regex для проверки регулярных выражений на строке, файле здесь
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Usage
Теперь у меня в табличке iptables которая баних почтовики стандартно 900-1300 хостов:
hostname#iptables -n --list fail2ban-mail | wc -l
1041
и в логе fail2ban за 1 минуту 1-4 хоста или банится или разбанивается
#tail /var/log/fail2ban.log
2010-09-10 15:51:51,473 fail2ban.actions: WARNING [mail-iptables] Unban 77.120.122.24
2010-09-10 15:52:54,579 fail2ban.actions: WARNING [mail-iptables] Unban 186.203.62.80
2010-09-10 15:54:34,733 fail2ban.actions: WARNING [mail-iptables] Unban 201.240.87.5
2010-09-10 15:55:01,781 fail2ban.actions: WARNING [mail-iptables] Unban 124.105.93.2
2010-09-10 15:55:39,851 fail2ban.actions: WARNING [mail-iptables] Unban 116.114.83.32
2010-09-10 15:56:00,895 fail2ban.actions: WARNING [mail-iptables] Unban 212.30.218.11
2010-09-10 15:56:14,094 fail2ban.actions: WARNING [mail-iptables] Unban 125.165.34.1
2010-09-10 15:56:30,130 fail2ban.actions: WARNING [mail-iptables] Unban 196.205.231.112
2010-09-10 15:56:42,153 fail2ban.actions: WARNING [mail-iptables] Ban 195.184.220.242
2010-09-10 15:56:56,185 fail2ban.actions: WARNING [mail-iptables] Unban 115.75.224.221
и лог logwatch стал приятно меньше.
также sasl кракеров можно рубать и стандартными средствами из jail.conf
[sasl-iptables]
enabled = true
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
# sendmail-whois[name=sasl, dest=you@example.com]
logpath = /var/log/maillog
четверг, 29 июля 2010 г.
ACL (getfacl, setfacl)
Порядок установки ACL:
1.Устанавливаем маску максимальных полномочий, она определяется из тех максимальных полномочий, которые должны быть у пользователя или группы на ресурс
2.Устанавливаем или модифицируем необходимые ACL с опцией отменяющей изменение маски максимальных полномочий
3.Удаляем все или необходимые ACL записи
Важно!
1.ACL никоим образом не влияет на права доступа для владельца
2.Изменение маски максимальных полномочий отражается на группе по умолчанию, т.е права определённые маской максимальных полномочий определяются и для группы по умолчанию
3.Изменение прав доступа для категории o(other) в ACL влияет на категорию o(other) по умолчанию
При установки ACL для многих групп (u,g,o) в качестве разделителя используется запятая(,).
Установка доступа rwx для пользователя user на каталог 1
setfacl -R -m u:user:rwx /safe/samba/users/1
- R - рекурсивно
- m - изменение
Установка доступа rwx для пользователя user на каталог 1 по умолчанию (то есть все файлы будут создаваться с указанным доступом)
setfacl -R -d -m u::rwx,g::---,o::---,u:user:rwx /safe/samba/users/1
посмотреть их можно
[root@redhat ~]# getfacl /safe/samba/users/1
getfacl: Removing leading '/' from absolute path names
# file: safe/samba/users/1
# owner: telemarketing1
# group:tele
user::rwx
user:user:rwx
user:telemarketing1:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:telemarketing1:rwx
default:group::---
default:mask::rwx
default:other::---
Нужные ключи:
-b – удаляет все установленные ACL
-m – добавляет и модифицирует существующие записи ACL
-M - добавляет и модифицирует существующие ACL взятые из указанного файла
-n – не изменяет существующую маску максимальных полномочий при установке ACL
-x – удаляет конкретную запись ACL
-X – удаляет записи ACL взятые из указанного файл
-k - удаляет значения по умолчанию (Default ACL)
-d - вывод (задание) только значения по умолчанию Default ACL
-a Вывод ACL без Default ACL.
При установке ACL важен порядок следования опций, опция –n должна следовать перед опцией –m или -x
Важно!
Обязательно не забывайте использовать опцию –n при установке, модификации или удалении существующих ACL, так как при добавлении, модификации или удалении ACL без опции –n происходит изменение максимальной маски полномочий в сторону уменьшения или увеличения, в зависимости от прав доступа.
Пример почему это важно
Удалим ACL установленные для пользователя tests:
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
user:tests:rw- # effective: r--
group::r--
mask::r--
other::r--
fdesktop1# setfacl -n -x u:tests:rw test.file
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
group::r--
mask::r--
other::r--
Сделаем тоже самое, только без опции –n для демонстрации того, как меняется максимальная маска полномочий:
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
user:tests:rw- # effective: r--
group::r--
mask::r--
other::r--
fdesktop1# setfacl -x u:tests:rw test.file
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw-
group::r--
mask::rw-
other::r--
Как можно видеть максимальная маска полномочий изменилась в сторону увеличения, что соответственно может привести к проблемам с безопасностью, поэтому будьте внимательны.
Продвинутое использование:
Cохранить и восстановить списки контроля доступа (архивирование данных или переносе в другую систему например)
# getfacl -R --skip-base . > backup.acl
# setfacl --restore=backup.acl
Если для некоторого файла или каталога требуется установить разрешения, которые сходны с уже имеющимися, то можно поступить так (опции, написанные с заглавной буквы, применяются при использовании в качестве ввода результата работы другой утилиты).
# getfacl -a dir | setfacl -M - dir
# getfacl file1 | setfacl -S- file2
Чтобы удалить разрешение, используйте опцию -х. Например, удалим права для группы sales:
# setfacl -x g:sales test_acl
Опция -m модифицирует (а фактически сохраняет) старые разрешения, добавляя к ним новые. В некоторых случаях проще установить новые права на файл или каталог, полностью затерев старые. Для этих целей используется флаг -b.
# setfacl -m u:fedja:rw,g:netadmin:rwx test_acl_file
Установленную для каталога маску доступа, используемую по умолчанию, можно изменить так:
# setfacl -m default:u::rx acldir
1.Устанавливаем маску максимальных полномочий, она определяется из тех максимальных полномочий, которые должны быть у пользователя или группы на ресурс
2.Устанавливаем или модифицируем необходимые ACL с опцией отменяющей изменение маски максимальных полномочий
3.Удаляем все или необходимые ACL записи
Важно!
1.ACL никоим образом не влияет на права доступа для владельца
2.Изменение маски максимальных полномочий отражается на группе по умолчанию, т.е права определённые маской максимальных полномочий определяются и для группы по умолчанию
3.Изменение прав доступа для категории o(other) в ACL влияет на категорию o(other) по умолчанию
При установки ACL для многих групп (u,g,o) в качестве разделителя используется запятая(,).
Установка доступа rwx для пользователя user на каталог 1
setfacl -R -m u:user:rwx /safe/samba/users/1
- R - рекурсивно
- m - изменение
Установка доступа rwx для пользователя user на каталог 1 по умолчанию (то есть все файлы будут создаваться с указанным доступом)
setfacl -R -d -m u::rwx,g::---,o::---,u:user:rwx /safe/samba/users/1
посмотреть их можно
[root@redhat ~]# getfacl /safe/samba/users/1
getfacl: Removing leading '/' from absolute path names
# file: safe/samba/users/1
# owner: telemarketing1
# group:tele
user::rwx
user:user:rwx
user:telemarketing1:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:telemarketing1:rwx
default:group::---
default:mask::rwx
default:other::---
Нужные ключи:
-b – удаляет все установленные ACL
-m
-M
-n – не изменяет существующую маску максимальных полномочий при установке ACL
-x
-X
-k - удаляет значения по умолчанию (Default ACL)
-d - вывод (задание) только значения по умолчанию Default ACL
-a Вывод ACL без Default ACL.
При установке ACL важен порядок следования опций, опция –n должна следовать перед опцией –m или -x
Важно!
Обязательно не забывайте использовать опцию –n при установке, модификации или удалении существующих ACL, так как при добавлении, модификации или удалении ACL без опции –n происходит изменение максимальной маски полномочий в сторону уменьшения или увеличения, в зависимости от прав доступа.
Пример почему это важно
Удалим ACL установленные для пользователя tests:
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
user:tests:rw- # effective: r--
group::r--
mask::r--
other::r--
fdesktop1# setfacl -n -x u:tests:rw test.file
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
group::r--
mask::r--
other::r--
Сделаем тоже самое, только без опции –n для демонстрации того, как меняется максимальная маска полномочий:
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw- # effective: r--
user:tests:rw- # effective: r--
group::r--
mask::r--
other::r--
fdesktop1# setfacl -x u:tests:rw test.file
fdesktop1# getfacl test.file
# file: test.file
# owner: root
# group: 0
user::rw-
user:atrium:rw-
group::r--
mask::rw-
other::r--
Как можно видеть максимальная маска полномочий изменилась в сторону увеличения, что соответственно может привести к проблемам с безопасностью, поэтому будьте внимательны.
Продвинутое использование:
Cохранить и восстановить списки контроля доступа (архивирование данных или переносе в другую систему например)
# getfacl -R --skip-base . > backup.acl
# setfacl --restore=backup.acl
Если для некоторого файла или каталога требуется установить разрешения, которые сходны с уже имеющимися, то можно поступить так (опции, написанные с заглавной буквы, применяются при использовании в качестве ввода результата работы другой утилиты).
# getfacl -a dir | setfacl -M - dir
# getfacl file1 | setfacl -S- file2
Чтобы удалить разрешение, используйте опцию -х. Например, удалим права для группы sales:
# setfacl -x g:sales test_acl
Опция -m модифицирует (а фактически сохраняет) старые разрешения, добавляя к ним новые. В некоторых случаях проще установить новые права на файл или каталог, полностью затерев старые. Для этих целей используется флаг -b.
# setfacl -m u:fedja:rw,g:netadmin:rwx test_acl_file
Установленную для каталога маску доступа, используемую по умолчанию, можно изменить так:
# setfacl -m default:u::rx acldir
Подписаться на:
Сообщения (Atom)