Существует сервер без защиты iptables :ACCEPT all..
На этом сервере могут быть пользовательские приложения.
Если нам нужно укрепить этот сервер (запретить все, и только позволить тому, что требуется приложениям) с помощью строгих правил iptables, мы должны вручную выяснить, какое приложение использует, dst/src
port/protocol
а затем мы должны написать правила iptables для их..
Вопрос : существуют ли сценарии, которые могут помочь в сборе этой информации с работающей машины? (из журналов?) - И автоматически генерировать правила iptables?
Как будто есть audit2allow
на SELinux
. Просто для iptables
!
Машина не может быть отключена!
Пример: сценарий «MAGIC» должен запускаться на машине неделю / месяц, собирая информацию, а затем через неделю / месяц сценарий сможет создать файл правил iptables, который мы можем использовать.
Многие люди могут попасть в эту ситуацию (как укрепить сервер в отношении iptables). И было бы замечательно, если бы был сценарий / решение, которое может сделать это: \
Ответы:
Сделать это вручную
или
Объяснение:
источник
Запустите
tcpdump
на машине неделю или около того, чтобы захватить средний трафик. Затем вы можете просмотреть трафик с помощью wireshark, чтобы увидеть, какие порты используются.Команда для этого будет
tcpdump -i <interface> -s 65535 -w <some-file>
Затем вы можете отобразить это обратно, используя,
netstat -tuanp
чтобы увидеть, какие PID / приложения используют какие порты.Теоретически это может быть написано по сценарию.
источник
Вы можете начать с очень простого шаблона, такого как https://gist.github.com/jirutka/3742890 , который разрешает только ssh и ping, и добавлять что-либо еще вручную.
быстрый взлом скрипта для генерации правил iptables для вашего приложения, слушающего через публичный интерфейс (0.0.0.0) / tcp
Вы также можете использовать
iptables -I INPUT <number>
для ввода правил в определенном месте, которое вы можете перечислить сiptables -nvL --line-numbers INPUT
источник
К сожалению, нет такого сценария, который я когда-либо видел, который мог бы работать в режиме обучения или пассивном режиме, регистрируя всю вашу сетевую нагрузку, получая его результаты и генерируя фактический брандмауэр, используя
iptables
из его журналов.Лучше всего начать с простого и постоянно добавлять различные части, когда вы начинаете полностью понимать, какие услуги предоставляет ваша система. Вам нужно будет использовать инструменты, например,
netstat
чтобы увидеть, какие порты используются для различных служб, которые вы размещаете, а также какие IP-адреса обращаются к ним.ПРИМЕЧАНИЕ. В приведенном выше примере вы можете увидеть, какие службы у меня работают на сервере, который принимает соединения TCP, т.е. они «прослушивают» соединения через различные порты.
Разумно начинать с таких вещей, как SSH (порт 22) и HTTP (порт 80), если они типичны для вашей системы, поэтому я бы массово выполнял все эти типы служб одновременно. Для других сервисов, таких как LDAP или NIS, вы можете захотеть сделать это более контролируемым образом, следя за тем, чтобы вещи не ломались при их представлении.
Такие инструменты, как FireHOL , Firewall Builder (fwbuilder) и eztables могут быть полезны при атаке на этот проект, поскольку они обеспечивают хороший уровень абстракции от необходимости создавать собственные
FireHOLiptable
правила вручную, что может быть сложно.пример
fwbuilderпример
Использование Fail2Ban
При наличии элементарного
выдержкаiptables
брандмауэра вы, вероятно, захотите дополнить его с помощью такого инструмента, как Fail2Ban .Использование таких инструментов поможет ограничить воздействие, которое ваша система должна выдержать, пока вы продолжаете укреплять ее. Даже после того, как вы по-настоящему убеждены в том, что ваша система защищена, вы все равно можете продолжать использовать Fail2Ban как часть ваших мер безопасности.
Ссылки
источник
Используйте правила iptable для регистрации новых подключений, которые также будут регистрировать udp.
Вы можете указать другое,
--log-level
чтобы журналы находились в другом файле, чем / var / log / messages (вам придется настроить демон syslog).Я думаю, что вы должны прочитать основные журналы приложений, поскольку некоторые серверы имеют очень периодическую активность, такую как полдень, конец недели, конец месяца (квартал, год), чтобы вы не пропустили важную сетевую активность сервера.
Поскольку сервер является критически важным, создает матрицу сетевого потока сервера в удобной электронной таблице (ip source, ip dest, protocol, port, application), которая поможет вам построить правила.
источник
Я знаю, что это не сценарий и это не ответ на вопрос OP, но это моя идея, которой я хочу поделиться с OP.
Я получил все порты прослушивания с:
Возможно, это поможет вам написать собственный сценарий. :)
источник
Вы можете начать с чего-то вроде этого:
а затем проследить
или
В первой строке используется netstat для вывода списка прослушивающих процессов и их портов. Затем он сгенерирует строки «iptables», чтобы разрешить каждое из этих входящих соединений. Небольшая подстановка sed regex была настроена для вывода netstat на моем сервере, поэтому для вас может потребоваться некоторая настройка. Когда это работает, у вас должно получиться что-то похожее на:
Следует отметить две важные вещи:
1) Эти правила ничего не делают для вас, пока вы не поставите строку DROP или REJECT в конце или не сделаете это политикой по умолчанию для несопоставленных пакетов. Эти правила разрешают пакеты, что является спорным, если политика по умолчанию разрешает что-либо несоответствующее.
2) Эти правила противоречивы относительно исходного IP. Исходя из вашего исходного поста, вы хотите разрешить всем своим клиентам использовать сервер, а затем изучите журналы, чтобы получить исходные IP-адреса для подключения к портам назначения. Я не знаю инструмента для этого, поэтому этот сценарий будет только препятствовать тому, чтобы люди создавали на вашем сервере новые сервисы, которые прослушивают другие порты ... и это нечто .
источник