<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SoftLayer Blog &#187; blog</title>
	<atom:link href="http://blog.softlayer.com/tag/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.softlayer.com</link>
	<description>A Behind the Scenes Look at the Best Hosting Provider in the World</description>
	<lastBuildDate>Fri, 24 May 2013 18:19:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Tips and Tricks &#8211; How to Secure WordPress</title>
		<link>http://blog.softlayer.com/2012/tips-and-tricks-how-to-secure-wordpress/</link>
		<comments>http://blog.softlayer.com/2012/tips-and-tricks-how-to-secure-wordpress/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 15:15:27 +0000</pubDate>
		<dc:creator>Lee Thompson</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[users]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=7531</guid>
		<description><![CDATA[As a hobby, I dabble in WordPress, so I thought I&#8217;d share a few security features I use to secure my WordPress blogs as soon as they&#8217;re installed. Nothing in this blog will be earth-shattering, but because security is such a priority, I have no doubt that it will be useful to many of our [...]]]></description>
			<content:encoded><![CDATA[<p>As a hobby, I dabble in WordPress, so I thought I&#8217;d share a few security features I use to secure my WordPress blogs as soon as they&#8217;re installed. Nothing in this blog will be earth-shattering, but because security is such a priority, I have no doubt that it will be useful to many of our customers. Often, the answer to the question, &#8220;How much security do I need on my site?&#8221; is simply, &#8220;More,&#8221; so even if you have a solid foundation of security, you might learn a new trick or two that you can incorporate into your next (or current) WordPress site.</p>
<h3>Move wp-config.php</h3>
<p style="margin-top:5px; padding-top:0;">The first thing I do is change the location of my <code>wp-config.php</code>. By default, it&#8217;s installed in the WordPress parent directory. If the config file is in the parent directory, it can be viewed and accessed by Apache, so I move it out of web/root. Because you&#8217;re changing the default location of a pretty significant file, you need to tell WordPress how to find it in <code>wp-load.php</code>. Let&#8217;s say my WordPress runs out of /webroot on my host &#8230; I&#8217;d need to make a change around Line 26:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> ABSPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'wp-config.php'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #009933; font-style: italic;">/** The config file resides in ABSPATH */</span>
        <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> ABSPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'wp-config.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-config.php'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-settings.php'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #009933; font-style: italic;">/** The config file resides one level above ABSPATH but is not part of another install*/</span>
        <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-config.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The code above is the default setup, and the code below is the version with my subtle update incorporated.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> ABSPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'wp-config.php'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #009933; font-style: italic;">/** The config file resides in ABSPATH */</span>
        <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> ABSPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'../wp-config.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'..//wp-config.php'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-settings.php'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #009933; font-style: italic;">/** The config file resides one level above ABSPATH but is not part of another install*/</span>
        <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span>ABSPATH<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'../wp-config.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>All we&#8217;re doing is telling the application that the <code>wp-config.php</code> file is one directory higher. By making this simple change, you ensure that only the application can see your <code>wp-config.php</code> script.</p>
<h3>Turn Down Access to /wp-admin</h3>
<p style="margin-top:5px; padding-top:0;">After I make that change, I want to turn down access to <code>/wp-admin</code>. I allow users to contribute on some of my blogs, but I don&#8217;t want them to do so from <code>/wp-admin</code>; only users with admin rights should be able to access that panel. To limit access to <code>/wp-admin</code>, I recommend the plugin <a href="http://cartpauj.icomnow.com/projects/ucan-post-plugin/">uCan Post</a>. This plugin creates a page that allows users to write posts and submit them within your theme.</p>
<p>But won&#8217;t a user just be able to navigate to <code>http://site.com/wp-admin</code>? Yes &#8230; Until we add a simple function to our theme&#8217;s <code>functions.php</code> file to limit that access. At the bottom of your <code>functions.php</code> file, add this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">############ Disable admin access for users ############
</span>
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin_init'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'no_more_dashboard'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> no_more_dashboard<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>current_user_can<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'manage_options'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOING_AJAX'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'/wp-admin/admin-ajax.php'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  wp_redirect<span style="color: #009900;">&#40;</span>site_url<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">###########################################################</span></pre></div></div>

<p>Log in as a non-admin user, and you&#8217;ll get redirected to the blog&#8217;s home page if you try to access the admin panel. Voila!</p>
<h3>Start Securing the WordPress Database</h3>
<p style="margin-top:5px; padding-top:0;">Before you go any further, you need to look at WordPress database security. This is the most important piece in my opinion, and it&#8217;s not just because I&#8217;m a DBA. WordPress never needs all permissions. The only permissions WordPress needs to function are <code>ALTER</code>, <code>CREATE</code>, <code>CREATE TEMPORARY TABLES</code>, <code>DELETE</code>, <code>DROP</code>, <code>INDEX</code>, <code>INSERT</code>, <code>LOCK TABLES</code>, <code>SELECT</code> and <code>UPDATE</code>.</p>
<p>If you run WordPress and MySQL on the same server the permissions grant would look something like:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON <span style="color: #000000; font-weight: bold;">&lt;</span>DATABASE<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">*</span> TO <span style="color: #000000; font-weight: bold;">&lt;</span>USER<span style="color: #000000; font-weight: bold;">&gt;@</span><span style="color: #ff0000;">'localhost'</span> IDENTIFIED BY <span style="color: #ff0000;">'&lt;PASSWORD&gt;'</span>;</pre></div></div>

<p>If you have a separate database server, make sure the host of the webserver is allowed to connect to the database server:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON <span style="color: #000000; font-weight: bold;">&lt;</span>DATABASE<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">*</span> TO <span style="color: #000000; font-weight: bold;">&lt;</span>USER<span style="color: #000000; font-weight: bold;">&gt;@</span><span style="color: #ff0000;">'&lt;ip of web server'</span> IDENTIFIED BY <span style="color: #ff0000;">'&lt;PASSWORD&gt;'</span>;</pre></div></div>

<p>The password you use should be random, and you should not need to change this. DO NOT USE THE SAME PASSWORD AS YOUR ADMIN ACCOUNT.</p>
<p>By taking those quick steps, we&#8217;re able to go a long way to securing a default WordPress installation. There are other plugins out there that are great tools to enhance your blog&#8217;s security, and once you&#8217;ve got the fundamental security updates in place, you might want to check some of them out. <a href="http://wordpress.org/extend/plugins/login-lockdown/">Login LockDown</a> is designed to stop brute force login attempts, and <a href="http://wordpress.org/extend/plugins/secure-wordpress/">Secure WordPress</a> has some great additional features. </p>
<p>What else do you do to secure your WordPress sites?</p>
<p>-Lee</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/tips-and-tricks-how-to-secure-wordpress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SLDN 2.0 &#8211; The Development Network Evolved</title>
		<link>http://blog.softlayer.com/2011/sldn-2-0-developing-the-development-network/</link>
		<comments>http://blog.softlayer.com/2011/sldn-2-0-developing-the-development-network/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:25:54 +0000</pubDate>
		<dc:creator>Phil Jackson</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[SLDN]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=4550</guid>
		<description><![CDATA[SoftLayer is in a constant state of change &#8230; It&#8217;s not that bad change we all fear; it&#8217;s the type of change that allows you to stretch the boundaries of your normal experience and run like a penguin &#8230; Because I got some strange looks when coworkers read &#8220;run like a penguin,&#8221; I should explain [...]]]></description>
			<content:encoded><![CDATA[<p>SoftLayer is in a constant state of change &#8230; It&#8217;s not that bad change we all fear; it&#8217;s the type of change that allows you to stretch the boundaries of your normal experience and run like a penguin &#8230; Because I got some strange looks when coworkers read &#8220;run like a penguin,&#8221; I should explain that I recently visited <a href="http://moodygardens.com/">Moody Gardens</a> in Galveston and <a href="http://www.moodygardens.com/penguincam2.html">saw penguins</a> get crazy excited when they were about to get fed, so that&#8217;s the best visual I could come up with. Since I enjoy a challenge (and enjoy running around like a penguin), when I was asked to design the new version of SLDN, I was excited.</p>
<p>The goal was simple: Take our already amazing documentation software infrastructure and make it better. A large part of this was to collapse our multi-site approach down into a single unified user experience. Somewhere along the way, &#8220;When is the proposal going to be ready?&#8221; became &#8220;When is the site going to be ready?&#8221;, at this point I realized that all of the hurdles I had been trampling over in my cerebral site building were now still there, standing, waiting for me on my second lap.</p>
<p>I recently had the honor to present our ideas, philosophy and share some insight into the technical details of the site at <a href="http://www.oscon.com/oscon2011">OSCON 2011</a>, and <a href="http://blog.softlayer.com/author/khazard">KHazzy</a> had the forethought to record it for all of you!</p>
<div class="yt560"><iframe width="560" height="349" src="http://www.youtube.com/embed/YvOO5vkRbGY?hd=1" frameborder="0" allowfullscreen></iframe></div>
<p>It&#8217;s a difficult balance to provide details and not bore the audience with tech specs, so I tried to keep the presentation relatively light to encourage attendees (and now viewers) to ask questions about areas they want a little more information about. If you&#8217;re looking at a similar project in the future, feel free to bounce ideas off me, and I&#8217;ll steer you clear of a few land mines I happened upon.</p>
<p>-Phil</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2011/sldn-2-0-developing-the-development-network/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>March Madness &#8211; Customer Experience Style</title>
		<link>http://blog.softlayer.com/2011/march-madness-customer-experience-style/</link>
		<comments>http://blog.softlayer.com/2011/march-madness-customer-experience-style/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 20:30:57 +0000</pubDate>
		<dc:creator>Steve Kinman</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[customer experience]]></category>
		<category><![CDATA[downtime]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[outage]]></category>
		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/2011/</guid>
		<description><![CDATA[If you are a SoftLayer customer you probably noticed a maintenance window early Sunday morning. If you aren&#8217;t a SoftLayer customer, (you should be, and) you may have even noticed on quite a few social media outlets that we were trying to provide real-time updates about the maintenance progress, and our customers were doing so [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a SoftLayer customer you probably noticed a maintenance window early Sunday morning. If you aren&#8217;t a SoftLayer customer, (you should be, and) you may have even noticed on quite a few social media outlets that we were trying to provide real-time updates about the maintenance progress, and our customers were doing so as well. </p>
<p>SoftLayer customers were given two internal tickets notifying them if they were to be affected, and when those tickets were created, the ticket system would have then sent an email to the admin user on that account. Additionally, our portal notification system was updated to show details about the window, and we created new threads in our customer forums to provide regular, centralized updates. We went as far as taking a few calls and meetings with customers to talk about their concerns with the maintenance timing and length because we know that any downtime is bad downtime in the world of hosting.</p>
<p>Saturday night, we had extra support on staff online, and our <a href="http://blog.softlayer.com/author/khazard/">social media ninja</a> was awake and letting the world know step by step what we were doing with real time status alerts. We wanted to be extremely transparent during the entire process. This was not a maintenance we could avoid, and we tried to roll as many different things that needed work into this maintenance without making a roll back impossible.</p>
<p>The maintenance itself went well, and as planned, most items that were taken down were back online well before the window ended. We ran into a few snags in bringing all of the CloudLayer CCIs back online, but even with those delays for a few customers, the work was completed by the time we committed to. </p>
<p>Now for the customer experience aspect. From reading various tweets from our customers, it seems like we should/could have done a few things even better: Been more proactive, sent standard email, attempted phone calls, etc. </p>
<p>While some of these options may be considered, not all are feasible. If you are one of the customers that tweeted, has blogged, is planning on tweeting, is planning on blogging or believes we&#8217;re being anything less than genuine and transparent on our social media platforms, I want to hear from you. </p>
<p>Please comment on this blog, tweet me @<a href="http://twitter.com/skinman454">skinman454</a>, email me <a href="mailto:skinman@softlayer.com">skinman@softlayer.com</a>, call me at 214.442.0592, come by our office and visit. </p>
<p>Whatever it takes, just contact me. I can&#8217;t put myself in your shoes and feel your pain on things like this unless we have a chance to talk about it. I look forward to our conversation.</p>
<p>-Skinman</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2011/march-madness-customer-experience-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
