Не может обработать stdout с каналом, как это прибывает

Сообщения от КРОНА записывают нормальное действие. Это запланированные задачи (вероятно, выполняемый каждый час или ежедневно), которые выполняются корнем.

Сообщения от SSH указывают, что кто-то пытался войти в систему как корень. Существуют боты, которые пробуют случайные адреса и пытаются войти в систему со слабыми паролями или использовать дыры в системе безопасности. Большинство людей может проигнорировать эти попытки, все, в чем Вы нуждаетесь, должен наблюдать простую гигиену:

  • Любой отключает аутентификацию по паролю в целом в /etc/sshd_config (возможно /etc/ssh/sshd_config или некоторое подобное местоположение в зависимости от Вашего распределения) путем установки PasswordAuthentication No; или удостоверьтесь, что у каждого пользователя в Вашей системе есть сильный пароль (не слово словаря или простая вариация на одну).
  • Удостоверьтесь, что Ваш ssh сервер актуален (никакие известные дыры в системе безопасности).

Можно реализовать более строгие меры, если попытки используют значительную часть пропускной способности или ЦП или регистрируют пространство, но остерегаются того ограничения, SSH мог заблокировать Вас однажды. Изменение порта сделает Вас невидимыми для большинства ботов (Вы больше не среди самых низких фруктов зависания), но затем можно не мочь войти в систему через некоторые брандмауэры (если Вы действительно хотите изменить порт, и Вы не выполняете сервер HTTPS, 443 хорошо, потому что большинство брандмауэров позволяет HTTPS и не может сказать различие с SSH). Denyhosts подавит количество попыток. Стук порта является еще одним методом, но это не очень полезно: можно только войти в систему от машины, которой Вы управляете, который не находится позади строгого брандмауэра, и преимущество является довольно небольшим.

3
15.04.2013, 00:33
3 ответа

Проверьте если Ваш tshark версия имеет -l опция (почти) для вывода с буфером строки.

4
27.01.2020, 21:09
  • 1
    Право, это - закрепление на tshark части. Хотя, поскольку я показал в своем собственном ответе, если больше чем один канал будет используемым, другие должны будут быть зафиксированы также. Как простой пример, tshark -l ... | grep . | grep . не работает, тогда как tshark -l ... | stdbuf -o 0 grep . | grep . работы, таким образом, вся информация об этом потоке была полезна. Спасибо все так для всей справки! –  Teresa e Junior 15.04.2013, 18:20

Я смог получить его работающий с stdbuf от coreutils. Обратите внимание, что каждая команда после канала требует, чтобы буфер был скорректирован также:

stdbuf -o 0 tshark -i $fifo -T fields -e text -R '
    ip.src == **.**.***.**          &&
    http.response.code == 200       &&
    http.content_encoding == "gzip" &&
    http.content_type contains "text/html"
' | 
stdbuf -o 0 sed 's/\\r\\n,\?/\n/g; s/\\t/\t/g' |

Из страницы справочника:

`stdbuf': Run a command with modified I/O stream buffering

(...)

`-o MODE'
`--output=MODE'
     Adjust the standard output stream buffering.
4
27.01.2020, 21:09
  • 1
    Почему должен каждая команда после корректировки потребности канала, также? –  Hauke Laging 15.04.2013, 06:27
  • 2
    @HaukeLaging Иначе вывод может стать усеченным. Я получил его усеченный на 80-й строке. –  Teresa e Junior 15.04.2013, 07:25
  • 3
    Большой прием, но буферизация stdio существует на серьезном основании, и это - Ламе, что утилиты, которые смешивают с материалом как isatty() вынудите Вас сделать это. –  Cera 15.04.2013, 08:19

Некоторые утилиты называют isatty (), чтобы определить, является ли их вывод терминалом, и скорректируйте их поведение соответственно. gzip хороший пример этого.

Попытайтесь выполнить его с script(1):

- c, - управляют командой

Выполните команду, а не интерактивную оболочку. Это помогает сценарию получить вывод программы, которая ведет себя по-другому, когда ее stdout не является tty.

Если Вы выполняете его как это:

script -c tshark -i $fifo -T fields -e text -R '
    ip.src == **.**.***.**          &&
    http.response.code == 200       &&
    http.content_encoding == "gzip" &&
    http.content_type contains "text/html"
' | while read line; do
    echo $line
done

Необходимо смочь видеть, что строки выходят живые.

3
27.01.2020, 21:09
  • 1
    Спасибо, но сценарий требует чего-то больше. Я добираюсь script: invalid option -- 'i' –  Teresa e Junior 15.04.2013, 05:13
  • 2
    Эй, возможно, должен поместить всю команду в кавычки. Становится хитрым с такой сложной командой. Попытайтесь поместить свой весь вызов в tshark в сценарии оболочки и затем сделать script -c myscript.sh. –  Cera 15.04.2013, 08:17

Теги

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