sqlschool.gr logo


Articles of SQLschool.gr Team

Auditing my SQL Server instance Surface Area Configuration

Antonios Chatzipavlis
Tuesday 28 April 2020

Στο SQL Server υπάρχουν αρκετά features που αν δεν χρησιμοποιηθούν σωστά υπάρχει η πιθανότητα να μας δημιουργήσουν προβλήματα ασφάλειας και είναι από τα πρώτα πράγματα που ελέγχω όταν καλούμαι να εκτελέσω ένα SQL Server Security Assessment.

Αρκετά από αυτά, από προεπιλογή, είναι απενεργοποιημένα ώστε να μηδενιστεί η έκθεση σε προβλήματα ασφάλειας.

Φυσικά και μας δίνεται η επιλογή να τα ενεργοποιήσουμε, εφόσον έχουμε διασφαλίσει ότι η ενεργοποίηση τους δεν θα μας εκθέσει σε κινδύνους, όπως για παράδειγμα η προσωρινή ενεργοποίηση τους μέσα σε μια stored procedure και η απενεργοποίηση τους μέσα σε αυτή αφού πρώτα κάνουμε την χρήση τους. Ένα κλασσικό παράδειγμα είναι xp_cmdshell με την οποία μπορούμε να τρέξουμε os commands.

Ένας DBA που έχει τον απόλυτο έλεγχο των SQL Server Instances που διαχειρίζεται, πιθανώς να νιώθει ασφαλής καθώς ελέγχει τα πάντα, αλλά είναι 101% σίγουρος;

Όσοι πάλι είναι "βαφτισμένοι" DBA, και οι συνεργάτες τους αλωνίζουν στα SQL Server instance με ελάχιστο έλεγχο, δεν γνωρίζουν τι κάνει ο καθένας, και αυτό είναι πρόβλημα.

Σε κάθε περίπτωση και οι δύο θα πρέπει να το ελέγχουν τακτικά ώστε να γνωρίζουν και να δράσουν ανάλογα.

Το να μπορέσει κάποιος να μάθει τι είναι και τι δεν είναι ενεργοποιημένο από αυτά, μπορεί να το κάνει με το παρακάτω query που ρωτάει την sys.system_components_surface_area_configuration. Αυτή υπάρχει από τον SQL Server 2008 και μετά. Όπως θα δείτε έχω κάνει customization στο αποτέλεσμα της ώστε να εστιάσω στο ζητούμενο που δεν είναι άλλο από τον εύκολο έλεγχο.


select    component_name,
        case database_name 
        when 'mssqlsystemresource' then 'AllDatabases'
        else database_name
        end + '.' + schema_name + '.' + object_name as [object_name],
        case state
        when 1 then 'Yes'
        else 'No'
        end as is_enabled
from sys.system_components_surface_area_configuration
order by    is_enabled desc,
Query Results
component_name object_name is_enabled
Agent XPs AllDatabases.sys.sp_PostAgentInfo Yes
Agent XPs AllDatabases.sys.xp_getnetname Yes
Agent XPs AllDatabases.sys.xp_instance_regdeletevalue Yes
Agent XPs AllDatabases.sys.xp_instance_regread Yes
Agent XPs AllDatabases.sys.xp_instance_regwrite Yes
Agent XPs AllDatabases.sys.xp_msver Yes
Agent XPs AllDatabases.sys.xp_msx_enlist Yes
Agent XPs AllDatabases.sys.xp_passAgentInfo Yes
Agent XPs AllDatabases.sys.xp_regread Yes
Agent XPs AllDatabases.sys.xp_regwrite Yes
Agent XPs AllDatabases.sys.xp_sqlagent_enum_jobs Yes
Agent XPs AllDatabases.sys.xp_sqlagent_is_starting Yes
Agent XPs AllDatabases.sys.xp_sqlagent_monitor Yes
Agent XPs AllDatabases.sys.xp_sqlagent_notify Yes
Agent XPs AllDatabases.sys.xp_sqlagent_param Yes
Agent XPs msdb.dbo.sp_add_maintenance_plan_job Yes
Agent XPs msdb.dbo.sp_downloaded_row_limiter Yes
Agent XPs msdb.dbo.sp_enlist_tsx Yes
Agent XPs msdb.dbo.sp_generate_server_description Yes
Agent XPs msdb.dbo.sp_get_composite_job_info Yes
Agent XPs msdb.dbo.sp_get_schedule_description Yes
Agent XPs msdb.dbo.sp_get_sqlagent_properties Yes
Agent XPs msdb.dbo.sp_is_sqlagent_starting Yes
Agent XPs msdb.dbo.sp_jobhistory_row_limiter Yes
Agent XPs msdb.dbo.sp_msx_defect Yes
Agent XPs msdb.dbo.sp_msx_enlist Yes
Agent XPs msdb.dbo.sp_msx_get_account Yes
Agent XPs msdb.dbo.sp_msx_set_account Yes
Agent XPs msdb.dbo.sp_post_msx_operation Yes
Agent XPs msdb.dbo.sp_set_local_time Yes
Agent XPs msdb.dbo.sp_set_sqlagent_properties Yes
Agent XPs msdb.dbo.sp_sqlagent_get_startup_info Yes
Agent XPs msdb.dbo.sp_sqlagent_has_server_access Yes
Agent XPs msdb.dbo.sp_sqlagent_notify Yes
Agent XPs msdb.dbo.sp_update_operator Yes
Agent XPs msdb.dbo.sp_verify_alert Yes
Agent XPs msdb.dbo.sp_verify_job Yes
Agent XPs msdb.dbo.sp_verify_subsystem Yes
Database Mail XPs AllDatabases.sys.xp_sysmail_activate Yes
Database Mail XPs AllDatabases.sys.xp_sysmail_attachment_load Yes
Database Mail XPs AllDatabases.sys.xp_sysmail_format_query Yes
Database Mail XPs msdb.dbo.sp_send_dbmail Yes
Database Mail XPs msdb.dbo.sp_validate_user Yes
Database Mail XPs msdb.dbo.sysmail_help_status_sp Yes
Database Mail XPs msdb.dbo.sysmail_start_sp Yes
Database Mail XPs msdb.dbo.sysmail_stop_sp Yes
SMO and DMO XPs AllDatabases.sys.sp_getProcessorUsage Yes
SMO and DMO XPs AllDatabases.sys.sp_getVolumeFreeSpace Yes
SMO and DMO XPs AllDatabases.sys.xp_availablemedia Yes
SMO and DMO XPs AllDatabases.sys.xp_dirtree Yes
SMO and DMO XPs AllDatabases.sys.xp_enum_oledb_providers Yes
SMO and DMO XPs AllDatabases.sys.xp_enumerrorlogs Yes
SMO and DMO XPs AllDatabases.sys.xp_enumgroups Yes
SMO and DMO XPs AllDatabases.sys.xp_fileexist Yes
SMO and DMO XPs AllDatabases.sys.xp_fixeddrives Yes
SMO and DMO XPs AllDatabases.sys.xp_get_tape_devices Yes
SMO and DMO XPs AllDatabases.sys.xp_getnetname Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regaddmultistring Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regdeletevalue Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regenumvalues Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regread Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regremovemultistring Yes
SMO and DMO XPs AllDatabases.sys.xp_instance_regwrite Yes
SMO and DMO XPs AllDatabases.sys.xp_logininfo Yes
SMO and DMO XPs AllDatabases.sys.xp_msver Yes
SMO and DMO XPs AllDatabases.sys.xp_prop_oledb_provider Yes
SMO and DMO XPs AllDatabases.sys.xp_readerrorlog Yes
SMO and DMO XPs AllDatabases.sys.xp_regaddmultistring Yes
SMO and DMO XPs AllDatabases.sys.xp_regdeletekey Yes
SMO and DMO XPs AllDatabases.sys.xp_regdeletevalue Yes
SMO and DMO XPs AllDatabases.sys.xp_regread Yes
SMO and DMO XPs AllDatabases.sys.xp_regremovemultistring Yes
SMO and DMO XPs AllDatabases.sys.xp_regwrite Yes
SMO and DMO XPs AllDatabases.sys.xp_servicecontrol Yes
SMO and DMO XPs AllDatabases.sys.xp_sqlagent_monitor Yes
SMO and DMO XPs AllDatabases.sys.xp_sqlagent_notify Yes
SMO and DMO XPs AllDatabases.sys.xp_subdirs Yes
Ole Automation Procedures AllDatabases.sys.sp_OACreate No
Ole Automation Procedures AllDatabases.sys.sp_OADestroy No
Ole Automation Procedures AllDatabases.sys.sp_OAGetErrorInfo No
Ole Automation Procedures AllDatabases.sys.sp_OAGetProperty No
Ole Automation Procedures AllDatabases.sys.sp_OAMethod No
Ole Automation Procedures AllDatabases.sys.sp_OASetProperty No
Ole Automation Procedures AllDatabases.sys.sp_OAStop No
xp_cmdshell AllDatabases.sys.xp_cmdshell No

Θα δείτε στο αποτέλεσμα ότι υπάρχουν τα components Agent XPs, Database Mail XPs, Ole Automation Procedures, SMO and DMO XPs, xp_cmdshell.

Το καθένα από αυτά περιλαμβάνει μια σειρά από procedures που όταν είναι ενεργοποιημένο μπορούν να εκτελεστούν.

Αν κάποιος θέλει να ενεργοποιήσει ή να απενεργοποιήσει αυτά μπορεί να το κάνει με την χρήση της sp_configure όπως στο παρακάτω παράδειγμα.

Activate / Deactivate Surface Area Congifuration Settings

EXEC sys.sp_configure 'show advanced options', 1;  
EXEC sys.sp_configure 'Agent XPs', 1;  -- 1 is to enable, 0 to disable
EXEC sys.sp_configure 'Database Mail XPs', 1;  -- 1 is to enable, 0 to disable
EXEC sys.sp_configure 'Ole Automation Procedures', 1;  -- 1 is to enable, 0 to disable
EXEC sys.sp_configure 'SMO and DMO XPs', 1;  -- 1 is to enable, 0 to disable
EXEC sys.sp_configure 'xp_cmdshell', 1;  -- 1 is to enable, 0 to disable

//Antonios Chatzipavlis

Leave your comment






Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.


Row-level Security in SQL Server

More Episodes...


Refresh Intellisence in SSMS

Για να κάνουμε refresh το intellisence μέσα στο SSMS αρκεί να πατήσουμε Ctrl+Shift+R

More Tips...

Become a member

If you want to receive updates from us become a member to our community.




sqlschool.gr © 2010-2023 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.