пятница, 27 мая 2011 г.

Аутентификация SSH по ключам

С чего все началось, когда на работе появилось с десяток ubuntu серверов (половина тестовых), встал вопрос о повышении безопасного доступа по ssh к серверам. Что можно сделать:

  • длина пароля (>15  символов)
  • аутентификация по ключам 
Т.к. первое было сделано изначально, то второе нужно сделать, чтобы исключить атаку перебора пароля.
Есть два способа:
  1. Генерирование ключей на ubuntu а потом импорт в Putty
  2. Генерирование ключей в Putty а потом импорт в ubuntu
Но, необходимо для начала настроить ssh
редактируем  /etc/ssh/sshd_config
[root@server-dhcp ]# nano /etc/ssh/sshd_config
PermitRootLogin yes  (Если будете заходить на сервер под учетной записью root)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no (Запрет аутентификации по паролю)
UsePAM no
Сохраняем изменения и перезапускаем службу
[root@server-dhcp]#service ssh restart
Теперь создаем папку .ssh в своем домашнем каталоге
[root@server-dhcp ]#mkdir .ssh
Нам нужен пустой файл authorized_keys в папке .ssh
Заходим в созданную папку .ssh
[root@server-dhcp .ssh]#cd .ssh
Создаем пустой файл authorized_keys
 [root@server-dhcp ]#touch authorized_keys
Выставляем права на директорию .ssh/, и все что в ней находится:
[root@server-dhcp .ssh]# chmod -R 600 *
[root@server-dhcp .ssh]# chmod 700 ~/.ssh/

Способ первый
Делаем ключи на ubuntu,  а затем импортируем в Putty
[root@server-dhcp]# ssh-keygen  -t  rsa
Далее нам предлагают ответить на несколько вопросов:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
(по умолчанию ключи создаются в папке .ssh/)(здесь жмем ENTER, если вы не хотите сохранить их в другом месте)
Enter passphrase (empty for no passphrase):       
(здесь вводим парольную фразу для ключа)
Enter same passphrase again: 
(повторяем фразу)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:6a:00:aa:78:ad:fb:70:d5:8c:d9:b8:6a:da:a4:f5 root@server-dhcp
Копируем ключ в  authorized_keys
[root@server-dhcp]#cat  /root/.ssh/id_rsa.pub  >> /home/имя пользователя/.ssh/authorized_keys
 Теперь с нашего сервера из папки /root/.ssh/ забираем с помощью WinSCP или любого другого ftp-клиента, на компьютер с которого будет производиться удаленный доступ,  закрытый ключ – id_rsa
Далее нам необходимо преобразовать наш закрытый ключ, в ключ поддерживаемый Putty. Делаем это с помощью Puttygen.
Если при импорте получили ошибку
попробуйте не простой puttygen, а developer snapshot, там добавили поддержку AES ключей. А все из-за того, что теперь ключи шифруются по стандарту AES-128 вместо 3DES
Вводим парольную фразу
Сохраняем наш новый ключ
Вот и все!

Способ второй

Генерируем ключ
Вводим ключевую фразу, и комментарии! Ни в коем случае не используйте кириллицу! 
Сохраняем секретный ключ.
Публичный ключ отображается в верхнем поле «Key» и имеет вид:
«ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-».
Копируем содержимое поля «Public key for pasting into OpenSSH authorized_keys file» в оперативную память и закрываем PuttyGen.
Теперь нужно вставить скопированное в /home/имя пользователя/.ssh/authorized_keys
ВАЖНО! ключ в файле должен быть записан в одной строке без переносов.

Перепроверили!

Теперь нужно настроить Putty на работу с ключом.
Запустите Pageant
И добавьте приватный ключ (расширение ppk)
Введи вашу ключевую фразу
Теперь ваш ключ будет в списке.

Запускаем Putty
Вводим имя пользователя
Выбираем наш приватный ключ (расширение ppk)

Поздравляем!




среда, 25 мая 2011 г.

RAID на ubuntu

Так получилось, что пока стоит вопрос об использовании сетевого хранилища. C невысокой стоимостью, и надежностью.
Поискав в интернете поискав, решил предложить (своему шефу на работе) использовать NAS, благо на рынке их много (QNAP, Synelogy, Dlink, Buffalo и т.д.) но стоимость высока, да и не все емкости поддерживаются, ограничение на количество винтов ...
Попробовать использовать RAID контроллеры (аппаратный RAID), SATA в основном поддерживают RAID0,1,5. Хотя сейчас уже более новые RAID есть ...
Соответственно было предложено использовать программный RAID, на базе Ubuntu. Сказано - сделано.
Что использовалось:
virtualbox
ubuntu server 11.04
HDD - 10 Gb - 5 штук
HDD - 20 Gb - 1 штука
RAID 6
Т.к. для RAID6 минимум нужно 4 диска, было решено использовать 5 дисков.
Для начала ставим madm

sudo aptitude install mdadm

затем нам необходимо знать, какие диски будут добавляться в RAID

sudo fdisk -l



Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdd: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sdf: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdf doesn't contain a valid partition table

Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdg doesn't contain a valid partition table

Disk /dev/sde: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sde doesn't contain a valid partition table



mdadm --create --verbose /dev/md0 --level=6 --raid-devices=5  /dev/sdb /dev/sdd  /dev/sdf  /dev/sdg /dev/sde


Убедительная просьба, запомнить порядок перечисления жестких дисков! Это будет необходимо в дальнейшем (добавление/извлечение дисков из массива)
Смотрим готовность массива

cat /proc/mdstat



Вот как выглядит готовый массив

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sde[4] sdg[3] sdf[2] sdd[1] sdb[0]
      31452672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/5] [UUUUU]




Дальше нужно отформатировать, выбирайте файловую систему.


Для ubuntu сервера лично выбрал XFS файловую систему, каждый выбирает сам. В помощь, можете почитать тут.


Если будет использоваться как файл сервер для windows систем, тогда не обойтись без NTFS.


Создание файловой системы завершено. Теперь нужно создать файл конфигурации нашего RAID массива. Система сама не запоминает какие RAID массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле конфигурации mdadm.conf. Параметры, которые следует добавить в этот файл, можно получить при помощи команды mdadm --detail --scan --verbose.

 mdadm --detail --scan --verbose
ARRAY /dev/md0 level=raid6 num-devices=5 metadata=1.2 name=ubuntu:0 UUID=c9d0d672:352fac5c:3776628f:357edd17
   devices=/dev/sdb,/dev/sdd,/dev/sdf,/dev/sdg,/dev/sde

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

mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Далее редактируем файл /etc/fstab.
nano /etc/fstab


/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
/dev/sdb /media/repo auto users,noauto,rw 0 0
/dev/md0        /media/raid        ext3    defaults        0       0
Вот и все ...
Программный RAID проще в переносе на другую железку, в случае с аппаратным, проблема в RAID контроллере. Искать такую же плату ... что не очень удачно спустя 3-4 года ...



Начнемс

Итак ...
Решил завести еще один блог, дабы фиксировать, что-то новое, чего познал, достиг настраивая, используя операционную систему linux.
Хочу заметить, что все о чем буду писать, касается только ubuntu server. В процессе буду указывать версию, на которой буду делать.
В первую очередь, буду описывать то, что пришлось делать ... А потом, если будет желание и возможность, что-нибудь необычное ...

Поехали ...