пятница, 12 марта 2010 г.

scp примеры

По работе часто приходится копировать файлы и папки с разных серверов в различные места, вот, пожалуй, напишу небольшой мануал как это все использовать.

Вот так копировать можно на удаленный хост

scp ./файл_на_компе user@server:/путь/куда/положить 

scp -r /home/user/dir user@server:/home/user/dir

scp  user@server:удаленный файл

scp -r user@server:/etc/remote_folder /etc

четверг, 25 февраля 2010 г.

Ботнет

Давно хотел написать уже да все не доходили руки.
Давно уже наблюдаю весьма интересную картину на своих серверах
(под freebsd, solaris, ubuntu,opensuse и конечно же gentoo)
Постоянно идет брутофорс атака, при чем как выяснилось не на определенные сети, ну скажем не только на рашкинские адреса, но и
на финские и чешские, прозреваю что брутофорсят по всему миру.
А теперь перейду к непосредственно примерам.

Вчера на виртуальной машине убунтовой сменил рутовый пароль
на пароль "test" в надежде того что меня взломают и о чудо в 4.04
сегодня ночью неизвестный проник в систему

Feb 25 04:04:30 ubuntuserv sshd[26946]: Accepted password for root from 69.125.24.107 port 1199 ssh2
Feb 25 04:04:30 ubuntuserv sshd[26946]: pam_unix(sshd:session): session opened for user root by (uid=0)

Адрес принадлежит провайдеру из USA штат Texas дальше становится еще интереснее

Feb 25 04:07:00 ubuntuserv passwd[27013]: pam_unix(passwd:chauthtok): password changed for irc

Новый рут сменил пароль на пользователя irc, пользователя такого у меня не было, логов заведения такого  я не нашел, видать что-то таки затерли за собой
Feb 25 04:07:15 ubuntuserv sshd[27015]: Accepted password for irc from 69.125.24.107 port 1210 ssh2
Feb 25 04:07:15 ubuntuserv sshd[27015]: pam_unix(sshd:session): session opened for user irc by (uid=0)
Следущим действием злоумышленника было заведение пользователя oracle
и такой же группы видимо для маскировки в системе в надежде, что администратор не станет сносить вроде как "системного" пользователя оракл
Feb 25 04:07:39 ubuntuserv useradd[27071]: new group: name=oracle, GID=1002
Feb 25 04:07:39 ubuntuserv useradd[27071]: new user: name=oracle, UID=0, GID=1002, home=/home/oracle, shell=/bin/sh
Но палево же!Зачем системному юзеру папка в /home ?


Дальше было еще более палевное действие

Feb 25 04:51:58 ubuntuserv passwd[27155]: pam_unix(passwd:chauthtok): password changed for root

То бишь сменили пароль руту это самая главная ошибка злоумышленника,
сегодня в систему я пытался зайти именно под рутом, тут напрашиваются два вывода: либо кулхацкеры расчитывали на то что администратор будет работать от sudo, так как рутового пароль в бубунте какбе нет, либо они настолько тупые...

/var/log/messages

Feb 25 04:08:37 ubuntuserv kernel: [369655.619943] device eth0 entered promiscuous mode
Feb 25 04:40:46 ubuntuserv kernel: [371584.196912] device eth0 left promiscuous mode
Feb 25 04:52:56 ubuntuserv kernel: [372314.970670] device eth0 entered promiscuous mode
Feb 25 05:16:21 ubuntuserv kernel: [373719.422946] device eth0 left promiscuous mode
Сетевую карту перевели в промискус мод, для чего такая манипуляция
сказать не могу, так что велком в комментарии со своими предположениями.


А теперь выясним был ли это человек или  просто скрипт
last root

root     pts/0        ool-457d186b.dyn Thu Feb 25 04:52 - 06:56  (02:04)   
root     pts/0        ool-457d186b.dyn Thu Feb 25 04:51 - 04:52  (00:00)   
root     pts/0        ool-457d186b.dyn Thu Feb 25 04:04 - 04:40  (00:36)


Рут провел в системе 2 часа 40 минут, то есть явно это не скрипт.

Теперь повторюсь еще раз подобные брут-атаки я испытываю на всех своих серверах ежедневно, бывают перерывы по несколько дней но всегда продолжают долбить.

Средства борьбы с пионерами
утилита fail2ban после нного количества попыток входа банит айпи на нное время.

воскресенье, 21 февраля 2010 г.

гипервизор virtualbox работа без gui

На сервере про который я писал ниже возникла необходимость поднять несколько виртуалок, сначала был выбран vmware но из-за своей матерой проприетарности
да и просто из-за того что офигеть как странно работал на анстейбле попробовал
в качестве системы виртуализации VirtualBox и мне очень понравилось, да так что решил оставить все это дело на сервере.

Так как это сервер то естественно возникла потребность, чтобы все виртуалки поднимались автоматически после ребута, а так же чтобы ими можно было управлять через
/etc/init.d/ как и любым нормальным демоном.
Недолго покурил примеры runscript и заделал вот такую штуку



#!/sbin/runscript
# polovinamozga.blogspot.com
depend() {
use dns logger
need net
provide cron
}

start() {
ebegin "Starting VBox"
/bin/su -l -c "/opt/bin/VBoxManage startvm xp --type headless" user
/bin/su -l -c "/opt/bin/VBoxManage startvm ubuntu --type headless" user
/bin/su -l -c "/opt/bin/VBoxManage startvm freebsd --type headless" user
eend $?
}

stop() {
ebegin "Stopping VBox"
/bin/su -l -c "/opt/bin/VBoxManage controlvm xp savestate" user
/bin/su -l -c "/opt/bin/VBoxManage controlvm ubuntu savestate" user
/bin/su -l -c "/opt/bin/VBoxManage controlvm freebsd savestate" user
eend $?
}



А теперь по пунктам, что вся эта черная магия значит.
depend() {
use dns logger
need net
provide cron
}
Говорит о том что нужно запускать когда включилась сеть, работает логгер,крон это если совсем вкртаце, кто хочет
большего то лучше наверное почитать что пишут по этому поводу на официальном сайте генты.
start() {
ebegin "Starting VBox"
/bin/su -l -c "/opt/bin/VBoxManage startvm xp --type headless" user
/bin/su -l -c "/opt/bin/VBoxManage startvm ubuntu --type headless" user
/bin/su -l -c "/opt/bin/VBoxManage startvm freebsd --type headless" user
eend $?
}


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

/bin/su -l -c "/opt/bin/VBoxManage startvm xp --type headless" user

В переводе на русский означает:
запустить su с логином пользователя передав команду  /opt/bin/VBoxManage startvm xp --type headless 

Команда эта означает что нужно запустить виртуальную машину без окна.
Потом делаем chmod +x /etc/init.d/vbox

и rc-update add vbox default

И теперь у нас после перезапуска системы стартует демон виртуабокса.

суббота, 13 февраля 2010 г.

SETI@home

Совершенно внезапно мне в доступ попал сервер
Intel(R) Xeon(R) CPU E5540 @ 2.53GHz на котором аж целых 16ядер
























И пока сервер простаивает решено было принести пользу человечеству и накатить
туда BOINC.
 Если кто не в курсе, то это прога для организации распределенных вычислений


















Подписался я на SETI
И теперь объясню как сделать такое же в качестве демона на вашем сервере.
У меня в качестве оси стоит linux gentoo на ядре 2.6.32-r5

Итак начнем











Видно юз-флаги X и cuda х  включаем по вкусу а cuda по видеокарте
если она NVIDIA и моделей от 7ххх то наверное все же поддерживает
CUDA(если вкртаце то это обработка процессорных вычислений на GPU)
У меня на сервере нет такого, так что -cuda -X
теперь

/etc/init.d/boinc attach
    Enter the Project URL: http://setiathome.berkeley.edu/
    Enter your Account Key: 72401881112dde767ff10199blablabla

 
Теперь вкратце откуда брать аккаунт кей.
Для этого нужно регистрироваться в боинке и брать из личного профиля.

добавляем демон  в автозагрузку если еще не добавили

rc-update add boinc default

среда, 30 декабря 2009 г.

Динамический айпи уведомления

Купил на днях ноутбук и установил на него ubuntu 9.10
А так как ноут будут юзать на АДСЛ-соединении с динамическим айпи
нужно как-то выяснять какой айпи подцепил роутер.
За пару минут накалякал скрипт

cat /home/user/mailip.sh
#!/bin/sh
# получился ли адрес или что-то с сервером
[ $? -eq 0 ] && RESULT="Получено" || RESULT="Сервер недоступен"

# То что в кавычках заменить на свой адрес
MAIL_ADDR="МЫЛО@gmail.com"

IP="$(curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+")"
#curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
echo ${IP} ${RESULT} | mail -s "IP thats" $MAIL_ADDR 


Итак этот скриптик отправляет мне на мыло письмо с внешним айпи.
Теперь нужно процесс автоматизировать
cd /etc/cron.d/
nano -w mailip
# Global variables
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
1 */4 * * * root /bin/bash /home/user/mailip.sh
#*/1 * * * * root ifconfig eth0 >/tmp/testcron.log
Теперь поясню что значит это все.
Я добавил в демон крона запись
стартовать мой скрипт кажду первую минуту четвертого часа
#*/1 * * * * root ifconfig eth0 >/tmp/testcron.log
А вот это применял для тестирования демона cron
пишет вывод ifconfig eth0 каждую минуту каждого часа

Ну вот вуаля ко мне на почту приходят сообщения с айпи.
п.с.
Чтобы почта уходила я использовал ssmtp
Я раньше выкладывал как нужно правильно настраивать его.

среда, 16 декабря 2009 г.

танцы с openwrt

Недавно занялся вопросом перехода на Openwrt c dd-wrt на роутере dlink dir-320
Не долго думая выбрал прошивку от kamikaze
Итак начем.Я ее собирал на своей генте самостоятельно.
Задача стоит такая заставить работать openwrt + madwimax для сети YOTA.

Все дальнейшие команды выполняются в терминале

svn co svn://svn.openwrt.org/openwrt/branches/8.09




Скачается около 90 мегабайт исходных кодов прошивки, openwrt базируется на ядре 2.4, но есть возможность собрать и с 2.6, вот только не для dlink'овских железяк, если вдруг кто это читает и в теме, то прошу проследовать в комментарии.








дальше делаем
cd 8.09
И читаем ридмишку

This is the buildsystem for the OpenWrt Linux distribution


Please use "make menuconfig" to configure your appreciated
configuration for the toolchain and firmware.


You need to have installed gcc, binutils, patch, bzip2, flex, bison,
make, gettext, pkg-config, unzip, libz-dev and libc headers.


Simply running 'make' will build your firmware.
It will download all sources, build the cross-compile toolchain,
the kernel and all choosen applications.


You can use scripts/flash.sh for remotely updating your embedded system
via tftp.


The OpenWrt system is documented in docs/. You will need a LaTeX distribution
and the tex4ht package to build the documentation. Type make -C docs/ to build it.


Building your own firmware you need to have access to a Linux, BSD or MacOSX system.
Cygwin will not be supported because of the lack of case sensitiveness.


Sunshine!
        Your OpenWrt Project
        http://openwrt.org

Для тех кто не владеет мунспиком, тут говорится о том что на системе в которой производится компилция нужны установленные
gcc, binutils, patch, bzip2, flex, bison,
make, gettext, pkg-config, unzip, libz-dev and libc headers


 Проинсталлим дополнительные фиды (в них xwrt - вебморды и много других вкусняшек)

cd scripts
./feeds update -a
./feeds install -a









Дальше вернемся в директорию выше (8.09)
и запустим make menuconfig (прям как в генте)


















На этом первая часть саги о  компиляции openwrt заканчивается :)
Ждите продолжения.

вторник, 1 декабря 2009 г.

Сегодня на работе на своей свежей прыщегенте словил ошибку

adding static routes
SIOCADDRT: Нет такого процесса

Айпи выдается через dhcp сервер, сервис net.eth0 помещен в boot
Туда же в бут помещен и /etc/init.d/network
Погуглив немного видел решения с добавлением sleep 5
в тот самый нетворкинг, я сделал проще перетащил его в default из boot.
Эффект тот же а работает приятнее.