Chặn kêt nối cửa user vào database từ sqlplus. toad...

Thảo luận các chủ đề liên quan đến Quản trị Bảo mật trên các sản phẩm Oracle và những sản phẩm liên quan.
Post Sun Oct 25, 2009 7:43 pm
User avatar

BIGMAN

OCP
OCP
Posts: 283
Joined: Thu Aug 20, 2009 8:11 pm

Chặn kêt nối cửa user vào database từ sqlplus. toad...

hi all, Em có viết một ứng dụng (app). bây giờ em chỉ muốn end user kết nối vào database từ ứng dụng của em, các thao tác thực hiện đều qua app, không được kết nối vào database thông qua sqlplus, sql deveploper, toad.... hoặc chỉ cho 1 số user nhất định được connect từ sqlplus, sql deveploper, toad.... để phòng mây bác táy máy connect vào del, insert, update... dữ liệu
vậy em phải làm sao ???
ps: em dùng database 10g r2 , ứng dụng viết oracle form , report 10g
Spam


Post Sun Oct 25, 2009 8:17 pm
User avatar

nhsang

Administrator
Administrator
Posts: 2227
Joined: Mon Jul 16, 2007 1:38 pm
Location: Sài Gòn

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Để làm cái này bạn cần sử dụng "Application Roles", tham khảo bài viết http://www.oravn.com/b-o-m-t-d-li-u-f25/v-n-b-o-m-t-trong-phat-tri-n-ng-d-ng-t1330.html


Post Sun Oct 25, 2009 8:37 pm
User avatar

BIGMAN

OCP
OCP
Posts: 283
Joined: Thu Aug 20, 2009 8:11 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Để làm cái này bạn cần sử dụng "Application Roles"

hi, bác Sang, em hiểu rồi! cám ơn bác.
Tuy nhiên, ứng dụng em viết thì user lưu trữ trong database ( có thêm table user nữa để lưu trên app ) những user này là user của oracle luôn . mặt định khi grant connect , resource cho user thì rõ ràng user đó có quyền login vào bằng sqlplus, toad. .. :H
ps: ứng dụng em chạy delicated server
Spam


Post Sun Oct 25, 2009 9:02 pm
User avatar

vnora

Moderator
Moderator
Posts: 1311
Joined: Fri Mar 07, 2008 4:02 pm
Location: Hà nội

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Trường hợp này đơn giản nhất là dùng PUP (Product User Profile)
http://download.oracle.com/docs/cd/B193 ... m#i1058732
PAV.


Post Sun Oct 25, 2009 9:57 pm
User avatar

BIGMAN

OCP
OCP
Posts: 283
Joined: Thu Aug 20, 2009 8:11 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Trường hợp này đơn giản nhất là dùng PUP (Product User Profile)

Thanks, các bác!
hi. oravn đúng là (Product User Profile) có thể đáp ứng được yêu cầu của em, tuy nhiên chỉ đúng trong các trường hợp connect bằng sqlplus. Em thử test trên Toad nó vẫn chạy ầm ầm. Mà thường thì người ta connect bằng mấy cái tool GUI Như Toad hoặc sql deveploper ít khi dùng sqlplus.
Em định dùng trigger AFTER LOGON, sẽ check field module trong view v$session. sau đó disconnect user đi, ko biết như vậy có khả thi không , hoặc có cách nào khác không ??? :shock:
Spam


Post Mon Oct 26, 2009 12:14 am
User avatar

vnora

Moderator
Moderator
Posts: 1311
Joined: Fri Mar 07, 2008 4:02 pm
Location: Hà nội

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Nếu thế thì dùng trigger AFFTER LOGON cũng OK đó.
Và có thể làm kiểu chặn hết trừ cái ứng dụng của bạn (VD: ứng dụng của bạn nó tên là MyApp.exe)
Code: Select all
create or replace trigger BAN_CLI after logon on database
declare
     v_sid number;
     v_isdba varchar2(10);
     v_program varchar2(30);
begin
     execute immediate
       'select distinct sid from sys.v_$mystat' into v_sid;
     execute immediate
       'select program from sys.v_$session where sid = :b1'
        into v_program using v_sid;
     select sys_context('userenv','ISDBA') into v_isdba from dual;
     if upper(v_program) <> 'MYAPP.EXE' and v_isdba = 'FALSE' then
          raise_application_error
            (-20001,'Access via CLI for non DBA users restricted',true);
     end  if;
end;
/       


Note: thử cái trigger trên 1 DB test trước xem có ổn không nhé.
PAV.


Post Mon Oct 26, 2009 8:57 am
User avatar

trantuananh24hg

Moderator
Moderator
Posts: 1724
Joined: Tue Jul 17, 2007 10:55 am
Location: Ha Noi

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Thử tiếp cả script này
Blocking user using Toad, SQL Navigator, PLSQLDEV, EXCEL..
Code: Select all
CONNECT / AS SYSDBA;

CREATE OR REPLACE TRIGGER block_tools_from_prod
  AFTER LOGON ON DATABASE
DECLARE
  v_prog sys.v_$session.program%TYPE;
BEGIN
  SELECT program INTO v_prog
    FROM sys.v_$session
  WHERE  audsid = USERENV('SESSIONID')
    AND  audsid != 0  -- Don't Check SYS Connections
    AND  rownum = 1;  -- Parallel processes will have the same AUDSID's

  IF UPPER(v_prog) LIKE '%TOAD%' OR UPPER(v_prog) LIKE '%T.O.A.D%' OR -- Toad
     UPPER(v_prog) LIKE '%SQLNAV%' OR   -- SQL Navigator
     UPPER(v_prog) LIKE '%PLSQLDEV%' OR -- PLSQL Developer
     UPPER(v_prog) LIKE '%BUSOBJ%' OR   -- Business Objects
     UPPER(v_prog) LIKE '%EXCEL%'       -- MS-Excel plug-in
  THEN
     RAISE_APPLICATION_ERROR(-20000, 'Development tools are not allowed on PROD DB!');
  END IF;
END;
/
SHOW ERRORS


Post Mon Oct 26, 2009 10:36 pm
User avatar

tt2006

OCA
OCA
Posts: 55
Joined: Sun Aug 26, 2007 11:26 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

trantuananh24hg wrote:Thử tiếp cả script này
Blocking user using Toad, SQL Navigator, PLSQLDEV, EXCEL..
Code: Select all
CONNECT / AS SYSDBA;

CREATE OR REPLACE TRIGGER block_tools_from_prod
  AFTER LOGON ON DATABASE
DECLARE
  v_prog sys.v_$session.program%TYPE;
BEGIN
  SELECT program INTO v_prog
    FROM sys.v_$session
  WHERE  audsid = USERENV('SESSIONID')
    AND  audsid != 0  -- Don't Check SYS Connections
    AND  rownum = 1;  -- Parallel processes will have the same AUDSID's

  IF UPPER(v_prog) LIKE '%TOAD%' OR UPPER(v_prog) LIKE '%T.O.A.D%' OR -- Toad
     UPPER(v_prog) LIKE '%SQLNAV%' OR   -- SQL Navigator
     UPPER(v_prog) LIKE '%PLSQLDEV%' OR -- PLSQL Developer
     UPPER(v_prog) LIKE '%BUSOBJ%' OR   -- Business Objects
     UPPER(v_prog) LIKE '%EXCEL%'       -- MS-Excel plug-in
  THEN
     RAISE_APPLICATION_ERROR(-20000, 'Development tools are not allowed on PROD DB!');
  END IF;
END;
/
SHOW ERRORS

Nếu user của mình cắt cớ đổi tên file chạy. Ví dụ: toad.exe thành gido.exe thì cái trigger có chặn được không? Tôi e là không. Không biết có đúng không ạ.
"Gieo suy nghĩ, gặt hành động.
Gieo hành động, gặt thói quen.
Gieo thói quen, gặt tính cách.
Gieo tính cách, gặt số phận."

-Samuel Smiles.


Post Mon Oct 26, 2009 10:38 pm
User avatar

BIGMAN

OCP
OCP
Posts: 283
Joined: Thu Aug 20, 2009 8:11 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

hi, anh oravn, anh tuananh . thanks 2 anh. em test trên toad và sqlplus thì thấy ok . tuy nhiên, khi user connect vào thì nó lại sinh ra lỗi này
ORA-00604: error occurred at recursive SQL level 1
nội dung Dump file
Dump file c:\oracle\product\10.1.0\admin\orcl\udump\orcl_ora_1892.trc
Wed Aug 24 22:18:08 2005
ORACLE V10.1.0.2.0 - Production vsnsta=0
vsnsql=13 vsnxtr=3
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
Windows XP Version V5.1 Service Pack 2
CPU : 1 - type 586
Process Affinity: 0x00000000
Memory (A/P) : PH:145M/759M, PG:1075M/1856M, VA:1745M/2047M
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 18
Windows thread id: 1892, image: ORACLE.EXE (SHAD)
*** SERVICE NAME:(ORCL) 2005-08-24 22:18:08.781
*** SESSION ID:(151.241) 2005-08-24 22:18:08.781
Error in executing triggers on connect internal
*** 2005-08-24 22:18:08.968
ksedmp: internal or fatal error
ORA-00604: error occurred at recursive SQL level 1
ORA-20000: Development tools are not allowed on PROD DB!
ORA-06512: at line 16

ps: anh oravn ngủ trễ quá nhỉ Mon Oct 26, 2009 12:14 am vẫn còn lên 4rum :oops:
Spam


Post Mon Oct 26, 2009 11:00 pm
User avatar

BIGMAN

OCP
OCP
Posts: 283
Joined: Thu Aug 20, 2009 8:11 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Nếu user của mình cắt cớ đổi tên file chạy. Ví dụ: toad.exe thành gido.exe thì cái trigger có chặn được không? Tôi e là không. Không biết có đúng không ạ.

em đã test rùi, nếu đổi tên thì cript của anh tuấn anh ko chặn được, còn của anh oravn thì ok. Chỉ cần chỉnh điều kiện như anh oravn là ok cả thôi
if upper(v_program) <> 'MYAPP.EXE'

nếu end user mà đổi toad.exe thành MYAPP.EXE thì chắc bó tay :lol:
Spam


Post Mon Oct 26, 2009 11:15 pm
User avatar

nhsang

Administrator
Administrator
Posts: 2227
Joined: Mon Jul 16, 2007 1:38 pm
Location: Sài Gòn

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

tt2006 wrote:
trantuananh24hg wrote:Thử tiếp cả script này
Blocking user using Toad, SQL Navigator, PLSQLDEV, EXCEL..
Code: Select all
CONNECT / AS SYSDBA;

CREATE OR REPLACE TRIGGER block_tools_from_prod
  AFTER LOGON ON DATABASE
DECLARE
  v_prog sys.v_$session.program%TYPE;
BEGIN
  SELECT program INTO v_prog
    FROM sys.v_$session
  WHERE  audsid = USERENV('SESSIONID')
    AND  audsid != 0  -- Don't Check SYS Connections
    AND  rownum = 1;  -- Parallel processes will have the same AUDSID's

  IF UPPER(v_prog) LIKE '%TOAD%' OR UPPER(v_prog) LIKE '%T.O.A.D%' OR -- Toad
     UPPER(v_prog) LIKE '%SQLNAV%' OR   -- SQL Navigator
     UPPER(v_prog) LIKE '%PLSQLDEV%' OR -- PLSQL Developer
     UPPER(v_prog) LIKE '%BUSOBJ%' OR   -- Business Objects
     UPPER(v_prog) LIKE '%EXCEL%'       -- MS-Excel plug-in
  THEN
     RAISE_APPLICATION_ERROR(-20000, 'Development tools are not allowed on PROD DB!');
  END IF;
END;
/
SHOW ERRORS

Nếu user của mình cắt cớ đổi tên file chạy. Ví dụ: toad.exe thành gido.exe thì cái trigger có chặn được không? Tôi e là không. Không biết có đúng không ạ.


Bạn đổi tên chương trình, thử connect lại, query từ trong v$session ra xem nó có đổi ko là biết ngay !


Post Tue Oct 27, 2009 9:07 am
User avatar

trantuananh24hg

Moderator
Moderator
Posts: 1724
Joined: Tue Jul 17, 2007 10:55 am
Location: Ha Noi

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

tt2006 wrote:[
Nếu user của mình cắt cớ đổi tên file chạy. Ví dụ: toad.exe thành gido.exe thì cái trigger có chặn được không? Tôi e là không. Không biết có đúng không ạ.


Tại sao bạn không thử trước nhỉ? Đơn giản chỉ là rename tên file chạy :wink:


Post Tue Oct 27, 2009 11:17 am
WELcome to ORAVN!!

NoCert

OCA
OCA
Posts: 57
Joined: Tue Aug 21, 2007 12:22 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Bằng cách viết trigger BEFORE LOGON, mình thấy tốt nhất là ngăn chặn bằng Client IP, OS User, Oracle User...còn việc ngăn chặn theo tên ứng dụng thì cũng khó thật, vì nếu đổi tên ứng dụng và chạt được thì chẳng có cách gì chặn được. Hơn nữa, mình đã gặp trường hợp có ứng dụng connect vào database rồi nhưng V$SESSION.PROGRAM vẫn không có giá trị, cố tình chặn cả các session có giá trị V$SESSION.PROGRAM bằng NULL thì các JOB chết lăn đùng.
Nói chung là chặn bằng tiêu chí này không đủ thì tìm thêm tiêu chí nào khác có thể để chặn nhưng kết quả thì mình nghĩ cũng chỉ tương đối thôi.


Post Tue Oct 27, 2009 1:56 pm
User avatar

nhsang

Administrator
Administrator
Posts: 2227
Joined: Mon Jul 16, 2007 1:38 pm
Location: Sài Gòn

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Giải pháp Application roles do Oracle sinh ra để giải quyết cái này mà các bác ko chiệu xài, trigger cũng có thể dùng nhưng trong một số tình huống thì Application Roles vẫn có nhiều ưu điểm hơn. Khi dùng những cái này phải kết hợp thêm Context nữa thì giải pháp mới trọn vẹn, nếu chỉ dùng default context của hệ thống là USERENV thì hơi bị bó buộc.


Post Fri Jun 18, 2010 10:38 am
WELcome to ORAVN!!

ntanhvst

PL/SQL
PL/SQL
Posts: 21
Joined: Mon Jun 07, 2010 3:44 pm

Re: Chặn kêt nối cửa user vào database từ sqlplus. toad...

Hi all,
Yêu cầu bảo mật thật là vô cùng rong lớn. Khong co giai phap nao la toan vẹn. Do đó theo mình nên sử dụng tính năng chuẩn của hệ thống nhưng phải customize theo ý tưởng khi thiết kế APP thì mới có thể đảm bảo bảo mật



Return to Bảo mật Dữ liệu

Who is online

Users browsing this forum: No registered users and 1 guest

cron