Jump to content

Recommended Posts

Posted (edited)

Всем салют, мучает вопрос с правила iptables + tcp flag

из официально прочитанного мануала как-то я до сих пор не догоняю как правильно писать правила с различными флагами, подскажите плиз, кто разобрался с этим)

Для примера есть такого рода правила, которые гуглятся везде, но мне пока ещё не совсем понятны:

 

/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,FIN FIN -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP
/sbin/iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

 

как бы есть офицbальный мануал по этим флагам:

 --tcp-flags mask comp
       Match  when  the TCP flags are as specified.  The first argument mask is the flags which we should
       examine, written as a comma-separated list, and the second argument comp is a comma-separated list
       of flags which must be set.  Flags are: SYN ACK FIN RST URG PSH ALL NONE.  Hence the command
        iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
       will only match packets with the SYN flag set, and the ACK, FIN and RST flags unset.

Что здесь является первым аргументом?, то что идет сразу после --tcp-flags и до первой запятой? а следующий аргумент это все остальное?
Для примера возьму в разбор это правило iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

Что я тут проверяю? пакет с установленным флагом FIN и неустановленными влагами RST FIN,RST?

Edited by Владимир320
Posted
4 минуты назад, Владимир320 сказал:

Для примера возьму в разбор это правило iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

Что я тут проверяю? пакет с установленным флагом FIN и неустановленными влагами RST FIN,RST?

Два списка разделяются пробелом. Из первого списка должны быть установлены те и только те флаги, которые перечислены во втором. В данном случае проверка на взаимоисключающие флаги FIN и RST, они не должны быть установлены одновременно

Posted (edited)

С чего это я перестал мочь отвечать с цитированием в этом форуме???? не работает кнопка.

 

Ок, если взять правило из мана:

--tcp-flags SYN,ACK,FIN,RST SYN

зачем нам рассматривать пакеты с флагами SYN,ACK,FIN,RST в котором должен быть установлен тока SYN. Как вообще формируется первый список? У меня же в голове что я могу написать какие флаги установлены и далее дропать или нет

 

Edited by Владимир320
Posted
1 час назад, Владимир320 сказал:

--tcp-flags SYN,ACK,FIN,RST SYN

Возьми ВСЕ пакеты, где есть ЛЮБОЙ из флагов SYN,ACK,FIN,RST, примени ДЕЙСТВИЕ к пакетам в которых есть ТОЛЬКО флаг SYN

 

Соответственно, мутанты с несколькими флагами одновременно пойдут ДАЛЬШЕ по цепочке

Posted (edited)
23 часа назад, Владимир320 сказал:

--tcp-flags ALL FIN,PSH,URG -j DROP

Установлены флаги FIN,PSH,URG и сняты любые другие (в данном случае syn/ack/rst)

Edited by ixi
Posted (edited)
Цитата

Установлены флаги FIN,PSH,URG и сняты любые другие (в данном случае syn/ack/rst)

а тут разве не один из трех установлен? Или правильней любые из FIN,PSH,URG установлены 

Edited by Владимир320
Posted (edited)
21 час назад, Владимир320 сказал:
Цитата

Установлены флаги FIN,PSH,URG и сняты любые другие (в данном случае syn/ack/rst)

а тут разве не один из трех установлен? Или правильней любые из FIN,PSH,URG установлены 

Нет.

 

Если вам интересно, зачем нужен фильтр для именно этой комбинации флагов, погуглите. Заодно и решите, нужна ли она вам.

Edited by ixi
Posted
Цитата

Нет.

 

Если вам интересно, зачем нужен фильтр для именно этой комбинации флагов, погуглите. Заодно и решите, нужна ли она вам.

данная комбинация флагов мне не нужна) Мне нужно понять как эти правила работают)
допустим такое правило 

 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

тут дропаем трафик с установленными флагами syn,fyn, а как понять первую часть правила?? так как если ваершарком  развернуть пакет, то там всегда будут все флаги и установлены тока некоторые, в зависимости от трафика

image.png.25043451cfb4e2df650c08b9d0e6bde1.png

в чем тогда разница если я напишу такие  правила:

-p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

-p tcp --tcp-flags ALL SYN,FIN -j DROP

-p tcp --tcp-flags FIN,SYN,RST,ACK SYN,FIN -j DROP

 

мы по сути всегда смотрим в покет со всеми флагами, но выбираем тока нужные установленные флаги. Либо я чет не понимаю

Posted
В 15.12.2023 в 15:45, Владимир320 сказал:

в чем тогда разница если я напишу такие  правила:

-p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

-p tcp --tcp-flags ALL SYN,FIN -j DROP

-p tcp --tcp-flags FIN,SYN,RST,ACK SYN,FIN -j DROP

1 syn/fin=1, urg/ack/psh/rst=любые

2 syn/fin=1, urg/ack/psh/rst=0

3 syn/fin=1, rst/ack=0, psh/rst=любые

Posted
Цитата
  В 15.12.2023 в 15:45, Владимир320 сказал:

в чем тогда разница если я напишу такие  правила:

-p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

-p tcp --tcp-flags ALL SYN,FIN -j DROP

-p tcp --tcp-flags FIN,SYN,RST,ACK SYN,FIN -j DROP

1 syn/fin=1, urg/ack/psh/rst=любые

2 syn/fin=1, urg/ack/psh/rst=0

3 syn/fin=1, rst/ack=0, psh/rst=любые

Спасибо за ответы, но все же я не понимаю разницы в правилах этих, так как в пакетах всегда есть все флаги, но установлены некоторые. Зачем тогда мне указывать какие то флаги, когда будет равнозначное правило --tcp-flag all какой то флак

Posted (edited)

к примеру я хочу ловить трафик где установлены PSH, ACK флаги

image.thumb.png.ccb50bac1db28b5b88554ebac0e7e5df.png

я могу написать правила согласно инструкции:

-p tcp --tcp-flags ALL ACK,PSH -j LOG

-p tcp --tcp-flags FIN,SYN,RST ACK,PSH -j LOG
-p tcp --tcp-flags RST ACK,PSH -j LOG

 

и этот пакет, будет попадать под эти три правила или же не будет? Смысл вообще в первой части правила? Типа рассматриваем пакеты в которых есть такие флаги, если всегда во всех пакетах есть все флаги)) взрыв мозга

Edited by Владимир320
Posted
19 часов назад, Владимир320 сказал:

Типа рассматриваем пакеты в которых есть такие флаги, если всегда во всех пакетах есть все флаги

Флаг всегда есть, но для фильтра существует три варианта: 1, 0 или значение не важно. Поэтому сначала фильтруются те флаги, которые интересуют и должны иметь конкретное значение, потом сверяется сами значения

 

20 часов назад, Владимир320 сказал:

к примеру я хочу ловить трафик где установлены PSH, ACK флаги

Если другие флаги неважны, то PSH,ACK PSH,ACK.
Если важно, чтобы SYN при этом не был установлен, то SYN,PSH,ACK PSH,ACK

 


Второй и третий вариант вряд ли будут работать

Posted (edited)
Цитата

Если другие флаги неважны, то PSH,ACK PSH,ACK.

Как работает эта запись? Ведь слева мы указали те флаги, которые мы рассматриваем и которые должны быть неустановлены, с справа список установленных флагов. Тут какое-то противоречие получается.

Или слева список, который мы просто рассматриваем

Edited by Владимир320
Posted
7 часов назад, Владимир320 сказал:

Как работает эта запись? Ведь слева мы указали те флаги, которые мы рассматриваем и которые должны быть неустановлены

Неправильно, слева указываются те флаги, которые мы рассматриваем. Установлены они или нет, зависит от второго списка.

 

 

2 часа назад, disappointed сказал:

chatGPT

Человечество пока в безопасности :) Вы бы проверили хотя бы...

Posted

Ошибки есть? А я не проверил, чёт привык, давно всякую мелочь типа js с ним делаю.

Вообще он что-то начал загоянться последнее время, весной работало супер, я текстом сложнейшие ТЗ писал он мне правила iptables только в путь выдавал.

Снимок экрана 2023-12-29 161926.png

Posted

больше вопрос к такому виду правила  PSH,ACK PSH,ACK. рассматриваем покеты с флагами PSH,ACK и в тоже время они должны быть установлены, а значение остальных флагов SYN,RST,FIN,URG нам не важно, оно может иметь значение либо 0 либо 1...?

Posted
21 час назад, Владимир320 сказал:

больше вопрос к такому виду правила  PSH,ACK PSH,ACK. рассматриваем покеты с флагами PSH,ACK и в тоже время они должны быть установлены, а значение остальных флагов SYN,RST,FIN,URG нам не важно, оно может иметь значение либо 0 либо 1...?

PSH = 1 И ACK = 1

Остальные неважны.

 

Первый аргумент говорит.. "Так, только вот эти флаги будем проверять, условимся, что они все должны быть в 0".

Второй как бы потом первую инструкцию дополняет и меняет инвертируя - "А да, забыл! Не все в 0! Вот эти из них должны быть в 1".

Posted
В 29.12.2023 в 15:48, Владимир320 сказал:

рассматриваем покеты с флагами PSH,ACK и в тоже время они должны быть установлены, а значение остальных флагов SYN,RST,FIN,URG нам не важно, оно может иметь значение либо 0 либо 1...?

Да.

Если вам проще математически, должно выполнять условие flags & mask == comp

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.