Iptables: соответствие исходящему трафику с conntrack и владельцем. Работы со странными отбрасываниями

AutoKey настольная утилита автоматизации для Linux и X11. Это позволяет автоматизацию фактически любой задачи путем ответа на введенные сокращения и горячие клавиши. Это предлагает полнофункциональный GUI, который делает это очень доступным для новичков, а также сценариев Python.... Вот ссылка на домашнюю страницу Автоключа.

Примечание: Когда я сначала посмотрел на Автоключ, его интерфейс сценариев не мог обработать Unicode полностью. Я забываю точно, как это было, но это было что-то как он, мог обработать UTF-8 внутренне, но не мог поставить его тому или другому. Если бы это не было, для которого, я использовал бы его сегодня; это выглядит большим, и это имеет хорошую репутацию (я знаю это от земли Windows). Иначе это довольно всесторонне. Я полагаю, что это - ветвление Autoit3 (снова Windows).. Я использовал Autoit3, и это абсолютно полнофункционально. Я думаю, что Автоключ подобен.... Autokey доступно в репозитории Ubuntu..


xdotool позволяет Вы программно (или вручную) моделируете ввод с клавиатуры и действие мыши, перемещаете и изменяете размер окон и т.д.

xdotool key  --clearmodifiers --delay 40 "ctrl+shift+u" 

Другая опция является пакетом xmacro. Это содержит макроигру и xmacrorec (и xmacrorec2). xmacrorec может использоваться для записи мыши и событий клавиатуры на любом дисплее X11. xmacroplay может использоваться, чтобы воспроизвести зарегистрированные события или отправить любую другую мышь/события клавиатуры, которую Вы выбираете.

  echo -n "KeyStrPress Control_L 
           KeyStrPress Alt_L   
           KeyStrPress a    
           KeyStrRelease a    
           KeyStrRelease Alt_L   
           KeyStrRelease Control_L"|
           xmacroplay :0.0 &>/dev/null

10
20.10.2012, 14:57
2 ответа

Короче говоря, тот ACK был отправлен, когда сокет не принадлежал никому. Вместо того, чтобы позволить пакеты, которые принадлежат сокету, который принадлежит пользователю x, позвольте пакеты, которые принадлежат соединению, которое инициировалось сокетом от пользователя x.

Более длинная история.

Для понимания проблемы это помогает понять как wget и Запросы HTTP работают в целом.

В

wget http://cachefly.cachefly.net/10mb.test

wget устанавливает соединение TCP к cachefly.cachefly.net, и когда-то установленный отправляет запрос в протоколе HTTP, в котором говорится: "Отправьте мне содержание /10mb.test (GET /10mb.test HTTP/1.1) и между прочим, могли Вы не закрывать соединение после того, как Вы будете сделаны (Connection: Keep-alive). Причина, которую это делает, который является, потому что в случае, если сервер отвечает с перенаправлением для URL на том же IP-адресе, это может снова использовать соединение.

Теперь сервер может ответить с также, "здесь прибывает данные, которые Вы запросили, остерегайтесь, это 10 МБ шириной (Content-Length: 10485760), и да хорошо, я уеду, соединение открывают". Or if it does not know the size of the data, "Вот данные, извините я не могу оставить соединение открытым, но я скажу, когда можно будет прекратить загружать данные путем закрытия моего конца соединения".

В URL выше, мы в первом случае.

Так, как только wget получил заголовки для ответа, он знает, что его задание сделано, после того как он загрузил 10 МБ данных.

В основном, что wget делает считан данные, пока 10 МБ не были получены и выход. Но в той точке, существует больше, чтобы быть сделанным. Что относительно сервера? Этому сказали оставить соединение открытым.

Перед выходом, wget завершения (close системный вызов) дескриптор файла для сокета. На, close, система заканчивает подтверждать данные, отправленные сервером, и отправляет a FIN сказать: "Я не буду отправлять больше данные". В той точке close возвраты и wget выходы. Нет никакого сокета, связанного с соединением TCP больше (по крайней мере, не один принадлежавший никаким пользователем). Однако это еще не закончено. После получения этого FIN, сервер HTTP видит конец файла при чтении следующего запроса от клиента. В HTTP, который не означает "больше запроса, я закрою свой конец". Таким образом, это отправляет свой FIN также, для высказывания, "Я ничего не буду отправлять также, то соединение уходит".

После получения, что FIN, клиент отправляет "ACK". Но, в той точке, wget давно в прошлом, так, чтобы ACK не был ни от какого пользователя. Который является, почему это заблокировано Вашим брандмауэром. Поскольку сервер не получает ACK, он собирается отправить FIN много раз, пока он не сдастся, и Вы будете видеть более отброшенный ACKs. Это также означает путем отбрасывания тех ACKs, бесполезное использование ресурсов сервера (который должен поддержать сокет в состоянии последнего ACK), в течение достаточно долгого времени.

Поведение отличалось бы, если бы клиент не запросил "Активный", или сервер не ответил с "Активным".

Как уже упомянуто, если Вы используете средство отслеживания соединения, что Вы хотите сделать, позволен каждый пакет в УСТАНОВЛЕННЫХ и СВЯЗАННЫХ состояниях через, и только волнуйтесь о NEW пакеты.

Если Вы позволяете NEW пакеты от пользователя x но не пакеты от пользователя y, затем другие пакеты для установленных соединений пользователем x пройдет, и потому что не может быть установленных соединений пользователем y (так как мы блокируемся NEW пакеты, которые установили бы соединение), не будет никакого пакета для пользователя y прохождение через соединений.

15
27.01.2020, 20:01
  • 1
    Так, совет помог, как это кажется, не так ли? :) –  poige 23.10.2012, 18:44

Это позволяет порт 80 только для учетной записи "useraccount"

— хорошо, по крайней мере, правила, которые Вы показали, не подразумевают это на самом деле.

Существует также место для совета — не делают пользователя, проверяющего УСТАНОВЛЕННЫЕ потоки, просто делают это начинающее работу НОВЫЙ. Я также не вижу точку в проверке исходного порта при проверке УСТАНОВЛЕННОГО Поступления, что является различием, каким портом это было, это уже находится в УСТАНОВЛЕННОМ состоянии от PoV conntrack. Брандмауэр должен быть максимально простым, но эффективным все же, таким образом, подход бритвы Оккама является лучшим соответствием.

3
27.01.2020, 20:01
  • 1
    спасибо за совет. Обычно я, все для простоты кроме этого не точка этого конкретного осуществления. –  arcX 20.10.2012, 14:27
  • 2
    @arcX, это осуществление может перестать работать из-за того, чтобы быть слишком сложным и непоследовательным — IOW, поведение, которое Вы видите, может произойти не из-за netfilter внутренностей (ошибки, причуды), но к способу, которым Вы используете его. Попытайтесь упростить ruleset первый … –  poige 20.10.2012, 14:53

Теги

Похожие вопросы