Tech_Info/Database2006. 6. 26. 13:45
보안에 문제가 될 수 있는 xp_cmdshell 삭제하기

원본링크 : Implications of removing the xp_cmdshell stored procedure from SQL Server 2000
- http://support.microsoft.com/kb/891984/en-us

How to drop the xp_cmdshell stored procedure
- system administrator user right 필요
- to-drop :
exec sp_dropextendedproc 'xp_cmdshell'
- re-add :
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'

영향받는 stored procedure List

sp_ActiveDirectory_SCP sp_adddistpublisher sp_adddistributiondb sp_attachsubscription sp_changedistpublisher sp_copysubscription sp_MScopysnapshot sp_MScopyscriptfile sp_MSget_file_existence sp_MSremove_userscript sp_replicationoption sp_vupgrade_replication
sp_MSreplremoveuncdir sp_MSdeletefoldercontents sp_resolve_logins Sp_set_local_time sp_msx_defect sp_msx_enlist Xp_sscanf Xp_sprintf Xp_msver Xp_msver Xp_enumgroups Xp_logevent Xp_loginconfig

삭제하게 되면서 발생할 수 있는 메세지

ODBC: Msg 0, Level 16, State 1
Cannot load the DLL xplog70.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).

Trying to configure Distributor for "server"
Fails with Error 2812: Could not find stored procedure 'master..xp_cmdshell'

Status: 0, code: 1007, text: 'Cannot load the DLL xplog70.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).'.
Cannot load the DLL xplog70.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).
Repl Agent Status: 6

An error occurred trying to execute a SQL Statement.

"Cannot enlist server 'ServerName' . Please upgrade server 'ServerName' to SQL Server 2000 sp3 or later.

“Cannot load the DLL xplog70.dll or one of the DLLs it references. Reason: 126(The specified module could not be found)
ServerName xp_msver


xplog70.dll을 삭제하고서 SQL Server Restart하면 더이상 sp_addextendedproc를 사용해서 등록할 수 없다.
쿼리분석기에서 다시 sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'을 실행하면 정상적으로 실행되지만,
xp_cmdshell 'dir' 와 같이 실행하면,
ODBC: 메시지 0, 수준 16, 상태 1
xplog70.dll DLL 또는 이 DLL이 참조하는 DLL 중 하나를 로드할 수 없습니다. 이유: 126(지정된 모듈을 찾을 수 없습니다.). 라는 메세지를 뿌리면서 실패하게 된다.


'Tech_Info > Database' 카테고리의 다른 글

TableSpace 사용량 확인하는 script  (0) 2006.11.08
SQL Server Errorlog archive 개수 늘리기  (0) 2006.06.26
Posted by 알 수 없는 사용자
Essay/IT 기획2006. 6. 25. 23:01
쩝.. M사의 작업을 하게 되면서 느낀 점이다.

QAS시스템의 SAP/ORACLE을 Offline Full Backup 받아서 DEV시스템에 Restore 해주고,
System Copy 를 해주는 작업이었다.
나름대로 신경써야 할것도 많지만, 결국 메인은 백업받아서 부어주고 SID 변경해주는 작업.

내가 생각했던 예상시간은 백업받는데 약 1시간~1시간30분 (MAX) 리스토어 하는데 1시간~1시간30분(MAX) 토탈 2시간~3시간정도로 계산했었다.
예상대로 단순데이터 보관용의 백업인 DEV쪽은 초당 50MB의 속도로 약 40분만에 백업이 완료되었지만, QAS쪽은 초당 10MB정도밖에 나오지 않는 것이었다. 무슨일인지 몰랐다.
그전에 테스트로 백업걸었던 것이 약 초당 60MB가 나왔었기 때문이다. 백업장치쪽의 문제인지, DEV와 QAS가 동시에 받아서 그런지 한참 고민했지만, 결국 답은 SAN백업 설정이 되어 있지 않아서 Network백업으로 받는중이었던 것이다. ㅠㅠ

내가 테스트 했던 백업은 그냥 간단한 10MB짜리 파일이었기 때문에 속도가 잘나온걸로 착각했던 것이다.
백업속도에 영향을 미칠수 있는것 여러가지가 있다.
1. Network 상태
2. 백업용량
3. 백업받을 파일의 수
4. 백업받는 파일의 Depth (Directory의 깊이)

이중에 난 2번과,3번의 상황을 고려하지 않은채, 간단한 파일 하나만 가지고
" 음... 속도 잘나오는군... 한거다. "
이번에 배운점은...
어떤 일을 할때 테스트의 용도로 어떤 샘플을 설정했다면, 그 샘플이 얼마나 실제 Data와 유사성을 가지고 있는지 확인해야 한다는 것이다. 전문용어는 까먹었지만, 샘플의 대표성을 꼭 확인해야 한다는 걸 배웠다.

'Essay > IT 기획' 카테고리의 다른 글

EA 스터디 자료  (0) 2008.12.05
그린 데이터센터 최적의 실행방안  (0) 2008.12.05
PMBOK  (0) 2008.12.03
지식근로자에게 그들만의 공간을 달라.  (0) 2007.01.23
시스템 어드민 하기..  (0) 2006.05.12
Posted by 알 수 없는 사용자
Tech_Info/OS2006. 6. 22. 14:41
오늘 M 고객사의 디스크 사용량 조사를 하다가 이상한 점을 발견하고서, 이것 저것 확인하다가 놀라운 점을 발견했다.
VG00이 145GB 두개로 OS미러를 사용하고 있었는데, 아래와 같이 나오는거당 ㅠㅠ

◈ vgdisplay -v vg00
--- Volume groups ---
VG Name                     /dev/vg00
VG Write Access             read/write
VG Status                   available
Max LV                      255
Cur LV                      6
Open LV                     6
Max PV                      16
Cur PV                      2
Act PV                      2
Max PE per PV               4384
VGDA                        4
PE Size (Mbytes)            32
Total PE                    8748
Alloc PE                    5588
Free PE                     3160
Total PVG                   0
Total Spare PVs             0
Total Spare PVs in use      0

분명 PE x Total PE 하면 전체 디스크 사이즈가 나오는데, 8748 x 32 = 279936 /1024 = 273 GB
이런이런... 145GB 또는 137GB가 나와야 정상이란 말이다. ㅠㅠ
여기서 나오는 의문점... 이거 OS Mirror 되고 있는거 맞는가?


이런이런... 145GB 또는 137GB가 나와야 정상이란 말이다. ㅠㅠ
그래서 백방으로 알아봤다. ㅎㅎ
일단 HPRC로부터의 답변은 그렇게 보이는 것이 정상입니다. 보이는 PE를 반으로 나누세요. 끝!

추가 정보
Mirror인지 확인 하는 방법
1. vgdisplay -v vg00 로 확인
- Cur PV 2 : 해당PV는 2개의 DISK로 되어 있다.
- 마지막부분에 Physical volumes 를 확인하면 /dev/dsk/c0t6d0 같은게 두개가 있다.

2. setboot -v 로 확인 (Alternate bootpath가 보이면 Mirror중)
  Primary bootpath : 0/0/0/0/0.0.0
  Alternate bootpath : 0/0/0/0/0.0.0

3. lvlnboot -v 로 확인 (두개가 보이면 Mirror)
       /dev/dsk/c0t6d0 (0/0/0/3/0.6.0) -- Boot Disk
       /dev/dsk/c0t5d0 (0/0/0/3/0.5.0) -- Boot Disk

해당 Lvol이 Mirror 중인지 확인하는 방법
1.  lvdisplay /dev/vg00/lvol1
- Mirror copies 항목의 값이 1이면 Mirror 중이고, 0이면 Mirror가 아니다.


Posted by 알 수 없는 사용자