It is very often that we take a site from another firm and now we are stuck with a conglomeration of code and potentially dozens of people who have worked on a site. I am looking for a punch list of items to ask of a security person to ensure the Magento site is hardened. This would be required if someone were to take full responsibility for all the code and the client did not want to rebuild from scratch.
My question: Is there a top 10 or top 20 list of items to ask and to document?
From my experience, these are important things to get information about when taking over a new shop from a security point of view. This list is not ordered & complete yet, I will continue to work on the list.
HTTPS used (all over the shop, only for checkout)?
Custom Admin Path?
Access to admin path restricted?
How many Admins? Any unneeded users active?
Account protection & passwort encryption (for customers and admins): Standard or customization? 2-factor auth?
(Latest) Magento version used?
Magento Security Patches applied?
Custom root level folders/scripts which are necessary to be accessed from remote?
Access to test/staging system (if available) restricted?
Webservices, import/export functionality used?
How many Webservice roles? Any unneeded roles active?
List of installed extensions
Installed extensions up to date?
PCI-DSS, trusted shops, any other label?
Only run Magento. (No Wordpress or any other third party software)
Data stored: What kind of customer and order data (as well as data from 3rd party and customized extensions), is stored? Bank data, credit card data (see PCI-DSS)?
PHP version: recent version or old one?
File permissions: Running as www-data/apache user or root?
Proper file permissions set?
Shop specific database-credentials vs. database runing as root?
SSH/SFTP access? Key-based authentication?
SLA with hosting provider about (regular) OS, PHP + module updates and security updates?
Who is responsible for system (security) updates?
Who has access to the live-server?
Who has access to the live-shop?
Where is the code hosted? Who has access to the bare repo and push access?
What does the current software development process look like? Are there code reviews and automatic checks done before deploying code to staging/test/live?
Is there any security testing or security audit done (regularly)?
Is there a regular backup? If so, is it external?
Depending on the shop/company size: Are there business continuity and/or Recovery plans?
Make sure your /downloader/ folder is secure. You can have the longest password in the world but if I have all the time in the world to brute force your user info on your downloader page then I'm going to eventually get it. Another thing is to make sure your server directories cant list. If they are listing I can easily pull up your server contents on Google and start browsing away. You would be amazed at the amount of sensitive information people store on their web servers.