28 марта 2014 г.

Настройка Kerberos авторизации для weblogic сервера

Настройка Kerberos авторизации для weblogic сервера

Это краткая инструкция, как можно настроить автоматическую Kerberos авторизацию для приложения, загруженного в сервер приложений weblogic.

В качестве клиента будет выступать терминальный сервер с операционной системой windows.

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

Настройка промежуточного сервера. 

В качестве службы для авторизации будем использовать Apache

- Устанавливаем веб-сервер и модуль для кербероса:
yum install httpd mod_auth_kerb

- Переходим в каталог настроек:
cd /etc/httpd/conf/

- Добавляем в конец файла httpd.conf следующие строки:
LoadModule auth_kerb_module modules/mod_auth_kerb.so

- Так же в этом файле выставляем FQDN имя сервера:
ServerName fr01.gibdd.mos.ru

- Настройка балансировки и проксирования:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/"
env=BALANCER_ROUTE_CHANGED
<Proxy balancer://wt>
  BalancerMember http://x.y.z.b:1521 route=gibdd01 retry=120
  BalancerMember http://x.y.z.b:1521 route=gibdd02 retry=120
  ProxySet stickysession=ROUTEID lbmethod=byrequests
</Proxy>

ProxyPass /web-app balancer://wt/web-app
ProxyPassReverse /web-app balancer://wt/web-app

-Добавляем URL, закрытый авторизацией по керберосу:
<Location /web-app>
  AuthType Kerberos
  AuthName "Kerberos Login"
  KrbMethodNegotiate On
  KrbMethodK5Passwd off
  KrbAuthRealms mos.ru
  Krb5KeyTab /etc/httpd/conf/fr01.keytab
  KrbServiceName HTTP/fr01.gibdd.mos.ru@GIBDD.MOS.RU
  KrbSaveCredentials on
  require valid-user
</Location>

- Имя сервера (fr01.gibdd.mos.ru) должно разрешаться в ДНС в прямой и в обратной зоне:
# host fr01.gibdd.mos.ru
fr01.gibdd.mos.ru has address 10.0.10.10
#host 10.0.10.10
10.0.10.10.in-addr.arpa domain name pointer fr01.gibdd.mos.ru.

- Кейтаб указанный в конфигурации (/etc/httpd/conf/fr01.keytab), должен быть создан
администраторами домена, в котором происходит авторизация.

- Обращение в закрытую керберосом зону, должно быть по имени, на которое
  выдан кейтаб, и которое настроено на сервере и в днс. В данном примере это fr01.gibdd.mos.ru

Настройка клиентов под Windows 

- Устанавливаем программу "MIT Kerberos"

- Получаем тикет с авторизацией по паролю: логин@GIBDD.MOS.RU

- Настраиваем Firefox, указываем в адресной строке "about:config", затем меняем параметры:
network.auth.use-sspi = false

network.automatic-ntlm-auth.trusted-uris;mosgorzdrav.local = GIBDD.MOS.RU

network.negotiate-auth.delegation-uris = GIBDD.MOS.RU

network.negotiate-auth.gsslib = c:\Program Files\MIT\Kerberos\bin\gssapi32.dll

network.negotiate-auth.trusted-uris = GIBDD.MOS.RU

network.negotiate-auth.using-native-gsslib = false

- Перезагружаем firefox

- Заходим по ссылке: http://fr01.gibdd.mos.ru/web-app

5 октября 2013 г.

Oracle Net

Недавно узнал что Oracle листенер на одиночном сервере базы данных (не RAC) по умолчанию слушает все сетевые интерфейсы. Для этого достаточно в конфигурационном файле listener.ora указать имя сервера, например

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = setebos)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

Имя хоста:

oracle> hostname
setebos

oracle> cat /etc/hosts
10.127.120.129  setebos.dit.ru setebos

Проверяем:
oracle> ifconfig
bond0.1742          inet addr:10.127.120.129
bond0.2630          inet addr:172.16.8.1  Bcast:172.16.8.63  Mask:255.255.255.192
usb0               inet addr:169.254.95.120  Bcast:169.254.95.255  Mask:255.255.255.0

В файле /etc/hosts указан адрес 10.127.120.129, но слушаются все IP адреса:

setebos:/oracle> nmap 10.127.120.129
1521/tcp open  oracle

setebos:/oracle> nmap 172.16.8.1
1521/tcp open  oracle

setebos:/oracle> nmap 169.254.95.120
1521/tcp open  oracle

На сервере RAC слушается только указанный сетевой интерфейс.

12 сентября 2013 г.

Oracle Golden Gate на Oracle Rac

При настройке настройке процесса Extract на кластерной базе столкнулся с ошибками:

1)
The number of Oracle redo threads (4) is not the same as the number of
checkpoint threads (1). EXTRACT groups on RAC systems should be created
with the THREADS parameter

Нужно добавить опцию threads
- Delete the extract
delete extract testext

- Recreate the extract
add extract testext, tranlog, threads 2, begin now
add <exttrail/rmttrail> <path>, extract testext

- Start the extract
start extract testext

2) На сервере с 2-мя узлами при старте выдается ошибка:
WARNING OGG-01423  No valid default archive log destination directory found for thread 4.
WARNING OGG-01423  No valid default archive log destination directory found for thread 3.

Нужно удалить лишние потоки в active redo log

alter database disable thread 3;
alter database disable thread 4;

ALTER DATABASE DROP LOGFILE GROUP 7;
ALTER DATABASE DROP LOGFILE GROUP 8;
ALTER DATABASE DROP LOGFILE GROUP 5;
ALTER DATABASE DROP LOGFILE GROUP 6;

3) Создание пользователя в ASM инстансе:
CREATE USER asm_user IDENTIFIED by XXX;
GRANT SYSASM TO asm_user;  
GRANT sysdba TO asm_user;

Проверка:
sqlplus asm_user@ORCL_ASM as sysasm

Добавляем в файл параметров
TranLogOptions ASMUser asm_user@ORCL_ASM, asmpassword XXX

13 августа 2013 г.

Переподключение дисков в ASM через multipath

Проблема: диски в ASM примонтированы напрямую, не используя multipath.

Нужно отмонтировать диски а ASM с одного пути, например /dev/sdc, и примонтировать к другому, например к /dev/dm-1

Для примера:

1)
ls -al /dev/oracleasm/disks/

brw-rw---- 1 oracle oinstall 8, 16 Jul  2 15:12 DISK1
brw-rw---- 1 oracle oinstall 8, 32 Jul  2 15:12 DISK2

Видно что диски примонтированы напрямую, не через  multipath (цифра 8)

2)
Должно быть:
ls -al /dev/oracleasm/disks/

brw-rw---- 1 oracle oinstall 253, 8 May 20 14:40 DISK1
brw-rw---- 1 oracle oinstall 253, 9 May 20 14:40 DISK2

Вместо 8 стоит 253, значит  диски примонтированы правильно (через multipath )

3)
Для определения, к какому multipath относится DISK1:
multipath -ll | less

далее в этом списке ищем устройство с этими major minor номерами.
То есть 8:16. Для поиска можно просто в строке приглашения less набрать /8:16
Имеем например: 0:0:0:5  sdb  8:16   [active][ready], а принадлежит он mpath1.
Путь к нему будет: /dev/mapper/mpath1

4)
Определяем пути, к которым подключены диски:
/etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4

ls -al /dev/oracleasm/disks/
total 0
drwxr-xr-x 1 root   root         0 Jun 25 18:47 .
drwxr-xr-x 4 root   root         0 Jun 25 18:47 ..
brw-rw---- 1 oracle oinstall 8, 48 Jul  3 16:58 DISK1
brw-rw---- 1 oracle oinstall 8, 64 Jul  3 16:58 DISK2
brw-rw---- 1 oracle oinstall 8, 80 Jul  3 16:58 DISK3
brw-rw---- 1 oracle oinstall 8, 96 Jul  3 16:58 DISK4

/etc/init.d/oracleasm querydisk -v -d DISK1
Disk "DISK1" is a valid ASM disk on device /dev/sdd[8,48]

Так смотрим по всем дискам, в итоге составляем таблицу соответствий:
------------------------------------------------------------------
| DISK1    sdd  mpath6        dm-8
| DISK2    sde  mpath3        dm-3
| DISK3    sdf   mpath4        dm-4  
| DISK4    sdg  mpath5        dm-5
------------------------------------------------------------------

5) В ASM
SQL>  select g.name "Group", d.name "Disk", d.mode_status "Status" from v$asm_disk d, v$asm_diskgroup g where d.group_number = g.group_number;

Group                          Disk                           Status
------------------------------ ------------------------------ -------
DATA                           DATA_0002                      ONLINE
FLASH                          FLASH_0000                     ONLINE
DATA                           DATA_0001                      ONLINE
DATA                           DATA_0000                      ONLINE


SQL> show parameter asm_diskstring

asm_diskstring                       string      /dev/oracleasm/disks

SQL> select GROUP_NUMBER, DISK_NUMBER, MODE_STATUS, STATE, NAME, PATH from v$asm_disk;
           1           2 ONLINE  NORMAL   DATA_0002  /dev/oracleasm/disks/DISK4

           2           0 ONLINE  NORMAL   FLASH_0000 /dev/oracleasm/disks/DISK3

           1           1 ONLINE  NORMAL   DATA_0001   /dev/oracleasm/disks/DISK2

           1           0 ONLINE  NORMAL   DATA_0000  /dev/oracleasm/disks/DISK1


6)  Удаление:

ALTER DISKGROUP FLASH DROP DISK FLASH_0000;

7) Отмонтируем:
ASMCMD> umount FLASH

DROP DISKGROUP FLASH INCLUDING CONTENTS;

8) Удаляем:
/etc/init.d/oracleasm deletedisk DISK3
Deleting Oracle ASM disk "VOL1" [ OK ]

9) Если не удаляется, то чистим заголовок диска:
-- Сохраняем заголовок диска в файл
dd if=/dev/sdf of=file_sdf bs=1024 count=100
dd if=/dev/sdf of=file_sdf3 bs=1024 count=100

-- Обнуление диска для возможности его удалить
dd if=/dev/zero of=/dev/sdf bs=1024 count=100

-- Удаляем с /etc/init.d/oracleasm deletedisk, если и сейчас не получится, то перезагружаем хост
-- Восстанавливаем заголовок диска:
dd if=file_sdf of=/dev/sdf  bs=1024 count=100

10) Создаем
/etc/init.d/oracleasm createdisk DISK3 /dev/dm-4

11) Добавляем параметр EXCLUDE в /etc/sysconfig/oracleasm
ORACLEASM_SCANEXCLUDE="sd"

12)
/etc/init.d/oracleasm scandisks


23 апреля 2013 г.

Oracle Web Services Manager Gateway Is Slow


На московском узле портала gosuslugi.ru стал зависать сервер с Oracle Web Services Manager

Нашел подходящую статью с описанием:
Oracle Web Services Manager Gateway Is Slow And Causes Locks [ID 967020.1]


Для исправления нужно создать 2 индекса и очистить пул:

CREATE INDEX orawsm.IDX_MPSTORE_TEST_1 ON orawsm.MEASUREMENT_PERSISTED_STORE (STORETIME) LOGGING TABLESPACE USERS NOPARALLEL;
       
CREATE INDEX orawsm.IDX_pipeline_TEST_1 ON orawsm.PIPELINES (policy_id, pipeline_status,pipeline_major_ver, pipeline_minor_ver ) LOGGING TABLESPACE USERS NOPARALLEL;

alter system flush shared_pool;

5 февраля 2013 г.

Ошибка TNS-12555: TNS:permission denied



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

Starting /opt/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/asur-nsi-db-02/listener/alert/log.xml
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12555: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00525: Insufficient privilege for operation
   Linux Error: 1: Operation not permitted

Listener failed to start. See the error message(s) above...

В интернете нашел, что  причина в каталоге /var/tmp/.oracle

Для проверки:

ls -la /var/tmp/.oracle
total 44
drwxrwxrwt 2 root   oracle 4096 Feb  5 15:44 .
drwxrwxrwt 3 root   root   4096 Mar 22  2012 ..
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#12914.1
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#12914.2
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 s#13198.1
srwxrwxrwx 1 daemon root      0 May 14  2012 s#16174.1
srwxrwxrwx 1 daemon root      0 May 14  2012 s#16174.2
srwxrwxrwx 1 daemon root      0 Apr  2  2012 s#18732.1
srwxrwxrwx 1 daemon root      0 Apr  2  2012 s#18732.2
srwxrwxrwx 1 daemon root      0 Mar 22  2012 s#4741.1
srwxrwxrwx 1 daemon root      0 Apr 11  2012 s#7507.2
srwxrwxrwx 1 daemon root      0 Oct  6 12:45 sEXTPROC1
srwxrwxrwx 1 oracle oracle    0 Mar 22  2012 sEXTPROC1521

Как видно, несколько файлов имеют владельцем другую группу.
Для исправления:
chown -R oracle:oracle /var/tmp/.oracle


1 февраля 2013 г.

Opening of wallet based credential store failed. Reason java.io.IOException

Скопировал сервер с Oracle Aplication Server 10 на другой хост. 

1) При старте получил ошибку: 
Opening of wallet based credential store failed. Reason java.io.IOException

Для исправления нужно сделать:
chmod -R 777 /tmp

2) Нужно исправить файл hosts