среда, 28 декабря 2011 г.

Systemd

просмотр статуса старта служб#systemctlтам же можно посмотреть какие неудачно стартанули и пофикстить проблемы, например из неудачно стартанувших
systemd-...-setup.service loaded ESC[1;31mfailed failed   ESC[0m     Recreate Volatile Files and Directories
Юниты, завершенные с ошибкой:
systemctl --failed
статус юнита
systemctl status fail2ban
статус всех юнитов (просмотр всех служб (стартуют автоматом или нет) )
systemctl list-unit-files 

если конкретную
systemctl list-unit-files | grep iptables
iptables.service                        enabled

Для сервисов можна использовать
systemstl start {stop,restart,enable,disable,kill(убить)} fail2ban
Например для включения и выключения службы
systemctl disable iptables
rm '/etc/systemd/system/basic.target.wants/iptables.service'
systemctl list-unit-files | grep iptables
iptables.service                        disabled
systemctl enable iptables
ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service'
systemctl list-unit-files | grep iptables
iptables.service                        enabled
Переход между уровнями
systemstl isolate renlevel3.target
systemstl isolate renlevel5.target
просмотр процессов
ps xawf -eo pid,user,cgroup,args
PID USER     CGROUP                              COMMAND
 9611 root     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          |   |               \_ su -
 9615 root     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          |   |                   \_ -bash
 9239 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          |   \_ /bin/bash
 9377 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          |   |   \_ ssh ns
 9308 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          |   \_ /bin/bash
 6962 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          \_ thunar
 6964 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          \_ conky
 6965 vova     cpu:/system/prefdm.service;name=systemd:/system/prefdm.service          \_ /opt/google/chrome/chrome
колоночка CGROUP как видим показывает имя контрольной группы , которое systemd присваивает каждому процессу
можно упростить себе работу назначив алиас на данну команду
alias psc='ps xawf -eo pid,user,cgroup,args' 
ту же инфу можно получить командой
#systemd-cgls
как видно например
 ├ auditd.service
  │ └ 1526 auditd
служба auditd.service порождает процесс 1526 auditd
Service-файлы для служб находятся в
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
(аналог /etc/rc.d/init.d)
systemctl daemon-reload - при изменении конфигурации systemd нужно выполнить
systemctl is-enabled foo.service; echo $?
0 - включен, 1 - выключен
ls -la /lib/systemd/system/*.wants/systemd-update-utmp-runlevel.service
по уровнях (аналог chkconfig foobar –list)
Изменение уровня запуска (3 без Х, 5 - с Х)
rm /etc/systemd/system/default.target
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
(3 runlevel по умолчанию)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
(5 runlevel по умолчанию)
inittab не используется !
просмотреть текущий уровень запуска
systemctl list-units --type=target
как правильно убить службу
systemctl kill crond.service
systemctl kill -s SIGKILL crond.service (если дела плохи)
После ввода этой команды, служба cron будет жестоко убита вместе со всеми ее дочерними процессами, вне зависимости от того, сколько раз она форкалась, и как бы она ни пыталась сбежать из-под нашего контроля при помощи двойного форка или форкбомбардировки. В некоторый случах возникает необходимость отправить сигнал именно основному процессу службы. Например, используя SIGHUP, мы можем заставить демона перечитать файлы конфигурации. Разумеется, передавать HUP вспомогательным процессам в этом случае совершенно необязательно. Для решения подобной задачи неплохо подойдет и классический метод с pid-файлом, однако у systemd и на этот случай есть простое решение, избавляющее вас от необходимости искать нужный файл:
systemctl kill -s HUP --kill-who=main crond.service
После прочтения сказанного выше у вас может возникнуть вопрос: в чем разница между systemctl kill и systemctl stop? Отличие состоит в том, что kill просто
отправляет сигнал заданному процессу, в то время как stop действует по «официально» определенному методу, вызывая команду, определенную в параметре ExecStop
конфигурации службы. Обычно команды stop бывает вполне достаточно для остановки
службы, и к kill приходится прибегать только в крайних случаях, например, когда
служба «зависла» и не реагирует на команды.
Теперь systemd отвечает и за имя хоста, локаль, настройками клавиатуры и т.д.
Имя хоста:
hostnamestl set-hostname my_hostname
Локаль:
localectl set-locale LANG="ru_UA.UTF-8"
Клавиатура (как в иксах так и в локали)
localectl set-keymap ru
Часовой пояс:
timedatectl set-timezone Europe/Kiev
Автомонтирование любого несистемного раздела (в fstab) опцией:
/dev/sda7 /home ext4 noauto,x-systemd.automount 0 1
то есть раздел будет монтирован когда он понадобится (поскольку работает отложенное монтирование)
для LVM разделов есть сервис
systemctl enable lvm 
systemctl enable lvm-on-crypt 
Настройка питания (демон logind) можно сделать без acpid, pm-utils.
Пример - спящий режим после нажатия кнопки "Power"
HandlePowerKey=suspend (/etc/systemd/logind.conf)
параметры ignore,poweroff,reboot,halt(выключить),suspend(спящий режим),hibernate(глубокий сон),kexec(загрузка другого ядра). События HandleSuspendKey (кнопка спящего режима, по умолчанию suspend), HandleHibernateKey (кнопка "Глубокий сон", по умолчанию hibernate), HandleLidSwitch (закрытие крышки ноутбука, по умолчанию suspend).
Для запуска команд ухода в сон / пробуждения (закрытие видео проигрывателя, выгрузка несовместимых с режим сна прог и т.д.) используются скрипты из каталога /usr/lib/systemd/system-sleep/ - название неважно, но должны иметь 2 агрумента pre или post (сигнализирют засыпаем или пробуждаемся) и suspend или hibernate (режим сна). Пример шаблона
#!/bin/bash
case $1/$2 in
    pre/*)
        #commands
    ;;
    post/*)
        #commands
    ;;
esac
Если скриптов несколько их запуск будет одноименным.. Завершать работу системы и перевод ее в разные режимы
systemctl reboot {poweroff,halt,suspend,hibernate}
Набор команд при загрузке.2 способами. 1 - нужна запись, чтение, удаление файлов. Используется юнит tmpfiles (выполняется при старте системы и действует на основе конфигов /etc/tmpfiles.d/).
Пример - выполнить при загрузке команду "echo USBE > /proc/acpi/wakeup" отключающую пробуждение пк при подключение usb устройства, создаем файл /etc/tmpfiles.d/disable-usb-wake.conf
w /proc/acpi/wakeup - - - - USBE
если требуется запуск команд - создаем новый юнит типа сервис
vim /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local compatibility
[Service]
Type=oneshot
ExecStart=команда или путь к скрипту
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
последняя строка говорит что он должен запускаться на уровне запуска 3 (multi-user.target), поэтому включать сервис на автозапуск не нужно.
Чтение журналов
journalctl
вывод логов команды
journalctl /usr/lib/systemd/systemd
устройства
journalctl /dev/sda
юнита
journalctl -u fail2ban
удобно для дебага скриптов сна/пробуждения
journalctl -u systemd-suspend
аналог tail -f /var/log/messages
journalctl -f

(источник http://wiki.rosalab.ru/index.php/Systemd, Исполин, каких немного (Краткий экскурс в теорию и практику systemd) (Хакер, 01/168/2013 — 108))

воскресенье, 18 декабря 2011 г.

Ремонт ПК (ИБП) особенности

1). Паять электролиты на метиринке паяльником паяльной станции наргертым до ~220-240 C. Конденсаторы лучше использовать с рабочей температурой 105 С, в крайнем случае 85 С, но не ниже.
2). ИБП
а). блок не запускается, транзисторы целые, микросхемы работают нормально.
- обрыв резистора 100 кОм в цепи базы одного из транзисторов
б). блок не запускается после замены транзисторов (высоковольтных)
- необходимо уменьшить сопротивление резистора в цепи базы с 100 до 75 кОм
в). БП на UC3842 не запускается, напряжение и сигналы норма. Генерация на задающем генераторе норма, обратные связи по току и напряжению заблокированы, на выводе питания нормальные скачки 17-9 В. Нет импульсов на выходе, замена микросхемы ничего не дала, резисторы в норме. Пила на выходе задающего генератора ниже на 0,2 В.
- неисправные кандер на 2700 пФ в задающей RC цепи
г). не запускает АТХ БП при нажатии на питание слышен кратковременный свист, на выходе 5В напряжение поднимается до 0,4 В и БП отключается. Stand By около 5 В.
- неисправные выпрямитель на выходе 12 В FEP16CT (пробой), можно заменить диодами КД213А или аналогичным.
д). JNC 400W
- высыхает кондер 22х50 возле радиатора силовых транзисторов и дежурного режима, по причине нагрева радиатора в дежурном режиме.
- вследствии высыхания предыдущего товарища может взорватся кандер 47х25 возле 5 В стабилизатора, также могут сгореть резисторы в обвьязке TL494.
э). SUNTEK PW-400ATXE постоянно влючен - не отключается (PS-ON имеет низки уровень)
- неисправные керамический кандер С29 (0,01 мкФ, желтый около IC7) - заменяем любым керамисечким 0,01-0,068 мкФ.
3). Западает кнопка питания
- протирка 10% раствором уксуса
источник (Практика ремонт, Маленькие хитрости (Андрей Кашкаров) - Железо 12/2011)

cisco storm контроль

Если вдруг на порте проблемы, для примера
5 minute input rate 103964000 bits/sec, 170339 packets/sec
5 minute output rate 13149000 bits/sec, 2626 packets/sec
  0 watchdog, 230622429 multicast, 2 pause input
то нужно порт зашейпить по мультикастам, броадкастам и юникастам
storm-control broadcast level bps 2m
storm-control multicast level bps 2m
storm-control unicast level bps 5m

суббота, 3 декабря 2011 г.

vps, vds - разница + и -

1). OPENVZ + WEBVZ (веб интерфейс для управления виртуальными машинами). Шаблоны операционок на официальном сайте.
2). HyperVM (lxcenter.org) веб интерфейс управления поддерживает OpenVZ и Xen.
3). linux-vserver + webpanel http://www.openvcp.org/
Краткая справка
Для создания VDS используются XEN, VirtualBox, VMWare и т.д..
Для создания  VPS для linux используется linux-vserver и openvz (также для других операционок).
+ VDS: не имеет значения ос внутри виртуалки, линук может использовать разные версии ядер для виртуальных систем.
- VDS: Большие потери проиводительности на операции IO (INPUT/OUTPUT), большее испльзование процессора и памяти сервисами, которые дублируют запущенные на серверной ос.
+ VPS: очень маленькая потеря приозводительности, только на изоляцию, запускаются только сервисы которые нужны.
- VPS: может использован только линукс и ядро только одной версии для всех систем в т.ч. серверной (серверной означает - той, на которой реализована виртуализация).

вторник, 15 ноября 2011 г.

Полезные команды консоли

1). Как просмотреть сетевые интерфейсы
lshw -class network
ясно дело без класа покажет все устройства
2). Стольбец превратить в строку где айпихи например разделены переносами
awk '{print $1}' /etc/hosts | paste -s -d ' '
3). трасировка порта или проверка его доступности
tcptraceroute -n 21.90.85.78 22
tcptraceroute mail.makeup.com.ua 22122
можно также так
traceroute -Picmp -M3 -m8 77.222.131.91
traceroute -Ptcp -p25 -M3 -m8 77.222.131.91
traceroute -f3 -Pudp -p53 176.9.121.68
paping www.google.com -p 80 -c 4
http://code.google.com/p/paping/
4). mtr
mtr -r -n 21.90.18.10 
5). размер папок текущей директории с глубиной 1 подпапки
du -xh --max-depth=1
6). использование xargs
find /var/www/memory/data/www/memory.net.ua/ -name '*.php' -print0 | xargs -0 chmod u+x
где
флаги find -print0 и xargs -0: это такая борьба с возможными пробелами в именах файлов. Такие файлы могут быть восприняты chown'ом как два разных. Первый флаг заставляет find выводить каждый найденный файл с нулём в конце (символ конца строки в Си), а второй флаг сообщает xargs что ему нужно отделять файлы друг от друга не по переводу строки, а по этому самому нулю, что гарантирует верную обработку даже самых хитрых имён файлов
7). вывод конфигов без коментов
| egrep -v "^(#|\s*$)"
grep -v "^#" файл | sed -e '/^$/d'
awk '$1!~"^(#|$)" {print}' /etc/squid/squid.conf
где
# комментарий
$ перевод строки
| или логическое
8). кто в локальной сети живет
nmap -e eth0 -sP 10.1.1.0/24
9). киляние сетевых сессий
tcpkill -i eth0 host 192.168.1.100 port 8080
lsof -iTCP@HostnameOrIPAddress:PortNumber а потом кильнуть по пиду
10). регулярки в grep
egrep -i '(shut|reboot)' messages
11). рекурсивный обход директорий с выполнением команд на всеми найденными файлами (если не нужно над всем используем ключи find name iname)
find / -exec ls -la '{}' \;
find / -exec egrep -i '(eval|base64_decode|gzuncompress|gzinflate|ob_start|str_rot13|create_function|headers_sent|preg_match|iframe)' '{}' \;
12). снифаем трафик (можно добавить -v -vv -vvv чтобы увеличить информативность)
tcpdump -i eth3 -nn -tttt udp and port 5060 -l | tee dump.log
13). кто слушает сокет
netstat -tunlp | grep 465
netstat -lnpt | grep master (по имени процесса - какие он порты слушает)
lsof -i :465
для UDP трафика
netstat -panu
14). работает ли процессор на полной частоте, если нет тогда что нужно сделать
[root@mail ~]# grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
cpu MHz : 1596.000
model name : Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
cpu MHz : 1596.000
[root@mail ~]# for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done
[root@mail ~]# grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
cpu MHz : 2793.000
model name : Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
cpu MHz : 2793.000
(http://www.experts-exchange.com/OS/Linux/Administration/A_3492-Avoiding-CPU-speed-scaling-in-modern-Linux-distributions-Running-CPU-at-full-speed-Tips.html)
# service cpuspeed stop
# chkconfig cpuspeed off
# pgrep -lf ondemand
1444 kondemand/0
1445 kondemand/1
# lsmod | grep ondemand
cpufreq_ondemand       42449  0
freq_table             38977  2 cpufreq_ondemand,acpi_cpufreq
# rmmod cpufreq_ondemand acpi_cpufreq freq_table
15). Разархивировать все zip файлы в каталогеfind ./ -type f -name "*.zip" -exec unzip -o {} \;
16). Переименование файликов скопом
for i in *.txt; do j=`echo $i | sed 's/Гоголь\ Николай\.\ //g'`; mv "$i" "$j"; done
где как видите мы заменяли Гоголь Николай. на пустое место
(пример из http://snipplr.com/view/2736/rename-multiple-files-in-bash-using-regular-expressions/)
17). tcpdump vlan (то есть слушаем трафик на теггированном интерфейсе)
tcpdump -i eth0 -e -n (видим все теггированные пакеты)
tcpdump -e -i eth2.7 (конкретного vlan)
tcpdump -e -i eth2.7 host 1.1.1.1 and port 110 (на конкретный хост и порт)
-X содержание пакета в 16-ричной форме (удобна для http протокола, где данные передаются в открытой форме)
-n - не резолвить ip в днс
-nn - предыдущий + номера портов
-c[n] - показать первые n пакетов
-s[n] - показать количество байт для пакета
-S - показывать абсолютные номера последовальности
-e - показывать заголовки ethernet-фреймов
-q - показывать меньше информации
-E - расшифровавывать ipsec трафик с помощью ключа
-v подробная информация (-vv, -vvv)
src - адрес источника пакета (dst - получателя)
port not 22 (не), детально - and, && (и); or, || (или); not, ! (не)
portrange 21-23 (диапазон портов)
> 32 and <=121 (тоже)
net 10.1.1.0/24 (сеть)
proto[expr:size], где proto - протокол, expr - смещение в байтах от начала заголовка пакета, size - необязательное поле, указывающее длину рассматриваемых данных (по умолчанию 1 байт)
tcpdump 'tcp[13]==2' (пакеты с установленным SYN флагом)
tcpdump 'tcp[tcpflags] & tcp-syn != 0' (то же самое)
Нахождение и сохранение видео потока
tcpdump -eflAi eth0 -s 0 -w - | strings | grep -ao "rtmp://.\+.flv" - ссылку кормим утилите rtmpdump (lkcl.net/rtmp) ./rtmpdump -r 'URL' -o file.flv
Примеры
ssh root@1.com tcpdump -w - 'port !22' | wireshark -k -i - (-w - запись дампа в стандартный вывод и перенаправили его на анализ wireshark)
ssh root@1.com "tcpdump -nn -i eth0 -w -" | snort -c /etc/snort/snort.conf -r - (тоже самое на анализ snort)
tcpdump -nnvv -r dump.cap tcp | grep -v "tcp sum ok" | wc -l (находим пакеты с неправильной контрольной суммой)
tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000' (ловим CDP пакеты)
tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))' (ловим DHCP пакеты)
tcpdump -i eth0 "tcp port pop3 and ip[40] = 85 and ip[41] = 83" -s 1500 -n (ловим POP3 аутентификацию)
(тоже хорошие примеры - http://wiki.dieg.info/doku.php/tcpdump#primery_ispolzovanija_tcpdump_and_or_except)
18). ngrep и мониторинг трафика http
ngrep -l -q -d eth2.7 "^GET |^POST" tcp and port 80 (GET и POST в рамкас tcp сессий)
ngrep -i 'game*|p0rn|adult' -W byline -d eth2.7 > 1.txt (выявление бездельников)
ngrep -i 'rcpt to|mail from' -d eth2.7 tcp port smtp (анализ smtp трафика)
19). проброс порта через ssh
ssh -f -N -L 3389:10.1.1.1:3389 ali@mali.kiev.ua
20). whois -h whois.ua 11.gov.ua
21). просмотр сетевых соединений
# iptraf
# iftop
22). просмотр работы с винчестером
# iptop
23). файл или страничка доступен по http (без поднятия веб-сервера)
while true ; do nc -l 80 < index.html ; done
24). повторяющиеся строки в файле (поиск)
sort /etc/sysctl.conf | uniq -d
25). дерево процессов
pstree -p
26). запись видео с экрана
ffmpeg -f  x11grab -s 1440x900 -r 15 -i :0.0 -vcodec qtrle /home/user/1.mov
-s разрешение
-r количество кадров
-i порядковый номер экрана иксов
https://code.google.com/p/qboard/wiki/CreatingScreencastsWithFfmpeg - скрипт для привязки к определенному окну
27). запуск Х приложений через ssh
ssh -X 10.1.1.2 firefox
(на удаленной машине в настройках sshd демона X11Forwarding yes)
28). тестируем apache
rpm -qf /usr/bin/ab
httpd-tools-2.2.15-29.el6.centos.x86_64
ab -c 50 -n 10000 URL_TO_THE_SITE
(https://wiki.appnexus.com/display/documentation/How+to+Apache+Stress+Test+With+ab+Tool - можно также почитать)
29). iptables вывод номеров линий и вставка после определенной линии
iptables -L INPUT -n --line-numbers
iptables -I INPUT {LINE_NUMBER}
соответсвенно линия с данным номером, которая была прежде опуститься ниже
30). dnstop -l 3 eth0 -i 8.8.8.8
где ip - собственно и есть айпиха интерфейса которую исключаем
с - дает нам увидеть какие запросы больше всего нагружают bind
если это какая то леваковая вирусная зона можно ей сделать
/etc/named/fake-zone
$TTL    86400
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
@       IN      NS      localhost.
        IN      A       127.0.0.1
*       IN      A       127.0.0.1
/etc/named/master.fake-zones.conf
zone "192cq.com" { type master; file "/etc/bind/fake-zone"; allow-update { none; }; };
/etc/named/named.conf
view "inside" {
        include "/etc/named/master.fake-zones.conf";
};
31). whois 91.22.3.124 | awk -F':[ \t]+' 'tolower($1) ~ /^country$/ { print toupper($2) }'
узнаем с какой страны айпиха
32). http://computerlib.narod.ru/html/tcpipdump.htm
кто конектится на конкретный порт (можно конечно и tcpdump тоже самое сделать)
tethereal -i any port 80
33). Вылогинить рута с консоли
ps -dN | grep tty1 - если рут локально
ps -dN | grep pts/3 - если рут по сети
и киляем процес
34). синхронизация файлов (например почты после переключения на новый сервер, когда переключили днс и некоторое время почта ходит и туда и туда)
rsync -avgoPu /home/vmail new_server:/home/vmail --dry-run (-n = --dry-run - test mode, потому уже без ключа -n = --dry-run)
35). просмотр нагрузки на дисковую подсистему
iostat -x -d

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sdb               2,75    16,08   22,95    7,19  3252,53   168,18   113,48     0,70   23,11   2,13   6,43
sda               3,43    16,17   38,37    7,14  4267,38   168,52    97,48     0,09    2,06   2,07   9,44

интересна колонка %util - показывает в % нагрузку. 
36). вставка файла в начало другого файла
echo -e '0r /root/file\nw' | ed /root/panel/ng.log
37). выбрать из файла определенный диапазон линий
sed -n 1,10518p /root/acco.log > /root/acco.log_recover
38). кто держит директорию
lsof +D /var/www/html
/sbin/fuser -m /var/www/html

39). модель сервера
dmidecode | grep -A3 '^System Information' 

ubuntu 11.10 vpn autostart, а также как сделать шлюз для раздачи инета

Конфигурим оба езернета на тазике, а также впн, на инет интерфейсе. На интерфейсе, смотрящем в сторону ЛАН и который будеш ширинь инет выключаем ipv6 (есть глюк, когда интерфейс поднимается и падает и так без конца, поэтому и выключаем)
Называем сетевые подключения в т.ч. впн однословными названиями, что в скриптах было проще
создаем скрип который будет с задержкой 20с поднимать интерфейс расшаренный для других пк (задержка нужна для поднятия впн)
#vim /etc/network/if-up.d/eth0
#!/bin/sh
sleep 20
nmcli con up id wired2
где wired2 - имя интерфейса расшаренного для других пк в Network Manager
#chmod +x /etc/network/if-up.d/eth0
Также создадим скрипт для автоматического подйома впн
#vim /etc/network/if-up.d/vpn
#!/bin/bash
REQUIRED_CONNECTION_NAME="wired1"         # change singularity to your network connection name
VPN_CONNECTION_NAME="vpn1"                # change airvpn to your VPN connection name
activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi
где wired1 - имя интерфейса подключенного к выходу в интернет в Network Manager, vpn - имя впн интерфейса в Network Manager
#chmod +x /etc/network/if-up.d/vpn
Теперь нужно изменять конфигурационный файл впн подлючения, поскольку пароли одного юзера другой в т.ч. рут не видит по умолчанию
#vim /etc/NetworkManager/system-connections/vpn1
меням с 1 на 0
[vpn]
....
password-flags=0
добавляем также секцию
[vpn-secrets]
password=your_password

перед секцией [ipv4], где your_password - пароль вашего юзера, использующегося для подключения впн

Также добавляем задачу восстановления впн, если вдруг подлючение упадет
*/1 * * * * /etc/network/if-up.d/vpn

Вот в принцыпе и все.

среда, 21 сентября 2011 г.

iptables recent и ddos и т.п.

Критерий recent
recent — это специальный критерий, позволяющий запоминать проходящие через него пакеты, а затем использовать полученную информацию для принятия решений. Ввиду его уникальности, широких возможностей и, как следствие, некоторых трудностей в понимании новичками принципов его использования, рассказ о нем был вынесен в отдельный подраздел.
Если быть точным, recent запоминает не сами пакеты, а их количество, время поступления, адрес источника (в последних версиях iptables также может запоминать и адрес назначения), а также, при необходимости, TTL.
В начале кратко рассмотрим его опции:
[!] --set — запомнить адрес источника/назначения пакета (внести его во внутренний список). Если такая запись уже присутствует в списке — обновить время последнего доступа для нее. Обратите внимание, что критерию recent с опцией --set удовлетворяют все пакеты. Чтобы ему не удовлетворял ни один пакет — используйте логическую инверсию (! --set).
[!] --rcheck — позволяет проверить, присутствует ли адрес источника/назначения пакета во внутреннем списке. Критерий recent с этой опцией вернет истину, если адрес в списке присутствует.
[!] --update — работает аналогично --rcheck, но еще и обновляет время время последнего доступа для данной записи.
[!] --remove — работает аналогично --rcheck, но еще и удаляет найденную запись из списка. Если запись не найдена, пакет считается не соответствующим критерию.
[!] --seconds число — дополнительная опция в режимах --rcheck и --update. Пакет считается соответствующим критерию, только если последний доступ к записи был не позднее, чем число секунд назад.
[!] --hitcount число — дополнительная опция в режимах --rcheck и --update. Пакет считается удовлетворяющим критерию, если было не менее число обращений к данной записи. Обычно используется вместе с --seconds — тогда критерий имеет смысл «не менее n обращений за последние m секунд».
--rttl — дополнительно к адресу источника/назначения, заносить в список и проверять еще и TTL пакета.
--rsource — эта опция появилась в последних версиях iptables, с тех пор, как критерий recent начал поддерживать запоминание адресов не только источника, но и назначения. Позволяет явно указать, что в список вносится именно адрес источника пакета. Однако в целях обратной совместимости этот режим используется по умолчанию, и поэтому указывать данную опцию не обязательно.
--rdest — эта опция появилась в последних версиях iptables. Позволяет явно указать, что в список вносится именно адрес назначения пакета.
--name имя — позволяет указать имя списка при использовании нескольких списков. По умолчанию используется список DEFAULT. Каждый список представлен псевдофайлом /proc/net/ipt_recent/имя. В частности, вы можете:
cat /proc/net/ipt_recent/имя # вывести список на экран
echo +адрес > /proc/net/ipt_recent/имя # добавить адрес в список
echo -адрес > /proc/net/ipt_recent/имя # удалить адрес из списка
echo / > /proc/net/ipt_recent/имя # очистить список
Теперь давайте рассмотрим несколько примеров. Блокирование bruteforce-атак (подбор пароля вслепую) на SSH и аналогичные сервисы.
iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount -4 -rttl --name SSH -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT iptable -P INPUT -j DROP
Теперь все попытки открыть новое SSH-соединение проверяются, и с одного IP-адреса можно открывать не более 4 соединений за 60 секунд. Обратите внимание, что за одно соединение злоумышленник может проверить несколько паролей — число попыток аутентификации до обрыва соединения задает параметр MaxAuthTries в файле /etc/ssh/sshd_config. По умолчанию это число равно 6, так что в нашем примере злоумышленник сможет проверять не более 24 паролей за 60 секунд. Впрочем, данный пример весьма тривиален, и сходную функциональность можно получить и при помощи критерия hashlimit:
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -m hashlimit --hashlimit-mode srcip --hashlimit-upto 5/hour --hashlimit-name ssh -j ACCEPT
разрешит не более 5 новых соединений в час. Данная реализация имеет недостаток по сравнению с recent — вы не можете произвольно задавать временной период.
Открытие порта «по стуку».
Port knocking — метод защиты портов, при котором доступ к определенному порту с отдельно взятого IP-адреса открывается после серии пакетов на заданную последовательность портов с заданными интервалами. Обычно эта задача решается демоном knockd. Также сходным функционалом обладает критерий pknock из patch-o-matic-ng, однако он, к сожалению, потерял разработчика и прекратил развиваться.
Несколько самых простых вариантов такой защиты можно организовать и средствами критерия recent.
Самое простое — открывать порт ssh (22) после стука в заданный высокий порт:
iptables -N ssh_knock # Создаем цепочку для проверки попыток соединений на защищаемый порт
# Если за последние 60 секунд было 2 и более стука — блокируем, на всякий случай
iptables -A ssh_knock -m recent --rcheck --seconds 60 --hitcount 2 -j RETURN
# Если за последние 10 секунд стук в нужный порт был — разрешить соединение
iptables -A ssh_knock -m recent --rcheck --seconds 10 -j ACCEPT
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Все попытки открыть новое соединение по SSH направляем на проверку
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ssh_knock
# Здесь мы добавляем правило для регистрации стука
iptables -A INPUT -m state --state NEW -p tcp --dport 27520 -m recent --set
# Опять же на всякий случай — при стуке в соседние порты закрываем SSH
iptables -A INPUT -m state --state NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove
iptables -P INPUT DROP # Что не разрешено — то запрещено
Даже в таком простом примере присутствуют жесткие меры защиты: защищаемый порт (22) открывается на 10 секунд после стука в заданный порт (27520), при этом более одного стука в этот порт в течение минуты считается ошибкой. Также стук в соседние с заданным порты сразу закрывает защищаемый порт. Это делается в целях защиты от подбора стука.
Если вам не интересны такие параноидальные меры безопасности, то обратите внимание на этот простой пример:
iptables -N ssh_knock # Создаем цепочку для проверки
# Если за последние 10 минут было 5 и более попыток соединения — блокируем
iptables -A ssh_knock -m recent --name ssh --update --seconds 600 --hitcount 5 -j RETURN
# Регистрируем
iptables -A ssh_knock -m recent --name ssh --set
# Если за последние 5 секунд было менее двух попыток — блокируем
iptables -A ssh_knock -m recent --name ssh ! --rcheck --seconds 5 --hitcount 2 -j RETURN
# Все остальное — разрешаем
iptables -A ssh_knock -j ACCEPT
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Все попытки открыть новое соединение по SSH направляем на проверку
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ssh_knock
iptables -P INPUT DROP # Что не разрешено — то запрещено
Идея метода проста: защищаемый порт открывается со второй попытки, т.е. стук идет непосредственно в него. Вторую попытку нужно сделать в течение 5 секунд после первой. При этом 5 и более попыток за десять минут блокируются (во избежание брутфорса).
Также можно организовать защиту через стук в серию портов:
iptables -N reset_knock # Цепочка для сброса процесса стука
iptables -A reset_knock --name PHASE1 --remove
iptables -A reset_knock --name PHASE2 --remove
iptables -A reset_knock --name PHASE3 --remove
iptables -A reset_knock --name PHASE4 --remove
iptables -N in_phase_2 # Создаем цепочку для фазы 2
iptables -A in_phase_2 -m recent --name PHASE1 --remove # Удаляем запись из списка первой фазы
iptables -A in_phase_2 -m recent --name PHASE2 --set # Добавляем ее в список второй фазы
iptables -N in_phase_3 # Создаем цепочку для фазы 3
iptables -A in_phase_3 -m recent --name PHASE2 --remove # Удаляем запись из списка второй фазы
iptables -A in_phase_3 -m recent --name PHASE3 --set # Добавляем ее в список третьей фазы
iptables -N in_phase_4 # Создаем цепочку для фазы 4
iptables -A in_phase_4 -m recent --name PHASE3 --remove # Удаляем запись из списка третьей фазы
iptables -A in_phase_4 -m recent --name PHASE4 --set # Добавляем ее в список четвертой фазы
iptables -N checked # Для записей, прошедших проверку
iptables -A checked -j reset_knock # Очищаем списки
iptables -A checked -j ACCEPT # Разрешаем пакет
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Первая фаза
iptables -A INPUT -p tcp --dport 21210 -m recent --name PHASE1 --set -j RETURN
# Для тех, кто присутствует в списке первой фазы — переход во вторую
iptables -A INPUT -p tcp --dport 11992 -m recent --rcheck PHASE1 --seconds 5 -g in_phase_2
# И т.д.
iptables -A INPUT -p tcp --dport 16043 -m recent --rcheck PHASE2 --seconds 5 -g in_phase_3
iptables -A INPUT -p tcp --dport 23050 -m recent --rcheck PHASE3 --seconds 5 -g in_phase_4
# Если стучатся не в том порядке — сброс
iptables -A INPUT -p tcp -m multiport --dport 21210,11992,16043,23050 -j reset_knock
# Для тех, кто прошел все четыре фазы — разрешаем доступ
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck PHASE4 --seconds 5 -j checked
iptables -P INPUT DROP # Дефолтное правило цепочки INPUT
Принцип прост — при стуке в порт, соответствующий очередной фазе, проверяется наличие записи в предыдущей фазе. Теперь порт 22 откроется на 5 секунд после стука в порты 21210, 11992, 16043, 23050 со строгим соблюдением порядка перечисления и интервалами не более 5 секунд.
Обратите внимание на технику реализации процесса — цепочки фаз вызываются не через -j, а через -g, поэтому после прохождения этих цепочек к пакетам сразу применяется правило по умолчанию цепочки INPUT, т.е. DROP. В противном случае пакеты доходили бы до правила сброса (которое с multiport), и процесс стука все время сбрасывался бы.
Последовательный стук в порты можно организовать, например, утилитой netcat
for it in {21210,11992,16043,23050}; do
    echo " " | nc -w 1 host $it
done
ssh user@host
Другие примеры реализации port knocking'а при помощи критерия recent можно посмотреть по этим ссылкам [1], [2], [3], [4].
Защита от сканирования портов
iptables -F INPUT # Очищаем цепочку INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям
# Если за последний час было 10 или более запросов на нерабочие порты — блокируем
iptables -A INPUT -m recent --rcheck --seconds 3600 --hitcount 10 --rttl -j RETURN
# Если за последнюю минуту было 2 или более запросов на нерабочие порты — блокируем
iptables -A INPUT -m recent --rcheck --seconds 60 --hitcount 2 --rttl -j RETURN
# Разрешаем рабочие порты
iptables -A INPUT -m state --state NEW -p tcp -m multiport --dport 21,25,53,80,110 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp -m multiport --dport 53,123 -j ACCEPT
# Всех, кто ломится в нерабочие порты — регистрируем
iptables -A INPUT -m recent --set
iptables -P INPUT DROP # Что не разрешено — то запрещено
Все пакеты, попадающие на нерабочие порты сервера, регистрируются. После нескольких таких попыток за заданный интервал времени адрес их источника блокируется. Проверка TTL добавлена для защиты от блокировки легитимных клиентов после спуфинга злоумышленником от их имени. Хотя, с другой стороны, эта мера позволяет ему обойти защиту от сканирования, выставляя своим пакетам различный TTL. Так что вопрос о нужности этой проверки в вашем конкретном случае вам придется решать самостоятельно.
Пресечение попыток взлома сервисов
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --update --seconds 3600 --hitcount 8 -j REJECT
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh ! --rcheck --seconds 15 --hitcount 2 -j REJECT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Как это работает? Последнее правило: если ни одно из предшествующих правил не сработало, то принимать пакет. Второе правило безусловно создает или обновляет запись о последнем пакете. Третье правило отвергает пакеты, если за последние 15 секунд было менее 2-х попыток подключения. Первое правило отвергает, если за последние 3600 секунд было 8 или более пакетов.
Первая попытка подключения: пакет не соответствует правилу 1, второе правило добавляет его в таблицу последних попыток подключения. У второго правила нет цели, поэтому пакет идет дальше по цепочке. Третье правило проверяет, есть запись в таблице недавних подключений. Да, пакет занесен в таблицу предыдущим правилом, но всего один, а требуется 2. Правило не сработало бы, но установлено отрицание правила (!), значит правило срабатывает и первый пакет отвергается целью REJECT. Если вторая попытка соединения будет предпринята в течении 15 секунд после первой, то третье правило не сработает, и пакеты будут пропускаться 4-м правилом. При этом каждый такой пакет будет заноситься в таблицу недавних вторым правилом. При превышении лимита 8 подключений в час все пакеты будут блокироваться первым правилом, при этом каждый раз обновляя последнюю запись.
Т.е. первое соединение отвергается. Второе, если оно сделано не позднее чем 15 секунд после предыдущего - принимается. И так до 8 соединений, затем все блокируется. Т.е. если вас будут сканировать на предмет открытых портов для атаки, то порт окажется закрытым. Если вторая попытка просмотра портов с того же адреса позднее чем 15 секунд - то тоже все закрыто.


cisco как грамонтно раздавать айпихи в одном вилане и шейпить их

елси не хочеться раздавать реальные айпихи в сетях /30 можно их раздавать  по одной
создает подинтерфейс

interface FastEthernet0/0.195
 description SRIBNOKILSKA CLIENTS
 encapsulation dot1Q 195
 ip address 21.90.17.129 255.255.255.192
 no snmp trap link-status
 service-policy input SRCLIENTS
 service-policy output SRCLIENTS
end
для каждого клиента выдается соотвественно айпиха 21.90.17.130 mask 255.255.255.192 gate 21.90.17.129
создается аксес лист
ip access-list extended BOREC
 permit ip host 21.90.17.130 any
 permit ip any host 21.90.17.130
 deny   ip any any
клас мап
class-map match-all BOREC
  match access-group name BOREC
котрый и заносится в сервис полиси интерфейса 
policy-map SRCLIENTS
  class BOREC
   police cir 1024000 bc 256000 be 256000
     conform-action transmit 
     exceed-action drop
также и остальные клиенты
Для просмотра нет ли превышений полосы используются команды
sh policy-map interface Fa0/0.195 input class BOREC          
 FastEthernet0/0.195 

  Service-policy input: SRCLIENTS

    Class-map: BOREC (match-all)
      646 packets, 107462 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name BOREC
      police:
          cir 1024000 bps, bc 256000 bytes
        conformed 646 packets, 107462 bytes; actions:
          transmit 
        exceeded 0 packets, 0 bytes; actions:
          drop 
        conformed 0 bps, exceed 0 bps
sh policy-map interface Fa0/0.195 output class BOREC
 FastEthernet0/0.195 

  Service-policy output: SRCLIENTS

    Class-map: BOREC (match-all)
      741 packets, 502282 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name BOREC
      police:
          cir 1024000 bps, bc 256000 bytes
        conformed 741 packets, 502282 bytes; actions:
          transmit 
        exceeded 0 packets, 0 bytes; actions:
          drop 
        conformed 0 bps, exceed 0 bps
как видим дропов нет.
а здесь можно почитать чем отличается полиси с cir и без него

пятница, 29 июля 2011 г.

windows ограничение списка запускаемых программ

Обязательно должны быть включены (чтобы пользователь мог залогинится в систему)
C:\Windows\explorer.exe
C:\Windows\system32\csrss.exe
C:\Windows\system32\dwm.exe
C:\Windows\system32\rdclip.exe
C:\Windows\system32\taskhost.exe
C:\Windows\system32\TSTheme.exe
C:\Windows\system32\userinit.exe
Пусть-> Выполнить -> mmc -> Файл -> Добавить или удалить оснастку -> Редактор объектов групповой политики (GPO) -> Добавить -> Обзор (указываем пользователя) -> Готово -> OK -> Политика "имя пользователя" -> Конфигурация пользователя -> Конфигурация Windows -> Параметры безопасности -> Пр. клавишей на "Политики ограничения использования программ" ->  Создать политику ограничения использования программ -> Уровни безопасности -> 2 раза кликаем на "Запрещено" (по умолчанию) -> переходим в раздел "Дополнительные правила" удаляем созданные системой ссылки "%HKEY_LOCAL_MACHINE\...." -> добавляем правила на нужные программы через правую клавишу "Создать правило для хеша" где выбираем нужный файл и меняем уровень безопасности на "Неограниченный"

медленные страницы на сайте

Google Analytics www.google.com/analytics. Функция доступна в новом интерфейсе, чтобы ее включить (по умолчанию выключена) нужно добавить строку в скрипт GA (тот JS-код, который вставляется в каждую страницу веб-проэкта и необходим для сбора и отправки данных), а именно обращение к функции _trackPageLoadTime[], который должен происходить после вызова trackPageview[]:
// Вариант для асинхронного кода GA:
_gaq.push(['_trackPageview]);
_gaq.push(['_trackPageLoadTime]);
// Вариант для стандартного кода GA:
pageTracker._trackPageview();
pageTracker._trackPageLoadTime();
После этого данные будут в отчете "Содержание - Скорость загрузки сайта"

вторник, 26 июля 2011 г.

быстро поднять веб сервер и расшарить файлы на линуксе

ставим пакет webfs и даем команду
webfsd -p 8080 -r /путь/к/данным
или в папке с файлами
python -m SimpleHTTPServer
сервер работает на 8000 порту на всех интерфейсах

четверг, 14 июля 2011 г.

linux как узнать кто занял звуковуху

Когда audacious выдает ошибку "snd_pcm_open failed: Устройство или ресурс занято." а кафеин вообще звук не проигрывает не выдавая ошибок очень просто узнать кто занял звуковуху командами
lsof /dev/snd/pcm*
или
fuser -mv /dev/snd/pcm*
а потом кильнуть этот процес. Как было у меня
[vova@vova ~]$ aplay
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
aplay: main:654: audio open error: Устройство или ресурс занято
[vova@vova ~]$  lspci | grep Audio
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
[vova@vova ~]$ lsof /dev/snd/pcm*
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
knotify4 29228 vova  mem    CHR 116,16          5920 /dev/snd/pcmC0D0p
knotify4 29228 vova   13u   CHR 116,16      0t0 5920 /dev/snd/pcmC0D0p
[vova@vova ~]$ kill -9 29228
то есть как видите все достаточно просто

понедельник, 11 июля 2011 г.

задержка автозапуска в гном

Часто требуется чтобы была задержка запуска приложения, это можно реализовать такой строкой
/bin/sh -c 'sleep 20 && /usr/bin/linphone-3'
где 20 - величина зедержки
а после && приложение которое нужно запустить
данную строку добавляют в System - Preferences - Startup Applications
также данную проблему можно реализовать таким макаром

#!/bin/sh
sleep 10
/usr/bin/linphone-3
то есть создаем скрипт, который и прописываем в нужном месте (где смотрим выше), но первый вариант по ходу быстрее.

суббота, 25 июня 2011 г.

торможение системы при копировании на флешку с диска на диск

баг 12309 (goo.gl/uMKEn)
проверка
dd if=/dev/zero of=/tmp/test bs=1M count=1M
и понаблюдать за отзывчивостью ос, особенностью графических приложений. Если подскочит wa (wa (Waiting for I/O) from top command - Cpu(s):  1.7%us,  1.5%sy,  0.6%ni, 94.7%id,  1.5%wa,  0.0%hi,  0.1%si,  0.0%st) (а с ним la - load average: 0.11, 0.11, 0.38) Если начнутся тормоза - баг пойман
Проявляется:
1). копирование больших объемов данных с винта на винт
2). нехватке оперативки
3). копировании на флешку
4). использование шифрованных разделов
Как можно попробовать решить
1). смена планировщика ввода-вывода на не-cfg. Посмотреть
cat /sys/block/cciss\!c0d0/queue/scheduler
noop anticipatory deadline [cfq] (cciss\!c0d0 - винчестер)
можно сменить и посмотреть на результат
echo deadline > /sys/block/cciss\!c0d0/queue/scheduler
чтобы он устанавливался при загрузке нужно ядру передать парамерт elevator=deadline. в Grub нужно изменить строку GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub а затем обновить граб update-grub
2). настроить ос на менее агресивное использование swap
echo 10 > /proc/sys/vm/swappiness
теперь система начнет использовать подкачку если ОЗУ < 10% (по умолчанию 60%), можно добавить в /etc/sysctl.com
3). добавить ОЗУ если машина часто свапится
4). сменить ядро на старшое

переименование файлов неправильно кодировки

крякозябры в нелатинских именах файлов после разархивации rar и zip архивов, созданных под виндовз
convmv -f cp866 -t utf8 -r --notest *

пятница, 27 мая 2011 г.

nmap и его полезное исползование

сканирование сети на предмет живых хостов
nmap -sP 10.100.1.0/24 (можно 10.100.1.*)
Ключи вывода информации
-oN (по умолчанию)
-oG (в строку для применения grep - самый лучший для поиска)
-oX (XML формат - лучший для анализа ZenMap и т.п.)
-oA (в всех перечисленных форматах)
для преобразования XML в html
xsltproc file.xml -o file.html (xmlsoft.org/XSLT/xsltproc.html - качаем отсюда)

среда, 18 мая 2011 г.

DDoS как посмотреть

Покажет сколько конектов и откуда на вашем сервере:
netstat -anp|grep tcp|awk '{print $5}'| cut -d : -f1 | sort | uniq -c | sort -n

вторник, 10 мая 2011 г.

суббота, 7 мая 2011 г.

mssql 2005 не стартует под доменное учеткой на DC при загрузке системы

На Win2003 Std Rus такая проблема. Сервер - единственный контроллер домена. Проблема касалась службы SQL Server (mssqlserver) и службы агент SQ Server Agent . Запуск службы осуществлялся из-под специально созданной доменной учетной записи. После перезагрузки в журнале событий получали: 
Сбой при запуске службы "SQL Server (MSSQLSERVER)" из-за ошибки  
Имя учетной записи задано неверно или не существует, или же неверен указанный пароль. 
Вручную служба запускалась без проблем. Решение оказалось странным: в свойствах службы учетная запись была указана в виде user@domain.local. Стоило изменить на domain\user, как проблема исчезла.
(источник http://forum.ru-board.com/topic.cgi?forum=62&topic=17607)

четверг, 21 апреля 2011 г.

ip sla 2 канала интернет (один основной и широкий)

конфиги интерфейсов на провайдеров
interface GigabitEthernet0/0
ip address 21.18.173.89 255.255.255.240
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat outside
ip virtual-reassembly
ip policy route-map silver
duplex auto
speed auto
no mop enabled
!
interface GigabitEthernet0/1
ip address 18.13.23.34 255.255.255.248
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat outside
ip virtual-reassembly
ip policy route-map golden
duplex auto
speed auto
route-map нужны для ната поскольку если 2 канал нат и использование access-list не будет коректно работать посколько циска будет терятся через какой интерфейс натить конкретную сессию. Конфиг интерфейса локальной сети
interface Vlan1
description $ES_LAN$
ip address 192.168.41.1 255.255.255.0
ip nat inside
ip virtual-reassembly
Собственно конфиги route-map для провайдеров
route-map golden permit 10
 match ip address 110
 match interface GigabitEthernet0/1
!
route-map silver permit 10
 match ip address 110
 match interface GigabitEthernet0/0
при этом access-list
access-list 110 permit ip 192.168.0.0 0.0.255.255 any
и конфиг ната
ip nat inside source route-map golden interface GigabitEthernet0/1 overload
ip nat inside source route-map silver interface GigabitEthernet0/0 overload
собственно настройка ip sla (одна запись поскольку мы будет отслеживать основной канал только при его поднятии и падении будет удалятся или появляться маршрут по умолчанию - маршруты будут приведены дальше)
ip sla 1
 icmp-echo 20.85.18.13 source-interface GigabitEthernet0/0
 timeout 1000
 threshold 40
 frequency 3
ip sla schedule 1 life forever start-time now
теперь конфиг трака для ip sla
track timer interface 5
!
track 1 stub-object
!
track 100 ip sla 1 reachability
 delay down 15 up 10
и собственно маршруты на провайдеров
ip route 0.0.0.0 0.0.0.0 21.18.173.77 track 100
ip route 0.0.0.0 0.0.0.0 18.13.23.33 5
первый на основной канал и зависит от состояния трака (то есть появляется или исчезает в зависимости от состояния канал), 2 статический с метрикой 5 (метрика нужна для того чтобы при восстановлении основного канал опять маршрутом по умолчанию стал основной провайдер, если метрику не поставить основной маршрут не меняется поскольку если у маршрутов одинаковые метрики то никто из них не имеет приоритета и даже при возвращения основного маршрута дефолтом остается маршрут на беккапного провайдера и канал не возвращается на основного провайдера с широким доступом)

понедельник, 28 марта 2011 г.

Примеры sql запросов

1). замена части строки (столбцы homedir, maildir - в низ производится замена kiev на kot.kiev.ua)
UPDATE users set homedir=replace(homedir, 'kiev', 'kot.kiev.ua'),  maildir=replace(maildir, 'kiev', 'kot.kiev.ua')  where homedir like '%kiev%';

среда, 23 марта 2011 г.

Флешка, которая не дает вирусам писать autorun.inf

Диск подключился с буквой E
используя универсальные пути создаем нужный каталов autorun.inf и в нем com1. Стандартным средствами винды нельзя ни создать ни удалить такой каталой и вирусы не могу его перзаписать поэтому. То есть они не могут замутить свой автозапуск, а максимум только могут сделать свой каталог с своим телом и тольку ноль - ауторан нет, запуска тела вируса нет, его можно просто удалить. Не нужно забывать что их каталоги скрыты поэтому нужно на забывать включать показывать скрытые файлы, данные каталоги autorun.inf\com1 desktop.ini\com1 я тоже слелаю скрытыми и системными. Также важно что вирус часто палится когда он есть на пк, что он не может перезаписать autorun.inf, но делает при этом его видимымым, этим он палится что он живет на пк.
Команды выполняются Пуск - Выполнить - cmd - Enter или OK
1). Создание файлов
если вдруг захотите удалить (врятли конечно)
2). Делаем их скрытыми и системными
attrib +s +h E:\autorun.inf
attrib +s +h E:\desktop.ini

вторник, 22 марта 2011 г.

Cisco and vlan которые могут то работать то нет

Они когда-то были зарезервированы и поэтому на одних IOS они работают на других нет
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup

понедельник, 21 марта 2011 г.

Повышение безопасности домена

1). В групповых политиках для машин пользователей
1.1). Через реестр
По умолчанию - 10
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\winlogon. Ключ CachedLogonsCount (если нет создать REG_SZ тип) = 0 сделать.
Через груповые политики
1.2) Через груповые политики
Конфигурация компьютера, Конфигурация Windows, Параметры безопасности, Локальные политики, Параметры безопасности, Интерактивный вход в систему: количество предыдущих подключений к кэшу (в случае отсутствия доступа к контроллеру домена) = 0
Брутить эти хешированные пароли и логины могут Cain&Abel (локально) и PWDumpX (удаленно).
Но поскольку при разблокировке станции (выход из скринсейвера, если он требует логин пароль, или станция заблокирована вручную) нужны логин и пароль кешированнию подвергается текущая сессия в памяти. Если используется кеширование доменные контролер не используется, для его использования при разблокировке
Конфигурация компьютера, Конфигурация Windows, Параметры безопасности, Локальные политики, Параметры безопасности, Интерактивный вход в систему: требовать проверки на контроллере домена для отмены блокировки - вкл.
2). Отключение отражения (Smb relay - бюлетень MS08-068). Апдейты отключают рефлексию на хост инициировавший соединение соединение (но это не откл. рефлесию на другие хосты и по другим протоколам). "Подписывание SMB" к сожалению по умолчанию откл., только на контролере домена (начиная с Win2000) вкл.
Клиент
Групповая политика «Клиент сети Microsoft: использовать цифровую подпись (с согласия сервера)» в Windows Server 2003 и Windows XP и групповая политика «Использовать цифровую подпись при обмене данными с клиентами (если возможно)» в Windows 2000 сопоставлены со следующим разделом реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
EnableSecuritySignature (REG_DWORD) 1 (вкл.)
Примечание. В Windows Server 2003, Windows XP и Windows 2000 значение по умолчанию – 1 (включен).
Групповая политика «Клиент сети Microsoft: использовать цифровую подпись (всегда)» в Windows Server 2003 и Windows XP и групповая политика «Использовать цифровую подпись при обмене данными с клиентами (всегда)» в Windows 2000 сопоставлены со следующим разделом реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
RequireSecuritySignature (REG_DWORD) 1 (вкл.)
Примечание. В Windows Server 2003, Windows XP и Windows 2000 значение по умолчанию – 0 (необязательный).
Сервер
Групповая политика «Клиент сети Microsoft: использовать цифровую подпись (с согласия клиента)» в Windows Server 2003 и Windows XP и групповая политика «Использовать цифровую подпись при обмене данными между серверами (если возможно)» в Windows 2000 сопоставлены со следующим разделом реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters
EnableSecuritySignature (REG_DWORD) 1 (вкл.)
Примечание. На контроллерах домена под управлением Windows Server 2003 и Windows 2000 значение по умолчанию – 1 (включен). На контроллерах домена под управлением Windows NT 4.0 значение по умолчанию – 0 (отключен).
В Windows Server 2003 и Windows XP политика «Сервер сети Microsoft: использовать цифровую подпись (всегда)»
и в Windows 2000 политика «Использовать цифровую подпись при обмене данными между серверами (всегда)» сопоставлены со следующим разделом реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters
RequireSecuritySignature (REG_DWORD) 1 (вкл.)
Примечание. На контроллерах домена под управлением Windows Server 2003 и Windows 2000 значение по умолчанию – 1 (обязательный). На контроллерах домена под управлением Windows NT 4.0 значение по умолчанию – 0 (необязательный).
(http://support.microsoft.com/kb/887429/ru)

четверг, 3 февраля 2011 г.

rpm - использование (ньюансы)

1). Верификация
# rpm -V util-linux-2.12q-26
S.5....T /bin/arch
В строке вывода перед названием файла пакета появляются некие символы (если верификация успешна и повреждений нет, вывода не будет), которые указывают на характер неисправностей. В данном случае 
s означает изменение размера файла,
5 – нарушение сигнатуры md5 файла,
T – изменение времени последней модификации (то есть времени копирования файла в систему в нашем случае).
2). В режимах установки-удаления довольно часто возникает необходимость воспользоваться опциями --nodeps или --force. Первая позволяет установить (удалить) пакет независимо от того, удовлетворяются ли все его зависимости, вторая – установить пакет даже в том случае, если в системе имеются файлы более свежих версий. Некоторый интерес представляют опции --aid, которая автоматически удовлетворит возникающие зависимости и --test, которая и означает тестирование операций, то есть весь вывод о возникающих проблемах будет осуществлен, но реальных операций не производится. Очень удобно моделировать поломку системы в результате каких-либо действий.
3). # rpm -q --queryformat %{DESCRIPTION} <имя пакета>
выведет описание пакета, а команда
# rpm -q --queryformat %{DISTRIBUTION} <имя пакета>
– название дистрибутива, в составе которого находится пакет.
Причем замена -q на -qp позволит ту же самую информацию получить от rpm-файла не установленного в систему пакета. Можно получить список только конфигурационных файлов пакета, или только файлов документации, или только файлов, содержащих в имени регулярное выражение, то есть в принципе что угодно.
4). Формат rpm-пакета.
Формат пакета состоит из бинарного заголовка и cpio-архива, который содержит бинарные файлы в таком дереве каталогов, в каком они будут находится в системе после установки пакета. Файловый менеджер mc понимает множество всяких архивов, и в том числе – упаковку rpm. Если в панели mc выделить rpm-пакет и нажать ввод, мы увидим псевдофайловую систему, состоящую из следующих компонентов: каталога INFO, архива CONTENTS.cpio, того самого, содержащего бинарные файлы, файла HEADER и псевдоскриптов INSTALL и UPGRADE. В каталоге INFO содержатся файлы, имена которых соответствуют именам полей spec-файла, содержимое – значениям полей. Файл HEADER – по сути то же самое, только в одном файле. Ссылки INSTALL и UPGRADE соответствуют командам rpm -ih <имя пакета> и rpm -Uh <имя пакета>. То есть, если на них нажать, эти действия и произойдут.
В реальном формате никакой файловой системы нет. Просто mc умеет по-своему интерпретировать бинарный заголовок пакета, за что его разработчикам большой респект.
При желании можно выделить cpio-архив из всего пакета. Для этого существует утилита rpm2cpio.
5). Соберем пакет.
В rpm версии v.4 режим сборки пакета оформлен в виде отдельной утилиты – rpmbuild. Воспользуемся самым эффективным методом изучения технологии, то есть, соберем модельный rpm-пакет. Нет и вопроса, что должна делать программа, которую мы упакуем в rpm. Она должна говорить: «Hello, world!»!
В rpm-based дистрибутивах существует специальное дерево каталогов, предназначенное исключительно для сборки пакетов. Оно лежит в /usr/src (в Suse Linux – в /usr/src/packages) и содержит каталоги BUILD, RPMS, SOURCES, SPECS, SRPMS. Предназначены они соответственно для хранения временных каталогов сборки, собранных бинарных rpm, исходного кода, хранения файлов спецификации, собранных src.rpm-пакетов. Src.rpm содержат исходный код и spec-файлы и предназначены для пересборки на целевых машинах с целью лучшей адаптации к архитектуре и системному окружению этих машин. Для сборки нам потребуется исходный код программы, который традиционно упаковывается в tar.gz или в tar.bz2 и spec-файл. Spec-файл для rpm примерно то же, что Makefile для утилиты make. Это подробнейший сценарий того, что должно происходить при сборке со всеми необходимыми определениями и служебными полями. Итак, за дело.
Создадим текст программы на С. Файл назовем hi.c и поместим его в каталог SOURCES. Отредактируем содержание файла в любимом текстовом редакторе следующим образом:
#include
int main(int argc, char **argv)
{
fprintf(stdout,"Hello, World!\n");
return 0;
}
Не забудем пустую строку в конце файла. Запакуем исходный код в tar.gz (команду отдаем, находясь в каталоге /usr/src/packages/SOURCES):
# tar cvfz ./hi-0.1.tar.gz ./hi.c
Далее spec-файл. По сути дела, умение создавать хорошо пересобираемые rpm-пакеты – это умение писать spec-файлы. Они имеют сложную структуру, подробности которой рассмотреть не представляется возможным в журнальной статье, поэтому обсудим главное. Файл делится на секции, каждая секция отвечает за свою часть работы. Создадим файл под именем hi.spec в каталоге SPECS и наполним его следующим содержанием:
Summary: Приветствующая утилита.
Name: hi
Version: 0.1
Release: 1
Copyright: GPL v.2
Group: Tests
Source:%{name}-%{version}.tar.gz
BuildRoot: /tmp/hi
%description
Тестовая программка для вывода приветствия.
%prep
%setup -c hi
%build
gcc -o hi hi.c

%install
mkdir -p $RPM_BUILD_ROOT/usr/local/bin
cp hi $RPM_BUILD_ROOT/usr/local/bin
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/local/bin/hi
Проанализируем функции отдельных секций spec-файла.
Все, что написано до строки %prep, составляет секцию introduction. Она содержит описания, определения версий и релизов, корень сборки и другую служебную информацию. Значения всех этих полей используются через имена полей в качестве переменных при сборке и включаются в одноименные поля бинарного заголовка rpm-пакета.
Секция prep отвечает за подготовку исходного кода к сборке. В нашем примере секция содержит строку %setup -c hi, которая вызывает макрос RPM. Макрос, в свою очередь, распаковывает исходный текст Си из архива.
Секция build содержит инструкции по сборке. В данном случае мы указали имя выходного бинарного файла – hi. Если проект большой, как правило должен быть сгенерирован Makefile, поэтому секция может содержать нечто подобное:
./configure CXXFLAGS=-03 –prefix=$RPM_BUILD_ROOT/usr
make
Секция install включает операции по установке программы в систему. В развитых проектах она может содержать весьма обширные списки действий. Или, например:
rm -fr $RPM_BUILD_ROOT
make install
В нашем проекте нет Makefile, поэтому мы указали все непосредственно.
Секция clean содержит команды удаления каталогов сборки.
Секция files – список файлов проекта.
Итак, у нас имеется исходный код в виде tar.gz-архива и spec-файл. Больше для сборки пакета ничего не требуется. Естественно, в системе должны быть установлены средства разработки.
Для сборки пакета вызываем утилиту rpmbuild с ключом -b. Второй символ набора ключей означает цель сборки. Опция -a указывает на необходимость собрать как rpm-пакет, так и src.rpm. Укажем также целевую архитектуру. Находясь в каталоге SPECS, отдадим следующую команду:
rpmbuild -ba --target i586 ./hi.spec
Если в последней строке консольного вывода Вы увидите: + exit 0, значит все прошло как надо. В каталоге RPMS/i586 должен обнаружиться файл
hi-0.1-1.i586.rpm, в каталоге SRPMS – файл hi-0.1-1.src.rpm. Воспользуемся уже имеющимися знаниями, и установим пакет hi в систему:
# cd /usr/src/packages/RPMS/i586
# rpm -Uhv ./hi-0.1-1.i586.rpm
Теперь, если Вы скажете в консоли:
$ hi
получите ответ: Hello, World!
Для установки src.rpm-пакета воспользуйтесь командой:
# rpm -i /путь к каталогу/hi-0.1-1.src.rpm
При этом в систему скопируются исходный код и spec-файл (в то самое дерево каталогов для rpm-сборки). Если нужно просто собрать бинарный пакет, достаточно сказать:
# rpmbuild --rebuild /путь к каталогу/hi-0.1-1.src.rpm

четверг, 27 января 2011 г.

Трюки и советы по командной строке

1). Количество линий в файле
sed -ne '$=' ~/.bashrc
2). Сокращенный вывод при подсчете размера текущего каталога (оставляем только подкаталоги)
du -h . | grep -v '/.*/' | sort -n
3). календарь за месяц
cal 01 2011
4). uptime графически
uptime | awk '{while($3--) a=a"="; print "|" a ">"}'
5). к какому пакету относится файл txt1
fedora# rpm -qf txt1
debian# dpkg -S txt1
gentoo# equery belongs txt1
freebsd# pkg_info -W txt1
freebsd# pkg_info -E txt1

вторник, 4 января 2011 г.

Консольные юниксовые снифферы паролей

Как отснифать
dsniff
dsniff -i eth0 -w ./password (если хотим сохранить в файл)
Как прочитать (если сохранено в файле)
dsniff -r ./password
http://www.protocols.ru/modules.php?name=News&file=article&sid=29 - можно почитать
еще утилитки из той же области

Arpspoof, спуфит указанный вами ip-адрес.
arpspoof 192.168.0.2
У этого компьютера будет, выходит сообщение, что ip-адрес занят и используется в сети, при этом иногда нарушается работа некоторых сетевых программ. К примеру, спуфинг кс-сервака закончился диссконектом всех клиентов.

Urlsnarf, перехват URL. Просто запускаем и ждем, все выводится прямо на экран, можно перенаправить в файл.
urlsnarf > url.log( Ждем…)
192.168.21.21 - - [19/Mar/2007:02:58:30 +0300] "GET http://club.itdrom.com/gallery/gal_source/delphi/d-a-p2 HTTP/1.1" - - "http://club.itdrom.com/gallery/gal_source/delphi/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Что нам дают эти на первый взгляд не нужные url? Можно узнать пароли к некоторым сайтам, где бывает человек, версии ОС, браузера.

Dsniff, основной сниффер, перехват POP, AIM, HTTP, FTP, NIS, NNTP…. Использовать лучше в фоне, а вывод направить в файл.

nohup dsniff 2>1 >> ds.log &
03/19/07 00:30:13 tcp 192.168.4.66.1044 -> 64.12.200.89.5190 (aim)
418823169
18
03/19/07 02:56:03 tcp 192.168.2.61.1744 -> 194.67.23.102.110 (pop)
USER daniil98
PASS 1234567890
03/19/07 02:16:26 tcp 192.168.2.61.1540 -> 213.24.222.132.21 (ftp)
USER fc1
PASS fc1

Остальные утилиты:
Macof - arp-флудер сети.
Dnsspoof – подделывает PTR-записи DNS(??).
Filesnarf – перехватывает файлы по NFS.
Msgsnarf – перехват сообщений IRC, ICQ, AIM (не знаю почему так и не заработал…)
Mailsnarf – перехват почты POP, SMTP. (ноу эффект…)
Sshmitm – какая-то сложная атака перехвата сеансов на SSH (не пробовал, да и врятли это получится…)
Webmitm – тоже только для web.

http://forum.antichat.ru/showthread.php?p=313506 - почитать