1 Востаннє редагувалося HetmanNet (09.01.2016 16:01:53)

Тема: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Почну з того, що недавно на роботі почав міграцію зі зберігання розкидано файлів в SMB на централізоване зберігання на FTP. Ну як кажуть, просто і зі смаком. Бо бекап робити так куди простіше.
Ну і при першій спробі мігрувати стало зрозуміло, що на Windows сміття чимало і як на зло воно розкидано всюди, ну типова бидло система яка сире всюди. Відповідно користувачі звиклі до цього способу життя не позбавлялися всього непотребу і засмічували сервер, лиш перша чистка і одразу 4% від об'єму серверу, а день чистки і вже за 10% перевалило. Сказати, що це старі документи не можна, бо цим сміттям є різноманітні тимчасові файли та т.п.
Тож з'явилася потреба у фільтрації, тут все просто, є такий параметр в конфігу як PathDenyFilter, та для нього треба сформувати регулярний вираз, ну який буде чималий і писати його вручну не дуже зручно, тому цей параметр виніс у окремий файл з конфігу proftpd.conf:

# Фільтр для захисту від проникнення
DenyFilter        \*.*/
# Заборона певних файлів та типів файлів
Include            /etc/proftpd/deny.conf

Та створив перелік заборонених файлів та типів файлів:

Заборонені файли
# Viktor Matvieienko <hetman.net@gmail.com>
# Перелік заборонених файлів
# Для відступу використовувати [[:blank:]], тобто TAB
# ТОВ "Майстер Мілк" 2014

system.1st        діагностичний файл ms windows
suhdlog.dat        діагностичний файл ms windows
Trumbs.dB        кеш попередньго перегляду файлу
mscreate.dir        файл налаштувань тимчасових файлів
autorun.inf        файл автозапуску в Windows системах
desktop.ini        файл налаштувань робочого столу в Windows системах
oeminfo.ini        інформаційн файл про обладнання в Windows системах
Заборонені типи файлів
# Viktor Matvieienko <hetman.net@gmail.com>
# Перелік заборонених типів файлів
# Для відступу використовувати [[:blank:]], тобто TAB
# ТОВ "Майстер Мілк" 2014

# Файли серверів
.ftpaccess        файл налаштувань доступу до теки FTP сервера
.htaccess        файл налаштувань доступу до теки HTTP сервера
.htpasswd        файл для зберігання хешу пароля до теки HTTP сервера
.directory        файл налаштувань параметрів перегляду теки
.bash_profile        файл налаштувань профілю користувача для терміналу Bash
.bashrc            файл налаштувань поведінки для терміналу Bash
.cer            файл сертифіката безпеки веб-сервера
.csr            файл сертифіката безпеки веб-сервера

# Файли налаштування для різних сімейств ОС
.properties        файл налаштувань
.conf            файл налаштувань в UNIX системах
.kderc            файл налаштувань поведінки для терміналу Bash в KDE
.xul            файл налаштувань користувацького інтерфейсу у рушіях Mozilla
.swb            файл макроса SolidWorks

# Файли попереднього перегляду ОС сімейства UNIX
.thumbnails        файл попереднього перегляду для файлів в теках на ОС сімейства UNIX
.ds_store        файл налаштувань параметрів перегляду теки MacOS X

# Виконавчі файли ОС сімейства UNIX
.sh            файл скрипту Shell/Bash для UNIX систем
.bin            файл бінарного файлу програм для UNIX систем
.so            файл динамічної бібліотеки програм для UNIX систем
.elf            файл бінарного файлу програми чи дампу програми для UNIX систем
.jar            файл програми написаної на Java
.cpp            файл програми на C++
.cgi            файл CGI скрипта
.py            файл Python скрипта
.php            файл PHP скрипта
.lua            файл LUA скрипта
.class            файл класа Java
.c            файл програми на С
.asm            файл програми на Assembler

# Файли налаштувань для ОС сімейства Windows
.ini            файл налаштувань в Windows та MS-DOS системах
.lnk            файл посилань на файли і теки в ОС сімейства Windows
.reg            файл реєстру (системних налаштувань) в Windows системах
.cfg            файл налаштувань в Windows системах
.sys            файл системних налаштувань в windows та MS-DOS системах
.regtrans-ms        файл реєстру (системних налаштувань) в Windows системах
.cpl            файл налаштувань панелі керування в ОС сімейства Windows
.deskthemepack        файл налаштування оформлення у ОС Windows 8
.msstyles        файл налаштування оформлення у ОС сімейства Windows
.hlp            файл довідки в ОС сімейства Windows
.chm            файл довідки в ОС сімейства Windows
.ico            файл іконки в ОС сімейства Windows
.ics            файл налаштування спільного доступу MS-ICS
.key            файл реєстру (системних налаштувань) в ОС Windows 7
.rtp            файл пакету оновлень програмного забезпечення для ОС сімейства Windows
.scr            файл налаштування заставки ОС сімейства Windows
.theme            файл налаштування оформлення
.themepack        файл налаштування оформлення у ОС Windows 7
.thm            файл налаштування оформлення
.gadget            файл налаштування оформлення у ОС сімейства Windows
.pif            інформаційний файл про програмне забезпечення ОС сімейства Windows
.aif            інформаційний файл про програмне забезпечення ОС сімейства Windows
.dtd            файл налаштувань програми ICQ
.prf            файл налаштування програми MS Outlook
.swf            файл активатора профіля Microsoft Sidewinder
.wps            файл налаштувань для різних прогам

# Виконавчі файли ОС сімейства Windows
.exe            бінарний файл програм в Windows системах
.com            бінарний файл програм в Windows системах
.msi            бінарний файл програми установки в Windows системах
.dll            файл динамічної бібліотеки програм для Windows систем
.bat            файл скрипту BAT для Windows систем
.cmd            файл скрипту команд для Windows систем
.nt            файл скрипту команд для Windows систем
.wsf            файл скрипту команд для Windows систем
.vb            файл скрипту команд на VBScript для Windows систем
.msu            файл пакету оновлень ОС сімейства Windows
.mod            файл модуля до програмного забезпечення
.plugin            файл модуля до програмного забезпечення
.ext            файл модуля до програмного забезпечення Norton
.crx            файл модуля до програмного забезпечення Google Chrome
.ape            файл модуля до програмного забезпечення Winamp

# Логи, резервні копії та тимчасові файли для різних сімейств ОС
.tmp            тимчасовий файлів
.log            файл логу програми
.old            попередня версія файлу конфігурації (налаштувань)
.bak            резервна копія файлу
.temp            тимчасовий файл
.bash_history        файл логу введених команд до терміналу Bash
.bash_logout        файл логу терміналу Bash
.sh_history        файл логу введених команд до терміналу Shell
.mysql_history        файл логу введених команд до терміналу MySQL
.history        файл логу
.err            файл деталізованого логу про помилки, баґи
.dmg            файл дампу оперативної пам'яті

# Логи, резервні копії та тимчасові файли для ОС сімейства Windows
.chk            відновлений файл з втраченого кластера
.gid            тимчасовий файл довідки
.~res            резервна копія файлу
.~flb            резервна копія файлу
.~file_id.diz        підпис до вільнопоширюваних програм
.~dmp            дамп оперативної пам'яті
.syd            тимчасовий файл
.ftg            тимчасовий файл довідки
.fts            тимчасовий файл довідки
.$$$            тимчасовий файл
.@@@            тимчасовий файл
.---            тимчасовий файл
.___            тимчасовий файл
.wbk            резервна копія файлу ms office word
.xlk            резервна копія файлу ms office exel
.log.txt        файл логу програми
.??$            тимчасові файли
.??~            тимчасові файли
.?~?            тимчасові файли
.prv            резервна копія файлу
.original        резервна копія початкової версії файлу
.sv$            тимчасовий файл
.dwl2            тимчасовий файл
.asd            файл автозбереження ms office
.000            файл індексації файлів
.~cr            файл образа файла
.cvr            файл звіту про крах Windows
.localstorage-journal    тимчасовий файл браузера Google Chrome
.csi            тимчасовий файл Windows Server
.gdoc            посилання на файл в Google Docs
.gsheet            посилання на файл в Google Docs
.ht            файл сесії HyperTerminal
.etl            файл трасування Windows
.xps            тимчасовий файл Windows Blinds
.iff            тимчасовий файл злиття даних SmartWare
.prf            файл трасировки помилок Windows
.shs            тимчасовий файл буфера обміну ОС сімейства Windows
.spl            тимчасовий файл спула друку ОС сімейства Windows
.webarchive        веб-історія Apple Safari

# Файли систем індексації та метаданих
.asx            файл індексу, що застосовується у бібліотеці Alpha Five
.cue            файл метаданих про оптичний носій даних
.asp            файл індексу, що застосовується у програмному забезпечені Adobe

# Недовантажені чи фрагментовані файли
.part            неповний файл
.crdownload        недовантажений файл браузером Google Chrome
.download        недовантажений файл браузером Google Chrome
.opdownload        недовантажений файл браузера Opera
.mxdl            недовантажений файл браузером Maxthon
.dlc            файл посилань для JDownloader
.webloc            файл посилань для Apple Safari
.partial        недовантажений файл браузером IE
.adadownload        недовантажений файл програмой Adobe

Ну відповідно, для перетворення цього переліку у регулярний вираз дуже простенький bash скрипт. Це лишень перша версія, далі його приведу до кращого вигляду.

Скрипт
#!/bin/bash
# Viktor Matvieienko <viktor.matveenko@gmail.com> 2014
# Скрипт генерації регулярного виразу для фільтру proftpd
# ТОВ "Мастер Мілк" 2014

BANNED_FILE_TYPES=/path/to/Banned_file_types.list
FORBIDDEN_FILES=/path/to/Forbidden_files.list
PATH_CONF=/etc/proftpd/deny.conf

echo "# Регулярний вираз для PathDenyFilter" > $PATH_CONF
echo -n "PathDenyFilter \.(" >> $PATH_CONF
cat $BANNED_FILE_TYPES | sed '/#/d' | sed '/^$/d' | sed "s/[[:blank:]].*//" | sed "s/\.//" | sed "s/\\$/\\\\$/g"  | sed "s/\\?/\\\\?/g" | tr '\n' '|' >> $PATH_CONF 

declare -a tmp_1
declare -a tmp_2

tmp_1=( `cat $FORBIDDEN_FILES | sed '/#/d' | sed '/^$/d' | sed "s/\..*//" | sed "s/[[:blank:]].*//" | sed "s/\\$/\\\\$/g"  | sed "s/\\?/\\\\?/g"` )
tmp_2=( `cat $FORBIDDEN_FILES | sed '/#/d' | sed '/^$/d' | sed "s/[[:blank:]].*//" | sed "s/.*\.//" | sed "s/\\$/\\\\$/g"  | sed "s/\\?/\\\\?/g"` )

index_1=1
for e in "${tmp_1[@]}"
do
  NAME_FILES[$index_1]=$e
  index_1=`expr $index_1 + 1`
done

index_2=1
for e in "${tmp_2[@]}"
do
  TYPE_FILES[$index_2]=$e
  index_2=`expr $index_2 + 1`
done

count_1=$index_1
index_3=1
while [ "$index_3" -ne "$count_1" ]
do
  echo -n "|(?<=" >> $PATH_CONF
  echo -n "${NAME_FILES[$index_3]}" | sed "s/.$//" >> $PATH_CONF
  echo -n "\.)" >> $PATH_CONF
  echo -n "${TYPE_FILES[$index_3]}" | sed "s/.$//" >> $PATH_CONF
  index_3=`expr $index_3 + 1`
done
echo -n ")$ [NC]" >> $PATH_CONF
echo "" >> $PATH_CONF

Тепер найголовніше: питання. Які ще слід типи файлів заборонити, щоб на сервері було як можна менше сміття.

Подякували: Djalin1

2

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Глянувши на те які у вас там файли зустрічаються, то я би сказав, що винні не тільки користувачі, а і всяка вірусня гарно гуляє.

3

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Vo_Vik написав:

Глянувши на те які у вас там файли зустрічаються, то я би сказав, що винні не тільки користувачі, а і всяка вірусня гарно гуляє.

Навіть уявити не можете як гарно, мабуть так добре їй лише в університетах. Хотів спочатку Samba, але через тиждень зрозумів це лиш покращить їй життя, тому обрав FTP.
Загалом, маєте якісь пропозиції для переліку заборонених файлів?

4

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Та хз, воно ж може і в картинках і докак сидіти.
Мо погрупуйте файли по розширеннях і порахуйте загальний об’єм зайнятого дискового простору кожним типом. Щоб приблизно знати що там може валятись. А ще можна не забороняти вевні, а дозволяти тільки певні.

5

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Vo_Vik написав:

Та хз, воно ж може і в картинках і докак сидіти.
Мо погрупуйте файли по розширеннях і порахуйте загальний об’єм зайнятого дискового простору кожним типом. Щоб приблизно знати що там може валятись. А ще можна не забороняти вевні, а дозволяти тільки певні.

Ну тоді треба скласти перелік дозволених файлів, але з тим не легше, бо треба перерахувати всі формати фоток, документів, шаблонів, і всього що можуть надіслати з т.з. З чого почнемо?

6

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

З 4 розширень doc, docx, xls і xlsx, за рештою хай ходять до шефа з заявкою щоб добив до дозволеного переліку.

Подякували: Djalin1

7 Востаннє редагувалося HetmanNet (03.01.2015 00:44:09)

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Vo_Vik написав:

З 4 розширень doc, docx, xls і xlsx, за рештою хай ходять до шефа з заявкою щоб добив до дозволеного переліку.

Крім них доведеться додати всі що підтримує LibreOffice, Ocular, всі формати фоток та відео. Все інше в бан.
Перелік завтра складу і опублікую. :)

8

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Ідея цікава, а як ви виршили проблему підключення віндовз клієнтів?

9

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Є ж FTP клієнти під віндовс, або можна і броузером скористуватись :)

10

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

воно то є, але imho незручно FTP клієнт юзати, та й незрозуміло як темпівські осідають тоді, от і цікавлюсь

11 Востаннє редагувалося HetmanNet (03.01.2015 22:38:23)

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Djalin написав:

воно то є, але imho незручно FTP клієнт юзати, та й незрозуміло як темпівські осідають тоді, от і цікавлюсь

Не повірите, тому є рішення. Можна відкрити без клієнта, але дехто не проти клієнта, бо ті пропускають файли що відхилив сервак, а не б'ють тривогу і не припиняють передачу. Тому зараз підшукую найзручніший клієнт, у кого є ідеї?
А щодо тимчасових, то також копіюючи теку з файлами де ця зараза є.

12

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

ага, бо я думав прямо профілі завантажуються. Дякую. А фільтр Ваш працює?

13

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Djalin написав:

ага, бо я думав прямо профілі завантажуються. Дякую. А фільтр Ваш працює?

Звісно. Але попереджаю, що він діє лише на завантаження файлів на сервер та на деякі операції, але завантажити ці файли з серверу можна.

14

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Я в якості клієнта WinSCP використовую, як раз і SCP досить зручно буває.

Подякували: HetmanNet1

15 Востаннє редагувалося HetmanNet (20.04.2015 23:14:12)

Re: [Вирішено] [ProFTPd] Заборона певних типів файлів та самих файлів.

Перейшли на хмарку :) Тож FTP зараз ліквідуємо всюди крім серверів бекапу.
По можливості спробую конфіги і скрипти викласти, але вже у новій темі.

Подякували: Djalin1