VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
Здравствуйте! В течение последних нескольких дней изучаю работу с межсетевым экраном Netfilter. Прочитал много форумов, статьи wiki (ru + en), статьи пользователей в инете. Взяв от каждого ресурса необходимое и понятное для меня, собрал свои правила для iptables (плюс опирался на опыт использования и настройки фаервола ipfw). Вобщем получился у меня некий монстр, который я планирую применить, но есть сомнения, что он заработает :) Пытался создать фаервол закрытого типа без NAT. На машине планируется использовать Web-server, дальше скорее всего еще что-то прикрутится. Так вот есть у меня огромная просьба к ГУРУ iptables'a (если вы посещаете сей форум) проверить созданый мной конфиг и поделиться замечаниями. Заранее спасибо!
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Если вы будете применять кучу правил по одному, на каждое заново вызывая команду iptables, суммарное время их загрузки может оказаться неожиданно большим. В особо клинических случаях (я встречал такие) загрузка такого фаерволла может занимать по полминуты даже на мощном сервере. Поэтому, рекомендуется загружать сразу все правила командой iptables-restore либо из файла, либо, если правила удобнее генерировать скриптом, можно прямо внутри скрипта перенаправлять их на ввод iptables-restore. Такой способ загрузки правил срабатывает мгновенно даже при большом количестве правил, поскольку их применения происходит по одному разу на таблицу (строка COMMIT). P.S. По существу написанных правил: по-моему, это дикое нагромождение (да не в обиду будет сказано) надёргано из разных примеров, не очень стыкующихся между собой. Если не трудно, было бы неплохо своими словами описать назначение этой машины, как и куда она подключена, что на ней будет работать и т.д. Кроме того: 1) Не стоит злоупотреблять действием DROP. Оно "глотает" пакеты молча и без ответа (в отличии от REJECT), так что в случае чего вы даже не поймёте, был пакет дропнут, или ушел не туда, или вообще не дошел до сервера. 2) Не стоит блокировать входящие (и особенно исходящие!) по умолчанию. Если что-то пойдёт не так, и разрешающее правило не загрузится, вы вообще потеряете доступ к серверу, и ничего не сможете исправить удалённо. Что называется – "к командировке". Гораздо безопаснее ставить общее блокирующее правило после разрешающих. 3) Только крайняя степень паранойи может оправдывать блокировку исходящих соединений, то есть открываемых самим сервером. P.P.S. Английское слово alloy означает "сплав". Разрешение – allow. |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
Огромное спасибо за Ваши пояснения! Действительно, в них присутствует нагромождение. За основу было взято типовое правило с wiki.archlinux (en)(несколько отличаются от правил в русской вики), оно было обрезано и разбавлено правилами из других источников и возможно несколько дублируются в различном виде. Старался настроить правила таким образом: 1) По умолчанию все запрещено. 2) Далее разрешаются только необходимые порты и протоколы для нормального функционирования web и ftp серверов (пока только это, но неизвестно что мне еще взбредет в будущем). web и ftp смотрят в открытый Интернет. Схема сети следующая: Имеется обычный роутер Асус, он поднимает ПППоЕ с постоянным ip-адресом. Сервер представляет из себя ноутбук, кабелем подключенный к роутеру. Т.е. в-принципе физический доступ к нему есть постоянно. Поэтому и выбрал отновным правилом: все запрещено. P.S. allow исправил :) в английском не очень силен (самоучка).
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
Если я не ошибаюсь, для сокращения конфига можно объединить строки:
в две:
Ну и соотвественно для INPUT тоже самое.
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
И еще не ясен момент, точнее работает это и нет => В вики пушут, что по-умолчанию уже встроена в ядро блокировка на локальные адреса поступающие из глобальной, т.е. это все: включено по дефолту в /usr/lib/sysctl.d/50-default.conf и это дейстривельно присутствует, этакий аргумент rp_filter: А в ipfilter достаточно добавить: Но отрабатывается оно корректно или нет кто-то знает или как проверить?P.S. Нужно ли создавать дополнительный конфик файл /etc/sysctl.d/90-firewall.conf и дублировать там этот аргумент? По умолчанию файла 90-firewall.conf нет. И вообще каталог /etc/sysctl.d пустой. Может правила где-то в другом месте сейчас?
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Если к интернету подключён роутер, то фаерволл должен быть имено на нём. И не такой, как у вас, а с форвардингом и натом, потому что внешний IP тоже на нём. И физический доступ к нему, в случае чего, не поможет, ибо монитор и клавиатуру подключать некуда. С другой стороны, скорей всего, он там уже есть, хотя настраивать перенаправление портов всё равно надо. rp_filter (в sysctl) работает без дополнительных правил. -m multiport тоже работает. Комментарии, так же, как другие параметры, пишутся БЕЗ пробелов по обе стороны знака = , и в кавычках, если пробелы есть внутри, например -m comment --comment="a b c d" |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
В общем, воспользовавшись всеми Вашими рекомендациями, оставив на OUTPUT ACCEPT, причесал правила к такому виду:
Прошу Ваши замечания! P.S. На роутере есть и NAT и Фаервол (тоже iptables). Порты прокинуты. По факту на нем стоит busybox..
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
Судя по логам: и
одно и тоже.
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
VintArch |
|
Темы:
1
Сообщения:
7
Участник с: 16 мая 2016
|
И еще => по умолчанию все логи пишутся в dmesg. А как вывести в отдельный лог все в /var/log ? Пока гуглю..
$ uname -a
Linux ArchLinux 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux |
wau |
|
Темы:
172
Сообщения:
1270
Участник с: 11 октября 2013
|
приводит к дублированию - одно и тоже событие записывается в лог с разными метками. И пишет не дропы.
|