15 сент. 2011 г.

Настройка 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, т. е. нужно запрещать заголовки как для запроса, так и для ответа.

9 сент. 2011 г.

Установка веб-сервера Apache на Linux Gentoo с использованием разных версий php на разных виртуалхостах

Я не проггер, потому не могу сказать, какие там отличия у php 5.2 и php 5.3, но они есть и иногда возникает необходимость девелопить под ту или другую версии. Сейчас я поведаю вам, как это реализовать на одной машине с Gentoo Linux.

Для начала устанавливаем апач и оба пхп. Там надо немного поколдовать с  USE - у меня уже не сохранился лог моих мучений) но у вас всё получится - я уверен: оно, как правило, пишет чего ему не хватает и остается только подключить это.

Для того чтобы подключить два mod_php к разным apache на разных IP нужно две разных конфигурации для apache (да и два разных запущенных apache). В Gentoo, к счастью, это делается очень просто. Скрипт запущенный из /etc/init.d/ будет искать себе начальную конфигурацию в /etc/conf.d/ согласно своему префиксу: скрипт /etc/init.d/apache2 получит конфигурацию из /etc/conf.d/apache2, /etc/init.d/apache2.php52 из /etc/conf.d/apache2.php52, /etc/init.d/apache2.php53 из /etc/conf.d/apache2.php53. Таким образом просто делая линки на оригинальный скрипт из /etc/init.d мы можем передавать разные параметры программе. В нашем случае это будут разные Define директивы апачу (через флаг -D). Это позволит использовать один конфигурационный файл разделив нужные нам опции директивами IfDefine.

Разделять директивами следует те ресурсы, которые не могут совместно использоваться разными процессами apache, например лог-файлы, pid-файлы. Или разную функциональность, например разные версии mod_php или разные сертификаты SSL.

Настройка всего этого хозяйства.

Для начала создаем себе 2-й IP адрес:

ifconfig eth0:0 10.10.7.249

Для того чтобы меньше менять в конфигурации примем стандартные определения - для того чтобы грузится с PHP 5.2 апачу нужно передать -D PHP52, а для PHP 5.3 соотвественно -D PHP53. Добавим к этим двум еще и определение -D TWO_PHP, что позволит нам иметь три разных конфигурации:

  • если неопределено TWO_PHP (что есть по-умолчанию), то будем иметь апач настроенный по-умолчанию (удобно для тестирования и отладки глюков других конфигураций)

  • если определено TWO_PHP & PHP52 - получаем апач с PHP 5.2

  • если определено TWO_PHP & PHP53 - получаем апач с PHP 5.3

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

ln -s apache2 /etc/init.d/apache2.php52
ln -s apache2 /etc/init.d/apache2.php53


Копируем и изменяем настройки в /etc/conf.d:

cp /etc/conf.d/apache2{,.php52}
cp /etc/conf.d/apache2{,.php53}


в apache2.php52:


APACHE2_OPTS="-D PHP52 -D TWO_PHP ..."

в apache2.php53:

APACHE2_OPTS="-D PHP53 -D TWO_PHP ..."

Также в этих двух файлах меняем директорию PIDFILE.

httpd.conf от стандартного отличается следующим:


<IfDefine !TWO_PHP>
   Listen 80

</IfDefine>
<IfDefine TWO_PHP>
   <IfDefine PHP52>
     Listen 10.10.7.7:80
   </IfDefine>
   <IfDefine PHP53>
     Listen 10.10.7.249:80
   </IfDefine>
</IfDefine>


Include /etc/apache2/vhosts.d/*.conf

Понятно, что в listen указываем свои IP, а Include нужен для поддержки виртуал хостов.

vhosts.confбудет таким:

<VirtualHost site1.example.int> 
   ServerName site1.example.int
   DocumentRoot "/var/www/php5.2/"
   <Directory "/var/www/php5.2">
     Options Indexes FollowSymLinks
     DirectoryIndex index.php
     AllowOverride All
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

<VirtualHost site2.example.int>
   ServerName site2.example.int
   DocumentRoot "/var/www/php5.3/"
   <Directory "/var/www/php5.3"> 
     Options Indexes FollowSymLinks
     AllowOverride All
     DirectoryIndex index.php
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

Также надо подправить файлик /etc/httpd/modules.d/70_mod_php5.conf:

IfDefine PHP5> # Load the module first
<IfModule !mod_php5.c>
   LoadModule php5_module modules/libphp5.so
</IfModule>

# Set it to handle the files
<IfModule mod_mime.c>
   AddHandler application/x-httpd-php .php .php5 .phtml
   AddHandler application/x-httpd-php-source .phps
</IfModule>
   DirectoryIndex index.php index.phtml
</IfDefine>

<IfDefine TWO_PHP>
   <IfDefine PHP52>
     LoadModule php5_module /usr/lib/php5.2/apache2/libphp5.so
   </IfDefine>
   <IfDefine PHP53>
     LoadModule php5_module /usr/lib/php5.3/apache2/libphp5.so
   </IfDefine>
<IfModule mod_mime.c>
   AddHandler application/x-httpd-php .php .php5 .phtml
   AddHandler application/x-httpd-php-source .phps
</IfModule>
</IfDefine>

Также, если не настроен ДНС у вас, то не забываем вписать в /etc/hosts наши домены:

10.10.7.7      site1.example.int
10.10.7.249    site2.example.int


Вроде бы всё... Запускаем:

/etc/init.d/apache2.php52 start

Проверяем 1й IP (пофиг проверяем, даже если ругается апач что не стартует - у меня ругался, но работал :) ).
 Затем удаляем PID файл апача:

rm /var/run/apache2

Магия запуска двух апачей с разными PID файлами мне пока еще не доступна, потому так по-китайски делаем :)

/etc/init.d/apache2.php53 start

Всё должно работать теперь.

Кстати, не забудьте в директории /var/www/php5.3 и /var/www/php5.2 для проверки кинуть файлик index.php с содержимым:

<? php
phpinfo();
/> 

Всем спасибо за внимание :) 

Автоматический редирект с 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

1 сент. 2011 г.

Установка 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.

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

Всем удачи! 

30 авг. 2011 г.

Устранение ошибок типа "Strict Standards:..." в связке xampp+joomla 1.7

Сегодня столкнулся с такой вот проблемкой.
Решил я, значит, поковыряться в Джумле, потренироваться создавать сайтики. Чтобы сильно не морочить себе голову, скачал набор XAMPP (инсталлер под винду), где уже есть APAche, PHP, MySQL плюс куча телз для них и всё это настроено так, чтобы друг с другом работало "из коробки". Залил в апач джумлу, зашел в джумлу в браузере, прошел е веб-инсталляцию и тут - хопа, на пол-страницы ошибки типа  "Strict Standards:..." и еще куча матюков :) Что делать?...
Вскоре решение было найдено: необходимо было зайти в директорию php, там есть файлик php.ini и в нем найти и изменить параметр error_reporting  на:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

и  display_errors  на:

display_errors = Off

Далее перезапускаем апач - и всё, всё работает без проблем и матюков :)

4 авг. 2011 г.

Как запустить Windows-программы под Linux с помощью wine

В процессе администрирования локальных сетей в организациях часто приходится сталкиваться с задачей запуска программ, написанных под MS Windows в среде Linux. Например, чтобы сэкономить на покупке винды и антивирусника к ней. В принципе, путем некоторого секса многие пряморуконаписанные программы должны запускаться и работать без глюков.

Делается это примерно так.

Вначале устанавливаем сам Wine и его конфигуратор из диспетчера пакетов вашего дистрибутива (я пользуюсь Debian 6). Система - Администрирование - Центр приложений.


А можно и по-джедайски :) через командную строку (для Убунты):

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine 


Далее запускаем Wine Configuration (Приложения - Системные).

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

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


Заходим в папку system32 и копируем туда все .dll, .ocx и прочие библиотеки из рабочей Windows XP. Можно вообще тупо всё скопировать - мало ли чего там программам понадобиться :) Копируем с заменой.


В общем-то и всё... Далее запускаем прожку, если она не запустилась, то скорее всего выдаст окошко, что не хватает какой-то там длл-ки ей - лезем в гуглъ, скачиваем оную длл-ку и пихаем в систем32 вайна.

Таким методом запускается 1С, другие программки типа клиент-сервер и не только.

З. Ы. Одной программулине понадобилось кинуть в директорию пользователя логотипы и всякие там картинки - она их не видела из своей и материлась при запуске. Так что для разных программ могут возникнуть разные вполне решаемые ситуации. Удаче вам в поиске решений!