Список правил
| № | Действие | Протокол | Src | Sport | Dst | Dport | Комментарий |
|---|
Результаты аудита
Нажмите «Проверить», чтобы запустить анализ.
Что проверяется
| Тип | Определение | Последствие |
|---|---|---|
| Избыточность | Правило полностью покрыто более ранним правилом с тем же действием | Мёртвый код, путаница в поддержке |
| Затенение | Правило покрыто более ранним с противоположным действием | Правило никогда не сработает — это ошибка или потенциальная уязвимость |
| Достижимость | Существует хотя бы один пакет, который попадёт в правило | Если нет — правило бесполезно |
Проверка покрытия
// Правило A покрывает B, если каждое поле A шире или равно полю B
function fieldCovers(a, b) {
if (a === 'any') return true; // any покрывает всё
if (b === 'any') return false; // конкретное значение не покрывает any
return String(a) === String(b);
}
function covers(A, B) {
return fieldCovers(A.proto, B.proto)
&& fieldCovers(A.src, B.src)
&& fieldCovers(A.sport, B.sport)
&& fieldCovers(A.dst, B.dst)
&& fieldCovers(A.dport, B.dport);
}
Задание
- Найдите в примере правило, которое никогда не срабатывает. Объясните, почему.
- Добавьте правило
allow tcp any any 443в конец списка и посмотрите, как изменится вердикт. - Постройте политику из 10 правил для веб-сервера, где нет ни избыточных, ни затенённых строк.
- Объясните, почему порядок правил критичен для безопасности: приведите пример, когда перестановка двух строк открывает доступ нарушителю.