вторник, 24 ноября 2009 г.

Выбор антивируса

Давным-давно я любил nod32 и Avast. Трудно сказать, чем именно они мне нравились - наверное тем, что они были все такие из себя альтернативные набившим оскомину гигантам.
Но когда пришла беда - сначала в виде Sality а потом в виде Conficker, я резко изменил свое мнение. Теперь у меня другая любовь: Symantec Corporate Edition и Avira Antivir. Касперского я не то, чтобы не уважаю как антивирус - но он не эффективнее симантека, зато в четыре раза жирнее. Доктора Веба я тоже, кстати, люблю, но он дискомфортен в повседневной работе и не все ловит, зато его модуль CureIt! спасал меня неоднократно - только им можно эффективно почистить комп из безопасного режима.
Итак, что меня отвратило от нода и аваста.
Прежде всего хочу заметить, что вирус вирусу рознь, и хотя какой-нибуть там Almanache быть может и лидировал по количеству зараженных по безалаберности, но только Sality и Conficker  умудрились поставить на колени наши сервера и оказались чертовски трудны в искоренении, посему эти имена навсегда останутся в моих ночных кошмарах.
Во-первых, сначала пришел вирус Sality. Вирус жестко режет антивирусы, блокирует редактирование реестра и диспетчер задач, еще портит безопасный режим. Вирус не очень трудно поймать, но он очень грамотный и идет с правами system.
Так вот - только авира и симантек могли его поймать ДО того, как он искорежет систему. Нод32 хоть и блокировал дальнейшее распространение заразы, но какая-то особенность движка позволяла вирусу сначала поглумиться над реестром, только потом его резал антивирус. Аваст вообще не замечал присутствие Sality, пока неожиданно сам для себя не умирал.

Второй вирус - кошмар на улице вязов, Conficker. Он же Downadup. Размножается по сети, подбирает пароли, спамит по жизненно важным портам, на зараженной машине организует мини-сервер имени себя. В общем, полная паника. Симантек, красивый симантек смог справиться с ним даже при установке антивируса на уже зараженную машину. Остальные же, если вирус все-таки попадал на винт, открывали безрезультатную войну, стремясь очистить тело вируса и всегда безуспешно, потому что всегда антивирусу чуть-чуть не хватало прав, чтобы победить. Пользователь наблюдал это как жуткие тормоза на своей машине. Опять же, эффективно справлялись только авира и симантек - но не потому, что они круче, просто только эти два антивируса успевали пресечь вирус до того, как он успеет окуклиться с правами system на компе.

Кстати, несколько слов об Avira Antivirus. Это не реклама, просто я его люблю, как админ.
Во-первых, он бесплатный. Для домашнего пользования. Правда, бесплатна только версия на английском языке.
Во-вторых, он легко обновляется из интернета (понимает прокси), а еще (при отключенной защите файлов) его можно обновлять тупо перезаписав четыре файла с антивирусными базами.
В-третьих, он никогда ни с кем не конфликтует. Поставьте его поверх своего любимого антивируса, и увидите своими глазами, кто именно первый перехватит заразу.
Есть, правда, и один злой нюанс в нем - он не умеет лечить файлы, он их удаляет. То есть ставить его на зараженную машину имеет смысл только после того, как она будет пролечена более демократичным но менее эффективным CureIt, иначе все закончится переустановкой системы.

понедельник, 23 ноября 2009 г.

RDP/VNC клиенты под иксы

Под свою любимую ubuntu я нашел как минимум три заслуживающих внимания клиента:
1. grdesktop - ориентированный для gnome клиент. Работает только с протоколом rdp, одна копия программы запускает только один сеанс. Умеет идти через SSH туннель, запоминает пароль (где-то у себя), умеет запускать программу после коннекта. Из плюсов то, что достаточно быстр, из минусов - сильно много сообщений о всевозможных мелких ошибках (когда бы не закончил работу - обязательно вылезет какое-нибудь окошко).

2. Krdc  - более удобная для админа утилитка. Поддерживает и VNC, и RDP. Главная прелесть в том, что поддерживает несколько сеансов одновременно, открывая их в отдельных вкладках. Очень красивое решение, между прочим. Запоминает пользователей и пароли и хранит их в KWallet, что делает процесс подключения к удаленному столу почти моментальным. Позволяет делать скриншоты удаленных сеансов. Утилита идеальна для админских будней, мне кажется, хотя настроек в ней маловато.

 

3.  grdc - утилита еще более профессиональная, чем предыдущая, написана на GTK+. По организации своей работы очень напоминает remote administrator ранних версий: имеется некое центральное окошко, которое позволяет управлять соединениями, сами же соединения открываются в новых, независимых окнах (эти окна тоже не лишены некоего базового функционала вроде перехода в полноэкранный режим и организации sftp передачи). Соединения могут объединяться для наглядности в группы. Менеджер этот чуден еще тем, что поддерживает все возможные протоколы - RDP, VNC (как исходящие, так и входящие подключения) и SSH. Последнее - удивительно полезная функция, поскольку одновременно с этим поддерживается sftp (а для конкретного соединения с RDP данный менеджер позволяет расшаривать ресурс для обмена файлами). Ну и туннелирование через SSH. В общем, полный фарш. Еще бы поддерживал прокси для своих соединений - вообще бы цены не было этому приложению.


Настройка сети без DHCP

Для того, чтобы настроить сеть на Debian/Ubuntu без участия сервиса DHCP выполняем три простых коман:
1. sudo ifconfig eth0 10.110.9.2 netmask 255.255.255.0 (настраиваем адрес и маску)
2. sudo route add -net 10.110.9.254 netmask 255.255.255.0 dev eth0 (добавляем сетевую карту и адрес, доступный через нее в список маршрутов)
3. sudo route add default gw 10.110.9.254 (устанавливаем маршрут по умолчанию)

воскресенье, 1 ноября 2009 г.

Файловый сервер Ubuntu 9.04 в домене Windows 2003 пошаговое руководство

Исходная ситуация была такая: есть некий сервер, на базе windows 2000 сервер (признаться честно - сомнительной лицензии, скорее всего пиратская), и этот сервер выполняет три основные функции: ftp-сервер (в основном, анонимный), файл-сервер и веб-сервер (простые html-страницы).
В связи с различными пертурбациями этот сервер от нас уезжает в регион, взамен него купили сервер - SuperMicro, на который планировалось поставить линукс и плавно перенести туда все функции.
Скажу честно, лучше всего с его RAID-массивом справился Ubuntu Server 9.04, поэтому он и был выбран в качестве основной ОС. Что бы там ни говорили про несовместимость Webmin и Ubuntu, я на него решительно поставил Webmin. Зачем? Элементарно - администрировать его не мне одному, адекватных спецов по Линуксу кроме меня нет, и чтобы по ночам не будили с глупыми вопросами для бытовых нужд и ставился Webmin. В конечном итоге все равно все конфигурировать руками пришлось. А вот наглядно поработать с пользователями и группами удобнее все же через веб-консоль.
На Ubuntu в ходе всех плясок был предустановлен следующий софт: Apache+MySQL+PHP для веб, Samba (практически все доступные потроха от нее, обязательно с winbind и kerberos 5), ProFTPD и SSH сервер (само собой).
Причем ProFTPD на стандартном компакт-диске не идет, его надо будет тянуть с инета.
Поскольку LAMP под Ubuntu настраивается довольно тривиально, я писать про это не буду.

Интернет для обновлений сервера у меня идет через прокси, поэтому первым делом после установки сервера чтобы работал apt-get через прокси создаем файл proxy в папке командой
sudo touch /etc/apt/apt.conf.d/proxy 
внутри которого пишем одну единственную строку:
Acquire::http::Proxy "http://10.115.1.250:3128";
(конечно же, подставляем свой айпи и свой порт вместо моих). Не забываем учитывать большие и маленькие буквы и не забываем точку с запятой в конце.
Следующим шагом (да, я сентиментален) делаем
sudo apt-get update
чтобы получить с сервера список пакетов

sudo apt-get install mc
и установить Midnight commander. Конечно, кому-то он нахрен не нужен, но я настоятельно рекомендую его новичкам, чтобы они понимали, что делают и визуально хотя бы приблизительно запоминали пути и файлы.
Кстати, еще один плюс Midnight Commander'а в том, что его можно запустить командой
sudo mc
и совершенно не парясь получить как рутовый доступ к файлам через панельки, так и рутовую консоль (Ctrl+O работает идеально), без необходимости повторно подтверждать пароль после некоторого простоя. В дальнейшем я писать слово sudo не буду, подразумевая, что все команды должны выполняться с правами суперпользователя, через консоль mc.
Кстати, если вы работаете через putty то (во избежания мусора на экране) слева в пункте меню Translation выберите в выпадающем списке вместо KOI8-R привычный для убунты UTF-8.
Следующим шагом добавляем пару необходимых репозиториев - для этого редактируем файл
/etc/apt/sources.list 
и вносим в него две строки:
deb http://download.webmin.com/download/repository sarge contrib 

- правильно, это webmin, после чего сохраняем файл и выполняем команды
apt-get install webmin

конечно же, соглашаясь и нажимая "да" везде, где потребуется. Одновременно с этим ставим Иксы, если надо, и простенький менеджер окон:
apt-get install xorg blackbox
чтобы blackbox запускался автоматически по команде
xinit
делаем следующее: в папке своего пользователя (того единственного, которого Вы завели когда ставили систему), например, /home/iamuser создаем соответствующий rc-файл
touch /home/iamuser/.xinitrc
да, с точкой впереди. В этом файле пишем строку:
exec blackbox
и сохраняем. Теперь для того, чтобы запустить иксы, надо будет лишь набрать xinit и все. Кстати, включать их лишний раз не рекомендую - они нужны лишь для того, чтобы наглядно управлять виртуальной машиной на стадии установки-настройки, дабы сильно не заморачиваться с командной строкой.

Но это все была лирика. Теперь - самое главное и страшное: надо настроить Samba таким образом, чтобы она принимала всю регистрационную информацию с виндового контроллера домена. Честно говоря, настраивать самбу через вебмин - ну, разве что кроме создания расшаренных ресурсов - это извращение. Вручную редактируем файлы и сразу пишем туда всю необходимую информацию. Объясню подробно на своих конфигах:
/etc/samba/smb.conf
[global]
    log file = /var/log/samba/log.%m  #файл лога
    restrict anonymous = 2

    idmap gid = 10000-20000
    socket options = TCP_NODELAY
    client use spnego = no
    null passwords = yes
    encrypt passwords = yes
     realm = SIBRC.MCHS.RU 
#домен, в котором мы будем регистрироваться
    template shell = /bin/bash
    dns proxy = no
    netbios name = SERV2
#netbios имя этого сервера
    idmap uid = 10000-20000
    password server = 10.115.1.100
#адрес сервера, на котором будут проверяться пароли  
    path = /home
#базовый путь к домашней папке
    template homedir = /home/%D/%U #формат шаблона для автоматического создания папок
    workgroup = VSRC #netbios-название домена
    os level = 20
    security = ads
    syslog = 0
    usershare allow guests = yes
    max log size = 1000

[parus]
#шара бухгалтеров, туда смогут писать и читать только они
    writeable = yes
    user = @VSRC\obu
#на самом деле это не пользователь, это ГРУППА
    only user = yes
    write list = @VSRC\obu
#на самом деле это тоже группа
    path = /home/parus

[ftproot]
#это путь к корню ftp, для внутреннего пользования, общедоступен
    writeable = yes
    public = yes
    path = /home/ftp

На этом с самбой вроде все. Но на самом деле для того, чтобы это все заработало, надо еше настроить kerberos. Поэтому второй конфиг, который мы правим -
/etc/krb5.conf
В нем у меня дословно следующее:


[logging]
default = FILE:/var/log/krb5.log

[libdefaults]
default_realm = SIBRC.MCHS.RU #Большими буквами пишем свой домен
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24000
clock_skew=150

[realms]
#Здесь мы его еще раз описываем
SIBRC.MCHS.RU = {
   default_domain = SIBRC.MCHS.RU
#Большими буквами пишем свой домен
   kdc = dc.sibrc.mchs.ru #полное название контроллера домена
   admin_server = 10.115.1.100 #айпи адрес контроллера домена

}

[domain_realm]
#Тут тавтология какая-то, но без нее не работает:
.SIBRC.MCHS.RU = SIBRC.MCHS.RU
SIBRC.MCHS.RU = SIBRC.MCHS.RU  


После этого перезагружаем все запчасти строкой
/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start 
Проверяем/обновляем радости кербероса следующей последовательностью команд:
 kinit winadmin
(winadmin - имя администратора домена) 
Он запросит пароль для авторизации на вашем контроллере домена. Вводите, и все ок.
После этого самый трогательный момент (на этом месте у многих не получается что-то - в основном из-за лишних строк в конфигах) - включение нашего сервера в домен винды:
net ads join -u webadmin
Он опять запросит пароль - дайте - и если он не написал что-то про неверную роль сервера, то полдела сделано!
Запрашиваем списки пользователей и групп контроллера домена windows командами
wbinfo -u
wbinfo -g

- он вывалит на экран все группы и всех пользователей. Чувствуете радость? Правильно :)
Теперь еще несколько конфигов перед началом работы (обычно меняются только пара строк, остальное остается нетронутым, что поменялось - я выделил в комментарии):
/etc/nsswitch.conf
passwd:         compat winbind #тут должно быть так
group:          compat winbind
#тут должно быть так
shadow:         compat
hosts:          files dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis


/etc/pam.d/common-account
добавляем строку
account sufficient pam_winbind.so 

/etc/pam.d/common-auth
 добавляем строки
auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullock_secure use_first_pass
auth required pam_deny.so  






/etc/pam.d/common-session
добавляем строку

session required pam_mkhomedir.so umask=0022 skel=/etc/skel  

/etc/pam.d/sudo
добавляем строки

auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so  
 



В общем-то и все.
Еще раз делаем
/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start 
и у нас все должно работать! :)

Конечно же, следите за тем, чтобы все папки, указанные в конфигах, существовали. Кстати, создайте папку с нетбиос-именен домена в домашней папке, которая указана в конфиге самбы.
В моем случае это папка
/home/VSRC
Откровенно говоря, не факт, что она ему понадобится, но быть должна.

Следующий трудный момент - настройка ProFTP
Для начала установим его командой
apt-get install proftpd
Надо сказать, что и его НЕ НАДО настраивать через вебмин - замаетесь. Вебмин нужен лишь как руль, а конфигурировать лучше руками.
В случае с Ubuntu ProFTP имеет два файла конфига - основной, /etc/proftpd/proftpd.conf и тот, где по идее должны быть прописаны все виртуальные ftp-сервера - /etc/proftpd/modules.conf
Кстати, перед установкой я настоятельно рекомендую взять вот эти файлы, распаковать архив в какую-нибудь отдельную папочку и выполнить в ней команду
dpkg -i *.deb
Эти файлы содержат необходимые исправления для того, чтобы русские буквы в proftpd отображались корректно.

Итак, мои конфиги (остановился я на принципиальных моментах):
/etc/proftpd/proftpd.conf

Include /etc/proftpd/modules.conf
UseIPv6                off #выключаем адреса
IPv6
IdentLookups off
ServerName SERV2
#netbios-имя сервера
ServerType            standalone
DeferWelcome off
CharsetLocal UTF-8
#важный момент - кодировка на сервере одна...
CharsetRemote CP1251 #...а пользователю дается другая
MultilineRFC2228        on
DefaultServer on
ShowSymlinks            on
TimeoutNoTransfer        600
TimeoutStalled            600
TimeoutIdle            1200
DisplayLogin welcome.msg
DisplayChdir                   .message true
ListOptions                    "-l"
DenyFilter            \*.*/
Port 21
MaxInstances            30
User proftpd
#пользователь по умолчанию
Group serv2 #группа по умолчанию
Umask                022  022
AllowOverwrite            on
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

QuotaEngine off


Ratios off


DelayEngine on


ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock


AdminControlsEngine off


Вносите свои изменения, и можно использовать этот конфиг.
Второй же содержит информацию об открытых папках, я особо модули не отключал, просто дописал в конце свои строки, где подробно об анонимном пользователе ftp:
/etc/proftpd/modules.conf

ModulePath /usr/lib/proftpd
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_wrap.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
LoadModule mod_dynmasq.c
LoadModule mod_ifsession.c

#указываете папку, которая будет считаться корнем для анонима
AnonRequirePassword off #не требуем пароль
User anonymous #пользователь в системе, от имени которого будет идти запись
Group VSRC\domain users #группа, от имени которой будет идти запись (заметьте - группа принадлежит контроллеру домена windows)
DisplayLogin welcome.msg
DisplayChdir .message
 


AllowRetrieveRestart on #разрешаем докачку
MaxClients none #не ограничиваем в количестве подключений - сетка-то локальная
DefaultChdir /home/ftp #тоже надо, корень анонима
LoginPasswordPrompt off #не запрашиваем пароль
AllowAll
AllowOverwrite on
GroupOwner VSRC\domain users
RootLogin off
AuthUsingAlias off
 

#особые права для особой папки - оставил для примера
AllowRetrieveRestart on #разрешаем дописывать файлы
AllowStoreRestart on
AllowAll 
#разрешаем гадить в папке как только ему хочется
AllowOverwrite on


Все. Безумный анонимный доступ готов.