14 нояб. 2011 г.

SCP - утилита копирования файлов по LAN/WAN

Часто возникает задача скопировать файл (например, конфиг) с одной Linux машины на другую.  Если надо скопировать 1-2 файла, то поднимать FTP сервер нет смысла - проще воспользоваться командой SCP, которая копирует файлы по протоколу SSH.

Пример копирования из машины-источника (назовем ее так) на нашу:

scp -P 230 root@192.168.1.5:/etc/ssl/server.key /etc/ssl/

10 нояб. 2011 г.

Установка SVN + mod-dav в Linux

Недавно был такой таск - установить на клиентский тазик связку svn + mod_dav для апача с соединением по HTTPS. ОС там была Ubuntu, а в ней настройка апача не совсем как везде :) Так что смотрите.

Пошагово делаем так:

1. Устанавливаем subversion:

sudo apt-get install subversion libapache2-svn apache2

2. Включаем ssl модуль для апача. Если нам ssl не нужен, то пропускаем пункты 2-4.

sudo a2enmod ssl

9 нояб. 2011 г.

Настройка шлюзов при VPN соединении - если при подключении к VPN пропадает интернет

Сегодня столкнулся с такой вот не совсем очевидной и в то же время простой проблемой: Управлял я Windows 2008 сервером по RDP. И мне понадобилось соединиться по VPN с другой сетью (PPTP). Создал я VPN подключение, включил его... И доступ по RDP пропал :) Фишка оказалась в том, что при включении RDP винда по умолчанию роутит все пакеты на шлюз VPN'a, а не на наш старый. Я уже думал открывать консоль и писать всякие там роуты, но нашел способ попроще.

Заходим в Панель управления, Цент управления сетями и общим доступом, Свойства адаптеров и вызываем параметры нашего VPN-соединения. Далее клацаем на вкладке Networking (как по-русски - не помню :) ), и вызываем свойства протокола TCP/IP.


7 нояб. 2011 г.

Подключение репозитория Epel к CentOS 6.x

Подключение репозитория Epel 6.7 к CentOS 6.x. Идем на сайт Эпеля, и скачиваем пакет или скармливаем установщику по URL

http://ftp.tlk-l.net/pub/mirrors/fedora-epel/6/i386/repoview/epel-release.html

rpm -Uvh http://ftp.tlk-l.net/pub/mirrors/fedora-epel/6/i386/epel-release-6-7.noarch.rpm

14 окт. 2011 г.

Ошибка запуска Rkhunter - ругается на BINDIR ~/bin


Происходит это потому что не в конфиге ошибка, а в переменной окружения папка /root/bin указана как ~/bin. Вот:

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/share/java/apache-ant/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:~/bin

Для системы это одно и то же, а вот ркхантер так не понимает... меняем PATH на нормальный командой:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/share/java/apache-ant/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:/root/bin

Только свои ж значения подставьте после "="!!

6 окт. 2011 г.

Настройка mass virtual hosting для Apache (Linux)


В общем, идея масс виртуал хостинга состоит в том, что у нас есть папочка на сервере, мы в ней создаем подпапку с именем в виде названия нашего сайта - и всё, виртуальный хост готов, не надо править никакие конфиги и т. д. В моем случае папка для виртуал хостов была /srv/http/vhosts, затем название сайта, например site1.example.int, а вся начинка в подпапке сайта public. Т. е. заглавная страница сайта: /srv/http/vhosts/site1.example.int/public/index.php

Для реализации этого добавляем в конец конфига апача (httpd.conf) следующее:

RewriteEngine On
## Create a handle to convert upper or mixed-case to lower-case
RewriteMap lowercase int:tolower


##-----------------------------------
## where hostname has www prefix
##-----------------------------------
## Firstly create custom variable that contains the host without the www prefix
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule .? - [E=noWWWHost:%1]

30 сент. 2011 г.

Авторизация пользователя по ssh с использованием rsa-ключа

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

1. Создание rsa-ключа.

Вначале на той машине, с которой хотите ходить везде (т. е. например, ваша рабочая) создаем пару ключей:
ssh-keygen -t dsa
 
Отвечаем на вопросики, даем или не даем (не рекомендуется, иначе зачем мы вс это делаем?) пароль на ключик.

Получаем пару файлов - публичный и приватный ключ. Публичный ключ, который мы будем копировать на сервера, на которые хотим заходить по ключу называется:
 
id_dsa.pub

2. User management

Далее опциональные шаги. Заходим на целевой сервер и:
1. Создаем юзера командой useradd name_of_user
2. Создаем пароль нашему юзеру командой passwd name_of_user
3. Добавляем пользователя в файл /etc/sudoers (если sudo не установлен и файлика нет - устанавливаем apt-get install sudo или типа того) после похожей записи рута и изменяем или комментируем строчку требования пароля:
 
Defaults !requiretty

Затем после строчки %sudo ALL=(ALL) ALL пишем:
name_of_user ALL=(ALL) NOPASSWD:ALL
 
Теперь команда sudo su - не будет запрашивать пароль.

3. Копирование ключа на удалённый сервер

Есть два пути:
 
а) копируем ключ автоматически. Для этого на сервере, где есть публичный ключ, выполняем:
ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-host
 
где параметром -i передается путь в публичному ключу и кладется в папку .ssh указанного пользователя со всеми правами автоматически.
 
б) копируем вручную. Для этого заходим в хомяк пользователя на удаленном сервере, создаем там папку .ssh, а в ней файл authorized_keys, в который копируем наши публичные ключи - смотрите, чтобы каждый ключик был в одну строчку!
Изменяем владельца наших файлов/директорий - ссх очень чувствителен к этому.

chown -R name_of_user:name_of_user .ssh
chmod 700 .ssh
chmod 400 .ssh/authorized_keys
 
Всё, теперь мы можем зайти удаленно на наш сервер по ssh не указывая пароль нашего пользователя и командой sudo su - сразу превратиться в рута без вопросов :)

4. Способы авторизации на удалённом сервере по ключу

Один из способов был указан ранее.
Далее просто командой c указанием пути к ключу:
 
ssh -i /path/to/key/key.pem user@server
 
И ещё один вариант - добавить конфиг файл. Осбенно хорошо когда серверов несколько.
Добавляем в папку вашего пользователя на клиенте:
 
nano /home/your_user/.ssh/config
 
следующее:
 
Host server1 server1.company.com
Hostname 192.168.1.2
User username
IdentityFile /path/to/key/key1.pem

Host server2 server2.company.com
Hostname server2.com
User username
IdentityFile /path/to/key/key2.pem

И потом можно сразу заходить командами вида:

ssh server1

ssh server2

Update 1.

 
Столкнулся с ситуацией, когда всё проделанное выше не работало для удаленного сервера Oracle Linux 6.8 (аналог RHEL/CentOS 6.8) пока я не выполнил команды:
 
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
restorecon -R -v /root/.ssh
 
Несмотря на то, что Selinux был выключен.

Update 2.

 
Описанные в начале команды для новых систем Debian/Ubuntu не сработали. Потому создаём ключи другого формата:
 
Создаём ключи на сервере1:
 
ssh-keygen -t rsa -b 4096 -C "domain.com"
 
Копируем ключи на сервер2:
 

ssh-copy-id user@server2

Дролжны получить такой результат:

"

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@server2's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'user@server2.

"

Проверяем:

ssh user@server2

Ссылки:

  1. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
  2. https://linuxhint.com/generate-ssh-key-ubuntu/