{"id":125,"date":"2005-04-20T16:22:35","date_gmt":"2005-04-20T19:22:35","guid":{"rendered":"http:\/\/www.fonz.net\/blog\/archives\/2005\/04\/20\/mysql-security-by-john-david-duncan\/"},"modified":"2005-04-20T16:22:35","modified_gmt":"2005-04-20T19:22:35","slug":"mysql-security-by-john-david-duncan","status":"publish","type":"post","link":"https:\/\/www.fonz.net\/blog\/archives\/2005\/04\/20\/mysql-security-by-john-david-duncan\/","title":{"rendered":"MySQL Security by John David Duncan"},"content":{"rendered":"<p>John offers a broad overview of MySQL security.  He does not cover everything, but provides a good intro for someone new to MySQL.  Here are some notes from his talk:<\/p>\n<p>Security Priorities:<br \/>\n&#8211; Data not stolen or tampered with.<br \/>\n&#8211; only access data that you&#8217;re authorized to access<br \/>\n&#8211; secure passwords<\/p>\n<p>&#8211; host level security<br \/>\n    &#8211; obviously dont run MySQL as a privledged user.<br \/>\n    &#8211; patch system regularly<\/p>\n<p>&#8211; net security<br \/>\n    &#8211; bind to localhost or skipnetworking unless you have remote clients<br \/>\n    &#8211; firewalls<br \/>\n    &#8211; use ssl<br \/>\n         &#8211; what kind of load does ths add<\/p>\n<p>&#8211; authentication in mysql<br \/>\n    &#8211; 4.1 includes a new auth scheme with more secure password hashes.<br \/>\n    &#8211; 4.1 supports old protocols, but new protocol is highly recomended.<br \/>\n    &#8211; SSL support from slaves to marster, clieent to server, etc.<br \/>\n    &#8211;  grant can now allow you to require certs, issuers, specific ciphers, etc.<br \/>\n    &#8211;  limit connections, qeuries, reads, writes, etc per hour.<\/p>\n<p>views:<br \/>\n    &#8211; you can create views so that a specific user only sees rows that meet his privs \/ restrictions.<\/p>\n<p>&#8211; Groups \/ Roles, are recognized as necessary by MySQL developers.  They hope to include them in 5.1, but make no guarantees.<\/p>\n<p>&#8211; ideas for web app users:<br \/>\n   &#8211; give each script\/object\/method a user name so that for security and logging reasons which scripts did what, see who is connected,<br \/>\n&#8211; interactive help now included in MySQL!<br \/>\n    &#8211; ex: help grant types<\/p>\n<p>&#8211; MySQL &#8220;worm&#8221; of Jan &#8217;05<br \/>\n  The MySQL work would scan tcp port 3306 on the public net and then attept to brute force root.  It had a very small list of common passwords and managed to sucessfully connect to an alarming number of servers.  The worm would then create a table with a blob column where it would insert the words code.  It would then dump itself to a DLL file and drop the table.  Then by creating a function it can run itself via mysql.  <\/p>\n<p>The worm did not last long as the connecting zombies caused a DOS attack on the IRC servers where the zombied nodes were managed,<\/p>\n<p>&#8211; MySQL 4.1 now includesfeatures to make this more difficult:<br \/>\n    &#8211; User defined functions must define and meet certain criteria or they will be considered &#8220;suspicious&#8221; and not run.<br \/>\n    &#8211;  root@ accounts were reomved from windows, no other distros ever had them.<br \/>\n    &#8211;  wont let you use .. or other pathname info in the name of a shared object<\/p>\n","protected":false},"excerpt":{"rendered":"<p>John offers a broad overview of MySQL security. He does not cover everything, but provides a good intro for someone new to MySQL. Here are some notes from his talk: Security Priorities: &#8211; Data not stolen or tampered with. &#8211; only access data that you&#8217;re authorized to access &#8211; secure passwords &#8211; host level security [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[8],"_links":{"self":[{"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/posts\/125"}],"collection":[{"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":0,"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fonz.net\/blog\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}