Colored less, grep and ls

В одной старой заметке я рассказывал, как раскрасить вывод ls в tcsh (csh). Все работает хорошо до тех пор, пока вы не перенаправите вывод команды ls через пайп | другой команде, например less.

Раскрашенный вывод содержит специальные Escape-последовательности, которые обозначают начало и конец блока текста, который нужно, например, выделить, раскрасить или подчеркнуть. Если передать такой текст команде, которая его не понимает (или не отображает без специального ключа), она выведет на экран или в файл все эти добавленные символы.

Раскрашиваем less и more (colored less and more)

less и more поддерживают отображение раскрашенного вывода, но чтобы они его отображали корректно, т.е. в раскрашенном виде, нужен ключ –R:

<command> | less -R
<command | more -R

Можно добавить в файл настроек .cshrc:

alias less less -R

less (он же more*) еще умеет отображать man в раскрашенном виде (по умолчанию, там есть раскрашивание). man использует more для отображения вывода:

     -P pager  Specify which pager to use.  By default, man uses ``more -s''.
               This option overrides the PAGER environment variable.

* убедитесь сами, less и more – один и тот же файл:

ls -laio /usr/bin/less /usr/bin/more

Для того, чтобы man был раскрашен в цвета, добавьте в .cshrc строки:

Читать остальную часть заметки »

Теги: , , , , , , , , , , , , , , , , , , , , ,

Отлов нарушителей порядка

DOS, но не MS

Посмотреть аномальную активность пользователей на сервере можно так:

 netstat -nptcp | egrep -v 'Active|Address' | awk '{print $5}' | cut -d . -f 1-4 | sort | uniq -c | sort -n | tail -n 20 

Если с IP-адреса больше сотни соединений, это уже подозрительно 🙂 Можно сравнить с ТОП-20 соединений, например, с httpd (Apache):

 sockstat -4 | awk '/httpd/{print $7}' | cut -d : -f1 | sort | uniq -c | sort -n | tail -n 10 

Если топовый адрес из первого списка светится и в этом списке, значит что-то делает плохое, ДОСит, подбирает пароли и т.п., нужно ориентироваться уже по логу.

Можно просто посмотреть, на какие порты этот адрес ломится (4-я колонка):

 netstat -nptcp | grep IP 
Kill ‘em all

Если уже совсем понятно, что кто-то страдает ерундой, можно насильно разорвать соединения с этим адресом, для освобождения ресурсов:

 netstat -nptcp | egrep 'IP' | awk '{print $4" "$5}' | sed 's/\./ /4;s/\./ /7' | xargs -n 4 tcpdrop 

Вместо одного IP-адреса можно указать несколько IP-адресов, разделяя их пайпом, например:

 egrep 'IP1|IP2|IPn' 

Перед сбросом соединений, IP-адрес злостного нарушителя рекомендуется забанить в фаерволе. 🙂


Теги: , , , , , , , , , , , , ,

Поиск в файлах

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

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print
find . -name "*.*htm*" -exec grep -i "iframe" '{}' \; -print
find /home -name '*.htm*' -exec grep -H 'fromCharCode' \{\} \;

Так можно удалить из очереди postfix письма с определенным текстом (спам-рассылку, например):

find /var/spool/postfix/deferred/ -name "*" -exec grep -i "SOMESPAM" {} \; |\
awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

А как найти файлы, в которых определенная строка не встречается?

Можно так:

find . -name "*.html" -print0 | xargs -0 grep -c "string" | grep ":0" | cut -d : -f 1

где “string” – строка, которой в файлах нет.

cut просто отрезает имя файла от количества нулевых вхождений подстроки “string”, если кому-то по душе awk, используйте в пайпе:

awk -F : '{print $1}'

Теги: , , , , , , , , ,

Чистка файлов от iframe вставок

По мотивам предыдущей заметки =)

Итак, если ваш сайт взломан или подобран пароль к вашему фтп-аккаунту и в некоторых (или во всех) файлах присутствует вражеский код iframe – самое время заняться чисткой.

Обнаружение противника

Для начала вражеский код нужно обнаружить. Самый безопасный и правильный подход – найти подозрительные участки кода в зараженных файлах и детерминировать их как вредоносные.

find . -name "*.php*" -or -name "*.*htm*" -exec grep "iframe" {} \; -print | less

В результате вы увидите код ифреймов и пути к зараженным файлам:

<iframe src=»site.ru» width=»0″></iframe>
/root/temp/3/1.htm
<iframe src=»site.ru» width=»0″></iframe>
/root/temp/3/1.shtml
<iframe src=»site.ru» width=»0″></iframe>
/root/temp/3/1.html

Если не хотите видеть путь к файлам (в принципе, на данном этапе он и не нужен), уберите ключ -print.

Читать остальную часть заметки »


Теги: , , , , , , , , , , , , , ,