Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 17464|Відповідь: 2

[Веб] ngx_lua_waf — це міжмережевий екран веб-додатків на основі lua-nginx-module (openresty).

[Копіювати посилання]
Опубліковано 21.12.2016 16:51:51 | | | |

ngx_lua_waf

ngx_lua_waf — це фаєрвол веб-додатків на основі ngx_lua, розроблений, коли я вперше приєднався до Fun Travel.

Код простий, а початкова мета розробки — використовувати простоту, високу продуктивність і легкість.

Зараз він має відкритий код і відповідає ліцензії MIT. Він містить наші правила фільтрації. Якщо у вас є якісь поради або ви хочете поговорити, будь ласка, покращуйте це разом зі мною.

Застосування:
            
      
Запобігайте веб-атакам, таким як SQL-ін'єкція, локальне включення, часткове переповнення, тестування fuzzing, xss, SSRF тощо
        Запобігайте виточенню файлів, таких як SVN/резервне копіювання
        Запобігайте атакам за допомогою інструментів для стрес-тестування, таких як ApacheBench
        Блокуйте поширені інструменти хакерування сканування, сканери
        Блокування незвичних мережевих запитів
        Заблокуйте дозвіл на виконання PHP каталогу вкладень зображень
        Запобігання завантаженню через вебшелл


Рекомендована установка:

Рекомендується використовувати lujit2.1 для підтримки Lua.

ngx_lua, якщо це версія 0.9.2 або новіша, рекомендується змінити звичайну функцію фільтра на ngx.re.find, і ефективність відповідності буде збільшена приблизно втричі.


Інструкції для використання:

Шлях встановлення nginx вважається таким: /usr/local/nginx/conf/

Завантажте ngx_lua_waf в каталог конференції, розпакуйте його і назвіть waf

Додайте його в розділ http на nginx.conf

            

Налаштуйте каталог правил WAF у config.lua (зазвичай у каталозі waf/conf/)

        RulePath = "/usr/local/nginx/conf/waf/wafconf/"

Якщо абсолютний шлях змінюється, його потрібно відповідно змінити

Потім перезапустіть nginx


Деталі профілю:

           
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
        --каталог зберігання правил
        attacklog = «вимкнено»
        --Щоб увімкнути логування інформації про атаку, потрібно налаштувати logdir
        logdir = "/usr/local/nginx/logs/hack/"
        --каталог зберігання журналів, який має бути створений самим користувачем і потребує дозволу на запис користувача nginx
        urlDeny="on"
        --чи варто блокувати доступ до URL
        Перенаправлення="увімкнено"
        --чи варто перенаправляти після перехоплення
        CookieMatch = «увімкнено»
        --Чи варто блокувати атаки печивом
        postMatch = "on"
        --чи варто блокувати пост-атаку
        whiteModule = «увімкнено»
        --чи вмикати білий список URL
        black_fileExt={"php","jsp"}
        --Введіть тип суфікса файлу, який не можна завантажувати
        ipWhitelist={"127.0.0.1"}
        --IP білий список, кілька IP-адрес розділені комами
        ipBlocklist={"1.0.0.1"}
        --IP чорний список, кілька IP розділені комами
        CCDeny="увімкнено"
        --Чи варто вмикати перехоплення CC-атак (потрібно збільшити HTTP-сегмент nginx.conf lua_shared_dict обмеження 10м; )
        CCrate = «100/60»
        --Встановіть частоту атаки CC за секунди.
        --За замовчуванням одна й та сама IP-адреса може запитувати одну й ту ж адресу лише 100 разів на хвилину
        html=[[Будь ласка, йди геть~~]]
        --Попереджувальний контент, який можна налаштувати в дужках
        Примітка: не використовуйте подвійні лапки, щоб бути чутливим до регістру

        
Перевірте, чи діють ці правила

Після розгортання ви можете спробувати наступну команду:        
  
      

Примітка: за замовчуванням машина не фільтрує у білому списку, і ви можете самостійно налаштувати конфігурацію config.lua


Візуалізації такі:


Оновлення правил:

Враховуючи проблему кешування постійних користувачів, динамічні правила впливають на продуктивність, тому я не використовую такі речі, як словники спільної пам'яті та redis для динамічного управління.

Оновлення правил можна розміщувати на інших серверах, а правила можна регулярно завантажувати через завдання crontab, і перезавантаження nginx набуде чинності. Забезпечити високу продуктивність NGX LUA WAF.

Записуйте лише журнал фільтрів, не вмикайте фільтрацію, просто додайте коментар перед «check» у коді, якщо потрібно фільтрувати, навпаки

Декілька нотаток:

        Правила фільтрації можна налаштовувати відповідно до ваших потреб у wafconf, і кожне правило має бути обгорнуте або розділене за допомогою |
        
                Правила ARGS отримують параметр для фільтрації
                URL — це правила, які запитують лише URL, відфільтровані в GET               
                Post — це правило фільтрації лише у запитах постів               
                Білий список — це білий список, і URL-адреси в ньому збігаються, тому він не фільтрується               
                user-agent — це правило фільтрації для user-agent
        

        Фільтрація Get і Post за замовчуванням увімкнені, якщо потрібно увімкнути фільтрацію cookie, відредагуйте waf.lua скасування — коментар
        
        Формат назви файлу журналу виглядає так: Ім'я веб-хоста _sec.log






Попередній:Powershell не завантажує файли під час безпосереднього скриптингу, оскільки скрипт заборонений
Наступний:cmd /c та cmd /k детально пояснені
Опубліковано 08.11.2017 15:23:22 |
Так, я навчився
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com