Clam AntiVirus — пакет антивирусного ПО, работающий во многих операционных системах, включая Unix-подобные ОС, OpenVMS, Microsoft Windows и Apple Mac OS X.
Выпускается под GNU General Public License и является свободным программным обеспечением.
Для самой Ubuntu — антивирус не нужен, но вот если к вам пришел друг и говорит: «а проверь ка мне флешку на вирусы...»
Для установка ClamAV введите команду:

sudo apt-get install clamav

Для обновления баз данных вводим команду:

sudo freshclam

Проверка всей системы:

sudo clamscan -r /

(-r — рекурсивная проверка, опция --bell — воспроизводить звуковой сигнал при обнаружении проблемы)

Проверка отдельного каталога:
sudo clamscan -r /media/DataDisk/soft

Ключи:
— i - при сканировании показывать только инфицированные файлы
Пример:
сканируем домашнюю папку

sudo clamscan -r ~ -i

— move  - перемещать инфицированные файлы в отдельную папку
Пример:
перемещаем подлецов в папку infected_files, которую надо предварительно создать

sudo clamscan -r / -move=/infected_files

— remove — удаление инфицированных файлов
Пример:

sudo clamscan -r / -remove

Глубина проверки по-умолчанию составляет 15 уровней для каталогов, 8 для архивов. Изменить ограничение можно с помощью опций:

— max-recursion — для архивов;
— max-dir-recursion — каталоги;
— max-mail-recursion — e-mail.

Кроме того, по-умолчанию программа только сообщает о проблемных файлах, но не удаляет их. Для того, что бы в процессе проверки выполнялись действия — необходимо указать соответствующие опции:

— remove — удалить вирус;
— move=путь — переместить;
— copy=путь — скопировать.

Для ведения лога процесса проверки — используется опция —log.

Теперь — можно запустить проверку.

При проверке укажем:

# clamscan -i -r --bell --max-dir-recursion 50 --copy /home/Infected/ --log=/var/log/clamav.log /media/1D3A-20CC/

— i — выводить информацию только о зараженных файлах;
— r — проверять подкаталоги;
— bell — подать звуковой сигнал при обнаружении вируса;
— max-dir-recursion 50 — проверять до 50 уровней вложенности каталогов;
— copy /home/Infected/ — при обнаружении вируса копировать его в каталог /home/setevoy/Infected/;
— log=/var/log/clamav.log — записывать события в файл лога /var/log/clamav.log;
/media/1D3A-20CC/ - каталог, который необходимо сканировать.

Обновление антивируса ClamAV
Самый простой путь — запускать обновления с помощью cron. Для этого — выполняем:

# crontab -e

И добавляем новое задание:

0 0 * * * /usr/bin/freshclam —quiet -l /var/log/clamav/clam-update.log

Эта строка будет запускать обновление в 0 минут 0 часов каждый день.

Другой вариант — запустить обновление в режиме «демона» командой:

# freshclam -d -c 2 -l /var/clamav/log/clam-update.log

— d — указывает способ запуска (daemon),
— c — количество обновлений в сутки, в данном случае 2 раза,
— l — файл лога.

Параметры обновления устанавливаются в файле /etc/clamav/freshclam.conf. Например, для изменения количества обновлений в сутки — измените в нём строку:

Сегодня причиной написания этого поста послужили не понятно откуда взявшиеся глюки при загрузке Ubuntu. Программа загрузки Ubuntu постоянно стопорилась на этапе: Checking battery state...  

Долго искал в нете объяснение возникновения этой проблемы и пришел к выводу, что лучше переустановить xserver-xorg. Тем более, что после этого я спокойно загрузил системы и сел за написание этого краткого руководства...

 

Так как в графическую среду данная ошибка меня не пускает, но в консольные окна у меня доступ был открыт. Нажав Alt + F1 переходим в терминал, регистрируемся и выполняем следующие команды:

Удаляем xorg:

sudo apt-get remove --purge xserver-xorg

Устанавливаем xorg:

sudo apt-get install xserver-xorg

Перенастраиваем xorg:

sudo dpkg-reconfigure xserver-xorg

Перезагружаемся:

sudo reboot

Надеюсь после этого Вы, как и я сможете спокойно зайти в графический интерфейс Ubuntu.

Возникла необходимость как-то и куда-то бэкапится. Причём чтобы процессоры не грузились и место не занималось, а бэкапы ротэйтились и удобно доставались. Раньше всегда пользовался fsbackup, но захотелось отказаться от архивирования. Для решения задачи была использована rsync и механизм жёстких ссылок (так называемых хардлинков) файловой системы.

Архитектура: есть отдельно стоящий сервер с большим винтом — на нём и работает скрипт. Есть много разных серверов с доступом по ssh, на которых в ~/.ssh/authorized_keys добавлен публичный ключ пользователя, под которым работает скрипт резервного копирования.

Логика работы: в определённое время скрипт по ssh синхронизирует содержимое папки на удалённом сервере с папкой domain.com/latest, а потом копирует её в папку с сегодняшней датой, создавая при этом жёсткие ссылки на файлы, затем удаляет папки, дата создания которых старше 7 дней. Т.к. синхронизируется только содержимое каталога, дампить базу по крону нужно на клиентской машине перед тем, как rsync заберёт файлы.

Плюсы:
— использует меньше места, чем дифференциальные бэкапы и не больше места, чем инкрементальные
— меньше грузит процессор, т.к. не использует архиваторы (можно осуществлять сжатие на лету при передаче по сети)
— имеет достаточно подробный формата лога, оповещения по емэйлу об ошибках
— устойчив к взлому или полному уничтожению клиентской машины — бэкапы злоумышленник не повредит никак

Вопрос:
— т.к. скрипт был первоначально опубликован в бложике, так и не удалось услышать авторитетное мнение относительно эффективности такого подхода — был бы рад, если бы вы поделились мыслями…

#!/bin/sh
# simple rsync backup script written by farmal.in 2011-01-21
#
# latest backup is always in $SDIR/domains/$domain/latest folder
# all backups which are older than 7 days would be deleted
# backup.ini file can't contain comments, empty lines and spaces in domain names
#
# example of a GOOD backup.ini:
# mydomain.com user@mydomain.com:/path/to/public_html
#

SDIR="/usr/local/backup"
SKEY="$SDIR/.ssh/id_rsa"
SLOG="$SDIR/backup.log"
PID_FILE="$SDIR/backup.pid"
ADMIN_EMAIL="email@domain.com"

if [ -e $PID_FILE ]; then
        echo "this task is already running or previous run was completed with errors on `hostname`" | mail -s "Some mess with backups on `hostname`..." $ADMIN_EMAIL
        exit
fi

touch $PID_FILE

# redirecting all output to logfile
exec >> $SLOG 2>&1

# parsing backup.ini file into $domain and $from variables
cat backup.ini | while read domain from ; do
    destination="$SDIR/domains/$domain"
    # downloading a fresh copy in 'latest' directory
    echo -e "`date` *** $domain backup started">>$SLOG

    # start counting rsync worktime
    start=$(date +%s)
    rsync --archive --one-file-system --delete -e "ssh -i $SKEY" "$from" "$destination/latest" || (echo -e "Error when rsyncing $domain. nn For more information see $SLOG:nn `tail $SLOG`" | mail -s "rsync error" $ADMIN_EMAIL & continue)
    finish=$(date +%s)
    echo -e "`date` *** RSYNC worked for $((finish - start)) seconds">>$SLOG

    # cloning the fresh copy by hardlinking
    cp --archive --link "$destination/latest" "$destination/`date +%F`"
    # deleting all previous copies which are older than 7 days by creation date, but not 'latest'
    find "$destination" -maxdepth 1 -ctime +7 -type d -path "$destination/????-??-??" -exec rm -r -f {} ;
    echo "`date` *** The size of $domain/latest is now `du -sh $destination/latest | awk '{print $1}'` ">>$SLOG
    echo -e "`date` *** $domain backup ended">>$SLOG
    echo -e "`date` *** Total allocated `du -sh $destination | awk '{print $1}'`">>$SLOG
    echo -e "------------------------------------------------------------------">>$SLOG
done
rm $PID_FILE

rsync

rsync в основном предназначен для удаленной синхронизации.
rsync используется для выполнения операций резервного копирования в UNIX / Linux.
rsync — это утилита, которая используется для синхронизации файлов и директорий двух различных локаций. Считается как одна из самых эффективных. Резервные копии можно создавать как на локальном сервере так и на удаленном.

Некоторые важные возможности rsync

Скорость: В первый раз, rsync реплицирует полностью весь контент между источниками и каталогами назначения. В дальнейшем, rsync перемещает только измененные блоки или байты в назначенную локацию, причем делает это действительно быстро. Также имеется возможность ограничить скорость синхронизации.
Безопасность: rsync позволяет шифровать информацию, используя ssh протокол в процессе перемещения данных.
Меньшая пропускная способность: rsync использует блочное сжатие и распаковку данных на приемной и отправляющей стороне в указанном порядке, возможность «докачки» файлов. Таким образом пропускная способность будет использоваться rsync-ом всегда гораздо меньше по сравнению с остальными протоколами передачи данных.

Если имеется доступ по ssh к серверу, это наиболее простой способ для осуществления синхронизации.

Rsync по ssh — это частный случай использования, общий вид команды выглядит так:

rsync [ОПЦИИ] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ИСТОЧНИК... [ПОЛУЧАТЕЛЬ]
 Pull (копирование файлов с удаленной системы на локальную)
rsync [ОПЦИИ] ИСТОЧНИК 1 [ИСТОЧНИК N] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ПОЛУЧАТЕЛЬ

Push (копирование файлов с локальной машины на удаленную)
Обязательным параметром является «ИСТОЧНИК», их может быть несколько.

Рассмотрим несколько примеров:

Примеры:

Скопируется на сервер 192.168.1.1 содержимое папок /backup/file1/ /backup/file2/ в папку backup

# rsync -zavP /backup/file1/ /backup/file2/ user@192.168.1.1:/backup

В этом примере уже скопируются сами папки

# rsync -zavP /backup/file1/ /backup/file2/ user@192.168.1.1:/backup

Как ограничить скорость передачи файлов? Нужно поставить опцию --bwlimit :

# rsync -zavP --bwlimit=100 /backup/file1/ user@192.168.1.1:/backup

Как синхронизировать файлы с проверкой по контрольной сумме?

# rsync -сzavP /backup/file1/ user@192.168.1.1:/backup

Как скопировать файлы с удаленной машины на локальную?

# rsync -zavP user@192.168.1.1:/backup /backup/file1/

Как исключить файл или директорию при копировании?
Исключаем директорию temp файл test.txt и все файлы с расширением tgz расположенные в /home/data

# rsync -azVP --exclude temp/ --exclude test.txt --exclude *.tgz /home/data/ user@192.168.1.1:/backup

Как  удалить файлы на приемнике, если их не существует на источнике?

# rsync -azVP --exclude /temp/ --exclude test.txt --exclude *.tgz --force --delete /home/data/ user@192.168.1.1:/backup

Исключаем директорию /temp файл test.txt и все файлы с расширением tgz расположенные в /home/data

Как использовать нестандартный порт ssh при копировании rsync?

# rsync -zavP '-e ssh -p 12345' /var/lib/ root@192.168.1.1:/backup
# rsync --progress -avz -e ssh /home/ root@adminunix.ru:/home/

Копирует с локального хоста содержимое папки home, на хост adminunix.ru в папку home. Для аутентификации используется учетная запись root. В случае обрыва соединения во время копирования, достаточно просто повторить команду и копирование начнется с того места, когда произошел обрыв соединения.

rsync --progress --bwlimit=10 -avz -e ssh /home root@adminunix.ru:/home/

Небольшое изменение. Удаляем «/» после папки home и у нас уже копируется сама папка вместе со всем содержимым. Так же ограничиваем скорость копирования до 10кБ/с, что бы не забивать интернет канал.

Опции:
-a, --archive режим архива, при использовании заменяет несколько ключей (-rlptgoD)

— n  отладочный режим
-t, --times – обновлять время модификации файла на приёмной стороне. При отсутствии этой опции или -aстановиться неэффективной оптимизация передачи по времени изменения файлов
-r рекурсивно. (Копирует все файлы, включая вложенные каталоги)
-l при копировании сохраняет символические ссылки
-p сохраняет права на файлы
— t сохраняет время изменения файлов
— g сохраняет группу файлов
— o сохраняет владельца файлов (работает только из под root)
— D сохраняет файлы устройств и специальны файлы
— P,  отображение прогресса при копировании;
— q,  не выводит сообщения об ошибках;
— с, --checksum  проверка файлов по контрольной сумме, а по размеру и дате модификации. Дополнительная нагрузка на процессор, сильно увеличивает время синхронизации;
— size-only – использование для сверки только размер файлов
— ignore-errors,  продолжение копирования и удаления даже после появления ошибок;
— max-delete,  максимальное число удаляемых за один раз файлов и каталогов;
— files-from=FILE,  задается список файлов и директорий для копирования в файле;
— numeric-ids – не транслировать имена владельца и группы в цифровые UID и GID, оставить на удалённой стороне номера как есть
— R – использовать относительные пути при создании символических ссылок
— A, --acls – сохранение списков ACL
— H, --hard-links – сохранение жестких ссылок
— S, --sparse – оптимизировать разреженные файлы
— x, --one-file-system – не выходить за пределы текущей точки монтирования
— u, update пропускать обновление файлов, которые новее исходных
— h, human-readable вывод цифр в читаемом виде (Кб, Мб, Гб)
-v verbose  подробные вывод операций (отладочной информации)
-z сжатие файлов при копировании
— compress-level — уровень сжатия
— e ssh использовать при копировании ssh

– – progress показывает прогресс выполнения копирования
--bwlimit=KBPS ограничивает скорость передачи файлов (Kbit/s)
--del – удалить файлы в папке назначения которых нет в источнике (точная копия)
– –delete-after удалить после. Если в основном месте был удален какой-то файл, или каталог,
то после синхронизации в backup сервере, в каталоге он тоже будет удален
– – password-file Путь, где находится файл с паролем.

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

rsync -a --progress /home/ /mnt/export/

Копирует внутри одного компьютера содержимое папки home, в папку /mnt/export/. Подобное копирование применяется когда необходимо сохранить все права на перемещаемые файлы.

Данное руководство является скорее вольным переводом оригинальной статьи Samba_AD_DC_HOWTO с правками для Ubuntu 14.04 .

 

Установка всех пакетов будет проводиться из родных репозиториев ubuntu trusty. В качестве днс-сервера будет выступать bind9.

 

 

В качестве типовой конфигурации будем применять:

  • Название домена (realm) ADSAMBA.LOC
  • Короткое имя (domain) ADSAMBA
  • ip-адрес контроллера домена 192.168.1.1
  • имя сервера в домене ad

 

Установку будем проводить на системе с последними обновлениями. Хочу заметить что следует четко придерживаться последовательности вводимых команд для обеспечения успешной установки и конфигурирования. Кроме того очень рекомендуется перед установкой провести обновление системы:

sudo apt-get update && sudo apt-get upgrade

Далее, начнем установку необходимых пакетов:

sudo apt-get install samba acl krb5-user ntp cups bind9 smbclient

Конфигурирование samba4

В состав samba4 входит утилита samba-tool для администрирования домена. Более подробно о возможностях этой утилиты вы можете почитать на странице http://www.samba.org/samba/docs/man/manpages/samba-tool.8.html , мы же используем ее для поднятия домена.

 

Внимание, в процессе надо будет ввести желаемый пароль администратора. Пароль должен быть сложным, иметь цифры и заглавные буквы!

 

sudo samba-tool domain provision --use-rfc2307 --interactive

Отвечаем на вопросы, подставляя свое название домена:

  • Realm [ADSAMBA.LOC]: ADSAMBA.LOC ←- название домена
  • Domain [ADSAMBA]: ADSAMBA ←- короткое имя домена
  • Server Role (dc, member, standalone) [dc]: dc ←- роль сервера(в данном случаем dc — контроллер домена)
  • DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ ←- используемый днс-сервер
  • Administrator password:
  • Retype password:

 

Если в процессе конфигурирования возникли ошибки связанные с названием домена или паролем администратора, для того что заново запустить конфигурирование, проделайте следующее:

sudo apt-get purge samba
sudo apt-get install samba
sudo rm /etc/samba/smb.conf

 

Настройка BIND9

Настраиваем bind9:

sudo nano /etc/bind/named.conf.options

и приводим файл к следующему виду(заменяя ip-адреса на свои):

options {
        directory "/var/cache/bind";
        auth-nxdomain yes;
        forwarders { 192.168.1.2; };
        allow-transfer { none; };
        notify no;
        empty-zones-enable no;
 
        allow-query {
                192.168.1.0/24;
                127.0.0.0/8;
        };
 
        allow-recursion {
                192.168.1.0/24;
                127.0.0.0/8;
        };
 
        allow-update {
                192.168.1.0/24;
                127.0.0.0/8;
        };
};

Включаем в конфиг bind9 конфиг samba4

sudo nano /etc/bind/named.conf

и дописываем в конец файла:

include "/var/lib/samba/private/named.conf";

Меняем конфиг для использования bind 9.9

sudo nano /var/lib/samba/private/named.conf

приводим к виду:

dlz "AD DNS Zone" {
    # For BIND 9.8.0
    # database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9.so";
 
    # For BIND 9.9.0
    database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9_9.so";
};

Далее, подправим конфиг apparmor разрешая bind9 использовать необходимые файлы:

sudo nano /etc/apparmor.d/usr.sbin.named

в конец файла, до »}» вставляем:

для 32-х битной системы:

  # for samba4
  #/var/lib/samba/private/** r,
  /usr/lib/i386-linux-gnu/samba/bind9/** m,
  /usr/lib/i386-linux-gnu/samba/ldb/** m,
  /usr/lib/i386-linux-gnu/ldb/modules/ldb/** m,
  /usr/lib/i386-linux-gnu/samba/gensec/krb5.so m,
  /var/lib/samba/private/dns.keytab rwk,
  /var/lib/samba/private/named.conf r,
  /var/lib/samba/private/dns/** rwk,
  /var/lib/samba/private/krb5.conf r,
  /var/tmp/** rwk,
  /dev/urandom rwk,

для 64-х битной системы

  # for samba4
  #/var/lib/samba/private/** r,
  /usr/lib/x86_64-linux-gnu/samba/bind9/** m,
  /usr/lib/x86_64-linux-gnu/samba/ldb/** m,
  /usr/lib/x86_64-linux-gnu/ldb/modules/ldb/** m,
  /usr/lib/x86_64-linux-gnu/samba/gensec/krb5.so m,
  /var/lib/samba/private/dns.keytab rwk,
  /var/lib/samba/private/named.conf r,
  /var/lib/samba/private/dns/** rwk,
  /var/lib/samba/private/krb5.conf r,
  /var/tmp/** rwk,
  /dev/urandom rwk,

Перезапускаем службы:

sudo service apparmor restart
sudo service bind9 restart

Запускаем samba4:

sudo service samba-ad-dc start

Настало время тестов:

Меняем nameserver в resolv.conf чтоб все обращения проходили через наш настроенный bind9

sudo nano /etc/resolv.conf
 
nameserver 192.168.1.1

Проверяем

smbclient -L localhost -U%
 
Domain=[ADSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
 
        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.1.6-Ubuntu)
Domain=[ADSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
 
        Server               Comment
        ---------            -------
 
        Workgroup            Master
        ---------            -------
smbclient //localhost/netlogon -UAdministrator -c 'ls'
 
Enter Administrator's password:
Domain=[ADSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
  .                                   D        0  Tue Apr  8 11:21:49 2014
  ..                                  D        0  Tue Apr  8 11:22:03 2014
 
                46445 blocks of size 4194304. 45581 blocks available
host -t SRV _ldap._tcp.adsamba.loc.
 
_ldap._tcp.adsamba.loc has SRV record 0 100 389 ad.adsamba.loc.
host -t SRV _kerberos._udp.adsamba.loc.
 
_kerberos._udp.adsamba.loc has SRV record 0 100 88 ad.adsamba.loc.
host -t A ad.adsamba.loc.
 
ad.adsamba.loc has address 192.168.1.1

Настройка KERBEROS

Делаем симлинк конфига kerberos от samba4:

sudo ln -s /var/lib/samba/private/krb5.conf /etc/

Получаем билет:

kinit administrator@ADSAMBA.LOC

 

При получении билета видим сообщение в котором сказано что аккаунт администратора действителен в течении 41 дня.

Warning: Your password will expire in 41 days ...

Сразу изменим длительность аккаунта:

sudo samba-tool domain passwordsettings set --max-pwd-age=999

и проверяем что аккаунт будет работать еще 999 дней

sudo samba-tool domain passwordsettings show
 
...
Maximum password age (days): 999

 

Полученный билет можем посмотреть по команде:

klist

Настройка NTP

Редактируем конфиг ntp:

sudo nano /etc/ntp.conf

и в конец файла добавляем

ntpsigndsocket /var/lib/samba/ntp_signd/
restrict default mssntp

Перезапускаем сервис:

sudo service ntp restart

На этом базовая настройка samba4 в качестве контроллера домена завершена. На виндовом клиенте прописываем адрес нашего контроллера в качестве первичного DNS-сервера, пингуем PDC по имени и вводим в домен(администратор домена — administrator)

Для управления доменом воспользуемся пакетом Adminpak.msi: для Windows7, для Vista + RSAT, для Windows XP Pro + вторая часть.

Устанавливаем, в Меню выбираем пункт Выполнить, вбиваем dsa.msc, наслаждаемся 🙂

etc/group — определяет, как какой группе пользователей принадлежит пользователь

/etc/gshadow — shadow файл группы (содержит зашифрованные пароли групп)

Выполняем на старом сервере:

Создаём папку для старых файлов

# mkdir /root/move/

Ставим лимит UID фильтра:

# export UGIDLIMIT=500

Теперь копируем файлы через awk

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig
# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/move/group.mig
# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig
# cp /etc/gshadow /root/move/gshadow.mig

При обслуживании серверов важно иногда делать такие бэкапы

Затем перекидываем файлы на новый сервер через scp:

# scp -r /root/move/* user@new.linuxserver.ru:/path/to/location

Выполняем на новом сервере:

Сначала забэкапим существующих пользователей и пароли

# mkdir /root/newsusers.bak # cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak

Восстановим пароли:

# cd /path/to/location
# cat passwd.mig >> /etc/passwd
# cat group.mig >> /etc/group
# cat shadow.mig >> /etc/shadow
# /bin/cp gshadow.mig /etc/gshadow

!!!ВАЖНО!!!в консоли следует писать >> а не > , т.к. это разные операции !!!

Теперь перезагрузим систему

# reboot

Как только linux перезагрузится, ваши пользователи будут работать, как на старом linux сервере.

P.S. если вы новичок в Linux`е, то делайте это на свой страх и риск