24 нояб. 2011 г.

Настройка mod_proxy в Apache

В общем, был такой таск: есть у нас локальная сетка и маршрутизатор Peplink. В локальной сетке на многих тазиках крутятся сайты, которые должны быть доступны извне. Как это сделать? Разносить по портам - не вариант, т. к. пользователю неудобно всё-таки набирать  URL типа блаблабла:8081. Решение - использовать HTTP-прокси, а на тазик с ним открыть в маршрутизаторе порты 80, 443. Для проксирования обычно используют nginx, но апач тоже отлично справляется с этой задачей.

Так сложилось, что тазик с прокси был Убунтой (клиент категорически н ехотел работать с другими дистрибутивами Linux), а "в Убунте всё не как у людей" (с) :) потому конфигурация её несколько отличается от других дистрибутивов. Но, приняв философию Убунты, я понял, что многие решения в ней очень даже удобны, хотя некоторые мне не нравятся - например, отсутствие пользователя root. Но это уже философия, грозящая холиваром, потому перейдем к делу :)

В убунте манипулирование апачем происходит с помощью глобальных команд: включение/выключение виртуал хостов - a2ensite / a2dissite с одним аргументом - пути к конфигу, в котором прописан виртуал хост. Включение/выключение модов или расширений происводится командами a2enmod / a2dismod.

В общем, алгоритм работы такой:

1) Нужно включить необходимые модули апача. Устанавливаем:

sudo apt-get install libapache2-mod-proxy-html libapache2-mod-gnutls

Разрешаем:

sudo a2enmod proxy
sudo a2enmod ssl
sudo a2enmod cache
sudo /etc/init.d/apache2 restart

2) Делаем конфиг виртуал хоста (по 1му файлу на 1 хост!) и помещаем его в /etc/apache2/sites-available. Пример HTTPS конфига проксирования на тазик с Confluence - это такая джавовская веб-морда для программистов и не только, работающая на Apache Tomcat (с портом 8444):

22 нояб. 2011 г.

Расширение EBS Volume на Amazon AWS

Амазон славится своей масштабируемостью. И вот если нам стало мало места на нашем виртуальном жестком диске, то его очень легко увеличить.

Заходим в AWS, например: https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Volumes

Тут у нас два пути: 1 - создаем снапшот со старого диска, затем разворачиваем его на новом (но придется вручную увеличивать его объем, т. к. он будет как у старого, а остаток пространсва - неразмеченным), 2 - создать пустой диск и скопировать, например rsync'ом данные со старого диска на новый.

18 нояб. 2011 г.

Установка и использование антивируса Clamav

Бывает, что rkhunter и chkrootkit недостаточно чтобы точно определить, есть ли зловредный руткит или типа того в вашей системе. Тут нам на помощь приходит антивирус для Linux - Clamav.

Установка. В зависимости от дистрибутива используем одну из следующих команд:

yum install clamav, urpmi clamav, apt-get install clamav, pacman -S clamav

Для обновления антивирусных баз юзаем команду:

freshclam

Для сканирования каталога:

clamscan -r <каталог>

 Также можно использовать следующие опции:

- управление информационными сообщениями
  • --verbose 
  • --no-summary (не выдавать итоговый отчёт) 
  • --infected (сообщать только об обнаруженных вирусах) 
  • --quiet (об обнаруженных вирусах также не сообщается!) 
  • --bell (звенеть при обнаружении вируса; звенит даже при --quiet) 
  • --debug 
  • --log=имя-файла (файл дополняется) - очень полезная штука, иначе вы не узнаете, что у вас заражено в принципе, если файлов много 
  • --stdout 
- действия при обнаружении вирусов
  • --move=имя-каталога (перемещать инфицированные файлы в указанный каталог; д.б. права на запись) 
  • --copy=имя-каталога (копировать инфицированные файлы в указанный каталог; д.б. права на запись) 
  • --remove (удалять файлы с вирусами; не советую)

Использование hosts.deny и hosts.allow

Бывают ситуации, когда надо заблокировать доступ злоумышленникам на наш компьютер. Если разбираться с правилами iptables не нужно, то самое простое решение - добавить ip злоумышленника в hosts.deny. А hosts.allow служит как раз для противоположной цели

Синтаксис этих файлов очень прост:

<служба или ALL>: <IP-адрес или имя хоста или подсеть>

Так, например, если мы хотим блокировать все smtp-пакеты, идущие к нашему серверу от mail.test.ru, нам необходимо ввести в файл hosts.deny следующую строчку:

smtp: mail.test.ru

Для ssh:

sshd: 210.123.134.56

А если мы хотим запретить подключение по ssh всем, кроме локальной сети, то:

/etc/hosts.deny
sshd: ALL

/etc/hosts.allow
sshd: 192.168.1.

В этом примере 192.168.1. значит 192.168.1.0..255
Всем удачи :)

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