воскресенье, 24 августа 2014 г.

Разрешаем доступ к WEB-серверу Apache только с определенных сетей

1) Открываем конфигурационный файл Apache

2) Правим файл
Меняем блок
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

на

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/8
</Directory>


Затем меняем блок
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#    AllowOverride None
    AllowOverride All
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>

на

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 10.200.0.0/16
</Directory>

3) Рестуртуем сервис Apache


четверг, 7 августа 2014 г.

Установка и настройка SIP коммуникатора Jitsi

Скачать программу Jitsi можно по адресу https://jitsi.org/Main/Download 

Установка программы. 

Запускаем инсталлятор.

Дожидаемся стартового окна:

Нажимаем «Next».
Ставим галочку «I accept…» и снова нажимаем «Next.
Корректируем при необходимости путь установки и нажимаем "Next".
Убираем галочку «XMPP» и снова нажимаем «Next».
Для продолжения нажимаем «Install».

После завершения установки наблюдаем окно:
Нажимаем «Finish». При этом запуститься программа Jitsi.

Настройка программы.

После первого запуска программа имеет два окна:

Первое окошко можно закрывать. 
Настраивать будем через меню: «Инструменты»  «Опции». 
После выбора этого пункта меню появляется окно со списком аккаунтов:


Нажимаем кнопку «Добавить»
В открывшемся окне выбираем Сеть: SIP и заполняем первичные данные авторизации (идентификатор SIP и Пароль):
Нажимаем кнопку «Расширенные»
Вписываем отображаемое имя
Выбираем вкладку «Соединение».
Вписываем IP регистратора и порт.
Указываем Имя для авторизации.
Убираем галочку «Автоматическая настройка прокси-сервера» и заполняем данные прокси-сервера – IP адрес и Порт.
Снимаем галку «Индикация наличия сообщения (MWI)
Нажимаем кнопку «Следующий»
Нажимаем кнопку «Войти». Произойдет подключение к серверу SIP.
Видим статус SIP аккаунта – Online.
Можно закрыть это окно.
В окне контактов статус изменился автоматически.


Совершение вызовов

При входящем вызове теперь мы увидим окно:
Нажимаем на кнопку поднятия трубку (зеленая трубка) и разговариваем.

При исходящем вызове номер телефона можно вводить сразу в окне поиска или воспользоваться виртуальной клавиатурой.


суббота, 26 июля 2014 г.



Авторизация пользователя через FREERADIUS с использованием внешних скриптов.

Возникла задача производить авторизацию пользователя на BRAS в зависимости от имени пользователя, пароля и IP адреса BRAS (NAS-IP-Address). Задача может быть решена с использованием внешних скриптов, подключаемых в FREERADIUS с помощью команды Exec-Program-Wait и принимающих решение о авторизации.

1. Устанавливаем пакет FREERADIUS
#yum install freeradius freeradius-utils –y

2. Запускаем демон
#service radiusd start

3. Добавляем в автозагрузку демон radiusd
#chkconfig --level 35 radiusd on

4. Для проверки работы FREERADIUS в файле /etc/raddb/users создаем пользователя:
#nano /etc/raddb/users
Добавляем в конец файла:
testuser Cleartext-Password := "12345"
    Service-Type = Framed-User,
    Framed-Protocol = PPP,
    Framed-IP-Address = 172.16.3.33,
    Framed-IP-Netmask = 255.255.255.0

Здесь создаем пользователя testuser c паролем 12345, которому будет разрешена авторизация и будет выдан IP адрес 172.16.3.33
Затем перезапускаем службу freeradius (radiusd)
#service radiusd restart
Теперь проверяем, что авторизация работает. Используем отладочную команду:
[root@roslin ~]# radtest testuser 12345 localhost 1812 testing123
Sending Access-Request of id 37 to 127.0.0.1 port 1812
User-Name = "testuser"
User-Password = "12345"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=37, length=44
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 172.16.3.33
Framed-IP-Netmask = 255.255.255.0

Здесь:
testuser - логин
12345 - пароль
testing123 – секрет (по умолчанию в FREERADIUS он именно такой)
Проверка закончена. FREERADIUS в принципе работает.

ПРИМЕЧАНИЕ:
Иногда авторизация не проходит и выдается ошибка:
[root@test ~]# radtest testuser 12345 localhost 1812 testing123
radclient:: Failed to find IP address for test
radclient: Nothing to send.
Это значит, что имя тестового сервера test, на котором запускается команда не удалось определить. Исправляется это добавлением имени test в файл hosts
[root@test ~]# echo "127.0.0.1 test" >> /etc/hosts
[root@test ~]# radtest testuser 12345 localhost 1812 testing123
Sending Access-Request of id 195 to 127.0.0.1 port 1812
        User-Name = "testuser"
        User-Password = "12345"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=195, length=44
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Framed-IP-Address = 172.16.3.33
        Framed-IP-Netmask = 255.255.255.0
[root@test ~]#

5. Создаем скрипт, который будет принимать решение о авторизации на основе входных данных:
- Логина
- Пароля
-IP адреса BRAS (NAS-IP-Address)
# touch script1.sh
# chmod +x script1.sh

Пример простого скрипта, который разрешает авторизацию, если IP адрес NAS порта равен 127.0.0.1, логин начинается на “s”, а пароль начинается на «pass».
#!/bin/bash
if [ ${1:0:1} == "s" ]
then
    if [ $3 == "127.0.0.1" ]
    then
        if [ ${2:0:4} == "pass" ]
        then
           echo "Framed-IP-Address = 172.16.3.33, Reply-Message = 'OK'"
           exit 0
        else
           echo "Reply-Message = 'NO'"
           exit 1
        fi
    else
       echo "Reply-Message = 'NO'"
       exit 1
    fi
else
    echo "Reply-Message = 'NO'"
    exit 1
fi


В случае положительного решения скрипт должен выдавать код завершения программы – «0», в случае отрицательного решения – код «1».
Проверка работы скрипта:
[root@roslin raddb]# ./script1.sh samara password 127.0.0.1
Framed-IP-Address = 172.16.3.33, Reply-Message = 'OK'
[root@roslin raddb]# ./script1.sh penza password 127.0.0.1
Reply-Message = 'NO'
[root@roslin raddb]# ./script1.sh samara paswd 127.0.0.1
Reply-Message = 'NO'
[root@roslin raddb]# ./script1.sh samara password 127.0.0.4
Reply-Message = 'NO'

Естественно в скрипт можно накрутить любую логику работы ( в том числе со сложными запросами в базу данных MySQL и пр).

6. Используем команду Exec-Program-Wait и вносим изменения в файл /etc/raddb/users
#nano /etc/raddb/users
Добавляем следующий блок:
DEFAULT Auth-Type := Accept
Service-Type = Framed-User,
Framed-Protocol = PPP,
Exec-Program-Wait = "/etc/raddb/script1.sh %u %{User-Password} %{NAS-IP-Address}"

Здесь командой Exec-Program-Wait скрипту /etc/raddb/script1.sh передаются переменные – логин (%u), пароль (%{User-Password}) и IP адрес NAS (%{NAS-IP-Address}). Если скрипт выдает 0 – авторизация разрешается, если 1 – запрещается.

7. Проверяем авторизацию:
Успешная авторизация:
[root@roslin raddb]# radtest samara password localhost 1812 testing123
Sending Access-Request of id 87 to 127.0.0.1 port 1812
User-Name = "samara"
User-Password = "password"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=87, length=42
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 172.16.3.33
Reply-Message = "OK"

Неуспешная авторизация при неверном пароле:
[root@roslin raddb]# radtest samara sdf87dfg localhost 1812 testing123
Sending Access-Request of id 212 to 127.0.0.1 port 1812
User-Name = "samara"
User-Password = "sdf87dfg"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=212, length=24
Reply-Message = "NO"

Неуспешная авторизация при неверном пароле:
[root@roslin raddb]# radtest samara pas2sword localhost 1812 testing123
Sending Access-Request of id 218 to 127.0.0.1 port 1812
User-Name = "samara"
User-Password = "pas2sword"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=218, length=24
Reply-Message = "NO"

Неуспешная авторизация при неверном IP адресе NAS:
[root@roslin raddb]# radtest samara password localhost 1812 testing123 0 127.0.0.2
Sending Access-Request of id 113 to 127.0.0.1 port 1812
User-Name = "samara"
User-Password = "password"
NAS-IP-Address = 127.0.0.2
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=113, length=24
Reply-Message = "NO"


8. Результат достигнут, FREERADIUS проверяет возможность авторизации через внешний скрипт. Далее необходимо настраивать работу системы с реальным оборудованием.