четверг, 27 ноября 2008 г.

Postfix: продалжаем бороться со спамом

Столкнулся с наплывом спама в котором поменяется домен отправителя на мой.

Задача: отправлять сообщения от имени домена company.ru могут только пользователи, которые находятся в доверенной сети, либо прошли авторизацию.
ОS: FC5, Postfix-2.4.5-2.fc6

Решение:
в файле main.cf

smtpd_restriction_classes = OnlyUsers
OnlyUsers = permit_mynetworks,
permit_sasl_authenticated,
reject

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/list/access_sender

в файле access_sender
company.ru OnlyUsers

не забыть сделать: postmap /etc/postfix/list/access_sender

четверг, 13 ноября 2008 г.

Окошки в Microsoft Office

На нескольких компьютерах появилась следующая проблема: окошки офиса на панель задач отображаются в виде одной панельки, переключение возможно только через закладку "Окна".
Решение: изменить параметр HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Options на ShowWindowsInTaskbar (DWORD) : 1

среда, 12 ноября 2008 г.

отключение проверки GPG-KEY

Понадобилось установить с помощью yum пакет из неофициального репрезеатория. При попытке установки выдавалось следующее предупреждение warning: rpmts_HdrFromFdno: V3 DSA signature: NOKEY, key ID 6b85f346 public key not available.

Проверяьт или не проверять подпись настраивается в конфигурационных файлах расположенных /etc/yum.repos.d/
в нем необходимо изменить параметр gpgcheck=0
соответственно проверка отключена, если 1 то включена.

среда, 29 октября 2008 г.

Включаем форвардинг (FC8)

Необходимо в настройках указать, что включать форвадинг пакетов операционной системе надо при загрузке.
1. Открываете файл /etc/sysctl.conf
2. Устанавливаете параметр net.ipv4.ip_forward=1
3. Сохраняете файл.

понедельник, 27 октября 2008 г.

SSH: Аутентификация пользователя по его публичному ключу.

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

Для генерации пары ключей используем программу ssh-keygen.
ssh-keygen -t rsa -b 2048 -f $HOME/.ssh/id_rsa
-t {RSA DSA} - указания типа ключа;
-f - указание файла для хранения ключа;
-b - указание длины ключа в битах.

В результате работы программа запросит ввод пароля для шифрования секретного ключа, чтобы исключить использование его при попадании к посторонним лицам, не знающим пароля (пароль рекомендовано выбирать не короче 10-и символов).

После работы ssh-keygen создается пара ключей: один секретный (зашифрованный введенным паролем), а другой публичный с расширением .pub (id_rsa.pub). Публичный ключ необходимо скопировать в домашнюю директорию сервера $HOME/.ssh/authorized_keys. После этого сервер будет знать ключ данного пользователя и сможет аутентифицировать вас без пароля. Файл authorized_keys может содержать несколько публичных ключей, допустимых для данного пользователя: просто поместите их в данный файл по порядку. После этих операций вы сможете входить, имея секретный ключ, на сервер, где размещен ваш публичный ключ, причем под тем пользователем, в чьем домашнем каталоге данный ключ находится. Пароля удаленного пользователя не требуется, необходимо только знать пароль расшифровки секретного ключа. Для переноса своего публичного ключа на сервер надо использовать только безопасные источники, иначе ваш ключ могут подменить. Для переноса публичного ключа клиента служит программа ssh-copy-id. Для начала необходимо сделать следующее:

# ssh-copy-id -i public_key_file user@machine

После соединения с севером machine и передачей имени пользователя user (необходимо указывать, если удаленное имя отличается от локального) происходит парольная аутентификация заданного пользователя(или текущего) на удаленной машине, затем происходит копирование ключа public_key_file (или $HOME/.ssh/identity.pub, если имя файла не указано) на сервер в $HOME/.ssh/authorized_keys. После этого можно входить на сервер, не используя пароль пользователя.

вторник, 7 октября 2008 г.

Синтаксис комманды gpupdate

Синтаксис
gpupdate [/target:{computer|user}] [/force] [/wait:значение] [/logoff] [/boot]
Параметры

/target:{computer|user} Обрататывает только параметры компьютера или параметры текущего пользователя. По умолчанию обрабатываются и параметры компьютера, и параметы пользователя.
/force Игнориует все оптимизации в процессе обработки и восстанавливает все предыдущие настройки.
/wait:значение Время ожидания окончания обработки политики в секундах. По умолчанию это время составляет 600 секунд. 0 означает «без ожидания»; -1 означает «время ожидания не ограничено».
/logoff Задает выход из системы по завершении обновления. Это необходимо для тех клиентских расширений оснастки «Групповая политика», которые обрабатываются не в фоновом режиме, а при входе пользователя в систему, например, при установке программного обеспечения и перенаправлении папок. Этот параметр не работает, если вызываемые расширения, необходимые для выхода пользователя из системы, отсутствуют.
/boot Перезапускает компьютер после завершения обновления. Это необходимо для тех клиентских расширений оснастки «Групповая политика», которые обрабатываются не в фоновом режиме, а при входе пользователя в систему, например, при установке программного обеспечения и перенаправлении папок. Этот параметр не работает, если вызываемые расширения, необходимые для перезапуска компьютера, отсутствуют.
/? Вывод справки в командной строке.

среда, 1 октября 2008 г.

Error 1718

Ставил тут на досуге VMware-server-2.0.0-116503.exe на Windows Server 2003 Standart R2. И столкнулся с такой ошибкой "Error 1718. File was rejected by digital signature policy". Проблема решилась следующим способом http://support.microsoft.com/kb/925336.
Может кому полезно будет :)

вторник, 23 сентября 2008 г.

Полезные вещи

w : Полезная комбинация команд who+uptime, показывает залогиненных юзеров, и нагрузку на процессор. Нагрузка (load average) считается, что меньше 3 это хорошо, больше - плохо.

Диск
df -h : Показывает, какие файловые системы смонтированы, их размер и сколько есть свободного места.
du -sh /directory: Показывает размер директории.
hdparm -t /dev/hda1 : скорость чтения/записи на диск.
smartctl -A /dev/hda1 : Показывает информацию о диске. Из важных параметров нужно отметить Power_On_Hours - показывает сколько часов проработал диск. В случае, если Current_Pending_Sector или Offline_Uncorrectable не равны нулю - готовьтесь к скорой смерти сервера.
pwd : показывает текущую директорию.

Память
free -m - показывает свободную и занятую память.
top - интеркативно показывает процессы, память, использование процессора, что-то вроде таск-менеджера для виндовс. Для того чтобы поменять порядок процессов в списке, нажимать Shift+O.
Замечание, актуальное для Fedora Core > 5: на одном сервере у меня по умолчанию оказался запущен tmpfs, виртуальный диск, который сожрал целый гигабайт памяти. Увидеть это можно с помощью df -h, а чтобы умерить его аппетиты, нужно сделать так: в файле /etc/fstab найти tmpfs и в 4й колонке после defaults написать “,size=100M” (например). После этого запустить mount -o remount /dev/shm.

Сеть
iptables -L : Показывает настройки юниксового “файрволла”. Чтобы забанить адрес, нужно написать что-то вроде: iptables -I INPUT -s 38.100.225.0/24 -j DROP (забанится вся подсеть).
netstat -a : Показывает список всех открытых соединений.
netstat -ant|grep ESTABLISHED : Показывает список всех установленных соединений.
ifconfig : показывает сетевые карты и их настройки.

четверг, 18 сентября 2008 г.

Автоматизируем резервное копирование

Для этого выбрал софтинку BackupPC (http://backuppc.sourceforge.net/). Устанавливал я ее на FedoraCore9.

Для ее работы потребовался следующий софт: Perl, Apache, Samba. Также нужны дополнительные модули к Compress::Zlib, Archive::Zip и File::RsyncP. Их наличие можно проверить командой perldoc [имя модуля].

Установка банальна до безобразия... yum install backuppc -y и все что вам еще не хватает из этого.

среда, 17 сентября 2008 г.

Samba с авторизацией в AD (upd:24.09.2008)

Было использовано на Fedora 7-9 c AD поднятом на Windows Server 2003.

Проверяем и если необходимо устанавливаем

# yum install -y samba samba-common krb5-workstation

Правим файл /etc/hosts:

# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.254.254 ads.domain.local ads

Теперь настроим Керберос для добавления linux-сервера в windows-домен

# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]javascript:void(0)
default_realm = DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
DOMAIN.LOCAL = {
kdc = ads.domain.local:88
admin_server = ads.domain.local:749
default_domain = domain.local
}

[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Необходимо провести синхронизацию времени с контролером домена
net time set ads
и желательно сие действо прописать в cron

# kinit administrator@DOMAIN.LOCAL
Password for administrator@DOMAIN.LOCAL:


Hастройка samba

[root@vm01 ~]# /etc/samba/smb.conf
[global]
workgroup = DOMAIN
netbios name = srvfile
server string = Samba Server
security = ads
encrypt passwords = yes
realm = DOMAIN.LOCAL
password server = ads.domain.local
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 1800
winbind use default domain = yes
winbind refresh tickets = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%U
printing =
load printers = no


Входим в домен

# net ads join -U administrator
administrator's password:
Using short domain name -- DOMAIN
Joined 'srvfile' to realm 'DOMAIN.LOCAL'


Добавить описание pam_winbind.so модуля для аутентификации в системе. Модуль pam_mkhomedir.so для автоматического создания домашней директории при первом присоединении пользователя.

vim /etc/pam.d/system-auth
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
account required pam_permit.so

password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_winbind.so use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022


Настраиваем nsswitch, для того чтобы он мог использовать данные (о пользователях и групппах) AD с помощью winbind-сервиса и стартуем сервис

vim /etc/nsswitch.conf
passwd: files winbind
shadow: files
group: files winbind

/etc/init.d/winbind start
Starting Winbind services: [ OK ]
chkconfig winbind on

суббота, 13 сентября 2008 г.

4 метода отключения SELinux (update 10.02.2012)

SELinux (англ. Security-Enhanced Linux — Linux с улучшенной безопасностью) — реализация системы принудительного контроля доступа, которая может работать параллельно с классической дискреционной системой контроля доступа. Входит в стандартное ядро Linux. Также для функционирования SELinux требуются модифицированные версии некоторых утилит (ps, ls, и тд), которые обеспечивают поддержку новых функций ядра, и поддержка со стороны файловой системы.

Метод 1: Временное отключение SELinux

Для временного отключения SELinux вы можете модифицировать файл /selinux/enforce. Обратите внимание, это временное отключение, и после перезагрузки системы SELinux будет работать снова.

# cat /selinux/enforce
1
# echo 0 > /selinux/enforce
# cat /selinux/enforce
0
  Также можно использовать команду setenforce, как показано в примере ниже. Возможные параметры команды setenforce таковы: Enforcing , Permissive, 1 (включить) or 0 (отключить).
# setenforce 0

Метод 2: Постоянное отключение SELinux

Для постоянного отключения SELinux, измените файл /etc/selinux/config и установите SELINUX=disabled как показано ниже. После этого перезагрузите сервер.

# cat /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
SETLOCALDEFS=0

Метод 3: Отключение SELinux в загрузчике Grub

Третий способ использует возможности загрузчика системы GRUB для отключения SELinux. Добавьте в конец строки selinux=0

# cat /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Enterprise Linux Enterprise Linux Server (2.6.18-92.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ rhgb quiet selinux=0
initrd /boot/initrd-2.6.18-92.el5PAE.img
title Enterprise Linux Enterprise Linux Server (2.6.18-92.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet selinux=0
initrd /boot/initrd-2.6.18-92.el5.img

Метод 4: Отключаем SELinux только для определенных сервисов – HTTP/Apache

Если вам необходимо не целиком отключить SELinux, а только для определенных служб, у вас есть такая возможность. Для примера отключим SELinux для HTTP/Apache, изменив значение переменной httpd_disable_trans в файле /etc/selinux/targeted/booleans.
 
# grep httpd /etc/selinux/targeted/booleans
httpd_builtin_scripting=1
httpd_disable_trans=1
httpd_enable_cgi=1
httpd_enable_homedirs=1
httpd_ssi_exec=1
httpd_tty_comm=0
httpd_unified=1
  Установите переменную также используя команду setsebool. После этого перезапустите httpd для вступления изменений в силу.

# setsebool httpd_disable_trans 1
# service httpd restart



И вуа-ля

суббота, 23 августа 2008 г.

Переименование домена WS2003

Переименование домена

Основная информация тутова: http://technet.microsoft.com/ru-ru/windowsserver/bb405948.aspx
там же есть тулза rendom и мануал на 82 страницы на англицком. Много, откровенно говоря,лишнего.

Задача.
Возникла необходимость провести переименование домена в одном из филиалов компании, типо для стандартизации. Домен был поднят на Windows 2003 Server R2.

Что почитать и чего использовать:
http://technet.microsoft.com/ru-ru/windowsserver/bb405948.aspx сцылку на програмку и ман. Ман большой, но почитать для общего развития рекомендуется.
Ну и как всегда о бэкапе не забудьте.

Что делалось...
Домен находился в режиме "Windows 2000 native". Переименование возможно ТОЛЬКО если домен и лес находятся в режиме "Windows Server 2003". Следовательно меняем режим, для этого нужно на контроллере домена в оснастке "Active Directory Domains and Trusts" в меню "Action" выбрать пункт "Raise Forest Functional Level" и там выбрать "Windows Server 2003". Иначе команда:

rendom /info

выдавалась ошибка:
"The Behavior version of the Forest is 0 it must be 2" с кодом 8245.

Это означает, что Лес работает в режиме "Windows 2000"

далее... ставим програмку и запускаем

rendom.exe /list

при этом создается файл domainlist.xml. Желательно сделать его бэкап.

< ? xml version ="1.0" ? >
< Forest >
< Domain >
< !-- PartitionType:Application -- >
< Guid >587e7f17-2061-429a-98ed-2ff18cd7b00e< / Guid >
< DNSname >DomainDnsZones.oldcompany.ru< / DNSname >
< NetBiosName >< / NetBiosName >
< DcName > < / DcName >
< / Domain >
< Domain >
< !-- PartitionType:Application -- >
< Guid >018c889c-4928-4fb5-b715-f386a3138702< / Guid >
< DNSname >ForestDnsZones.oldcompany.ru< / DNSname >
< NetBiosName >< / NetBiosName >
< DcName >< / DcName >
< / Domain >
< Domain >
< !-- ForestRoot -- >
< Guid >39410441-b0ca-4b14-987c-06bc7afee66e< / Guid >
< DNSname >oldcompany.ru< / DNSname >
< NetBiosName >TEST< / NetBiosName >
< DcName >< / DcName >
< / Domain >
< / Forest >

Затем правим это xml-файл, например oldcompany.ru менялось на newcompany.ru .а NetBIOS имя с oldcompany на newcompany и сохраняем изменения в нем.
ВНИМАНИЕ! править желательно в Notepad !!

получается вот такой файлик:

< ?xml version ="1.0"? >
< Forest >
< Domain >
< !-- PartitionType:Application -- >
< Guid >587e7f17-2061-429a-98ed-2ff18cd7b00e< / Guid >
< DNSname >DomainDnsZones.newcompany.ru< / DNSname >
< NetBiosName >< / NetBiosName >
< DcName >< / DcName >
< / Domain >
< Domain >
< !-- PartitionType:Application -- >
< Guid >018c889c-4928-4fb5-b715-f386a3138702< / Guid >
< DNSname >ForestDnsZones.newcompany.ru< / DNSname >
< NetBiosName >< / NetBiosName >
< DcName >< / DcName >
< / Domain >
< Domain >
< !-- ForestRoot -- >
< Guid >39410441-b0ca-4b14-987c-06bc7afee66e< / Guid >
< DNSname >newcompany.ru< / DNSname >
< NetBiosName >newcompany< / NetBiosName >
< DcName >< / DcName >
< / Domain >
< / Forest >


- проверка:
rendom /showforest

- подготавливаем инструкции. они описаны в файле dclist.xml, который будет использоваться для отслеживания всех изменений.
это делается запуском
rendom /upload

у DC должно быть < State >Initial< / State >


- затем делается
rendom /prepare
у DC были в Prepared state

- выполняем!!!!!
rendom /execute
В dclist.xml все должно встать в Done

- после
rendom /end

- ну и теперь осталось исправить Group Policy прогой gpfixup.exe :
gpfixup /olddns:oldcompany.ru /newdns:newcompany.ru /oldnb:oldcompany /newnb:newcompany /dc:srv.newcompany.ru 2>&1 >gpfixup.log


Перезагрузив сервер и клиентов получилось почти счастье :)
Некоторых клиентов пришлось вручную переподключить, но при этом профили не изменились и их перенастраивать не надо было