Вот думала что писала уже про это, а нет, заметки не оказалось. Между тем, для непосвященных няшек это может стать небольшой проблемой, так как стандартные мануалы не подразумевают наличия SELinux и других ништяков.

 

Итак, для того чтобы изменить стандартный порт доступа надо сделать 3 вещи:

1. открываем /etc/ssh/sshd_config и раскомментируем строку

Port 22

меняем 22 на выбранный вами порт. Если вы хотите чтобы ssh слушал только на IPv4, то раскомментируйте строку

ListenAddress 0.0.0.0

остальные настройки по вкусу (:

 

2. добавляем правило для iptables (вы можете изменить стандартное правило для 22-го порта)

iptables-save > /path/to/rules.list

добавляем строку

-A INPUT -p tcp -m state —state NEW -m tcp —dport 1234 -j ACCEPT

и сохранив файлик обновляем правила

iptables-restore < /path/to/rules.list

НО, данный вариант будет работать только до первой перезагрузки! Если вы хотите добавить постоянное правило, изменения следует вносить в /etc/sysconfig/iptables

 

И вот казалось бы всё, но в этом случае перезапустив sshd вы рискуете потерять доступ к серверу, так как включенный по-умолчанию SELinux будет считать что негоже использовать иной порт. Так что переходим к пункту…

3. для того чтобы selinux не возникал, необходимо добавить ваш порт как порт для ssh

semanage port -a -t ssh_port_t -p tcp 1234

проверяем

semanage -l | grep ssh

 

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

yum whatprovides /usr/sbin/semanage

и получив ответ, устанавливаем нужный пакет. в моём случае это

yum install policycoreutils-python

 

Вот теперь можно смело (перепроверив не забыли ли вы чего!) перезапускать sshd и ломиться на новый порт

service sshd restart

Парочка полезных команд:

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

df -h

 

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

chkconfig —level 345 %scriptname% on

удаление из автозагрузки

chkconfig %scriptname% off

Wiki по run level (http://en.wikipedia.org/wiki/Runlevel)

0 — Halt (выключение)

1 — Single User mode

2 — Multi User mode (without networking)

3 — Multi-user mode (with networking, console logins only)

4 — User-definable

5 — Multi-user mode (with console, with display manager X11)

6 — reboot (перезагрузка)

Список сервисов

chkconfig —list

Изначально планировалась заметка о том, как поставить и настроить «лёгкий» и удобный почтовый сервер, но увы, задача оказалась сильнее меня. Поэтому публикую некоторые грабли с которыми успела познакомиться в процессе и решить.

Траблшутинг

Если в логах появляется следующая XYетень, то 90% что виноват в этом SELinux.

Mar  2 02:08:14 nyaa dovecot: POP3(xxx@yyy.zz): mkdir(/var/vmail/yyy.zz/xxx/cur) failed: Permission denied
Mar  2 02:08:14 nyaa dovecot: POP3(xxx@yyy.zz): Couldn’t open INBOX: Internal error occurred. Refer to server log for more information.

Берём резиновый дрын и со всей душой анально караем его за сотни минут потраченных на решение данной проблемы.

ВАРН! — Это решение работает частично, так как далее возникает затык с пермишенами при создании файлов писем и там полная жопа. Лечится по слухам добавлением специального типа пермишенов для довкота либо отключением SELinux’а, но на практике не проверяла.

# semanage fcontext -a -t dovecot_spool_t ‘/var/vmail(/.*)?’

# restorecon -Rv /var/vmail

Если у вас появляется ошибка:

postfix/cleanup[4486]: warning: connect to mysql server localhost: Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

Можете смело пиздить тех умников, которые пишут localhost в манах. Разницу постфикс имеет, мой юный падаван!

Правим все hosts=localhost на hosts=127.0.0.1 опля!

Установка ImageMagick на центось.

Для начала, проверьте чтобы эти пакеты были установлены:

#yum install gcc php-devel php-pear

Если всё в порядке, двигаемся далее и ставим самого магика:

#yum install ImageMagick ImageMagick-devel

Тут есть одно но: если у вас система 64бита, то вы можете ставить x86_64 пакеты, минуя i386 и сэкономив тем самым кол-во зависимостей.

Следующим шагом станет компиляция библиотеки iMagick для PHP.

#pecl install imagick

На вопрос: «Please provide the prefix of Imagemagick installation» отвечаем: «all»

Если всё прошло удачно, то в конце лога появится:

Build process completed successfully
Installing ‘/var/tmp/pear-build-root/install-imagick-3.0.1//usr/lib/php/modules/imagick.so’
Installing ‘/var/tmp/pear-build-root/install-imagick-3.0.1//usr/include/php/ext/imagick/php_imagick_defs.h’
Installing ‘/var/tmp/pear-build-root/install-imagick-3.0.1//usr/include/php/ext/imagick/php_imagick.h’
Installing ‘/var/tmp/pear-build-root/install-imagick-3.0.1//usr/include/php/ext/imagick/php_imagick_shared.h’
install ok: channel://pecl.php.net/imagick-3.0.1
You should add «extension=imagick.so» to php.ini

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

#echo «extension=imagick.so» > /etc/php.d/imagick.ini

Рестартуем httpd и проверяем загрузился ли модуль:

#service httpd restart

#php -m | grep imagick

Ня! Можно кушать сгущенку и ресайзить каваек :З

По мотивам: http://tuxologia.blogspot.com/2011/01/imagemagick-centos.html

Читать далее и никакой магии!

Столкнулась с проблемой отказа некоторых серверов принимать мыло с серевера. Как вариант решила попробовать добавить SPF.

Итак, основная идея в том, что для всех доменов находящихся на сервере (и не только) указывается один MX сервер, который и занимается обработкой сообщений. Указывать надо именно тот домен, который прописан в PTR записи.

Если допустим в PTR записи указан домен main.com, то для обслуживаемых доменов днс записи будут следующие:

domain.ru. MX 10 mail.main.com
domain.ru. TXT «v=spf1 a:mail.main.com mx ptr -all»

Полезные ссылочки:
http://old.openspf.org/dns.html (примеры SPF записей)

Небольшая заметка о ротации логов для себя.

/etc/logrotate.d/ — настройки для сервисов использующих ротацию логов. Особенно полезно если скажем логи апача хранятся в отдельной директории(ях) но надо чтобы они парсились вместе с основными.

# useradd [options] login_name
создаем нового пользователя
# usermod [options] login_name
редактируем параметры пользователя
# userdel [options] login_name
удаляет пользователя. Используйте -r опцию чтобы автоматически удалять домашний каталог и почтовый пул.
# passwd login_name
задаем пароль для пользователя
# groupadd [options] group_name
создаем группу
# groupmod [options] group_name
редактируем параметры группы
# groupdel group_name
удаляем группу

Первая заповедь гласит: всегда делай бекапы.

Сегодня мы и займемся соблюдением этой заповеди при помощи святой мощи rsync и бесовского паладина cwrsync.

Для начала настроим хост. Создаем файл /etc/rsyncd.conf и прописываем туда следующее:

uid=root
read only=true
use chroot=false
max connections=2
log file=/var/log/rsyncd.log
hosts allow=192.168.0.12

[backup]
comment=»Backup of host»
path=/path/to/data
list=true
auth users=%username%
secrets file=/etc/rsyncd.secrets
strict modes=true

Я не буду вдаваться в описание каждой настройки, всё это можно почитать тут. Если кратко, то мы запускаем rsync от рута (да-да, надо в чрут, но сейчас не про это) и разрешаем доступ с доверенного хоста. Заодно запрещая ему что-либо записывать. Ниже идет секция задания. В конфиге их может быть несколько. Там мы указываем что бекапить, и какому юзеру можно это делать.

Следующим шагом будет как раз добавление юзеров для работы с rsync. Тут всё предельно просто. Создаем файл /etc/rsyncd.secrets и добавляем туда пользователей и пароли для них вот в таком формате:

username:password

Настройки есть, пользователи тоже. Далее обезопасимся от еретиков и откроем врата. =)

# chown root:root /etc/rsyncd.*

# chmod 600 /etc/rsyncd.*

# rsync —daemon

Далее добавим правила для iptables:

-A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp —dport 873 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 873 -j DROP

С хостом мы закончили. Но если что-то не получится, то можно попробовать отключить SELinux

# getsebool -P rsync_disable_trans 1

На бекапной машине (в моём случае это форточки) мы ставим cwrsync открываем консоль и пишем следующее:

c:\path to\cwrsync\bin\rsync.exe xxx.xxx.xxx.xxx::

Если всё отлично, то результат будет в виде списка заданий. Вызвать задание можно следующим образом:

rsync —recursive —update —delete -v user@xxx.xxx.xxx.xxx::backup /cygdrive/X/path to/

В данном случае мы делаем рекурсивное сохранение с удалением несуществующих файлов на бекапной машине.

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

# yum install rkhunter

# rkhunter —update

# rkhunter —check

А для того чтобы зря не ходить по ссх, можно настроить отсылку репортов на нужный мэйл(ы).

Файл /etc/rkhunter.conf директива MAIL-ON-WARINIG

Оригинал:

http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users

Ставим пакеты:

# yum install vsftpd db4-utils

Далее заливаем на сервер срипты и выполняем. Стоит заметить что если у вас x64 система, то надо будет подправить файл /etc/pam.d/ftp и заменить /lib на /lib64 в двух пуях.

Так же, у меня выкинуло ошибку при создании пользователя. Лечится она предельно просто:

# cat vaftpd_virtualuser_config.tpl /etc/vsftpd/users/%username%

и в последнем исправляем USERNAME на имя пользователя в пути.

После этого, можно смело коннектится.

Скачать скрипты: centos_vsftpd_scripts

Upd:

Как добавить НЕ виртуального пользователя? Будем исходить из того что пользователь уже есть в системе, так что сразу перейдем к делу. Во-первых, уберем его из файла /etc/vsftpd/denied_users. Во-вторых, пропишем пользователя и пароль для логина в /etc/vsftpd/accounts.tmp (логин и пароль с новой строки!). В директории /var/vsftpd/users/ создадим файл как имя юзера и впишем туда следующее:

dirlist_enable=YES

dirmessage_enable=YES

download_enable=YES

write_enable=YES

local_root=/path/to/user/dir/

После этого остается только обновить базу пользователей и перезагрузить сервис.

# db_load -T -t hash -f /etc/vsftpd/accounts.tmp /etc/vsftpd/accounts.db