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

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

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

Нажимаем Advanced (Дополнительно)

И снимаем галочку Use default gateway on remote network.

Всё! Теперь пакеты сами будут идти куда надо 🙂 Для локальной сети, к которой ведет VPN будут идти через VPN-соединение, а все остальные – по вашему стандартному соединению. Винда сама там раздупляет что куда кидать 🙂

http://geckich.blogspot.com/

Ошибка запуска 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

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

http://geckich.blogspot.com/

Настройка 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]



## Map the virtualhost to the documentroot
RewriteCond %{REQUEST_URI} !^/~
RewriteCond %{HTTP_HOST} ^www.
RewriteRule ^/(.*)$ /home/vhosts/${lowercase:%{ENV:noWWWHost}}/public_html/$1
##———————————–
## where hostname *does not* have www prefix
##———————————–
## Map the virtualhost to the documentroot
RewriteCond %{REQUEST_URI} !^/~
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^/(.*)$ /srv/http/vhosts/${lowercase:%{HTTP_HOST}}/public/$1

Подредактировав регэкспы можно указать свой путь к папке с вирт. хостами.
http://geckich.blogspot.com/

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

Есть такая фишка в 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/

Автоматизация управления Snapshot'ами в VMWare vServer, vCenter

Если у вас много виртуальных машин на vServer’e, то создание новых снапшотов и удаление устаревших может стать очень рутинным занятием. Есть тулза, которая ставится вместе с сервером – VMware vCenter Orchestrator. Но её очень напряжно настраивать – для неё нужно настроить MSSQL Server, LDAP/AD и еще много чего) я запнулся на LDAP, т. к. структуры АД не было в той сети, в которой был сервер, а ADAM как-то странно себя вел на том сервере. И я нашел альтернативу 🙂  – примочку к Power Shell. Работало у меня всё под Windows Server 2003, а там нет по умолчанию павер шелла – выкачиваем его отсюда: http://support.microsoft.com/kb/968930/en-us

Затем качаем саму примочку – Power CLI: http://communities.vmware.com/community/vmtn/server/vsphere/automationtools/powercli


По умолчанию в Windows 2003 не разрешено выполнять скрипты PowerShell в соответствии с политиками выполнения сценариев (Execution Policy). Чтобы разрешить это, запустим консоль PowerShell и напечатаем:

Set-ExecutionPolicy RemoteSigned

Теперь можем пользоваться новой примочкой, запустив ее из меню Пуск/Программы.

Ознакомиться с тем, какие команды она воспринимает, можно из гугла, нас сейчас интересует написание скриптов, которые будут автоматом создавать и удалять снапшоты. Для этого создаем 2 текстовых файла, редактируем и переименовываем потом.

1й – addsnapshots.ps1 :

Connect-VIServer ИмяСервера
get-vm | new-snapshot -name “AutoSnapshot”



2й – removesnapshots.ps1 :

Connect-VIServer ИмяСервера
get-vm | get-snapshot | 
Where { $_.Created -lt (Get-Date).AddDays(7)| remove-snapshot -confirm:$false

Вместо ИмяСервера ставим ИП или имя хоста сервера с нашим vServer, ясное дело. Также можно указать логин и пароль, типа как тут:

Connect-VIServer -Server 192.168.1.3 -Protocol https -User administrator -Password xxx

У меня же всё работало на локальной машине, потому прокатило просто localhost

Далее создаем 2 батника, которые будут вызывать павер шелл, в него пихать powerCLI, а в powerCLI уже наш скрипт – о как 🙂

1й – addsnapshots.bat :

%SystemRoot%system32windowspowershellv1.0powershell.exe -psc “C:Program FilesVMwareInfrastructurevSphere PowerCLIvim.psc1” -command “c:scriptsaddsnapshots.ps1”


2й – removesnapshots.bat :

%SystemRoot%system32windowspowershellv1.0powershell.exe -psc “C:Program FilesVMwareInfrastructurevSphere PowerCLIvim.psc1” -command “c:scriptsremovesnapshots.ps1”

Только проверьте пути! У вас они могут отличаться – к павер шеллу, к примочке и к скрипту.

Теперь добавляем батники в планировщик (например, добавление снапшотов – раз в день, а удаление –
раз в неделю).

Всё 🙂

http://geckich.blogspot.com/

Ruby Gem за прокси

Недавно столкнулся с проблемой при установке gem’a Rails:

gem install rails

ERROR: Could not find a valid gem ‘rails’ (>= 0) in any repository

путем гугла понял проблему:

gem install rails -V

Error fetching remote data: Errno::ECONNREFUSED: Connection refused – connect(2) (http://rubygems.org/quick/Marshal.4.8/rails-3.1.0.gemspec.rz)

Falling back to local-only install

ERROR: Could not find a valid gem ‘rails’ (>= 0) in any repository

ERROR: Possible alternatives: rails

Руби не прохавал настройки прокси 🙂 пробиться через проксю помогла такая опция:

gem install rails -p http://proxy.com:3128

Вместо моего адреса пишите адрес вашего прокси, конечно.

Всем пока 🙂

http://geckich.blogspot.com/

Настройка Squid как High Anonymity(Elite) proxy

Немного теории. Есть такая штука – html headers ( http://en.wikipedia.org/wiki/HTTP_header ). Передавая которые, наш прокси сообщает очень много данных о себе целевым хостам.

Существует 2 типа анонимных прокси:

  • Anonymity – скрывает только IP клиента;
  • High Anonymity(Elite) proxy – скрывает вообще сам факт того, что клиент находится за прокси.

Настраивается High Anonymity(Elite) proxy очень легко: по статье на офиц вики  http://www.squid-cache.org/Doc/config/header_access/

Т. е. Оставляем только нужные нам html-хедеры, а остальные запрещаем (вариант 2):

header_access Allow allow all
header_access Authorization allow all
header_access WWW-Authenticate allow all
header_access Proxy-Authorization allow all
header_access Proxy-Authenticate allow all
header_access Cache-Control allow all
header_access Content-Encoding allow all
header_access Content-Length allow all
header_access Content-Type allow all
header_access Date allow all
header_access Expires allow all
header_access Host allow all
header_access If-Modified-Since allow all
header_access Last-Modified allow all
header_access Location allow all
header_access Pragma allow all
header_access Accept allow all
header_access Accept-Charset allow all
header_access Accept-Encoding allow all
header_access Accept-Language allow all
header_access Content-Language allow all
header_access Mime-Version allow all
header_access Retry-After allow all
header_access Title allow all
header_access Connection allow all
header_access Proxy-Connection allow all
header_access All deny all

Еще можно разрешить хедер Set-Cookie ибо без кукисов многие сайты не будут корректно проводить авторизацию пользователя и т. п.

После этого перезапускаем сквид, не забыв настроить права доступа и т. д. – то, что Вам еще нужно от прокси.

Протестить наш проксик можно с помощью сайта http://proxydetect.com/ (не забыв в настройках браузера вбить наш прокси).

После написание вышеописанного 🙂 обнаружил более простой способ:

header_access Via deny all
header_access Proxy deny all

header_access X-Forwarded-For deny all

И всё 🙂 не отсылая эти заголовки, наш прокси становится хай анонимным.

З. Ы. Конфиг валидный для сквиды 2.5 или 2.7. Для 3.х сквиды директива header_access заменяется на request_header_access и reply_header_access, т. е. нужно запрещать заголовки как для запроса, так и для ответа.

http://geckich.blogspot.com/

Как сделать, чтобы файл не имея расширения .php обрабатываелся как PHP-скрипт в Apache

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

<FilesMatch “script”>
SetHandler application/x-httpd-php
</FilesMatch>

http://geckich.blogspot.com/

Автоматический редирект с http версии на ssl (https) версию сайта в Apache

Чтобы решить этот маленький квест нужно в конфиге апача (httpd.conf) прописать следующее:

RewriteEngine On 
RewriteCond %{SERVER_PORT} !443 
RewriteRule (.*) https://localhost/ [R]

Вместо  https://localhost/ вписываем название своего домена.

З. Ы. Чтобы заработало, надо или собрать апач с поддержкой mod-rewrite или чтобы этот модуль был включен:

LoadModule rewrite_module modules/mod_rewrite.so

http://geckich.blogspot.com/

Установка Gentoo Linux на VMWare

Сам процесс установки мало чем отличается от того, что описан на http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1 За исключением одних небольших, но очень важных граблей… О них я тут и поведаю.

Грабли сии заключаются в том, чтобы включить поддержку жеских дисков VMWare в ядро на этапе его компиляции. Т. е. надо перед компиляцией ядра выполнив команды

# cd /usr/src/linux
# make menuconfig

В менюшке найти ([/]) и включить в ядро (“*”, а не “М”!!! – в этом-то как раз и весь прикол) драйвера, cодержащие фразы VMWare, Buslogic, Sym53.

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

Всем удачи! 

http://geckich.blogspot.com/