<?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; tips and tricks</title>
	<atom:link href="http://blog.softlayer.com/tag/tips-and-tricks-2/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>Tue, 04 Jun 2013 20:27:40 +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>Secure Quorum: Tech Partner Spotlight</title>
		<link>http://blog.softlayer.com/2013/secure-quorum-tech-partner-spotlight/</link>
		<comments>http://blog.softlayer.com/2013/secure-quorum-tech-partner-spotlight/#comments</comments>
		<pubDate>Wed, 15 May 2013 14:50:37 +0000</pubDate>
		<dc:creator>Guest Blog</dc:creator>
				<category><![CDATA[Partner Marketplace]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[emergency]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[notification system]]></category>
		<category><![CDATA[partner marketplace]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[Secure Quorum]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=11358</guid>
		<description><![CDATA[We invite each of our featured SoftLayer Tech Marketplace Partners to contribute a guest post to the SoftLayer Blog, and this week, we’re happy to welcome Gerard Ibarra from Secure Quorum. Secure Quorum is an easy-to-use emergency notification system and crisis management system that resides in the cloud. Company Website: http://www.securequorum.com/ Tech Partners Marketplace: http://www.softlayer.com/marketplace/securequorum [...]]]></description>
			<content:encoded><![CDATA[<p class="attribution">We invite each of our featured SoftLayer Tech Marketplace Partners to contribute a guest post to the SoftLayer Blog, and this week, we’re happy to welcome Gerard Ibarra from <a href="http://www.securequorum.com/">Secure Quorum</a>. Secure Quorum is an easy-to-use emergency notification system and crisis management system that resides in the cloud.</p>
<div class="yt560"><iframe width="560" height="315" src="http://www.youtube.com/embed/dtY5zfAEBHg" frameborder="0" allowfullscreen></iframe></div>
<div class="more-info"><strong>Company Website:</strong> <a href="http://www.securequorum.com/">http://www.securequorum.com/</a><br />
<strong>Tech Partners Marketplace:</strong> <a href="http://www.softlayer.com/partners/marketplace/securequorum">http://www.softlayer.com/marketplace/securequorum</a></div>
<h3>Are You Prepared for an Emergency?</h3>
<p>Every company&#8217;s management team faces the challenge of having too many things going on with not enough time in the day. It&#8217;s difficult to get everything done, so when push comes to shove, particular projects and issues need to be prioritized to be completed. What do we have to do today that can&#8217;t be put off to tomorrow? Often, a businesses fall into a reactionary rut where they are constantly &#8220;putting out the fires&#8221; first, and while it&#8217;s vital for a business to put out those fires (literal or metaphorical), that approach makes it difficult to proactively prepare for those kinds of issues to streamline the process of resolving them. Secure Quorum was created to provide a simple, secure medium to deal with emergencies and incidents.</p>
<p>What we noticed was that businesses didn&#8217;t often consider planning for emergencies as part of their operations. The emergencies I&#8217;m talking about thankfully don&#8217;t happen often, but fires, accidents, power outages, workplace violence and denial of service attacks can severely impact the bottom line if they aren&#8217;t addressed quickly &#8230; They can make or break you. Are you prepared?</p>
<p><strong>Every second that we fail to make informed and logical decisions during an emergency is time lost in taking action.</strong> Take these facts for a little perspective:</p>
<ul>
<li>&#8220;Property destruction and business disruption due to disasters now rival warfare in terms of loss.&#8221; (University Corporation for Atmospheric Research)</li>
<li>More than 10,000 severe thunderstorms, 2,500 floods, 1,000 tornadoes and 10 hurricanes affect the United States each year. On average, 500 people die yearly because of severe weather and floods. (National Weather News 2005)</li>
<li>The cost of natural disasters is rising. During the past two decades, natural disaster damage costs have exceeded the $500 billion mark. Only 17 percent of that figure was covered by insurance. (Dennis S. Mileti, Disasters by Design)</li>
<li>Losses as a result of global disasters continue to increase on average every year, with an estimated $360 billion USD lost in 2011. (Centre for Research in the Epidemiology of Disasters)</li>
<li>Natural disasters, power outages, IT failures and human error are common causes of disruptions to internal and external communications. They &#8220;can cause downtime and have a significant negative impact on employee productivity, customer retention, and the confidence of vendors, partners, and customers.&#8221; (Debra Chin, Palmer Research, May 2011)</li>
</ul>
<p>These kinds of &#8220;emergencies&#8221; are not going away, but because specific emergencies are difficult (if not impossible) to predict, it&#8217;s not obvious how to deal with them. <strong>How do we reduce risk for our employees, vendors, customers and our business?</strong> The two best answers to that question are to have a business continuity plan (BCP) and to have a way to communicate and collaborate in the midst of an emergency.</p>
<p><strong>Start with a BCP.</strong> A BCP is a strategic plan to help identify and mitigate risk. Investopedia gives a great explanation:</p>
<blockquote><p>The creation of a strategy through the recognition of threats and risks facing a company, with an eye to ensure that personnel and assets are protected and able to function in the event of a disaster. Business continuity planning (BCP) involves defining potential risks, determining how those risks will affect operations, implementing safeguards and procedures designed to mitigate those risks, testing those procedures to ensure that they work, and periodically reviewing the process to make sure that it is up to date.</p></blockquote>
<p>Make sure you understand the basics of a BCP, and look for cues from organizations like FEMA for examples of how to approach emergency situations: <a href="http://www.ready.gov/business-continuity-planning-suite">http://www.ready.gov/business-continuity-planning-suite</a>. </p>
<p>Once you have a basic BCP in place, it&#8217;s important to be able to execute it when necessary &#8230; That&#8217;s where an emergency communication and collaboration solution comes into play. You need to streamline how you communicate when an emergency occurs, and if you&#8217;re relying on a manual process like a phone tree to spread the word and contact key stakeholders in the midst of an incident, you&#8217;re wasting time that could better be spent focusing to the issue at hand. An emergency communication solution automates that process quickly and logically.</p>
<p>When you create a BCP, you consider which people in your organization are key to responding to specific types of emergencies, and if anything ever happens, you want to get all of those people together. An emergency communication system will collect the relevant information, send it to the relevant people in your organization and seamlessly bridge them into a secured conference call. What would take minutes to complete now takes seconds, and when it comes to responding to these kinds of issues, seconds count. With everyone on a secure call, decisions can be made quickly and recorded to inform employees and stakeholders of what occurred and what the next steps are.</p>
<p>Plan for emergencies and hope that you never have to use that plan. Think about preparing for emergencies strategically, and it could make all the difference in the world. <a href="http://www.securequorum.com/">Secure Quorum</a> is a platform that makes it easy to communicate and collaborate quickly, reliably and securely in those high-stress situations, so if you&#8217;re interested getting help when it comes to responding to emergencies and incidents, visit our site at <a href="http://www.securequorum.com/">SecureQuorum.com</a> and check out the whitepaper we just published with one of our customers: <a href="http://www.securequorum.com/whitepapers/">Ease of Use: Make it Part of Your Software Decision</a>.</p>
<p>-Gerard Ibarra, CEO of <a href="http://www.securequorum.com/">Secure Quorum</a></p>
<div class="tpm-note">This guest blog series highlights companies in SoftLayer&#8217;s <a href="http://www.softlayer.com/partners/marketplace/index">Technology Partners Marketplace</a>. <br/>These <a href="http://blog.softlayer.com/partner-marketplace/">Partners</a> have built their businesses on the SoftLayer Platform, and we&#8217;re excited for them to tell their stories. New Partners will be added to the Marketplace each month, so stay tuned for many more come.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/secure-quorum-tech-partner-spotlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips from the Abuse Department: DMCA Takedown Notices</title>
		<link>http://blog.softlayer.com/2013/tips-from-the-abuse-department-dmca-takedown-notices/</link>
		<comments>http://blog.softlayer.com/2013/tips-from-the-abuse-department-dmca-takedown-notices/#comments</comments>
		<pubDate>Tue, 07 May 2013 17:05:23 +0000</pubDate>
		<dc:creator>Jennifer Groves</dc:creator>
				<category><![CDATA[Customer Service]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[abuse]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[customer]]></category>
		<category><![CDATA[DMCA]]></category>
		<category><![CDATA[infringement]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[OCILLA]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[SoftLayer abuse]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=10914</guid>
		<description><![CDATA[If you are in the web hosting business or you provide users with access to store content on your servers, chances are that you&#8217;re familiar with the Digital Millennium Copyright Act (DMCA). If you aren&#8217;t familiar with it, you certainly should be. All it takes is one client plagiarizing an article or using a filesharing [...]]]></description>
			<content:encoded><![CDATA[<p>If you are in the web hosting business or you provide users with access to store content on your servers, chances are that you&#8217;re familiar with the Digital Millennium Copyright Act (DMCA). If you aren&#8217;t familiar with it, you certainly should be. All it takes is one client plagiarizing an article or using a filesharing program unscrupulously, and you could find yourself the recipient of a scary DMCA notice from a copyright holder. We&#8217;ve talked before about <a href="http://blog.softlayer.com/2012/tips-from-the-abuse-department-part-1-reporting-abuse/">how to file a DMCA complaint</a> with SoftLayer, but we haven&#8217;t talked in detail about SoftLayer&#8217;s role in processing DMCA complaints or what you should do if you find yourself on the receiving end of a copyright infringement notification.</p>
<p>The most important thing to understand when it comes to the way the abuse team handles DMCA complaints is that our procedures aren&#8217;t just SoftLayer policy &mdash; they are the law. Our role in processing copyright complaints is essentially that of a middleman. In order to protect our <a href="http://en.wikipedia.org/wiki/Safe_harbor">Safe Harbor</a> status under the Online Copyright Infringement Liability Limitation Act (<a href="http://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act">OCILLA</a>), we must enforce any complaint that meets the legal <a href="http://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act#Notice_from_Copyright_Owner">requirements</a> of a takedown notice. That DMCA complaint must contain <a href="http://www.softlayer.com/support/legal/dmca">specific elements</a> and be properly formatted in order to be considered valid. </p>
<h3>Responding to a DMCA Complaint</h3>
<p style="margin-top:5px; padding-top:0;">When we receive a complaint that meets the legal requirements of a DMCA takedown notice, we must relay the complaint to our direct customer and enforce a deadline for removal of the violating material. We are obligated to remove access to infringing content when we are notified about it, and we aren&#8217;t able to make a determination about the validity of a claim beyond confirming that all DMCA requirements are met.</p>
<p>The law states that SoftLayer must act expeditiously, so if you receive notification of a DMCA complaint, it&#8217;s important that you acknowledge the ticket that the abuse department opened on your account and let us know your intended course of action. Sometimes that action is as simple as removing an infringing URL. Sometimes you may need to contact your client and instruct them to take the material down. Whatever the case may be, it&#8217;s important to be responsive and to expressly confirm when you have complied and removed the material. Failure to acknowledge an abuse ticket can result in disconnection of service, and in the case of copyright infringement, SoftLayer has a legal obligation to remove access to the material or we face serious liability.</p>
<h3>DMCA Counter Notifications</h3>
<p style="margin-top:5px; padding-top:0;">Most DMCA complaints are resolved without issue, but what happens if you disagree with the complaint? What if you own the material and a disgruntled former business partner is trying to get revenge? What if you wrote the content and the complaining party is copying your website? Thankfully there are penalties for filing a false DMCA complaint, but you also have recourse in the form of a counter notification. Keep in mind that while it may be tempting to plead your case to the abuse department, our role is not to play judge or jury but to allow the process to work as it was designed.</p>
<p>In some cases, you may be able to work out a resolution with the complaining party directly (misunderstandings happen, licenses lapse, etc.) and have them send a retraction, but most of the time your best course of action is to submit a counter notification.</p>
<p>Just as a takedown notice must be crafted in a specific way, counter notifications have their own <a href="http://www.softlayer.com/support/legal/dmca">set of requirements</a>. Once you have disabled the material identified in the original complaint, we can provide your valid, properly formatted counter notification to the complaining party. Unless we receive a court order from the complaining party within the legally mandated <a href="http://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act#Take_down_and_Put_Back_provisions">time frame</a> the material can be re-enabled and the case is closed for the time being.</p>
<p>While it might sound complicated, it&#8217;s actually pretty straightforward, but we urge you to do your research and make sure you know what to do in the event a client of yours is hit with a DMCA takedown notice. Just as we are unable to make judgment calls when it comes to takedown notices or counter notifications, we are also unable to offer any legal advice for you if you need help. Hopefully this post cleared up a few questions and misconceptions about how the abuse department handles copyright complaints. In short:</p>
<p><strong>Do</strong> take DMCA notifications seriously. You are at risk for service interruption and possible legal liability.<br />
<strong>Do</strong> respond to the abuse department letting them know the material has been disabled and, if applicable, if you plan to file a counter notification.<br />
<strong>Don&#8217;t</strong> refuse to disable the material. Even if you believe the claim is false and you wish to file a counter notification, the material must be disabled within the time period allotted by the abuse department or we have to block access to it.<br />
<strong>Don&#8217;t</strong> expect the abuse department to take sides.</p>
<p>As with any abuse issue, communication and responsiveness is important. Disconnecting your server is a last resort, but we have ethical and legal obligations to uphold. The DMCA process certainly has its weaknesses and it leaves a bit to be desired, but at the end of the day, it&#8217;s the law, and we have to operate inside of our legal obligation to it.</p>
<p>-Jennifer</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/tips-from-the-abuse-department-dmca-takedown-notices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iptables Tips and Tricks &#8211; Track Bandwidth with iptables</title>
		<link>http://blog.softlayer.com/2013/iptables-tips-and-tricks-track-bandwidth-with-iptables/</link>
		<comments>http://blog.softlayer.com/2013/iptables-tips-and-tricks-track-bandwidth-with-iptables/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 21:30:29 +0000</pubDate>
		<dc:creator>Mark Ridlen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[CSF]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=11025</guid>
		<description><![CDATA[As I mentioned in my last post about CSF configuration in iptables, I&#8217;m working on a follow-up post about integrating CSF into cPanel, but I thought I&#8217;d inject a simple iptables use-case for bandwidth tracking. You probably think about iptables in terms of firewalls and security, but it also includes a great diagnostic tool for [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in my last post about <a href="http://blog.softlayer.com/2013/iptables-tips-and-tricks-csf-configuration/">CSF configuration in iptables</a>, I&#8217;m working on a follow-up post about integrating CSF into cPanel, but I thought I&#8217;d inject a simple iptables use-case for bandwidth tracking. You probably think about iptables in terms of firewalls and security, but it also includes a great diagnostic tool for counting bandwidth for individual rules or set of rules. If you can block it, you can track it! </p>
<p>The best part about using iptables to track bandwidth is that the tracking is enabled by default. To see this feature in action, add the &#8220;-v&#8221; into the command:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">2495</span> packets, 104K bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>The output includes counters for both the policies and the rules. To track the rules, you can create a new chain for <code>tracking</code> bandwidth:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-N</span> tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
...
Chain tracking <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0</span> references<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination</pre></div></div>

<p>Then you need to set up new rules to match the traffic that you wish to track. In this scenario, let&#8217;s look at inbound http traffic on port 80:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-I</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">80</span> <span style="color: #660033;">-j</span> tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">35111</span> packets, 1490K bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
    <span style="color: #000000;">0</span> 	  <span style="color: #000000;">0</span> tracking    tcp  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	tcp dpt:<span style="color: #000000;">80</span></pre></div></div>

<p>Now let&#8217;s generate some traffic and check it again:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">35216</span> packets, 1500K bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
  <span style="color: #000000;">101</span>  <span style="color: #000000;">9013</span> tracking    tcp  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	tcp dpt:<span style="color: #000000;">80</span></pre></div></div>

<p>You can see the packet and byte transfer amounts to track the INPUT &mdash; traffic to a <strong>destination</strong> port on your server. If you want track the amount of data that the server is generating, you&#8217;d look for OUTPUT from the <strong>source</strong> port on your server:</p>
<p><span id="more-11025"></span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-I</span> OUTPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--sport</span> <span style="color: #000000;">80</span> <span style="color: #660033;">-j</span> tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
...
Chain OUTPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">26149</span> packets, 174M bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
  <span style="color: #000000;">488</span> 3367K tracking    tcp  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	tcp spt:<span style="color: #000000;">80</span></pre></div></div>

<p>Now that we know how the tracking chain works, we can add in a few different layers to get even more information. That way you can keep your INPUT and OUTPUT chains looking clean.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –N tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –N tracking2
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –I INPUT –j tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –I OUTPUT –j tracking
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –A tracking –p tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">80</span> –j tracking2
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables –A tracking –p tcp <span style="color: #660033;">--sport</span> <span style="color: #000000;">80</span> –j tracking2
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
&nbsp;
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">96265</span> packets, 4131K bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
 <span style="color: #000000;">4002</span>  184K tracking    all  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>
&nbsp;
Chain FORWARD <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">0</span> packets, <span style="color: #000000;">0</span> bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
&nbsp;
Chain OUTPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT <span style="color: #000000;">33751</span> packets, 231M bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
 <span style="color: #000000;">1399</span> 9068K tracking    all  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>
&nbsp;
Chain tracking <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span> references<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
 <span style="color: #000000;">1208</span> <span style="color: #000000;">59626</span> tracking2   tcp  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	tcp dpt:<span style="color: #000000;">80</span>
  <span style="color: #000000;">224</span> 1643K tracking2   tcp  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	tcp spt:<span style="color: #000000;">80</span>
&nbsp;
Chain tracking2 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span> references<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination</pre></div></div>

<p>Keep in mind that every time a packet passes through one of your rules, it will eat CPU cycles. Diverting all your traffic through 100 rules that track bandwidth may not be the best idea, so it&#8217;s important to have an efficient ruleset. If your server has eight processor cores and tons of overhead available, that concern might be inconsequential, but if you&#8217;re running lean, you could conceivably run into issues. </p>
<p>The easiest way to think about making efficient rulesets is to think about eating the largest slice of pie first. Understand <a href="http://blog.softlayer.com/2012/iptables-tips-and-tricks-rule-processing/">iptables rule processing</a> and put the rules that get more traffic higher in your list. Conversely, save the tiniest pieces of your pie for last. If you run all of your traffic by a rule that only applies to a tiny segment before you screen out larger segments, you&#8217;re wasting processing power.</p>
<p>Another thing to keep in mind is that you do not need to specify a target (in our examples above, we established <code>tracking</code> and <code>tracking2</code> as our targets). If you&#8217;re used to each rule having a specific purpose of either blocking, allowing, or diverting traffic, this simple tidbit might seem revolutionary. For example, we could use this rule:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-A</span> INPUT</pre></div></div>

<p>If that seems a little bare to you, don&#8217;t worry &#8230; It is! The output will show that it is a rule that tracks all traffic in the chain at that point. We&#8217;re appending the data to the end of the chain in this example (&#8220;<code>-A</code>&#8220;) but we could also insert it (&#8220;<code>-I</code>&#8220;) at the top of the chain instead. This command could be helpful if you are using a number of different chains and you want to see the exact volume of packets that are filtered at any given point. Additionally, this strategy could show how much traffic a potential rule would filter before you run it on your production system. Because having several of these kinds of commands can get a little messy, it&#8217;s also helpful to add comments to help sort things out:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-m</span> comment <span style="color: #660033;">--comment</span> <span style="color: #ff0000;">&quot;track all data&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>server ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ iptables <span style="color: #660033;">-vnL</span>
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy ACCEPT 11M packets, 5280M bytes<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 pkts bytes target 	prot opt <span style="color: #000000; font-weight: bold;">in</span> 	out 	<span style="color: #7a0874; font-weight: bold;">source</span>           	destination
   <span style="color: #000000;">98</span>  <span style="color: #000000;">9352</span>        	all  <span style="color: #660033;">--</span>  <span style="color: #000000; font-weight: bold;">*</span>  	<span style="color: #000000; font-weight: bold;">*</span>   	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>        	0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       	<span style="color: #000000; font-weight: bold;">/*</span> track all data <span style="color: #000000; font-weight: bold;">*/</span></pre></div></div>

<p>Nothing terribly complicated about using iptables to count bandwidth, right? If you have iptables rulesets and you want to get a glimpse at how your traffic is being affected, this little trick could be useful. You can rely on the information iptables gives you about your bandwidth usage, and you won&#8217;t be the only one &#8230; cPanel actually uses iptables to track bandwidth.</p>
<p>-Mark</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/iptables-tips-and-tricks-track-bandwidth-with-iptables/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iptables Tips and Tricks: CSF Configuration</title>
		<link>http://blog.softlayer.com/2013/iptables-tips-and-tricks-csf-configuration/</link>
		<comments>http://blog.softlayer.com/2013/iptables-tips-and-tricks-csf-configuration/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 18:10:39 +0000</pubDate>
		<dc:creator>Mark Ridlen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[APF]]></category>
		<category><![CDATA[blocking]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[CSF]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptab]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=10812</guid>
		<description><![CDATA[In our last &#8220;iptables Tips and Tricks&#8221; installment, we talked about Advanced Policy Firewall (APF) configuration, so it should come as no surprise that in this installment, we&#8217;re turning our attention to ConfigServer Security &#38; Firewall (CSF). Before we get started, you should probably run through the list of warnings I include at the top [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://blog.softlayer.com/2013/iptables-tips-and-tricks-apf-advanced-policy-firewall-configuration/">our last &#8220;iptables Tips and Tricks&#8221; installment</a>, we talked about Advanced Policy Firewall (APF) configuration, so it should come as no surprise that in this installment, we&#8217;re turning our attention to <a href="http://configserver.com/cp/csf.html">ConfigServer Security &amp; Firewall</a> (CSF). Before we get started, you should probably run through the list of warnings I include at the top of the APF blog post and make sure you have your Band-Aid ready in case you need it.</p>
<p>To get the ball rolling, we need to download CSF and install it on our server. In this post, we&#8217;re working with a CentOS 6.0 32-bit server, so our (root) terminal commands would look like this to download and install CSF:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.configserver.com<span style="color: #000000; font-weight: bold;">/</span>free<span style="color: #000000; font-weight: bold;">/</span>csf.tgz <span style="color: #666666; font-style: italic;">#Download CSF using wget.</span>
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf csf.tgz <span style="color: #666666; font-style: italic;">#Unpack it.</span>
$ yum <span style="color: #c20cb9; font-weight: bold;">install</span> perl-libwww-perl <span style="color: #666666; font-style: italic;">#Make sure perl modules are installed ...</span>
$ yum <span style="color: #c20cb9; font-weight: bold;">install</span> perl-Time-HiRes  <span style="color: #666666; font-style: italic;">#Otherwise it will generate an error.</span>
$ <span style="color: #7a0874; font-weight: bold;">cd</span> csf
$ .<span style="color: #000000; font-weight: bold;">/</span>install.sh <span style="color: #666666; font-style: italic;">#Install CSF.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#MAKE SURE YOU HAVE YOUR BAND-AID READY</span>
&nbsp;
$ <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>csf start <span style="color: #666666; font-style: italic;">#Start CSF. (Note: You can also use '$ service csf start')</span></pre></div></div>

<p>Once you start CSF, you can see a list of the default rules that load at startup. CSF defaults to a DROP policy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ iptables <span style="color: #660033;">-nL</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> policy
Chain INPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy DROP<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Chain FORWARD <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy DROP<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Chain OUTPUT <span style="color: #7a0874; font-weight: bold;">&#40;</span>policy DROP<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Don&#8217;t ever run &#8220;<code>iptables -F</code>&#8221; unless you want to lock yourself out. In fact, you might want to add &#8220;This server is running CSF &#8211; do not run &#8216;iptables -F&#8217;&#8221;  to your <code>/etc/motd</code>, just as a reminder/warning to others.</p>
<p>CSF loads on startup by default. This means that if you get locked out, a simple reboot probably won&#8217;t fix the problem. Runlevels 2, 3, 4, and 5 are all on:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ chkconfig <span style="color: #660033;">--list</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> csf
csf             <span style="color: #000000;">0</span>:off   <span style="color: #000000;">1</span>:off   <span style="color: #000000;">2</span>:on    <span style="color: #000000;">3</span>:on    <span style="color: #000000;">4</span>:on    <span style="color: #000000;">5</span>:on    <span style="color: #000000;">6</span>:off</pre></div></div>

<p>Some features of CSF will not work unless you have certain iptables modules installed. I believe they are installed by default in CentOS, but if you custom-built your iptables, they might not all be installed. Run this script to see if all modules are installed:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf<span style="color: #000000; font-weight: bold;">/</span>csftest.pl
Testing ip_tables<span style="color: #000000; font-weight: bold;">/</span>iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport<span style="color: #000000; font-weight: bold;">/</span>xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state<span style="color: #000000; font-weight: bold;">/</span>xt_state...OK
Testing ipt_limit<span style="color: #000000; font-weight: bold;">/</span>xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner<span style="color: #000000; font-weight: bold;">/</span>xt_owner...OK
Testing iptable_nat<span style="color: #000000; font-weight: bold;">/</span>ipt_REDIRECT...OK
Testing iptable_nat<span style="color: #000000; font-weight: bold;">/</span>ipt_DNAT...OK
&nbsp;
RESULT: csf should <span style="color: #000000; font-weight: bold;">function</span> on this server</pre></div></div>

<p>As I mentioned, this is the default iptables installation on a minimal CentOS 6.0 image, so chances are good that these modules are already installed on your system. It never hurts to check, though.</p>
<h3>The CSF Configuration File</h3>
<p>The primary CSF configuration is stored in the well-documented <code>/etc/csf/csf.conf</code> file. CSF is <em>extremely</em> configurable, so there are a lot of options to read over. Let&#8217;s take a look over some of the more important features:</p>
<p><span id="more-10812"></span></p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Testing</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">TESTING = <span style="color: #ff0000;">&quot;1&quot;</span>
TESTING_INTERVAL = <span style="color: #ff0000;">&quot;5&quot;</span></pre></div></div>

<p>This TESTING cron job runs every &#8220;5&#8243; minutes so you don&#8217;t lock yourself out when you&#8217;re testing your rules. When you are satisfied with your rules (and confident that you won&#8217;t lock yourself out), you can set TESTING to &#8220;0&#8243;.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Globally Allowed Ports</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Allow incoming TCP ports</span>
TCP_IN = <span style="color: #ff0000;">&quot;20,21,22,25,53,80,110,143,443,465,587,993,995&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Allow outgoing TCP ports</span>
TCP_OUT = <span style="color: #ff0000;">&quot;20,21,22,25,53,80,110,113,443&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Allow incoming UDP ports</span>
UDP_IN = <span style="color: #ff0000;">&quot;20,21,53&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Allow outgoing UDP ports</span>
<span style="color: #666666; font-style: italic;"># To allow outgoing traceroute add 33434:33523 to this list</span>
UDP_OUT = <span style="color: #ff0000;">&quot;20,21,53,113,123&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>Incoming Ping Requests</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Allow incoming PING</span>
ICMP_IN = <span style="color: #ff0000;">&quot;1&quot;</span></pre></div></div>

<p>Allowing ping is usually a good option for diagnostic purposes, so I don&#8217;t recommend turning it off. Disallowing ping is an example of &#8220;security through obscurity,&#8221; and it will not typically dissuade your attackers.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Ethernet Device</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ETH_DEVICE = <span style="color: #ff0000;">&quot;&quot;</span>
ETH6_DEVICE = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>Here, you can configure iptables to ONLY use one Ethernet adapter. You might want to only guard your public network adapter in some situations.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>IP Limit in Permanent &#8220;Deny&#8221; File</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">DENY_IP_LIMIT = <span style="color: #ff0000;">&quot;200&quot;</span></pre></div></div>

<p>A higher number here will obviously screen out more IP addresses in <code>csf.deny</code>, but higher numbers also may cause slowdowns.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>IP Limit in Temporary &#8220;Deny&#8221; File</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">DENY_TEMP_IP_LIMIT = <span style="color: #ff0000;">&quot;100&quot;</span></pre></div></div>

<p>Similar to DENY_IP_LIMIT, the DENY_TEMP_IP_LIMIT represents the maximum number of IPs that can be stored in the temporary ban list.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>SMTP Blocking</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SMTP_BLOCK = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>When set to &#8220;1&#8243;, SMTP_BLOCK does not completely block outbound SMTP, but it does block it for most users. This will prevent malicious scripts and compromised users from making outbound connections from unauthorized mail clients on the server. SMTP_BLOCK doesn&#8217;t stop those scripts from running, but it does stop them from functioning. Mail sent through the proper channels will still be delivered normally.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Allowing SMTP on localhost</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SMTP_ALLOWLOCAL = <span style="color: #ff0000;">&quot;1&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>Custom Mail Port Designation</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SMTP_PORTS = <span style="color: #ff0000;">&quot;25,465,587&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>Allowing SMTP Access to Users/Groups</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SMTP_ALLOWUSER = <span style="color: #ff0000;">&quot;&quot;</span>
SMTP_ALLOWGROUP = <span style="color: #ff0000;">&quot;mail,mailman&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>SYN Flood Protection</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SYNFLOOD = <span style="color: #ff0000;">&quot;0&quot;</span>
SYNFLOOD_RATE = <span style="color: #ff0000;">&quot;100/s&quot;</span>
SYNFLOOD_BURST = <span style="color: #ff0000;">&quot;150&quot;</span></pre></div></div>

<p>Per the documentation, you should only enable SYN flood protection (SYNFLOOD= &#8220;1&#8243;) if you are currently under a SYN flood attack.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Concurrent Connections Limit</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CONNLIMIT = <span style="color: #ff0000;">&quot;22;5,80;20&quot;</span>
PORTFLOOD = <span style="color: #ff0000;">&quot;22;tcp;5;300,80;tcp;20;5</span></pre></div></div>

<p>These options allow you to add customized DoS protection. CONNLIMIT handles the number of concurrent connections, and in this example, we&#8217;re limiting port 22 to 5 connections and port 80 to 20 connections.</p>
<p>PORTFLOOD on deals with connections per second. In this example, we&#8217;re limiting the TCP connection on port 22 to 5 connections/second with a quiet period of 300 seconds before the connection is unblocked. Additonally, we&#8217;re limiting the TCP connection on port 80 to 20 connections/second with a quiet period of 5 seconds before the connection is unblocked.</p>
<p>Check the <code>readme.txt</code> file for more information about the syntax.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Logging to Syslog</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">SYSLOG = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>When enabled, this option logs lfd (Login Failure Daemon) messages to syslog as well as to <code>/var/log/lfd.log</code>.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Dropping v. Rejecting Packets</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">DROP = <span style="color: #ff0000;">&quot;DROP&quot;</span></pre></div></div>

<p>This configuration allows you to either DROP or REJECT packets. REJECT tells the sender that the packet has been blocked by the firewall. DROP just drops the packet and does not send a response. I like DROP better for regular use, but REJECT might be more helpful if you need to diagnose a connectivity issue.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Logging Dropped Connections</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">DROP_LOGGING = <span style="color: #ff0000;">&quot;1&quot;</span></pre></div></div>

<p>This option logs dropped connections to syslog. I don&#8217;t see any reason to turn this off unless your hard drive is getting full.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Port Exceptions When Logging Dropped Connections</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">DROP_NOLOG = <span style="color: #ff0000;">&quot;67,68,111,113,135:139,445,500,513,520&quot;</span></pre></div></div>

<p>These ports are specifically blocked from being logged either to conserve hard drive space or make the log file easier to read.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>&#8220;Watch Mode&#8221;</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">WATCH_MODE = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>If you are ever stuck trying to troubleshoot a large ruleset, you might consider turning this option on. You can use it to track the actions to watched IP addresses to see where they are getting blocked or accepted.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Login Failure Daemon Alert</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_ALERT_TO = <span style="color: #ff0000;">&quot;&quot;</span>
LF_ALERT_FROM = <span style="color: #ff0000;">&quot;&quot;</span>
LF_ALERT_SMTP = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>You can specify an email address to report errors from the Login Failure Daemon, which tracks and automatically blocks brute force login attempts.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Permanent Blocks and NetBlocks</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_PERMBLOCK = <span style="color: #ff0000;">&quot;1&quot;</span>
LF_PERMBLOCK_INTERVAL = <span style="color: #ff0000;">&quot;86400&quot;</span>
LF_PERMBLOCK_COUNT = <span style="color: #ff0000;">&quot;4&quot;</span>
LF_PERMBLOCK_ALERT = <span style="color: #ff0000;">&quot;1&quot;</span>
LF_NETBLOCK = <span style="color: #ff0000;">&quot;0&quot;</span>
LF_NETBLOCK_INTERVAL = <span style="color: #ff0000;">&quot;86400&quot;</span>
LF_NETBLOCK_COUNT = <span style="color: #ff0000;">&quot;4&quot;</span>
LF_NETBLOCK_CLASS = <span style="color: #ff0000;">&quot;C&quot;</span>
LF_NETBLOCK_ALERT = <span style="color: #ff0000;">&quot;1&quot;</span></pre></div></div>

<p>These settings control the permanent block and netblock blocking. You probably don&#8217;t need to touch these settings, but you might want some additional security or less security depending on your company needs. If something gets permablocked, it will require your intervention to clear it, which might create downtime for your clients. Likewise, if a legitimate IP address happens to be part of a netblock which has an attacking IP address on it, it will get blocked if you have that feature turned on. A class C network encompasses 256 IP addresses. You can set this to class B or A, but that could block thousands or millions of IP addresses, respectively. Unless you find yourself under constant attack, I would advise you to leave that LF_NETBLOCK off.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Additional Protection During Updates</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Safe Chain Update. If enabled, all dynamic update chains (GALLOW*, GDENY*,</span>
<span style="color: #666666; font-style: italic;"># SPAMHAUS, DSHIELD, BOGON, CC_ALLOW, CC_DENY, ALLOWDYN*) will create a new</span>
<span style="color: #666666; font-style: italic;"># chain when updating, and insert it into the relevant LOCALINPUT/LOCALOUTPUT</span>
<span style="color: #666666; font-style: italic;"># chain, then flush and delete the old dynamic chain and rename the new chain.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This prevents a small window of opportunity opening when an update occurs and</span>
<span style="color: #666666; font-style: italic;"># the dynamic chain is flushed for the new rules.</span>
SAFECHAINUPDATE = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>Activating this option will increase your system resource usage and will require more rules to be running at one time, but it provides an additional layer of protection during updates. Without this option turned on, your rules will be flushed for a short amount of time, leaving your server vulnerable.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Multi-Server Deployment Options</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_GLOBAL = <span style="color: #ff0000;">&quot;0&quot;</span>
GLOBAL_ALLOW = <span style="color: #ff0000;">&quot;&quot;</span>
GLOBAL_DENY = <span style="color: #ff0000;">&quot;&quot;</span>
GLOBAL_IGNORE = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>Like APF, you can configure global lists for multiple server deployments. You&#8217;ll need to specify a URL of the text file with the IP addresses for the global lists.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>SPAMHAUSE Blocklist</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_SPAMHAUS = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>This option enables the SPAMHAUS blocklist. Specify the number of seconds between refreshes. Recommended setting is 86400 (1 day).</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking TOR Exit IP Addresses</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_TOR = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>Enabling this option will block TOR exit IP addresses. If you are not familiar with <a href="https://www.torproject.org/">TOR</a>, it is a completely anonymous proxy network. This could block some legitimate users who are trying to protect their anonymity, so I would recommend only turning this on if you are already under attack from a TOR exit address.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking Bogon Addresses</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_BOGON = <span style="color: #ff0000;">&quot;0&quot;</span>
LF_BOGON_URL = <span style="color: #ff0000;">&quot;http://www.cymru.com/Documents/bogon-bn-agg.txt&quot;</span>
LF_BOGON_SKIP = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>Blocking bogon addresses (addresses that should not be possible) is usually a good decision. To enable, set the number of seconds between refreshes. I recommend enabling this option and setting the refresh at 86400 (1 day). If you do so, be sure to add your private network adapters to the skip list.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Country-Specific Access to Your Server</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CC_DENY = <span style="color: #ff0000;">&quot;&quot;</span>
CC_ALLOW = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>With these options, you can block or allow entire countries from accessing your server. To do so, enter the country codes in a comma separated list. Even though this generates a lot of additional rules, it&#8217;s valuable to some sysadmins.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CC_ALLOW_FILTER = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>Alternatively, you can set your server to exclusively accept traffic from a list of country codes. All other countries not listed will have their traffic dropped. There are many other settings related to these options that I don&#8217;t have time to cover in this blog.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking Login Failures</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_TRIGGER = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>This enables blocking of login failures (per service). There are a lot of great customization options in this section.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Scanning Directories for Malicious Files</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_DIRWATCH = <span style="color: #ff0000;">&quot;300&quot;</span></pre></div></div>

<p>This feature scans <code>/tmp</code> and <code>/dev/shm</code> for potentially malicious files and alerts you to their presence based on the interval you designate. You can also have CSF automatically quarantine malicious files with this option:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_DIRWATCH_DISABLE = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>Distributed Attack Protection</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LF_DISTATTACK = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>By enabling this option, you activate additional protection against distributed attacks.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking Based on Abusive Email Usage</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LT_POP3D = <span style="color: #ff0000;">&quot;0&quot;</span>
LT_IMAPD = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>If a user checks email too many times per hour (more than the non-zero value specified), the user&#8217;s IP address is blocked.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Email Alert Following Block</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">LT_EMAIL_ALERT = <span style="color: #ff0000;">&quot;1&quot;</span></pre></div></div>

<p>This will send you email when something is blocked. I&#8217;d recommend leaving it on.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking IP Addresses Based on Number of Connections</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">CT_LIMIT = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>This feature tracks connections and blocks the IP if the number of connections is too high. Use caution because if you enable this option and set this value too low, it will block legitimate traffic.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Application-Level Protection</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">PT_LIMIT = <span style="color: #ff0000;">&quot;60&quot;</span></pre></div></div>

<p>This feature provides application level protection against malicious scripts that take a long time to execute.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Blocking Port Scanners</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">PS_INTERVAL = <span style="color: #ff0000;">&quot;300&quot;</span>
PS_LIMIT = <span style="color: #ff0000;">&quot;10&quot;</span></pre></div></div>

<p style="margin-bottom:0; padding-bottom:5px;"><strong>Enabling HTML User Interface for CSF</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">UI = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>CSF has a built-in HTML user interface. You can enable this by setting UI = &#8220;1&#8243;. There are a list of prerequisites for this option in the <code>readme.txt</code>.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Notifying Blocked IP Addresses</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MESSENGER = <span style="color: #ff0000;">&quot;0&quot;</span></pre></div></div>

<p>This option will notify blocked IP addresses when they have been blocked by the firewall.</p>
<p style="margin-bottom:0; padding-bottom:5px;"><strong>Port Knocking</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">PORTKNOCKING = <span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

<p>CSF supports port knocking, which is a technique that provides an additional layer of security. See <a href="http://www.portknocking.org/">http://www.portknocking.org/</a> for details. </p>
<h3>Allow and Deny Lists</h3>
<p>As we walked through the CSF configuration file, you saw that I referenced the <code>csf.deny</code> file, so it should come as no surprise that CSF also includes <code>csf.allow</code> to customize &#8220;allow&#8221; rules as well. If you are familiar with APF, these files have a very similar syntax &#8230; Each entry is made up of the same four components: <code>protocol|flow|port|IP</code>. The only real difference being that APF uses the colon as a delimiter while CSF uses the pipe:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#APF Version</span>
tcp:<span style="color: #000000; font-weight: bold;">in</span>:<span style="color: #007800;">d</span>=<span style="color: #000000;">48000</span>_48020:<span style="color: #007800;">s</span>=10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#CSF Version</span>
tcp<span style="color: #000000; font-weight: bold;">|</span><span style="color: #000000; font-weight: bold;">in</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #007800;">d</span>=<span style="color: #000000;">48000</span>_48020<span style="color: #000000; font-weight: bold;">|</span><span style="color: #007800;">s</span>=10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span></pre></div></div>

<p>Fortunately, replacing your colon with a pipe is a minimally invasive procedure that can be automated with a tool like vi.</p>
<h3>CSF Command Line Tool</h3>
<p>The command line tool for CSF is much more robust than the one for APF:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ csf <span style="color: #660033;">--help</span>
csf: v5.79 <span style="color: #7a0874; font-weight: bold;">&#40;</span>cPanel<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
ConfigServer Security <span style="color: #000000; font-weight: bold;">&amp;</span> Firewall
<span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000;">2006</span>-<span style="color: #000000;">2013</span>, Way to the Web Limited <span style="color: #7a0874; font-weight: bold;">&#40;</span>http:<span style="color: #000000; font-weight: bold;">//</span>www.configserver.com<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
Usage: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>csf <span style="color: #7a0874; font-weight: bold;">&#91;</span>option<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>value<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
Option              Meaning
-h, <span style="color: #660033;">--help</span>          Show this message
-l, <span style="color: #660033;">--status</span>        List<span style="color: #000000; font-weight: bold;">/</span>Show iptables configuration
-l6, <span style="color: #660033;">--status6</span>      List<span style="color: #000000; font-weight: bold;">/</span>Show ip6tables configuration
-s, <span style="color: #660033;">--start</span>         Start firewall rules
-f, <span style="color: #660033;">--stop</span>          Flush<span style="color: #000000; font-weight: bold;">/</span>Stop firewall rules <span style="color: #7a0874; font-weight: bold;">&#40;</span>Note: lfd may restart csf<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-r, <span style="color: #660033;">--restart</span>       Restart firewall rules
-q, <span style="color: #660033;">--startq</span>        Quick restart <span style="color: #7a0874; font-weight: bold;">&#40;</span>csf restarted by lfd<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-sf, <span style="color: #660033;">--startf</span>       Force CLI restart regardless of LF_QUICKSTART setting
-a, <span style="color: #660033;">--add</span> ip        Allow an IP and add to <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.allow
-ar, <span style="color: #660033;">--addrm</span> ip     Remove an IP from <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.allow and delete rule
-d, <span style="color: #660033;">--deny</span> ip       Deny an IP and add to <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.deny
-dr, <span style="color: #660033;">--denyrm</span> ip    Unblock an IP and remove from <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.deny
-df, <span style="color: #660033;">--denyf</span>        Remove and unblock all entries <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.deny
-g, <span style="color: #660033;">--grep</span> ip       Search the iptables rules <span style="color: #000000; font-weight: bold;">for</span> an IP match <span style="color: #7a0874; font-weight: bold;">&#40;</span>incl. CIDR<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-t, <span style="color: #660033;">--temp</span>          Displays the current list of temp IP entries and their TTL
-tr, <span style="color: #660033;">--temprm</span> ip    Remove an IPs from the temp IP ban and allow list
-td, <span style="color: #660033;">--tempdeny</span> ip ttl <span style="color: #7a0874; font-weight: bold;">&#91;</span>-p port<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>-d direction<span style="color: #7a0874; font-weight: bold;">&#93;</span>
                    Add an IP to the temp IP ban list. ttl is how long to
                    blocks <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>default:seconds, can use one suffix of h<span style="color: #000000; font-weight: bold;">/</span>m<span style="color: #000000; font-weight: bold;">/</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>.
                    Optional port. Optional direction of block can be one of:
                    <span style="color: #000000; font-weight: bold;">in</span>, out or inout <span style="color: #7a0874; font-weight: bold;">&#40;</span>default:<span style="color: #000000; font-weight: bold;">in</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
-ta, <span style="color: #660033;">--tempallow</span> ip ttl <span style="color: #7a0874; font-weight: bold;">&#91;</span>-p port<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>-d direction<span style="color: #7a0874; font-weight: bold;">&#93;</span>
                    Add an IP to the temp IP allow list <span style="color: #7a0874; font-weight: bold;">&#40;</span>default:inout<span style="color: #7a0874; font-weight: bold;">&#41;</span>
-tf, <span style="color: #660033;">--tempf</span>        Flush all IPs from the temp IP entries
-cp, <span style="color: #660033;">--cping</span>        PING all members <span style="color: #000000; font-weight: bold;">in</span> an lfd Cluster
-cd, <span style="color: #660033;">--cdeny</span> ip     Deny an IP <span style="color: #000000; font-weight: bold;">in</span> a Cluster and add to <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.deny
-ca, <span style="color: #660033;">--callow</span> ip    Allow an IP <span style="color: #000000; font-weight: bold;">in</span> a Cluster and add to <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.allow
-cr, <span style="color: #660033;">--crm</span> ip       Unblock an IP <span style="color: #000000; font-weight: bold;">in</span> a Cluster and remove from <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf.deny
-cc, <span style="color: #660033;">--cconfig</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>name<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>value<span style="color: #7a0874; font-weight: bold;">&#93;</span>
                    Change configuration option <span style="color: #7a0874; font-weight: bold;">&#91;</span>name<span style="color: #7a0874; font-weight: bold;">&#93;</span> to <span style="color: #7a0874; font-weight: bold;">&#91;</span>value<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">in</span> a Cluster
-cf, <span style="color: #660033;">--cfile</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Send <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">in</span> a Cluster to <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>csf<span style="color: #000000; font-weight: bold;">/</span>
-crs, <span style="color: #660033;">--crestart</span>    Cluster restart csf and lfd
-w, <span style="color: #660033;">--watch</span> ip      Log SYN packets <span style="color: #000000; font-weight: bold;">for</span> an IP across iptables chains
-m, <span style="color: #660033;">--mail</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>addr<span style="color: #7a0874; font-weight: bold;">&#93;</span>   Display Server Check <span style="color: #000000; font-weight: bold;">in</span> HTML or email to <span style="color: #7a0874; font-weight: bold;">&#91;</span>addr<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">if</span> present
-lr, <span style="color: #660033;">--logrun</span>       Initiate Log Scanner report via lfd
-c, <span style="color: #660033;">--check</span>         Check <span style="color: #000000; font-weight: bold;">for</span> updates to csf but <span style="color: #000000; font-weight: bold;">do</span> not upgrade
-u, <span style="color: #660033;">--update</span>        Check <span style="color: #000000; font-weight: bold;">for</span> updates to csf and upgrade <span style="color: #000000; font-weight: bold;">if</span> available
<span style="color: #660033;">-uf</span>                 Force an update of csf
-x, <span style="color: #660033;">--disable</span>       Disable csf and lfd
-e, <span style="color: #660033;">--enable</span>        Enable csf and lfd <span style="color: #000000; font-weight: bold;">if</span> previously disabled
-v, <span style="color: #660033;">--version</span>       Show csf version</pre></div></div>

<p>The command line tool will also tell you if the testing mode is enabled (which is a very useful feature). If TESTING were enabled, we&#8217;d see this line at the bottom of the output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">*</span>WARNING<span style="color: #000000; font-weight: bold;">*</span> TESTING mode is enabled - <span style="color: #000000; font-weight: bold;">do</span> not forget to disable it <span style="color: #000000; font-weight: bold;">in</span> the configuration</pre></div></div>

<p>Did you make it all the way through?! Great! I know it&#8217;s a lot to take in, but it&#8217;s not terribly complicated when we break it down and understand how each piece works. Next time, I&#8217;ll be back with some tips on integrating CSF into cPanel. </p>
<p>-Mark</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/iptables-tips-and-tricks-csf-configuration/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Startup Series: SPEEDILICIOUS</title>
		<link>http://blog.softlayer.com/2013/startup-series-speedilicious/</link>
		<comments>http://blog.softlayer.com/2013/startup-series-speedilicious/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 15:35:12 +0000</pubDate>
		<dc:creator>Joshua Krammes</dc:creator>
				<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Startup Series]]></category>
		<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[load times]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[partner]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=10510</guid>
		<description><![CDATA[Research from the Aberdeen Group shows the average website is losing 9% of its business because  the speed of the site frustrates visitors into leaving. 9% of your traffic might be leaving your site because they feel like it&#8217;s too slow. That thought is staggering, and any site owner would be foolish not to fix [...]]]></description>
			<content:encoded><![CDATA[<p>Research from the Aberdeen Group shows the average website is losing 9% of its business because  the speed of the site frustrates visitors into leaving. <strong>9% of your traffic</strong> might be leaving your site because they feel like it&#8217;s too slow. That thought is staggering, and any site owner would be foolish not to fix the problem. <a href="http://www.speedilicious.com/">SPEEDILICIOUS</a> &mdash; one of our new Catalyst partners &mdash; has an innovative solution that optimizes website performance and helps businesses deliver content to their end users faster. </p>
<p><a href="http://www.speedilicious.com/"><img class="centered" src="http://cdn.softlayer.com/innerlayer/SPEEDILICIOUS.png" alt="SPEEDILICIOUS"/></a></p>
<p>I recently had the chance to chat with SPEEDILICIOUS founders Seymour Segnit and Chip Krauskopf, and Seymour rephrased that &#8220;9%&#8221; statistic in a pretty alarming way: &#8220;Losing 9% of your business is the equivalent of simply allowing your website to go offline, down, dark, dead, 404 for over a MONTH each year!&#8221; There is ample data to back this up from high-profile sites like Amazon, Microsoft and Walmart.com, but intuitively, you know it already &#8230; A slow site (even a <em>slightly</em> slow site) is annoying.</p>
<p>The challenge many website owners have when it comes to their loading speeds is that problems might not be noticeable from their own workstations. Thanks to caching and the Internet connections most of us have, when we visit our own sites, we don&#8217;t have any trouble accessing our content quickly. Unfortunately, many of our customers don&#8217;t share that experience when they visit our sites on mobile, hotel, airports and (worst of all) conference connections. The most common approach to speeding up load times is to throw bigger servers or a CDN (content delivery network) at the problem, but while those improvements make a difference, they only address part of the problem &#8230; Even with the most powerful servers in SoftLayer&#8217;s fleet, your page can load at a crawl if your code can&#8217;t be rendered quickly by a browser.</p>
<p>That makes life as a website developer difficult. The process of optimizing code and tweaking settings to speed up load times can be time-consuming and frustrating. Or as Chip explained to me, &#8220;Speeding up your site is essential, it shouldn’t be be slow and complicated. We fix that problem.&#8221; Take a look:</p>
<div class="yt560"><iframe src="http://player.vimeo.com/video/39165053?title=0&amp;byline=0&amp;portrait=0&amp;color=ffffff" width="560" height="349" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div>
<p>The idea that your site performance can be sped up significantly overnight seems a little crazy, but if it works (which it clearly does), wouldn&#8217;t it be crazier not to try it? SPEEDILICIOUS offers a <a href="http://www.speedilicious.com/pricing/">$1 trial</a> for you to see the results on your own site, and they regularly host a <a href="http://www.speedilicious.com/welcome/6096/">free webinar</a> called &#8220;How to Grow Your Business 5-15% Overnight&#8221; which covers the critical techniques for speeding up any website.</p>
<p>As technology continues to improve and behavioral patterns of purchasing migrate away from the mall and onto our computers and smart phones, SPEEDILICIOUS has a tremendous opportunity to capture a ripe market. So they&#8217;re clearly a great fit for <a href="http://www.softlayer.com/partners/catalyst">Catalyst</a>. If you&#8217;re interested in learning more or would like to speak to Seymour, Chip or anyone on their team, please let me know and I&#8217;ll make the direct introduction any time.</p>
<p>-<a href="http://twitter.com/joshuakrammes">@JoshuaKrammes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/startup-series-speedilicious/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web Development &#8211; JavaScript Packaging</title>
		<link>http://blog.softlayer.com/2013/web-development-javascript-packaging/</link>
		<comments>http://blog.softlayer.com/2013/web-development-javascript-packaging/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 20:15:05 +0000</pubDate>
		<dc:creator>Philip Thompson</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[efficient]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[object oriented]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=10401</guid>
		<description><![CDATA[If you think of JavaScript as the ugly duckling of programming languages, think again! It got a bad rap in the earlier days of the web because developers knew enough just to get by but didn&#8217;t really respect it like they did Java, PHP or .Net. Like other well-known and heavily used languages, JavaScript contains [...]]]></description>
			<content:encoded><![CDATA[<p>If you think of JavaScript as the ugly duckling of programming languages, think again! It got a bad rap in the earlier days of the web because developers knew enough just to get by but didn&#8217;t really respect it like they did Java, PHP or .Net. Like other well-known and heavily used languages, JavaScript contains various data types (String, Boolean, Number, etc.), objects and functions, and it is even capable of inheritance. Unfortunately, that functionality is often overlooked, and many developers seem to implement it as an afterthought: &#8220;Oh, we need to add some neat jQuery effects over there? I&#8217;ll just throw some inline JavaScript here.&#8221; That kind of implementation perpetuates a stereotype that JavaScript code is unorganized and difficult to maintain, but it doesn&#8217;t have to be! I&#8217;m going to show you how easy it is to maintain and organize your code base by packaging your JavaScript classes into a single file to be included with your website.</p>
<p>There are a few things to cover before we jump into code: </p>
<ol>
<li><strong>JavaScript Framework</strong> &#8211; <a href="http://mootools.net/">Mootools</a> is my framework of choice, but you can use whatever <a href="http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks">JavaScript framework</a> you&#8217;d like.</li>
<li><strong>Classes</strong> &#8211; Because I see JavaScript as another programming language that I respect (and is capable of object-oriented-like design), I write classes for EVERYTHING. Don&#8217;t think of your JavaScript code as something you use once and throw away. Write your code to be generic enough to be reused wherever it&#8217;s placed. Object-oriented design is great for this! Mootools makes object-oriented design easy to do, so this point reinforces the point above.</li>
<li><strong>Class Files</strong> &#8211; Just like you&#8217;d organize your PHP to contain one class per file, I do the exact same thing with JavaScript. <em>Note: Each of the class files in the example below uses the class name appended with <code>.js</code>.</em></li>
<li><strong>Namespacing</strong> &#8211; I will be organizing my classes in a way that will only add a single property &mdash; PT &mdash; to the global namespace. I won&#8217;t get into the details of namespacing in this blog because I&#8217;m sure you&#8217;re already thinking, &#8220;The code! The code! Get on with it!&#8221; You can namespace whatever is right for your situation.</li>
</ol>
<p>For this example, our classes will be food-themed because &#8230; well &#8230; I enjoy food. Let&#8217;s get started by creating our base object:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/*
---
name: PT
description: The base class for all the custom classes
authors: [Philip Thompson]
provides: [PT]
...
*/</span>
<span style="color: #003366; font-weight: bold;">var</span> PT <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>We now have an empty object from which we&#8217;ll build all of our classes. We&#8217;ll go I will go into more details later about the comment section, but let&#8217;s build our first class: <strong>PT.Ham</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/*
---
name: PT.Ham
description: The ham class
authors: [Philip Thompson]
requires: [/PT]
provides: [PT.Ham]
...
*/</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    PT.<span style="color: #660066;">Ham</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// Custom code here...</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>As I mentioned in point three (above), PT.Ham should be saved in the file named PT.Ham.js. When we create second class, <strong>PT.Pineapple</strong>, we&#8217;ll store it in PT.Pineapple.js:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/*
---
name: PT.Pineapple
description: The pineapple class
authors: [Philip Thompson]
requires: [/PT]
provides: [PT.Pineapple]
...
*/</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    PT.<span style="color: #660066;">Pineapple</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// Custom code here...</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Our final class for this example will be <strong>PT.Pizza</strong> (I&#8217;ll let you guess the name of the file where PT.Pizza lives). Our PT.Pizza class will require that PT, PT.Ham and PT.Pineapple be present.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/*
---
name: PT.Pizza
description: The pizza class
authors: [Philip Thompson]
requires: [/PT, /PT.Ham, /PT.Pineapple]
provides: [PT.Pizza]
...
*/</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    PT.<span style="color: #660066;">Pizza</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// Custom code here that uses PT.Ham and PT.Pineapple...</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Before we go any further, let&#8217;s check out the comments we include above each of the classes. The comments are formatted for <a href="http://www.yaml.org/">YAML</a> &mdash; YAML Ain&#8217;t Markup Language (you gotta love recursive acronyms). These comments allow our parser to determine how our classes are related, and they help resolve dependencies. YAML&#8217;s pretty easy to learn and you only need to know a few basic features to use it. The YAML comments in this example are essential for our JavaScript package-manager &mdash; <a href="https://github.com/anutron/packager">Packager</a>. I won&#8217;t go into all the details about Packager, but simply mention a few commands that we&#8217;ll need to build our single JavaScript file.</p>
<p>In addition to the YAML comments in each of the class files, we also need to create a YAML file that will organize our code. This file &mdash; <strong>package.yml</strong> for this example &mdash; is used to load our separate JavaScript classes:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066;">name</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;PT&quot;</span>
description<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Provides our fancy PT classes&quot;</span>
authors<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;[Philip Thompson]&quot;</span>
version<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;1.0.0&quot;</span>
sources<span style="color: #339933;">:</span>
    <span style="color: #339933;">-</span> js<span style="color: #339933;">/</span>PT.<span style="color: #660066;">js</span>
    <span style="color: #339933;">-</span> js<span style="color: #339933;">/</span>PT.<span style="color: #660066;">Ham</span>.<span style="color: #660066;">js</span>
    <span style="color: #339933;">-</span> js<span style="color: #339933;">/</span>PT.<span style="color: #660066;">Pineapple</span>.<span style="color: #660066;">js</span>
    <span style="color: #339933;">-</span> js<span style="color: #339933;">/</span>PT.<span style="color: #660066;">Pizza</span>.<span style="color: #660066;">js</span></pre></div></div>

<p>package.yml shows that all of our PT* files are located in the js directory, one directory up from the package.yml file. Some of the properties in the YAML file are optional, and you can add much more detail if you&#8217;d like, but this will get the job done for our purposes. </p>
<p>Now we&#8217;re ready to turn back to Packager to build our packaged file. Packager includes an option to use PHP, but we&#8217;re just going to do it command-line. First, we need to register the new package (package.yml) we created for PT. If our JavaScript files are located in <code>/path/to/web/directory/js</code>, the package.yml file is in <code>/path/to/web/directory</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>packager register <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>directory</pre></div></div>

<p>This finds our package.yml file and registers our PT package. Now that we have our package registered, we can build it:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>packager build <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>directory<span style="color: #000000; font-weight: bold;">/</span>js<span style="color: #000000; font-weight: bold;">/</span>PT.all.js</pre></div></div>

<p>The Packager sees that our PT package is registered, so it looks at each of the individual class files to build a single large file. In the comments of each of the class files, it determines if there are dependencies and warns you if any are not found. </p>
<p>It might seem like a lot of work when it&#8217;s written out like this, but I can assure you that when you go through the process, it takes no time at all. The huge benefit of packaging our JavaScript is evident as soon as you start incorporating those JavaScript classes into your website &#8230; Because we have built all of our class files into a single file, we don&#8217;t need to include each of the individual JavaScript files into our website (much less include the inline JavaScript declarations that make you cringe). To streamline your implementation even further if you&#8217;re using your JavaScript package in a production deployment, I recommend that you <a href="http://blog.softlayer.com/2011/html5-javascript-web-development-part-i/">&#8220;minify&#8221;</a> your code as well.</p>
<p>See &#8230; Organized code is no longer just for server-side only languages. Treat your JavaScript kindly, and it will be your friend!</p>
<p>Happy coding!</p>
<p>-Philip</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/web-development-javascript-packaging/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tips and Tricks &#8211; jQuery Select2 Plugin</title>
		<link>http://blog.softlayer.com/2012/tips-and-tricks-jquery-select2-plugin/</link>
		<comments>http://blog.softlayer.com/2012/tips-and-tricks-jquery-select2-plugin/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 19:50:27 +0000</pubDate>
		<dc:creator>Cassandra Wolff</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Select2]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=9467</guid>
		<description><![CDATA[Web developers have the unique challenge of marrying coding logic and visual presentation to create an amazing user experience. Trying to find a balance between those two is pretty difficult, and it&#8217;s easy to follow one or the other down the rabbit hole. What&#8217;s a web developer to do? I&#8217;ve always tried to go the [...]]]></description>
			<content:encoded><![CDATA[<p>Web developers have the unique challenge of marrying coding logic and visual presentation to create an amazing user experience. Trying to find a balance between those two is pretty difficult, and it&#8217;s easy to follow one or the other down the rabbit hole. What&#8217;s a web developer to do?</p>
<p>I&#8217;ve always tried to go the &#8220;work smarter, not harder&#8221; route, and when it comes to balancing functionality and aesthetics, that usually means that I look around for plugins and open source projects that meet my needs. In the process of sprucing up an form, I came across <a href="http://ivaynberg.github.com/select2/">jQuery Select2</a>, and it quickly became one of my favorite plugins for form formatting. With minimal scripting and little modification, you get some pretty phenomenal results. </p>
<p>We&#8217;ve all encountered drop-down selection menus on web forms, and they usually look like this:</p>
<p><img class="centered" src="http://cdn.softlayer.com/innerlayer/select.jpg" alt="Option Select"/></p>
<p>Those basic drop-downs meet a developer&#8217;s need for functionality, but they aren&#8217;t winning any beauty pageants. Beyond the pure aesthetic concerns, when a menu contains dozens (or hundreds) of selectable options, it becomes a little unwieldy. That&#8217;s why I was so excited to find Select2.</p>
<p>With Select2, you can turn the old, plain, boring-looking select boxes into beautiful, graceful and more-than-functional select widgets:</p>
<p><img class="centered" src="http://cdn.softlayer.com/innerlayer/selectpretty.jpg" alt="Pretty Option Select"/></p>
<p>Not only is the overall presentation of the data improved, Select2 also includes an auto-complete box. A user can narrow down the results quickly ad easily, and if you&#8217;ve got some of those endlessly scrolling select boxes of country names or currencies, your users will absolutely notice the change (and love you for it).</p>
<p>What&#8217;s even sexier than the form facelift is that you can add the plugin to your form in a matter of minutes.</p>
<p>After we <a href="https://github.com/ivaynberg/select2/tags">download Select2</a> and upload it to our box, we add our the jQuery library and scripts to the <code>&lt;head&gt;</code> of our document:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jquery.js&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span> 
<span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;select2.js&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>For the gorgeous styling, we&#8217;ll also add Select2&#8242;s included style sheet:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;select2.css&quot;</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span><span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Before we close our <code>&lt;head&gt;</code> tag, we invoke the Select2 function:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#selectPretty&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">select2</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>At this point, Select2 is locked and load, and we just have to add the <code>#selectPretty</code> ID to the <code>select</code> element we want to improve:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>select id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;selectPretty&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Option1&quot;</span><span style="color: #339933;">&gt;</span>Option <span style="color: #CC0000;">1</span><span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Option2&quot;</span><span style="color: #339933;">&gt;</span>Option <span style="color: #CC0000;">2</span><span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Option3&quot;</span><span style="color: #339933;">&gt;</span>Option <span style="color: #CC0000;">3</span><span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Option4&quot;</span><span style="color: #339933;">&gt;</span>Option <span style="color: #CC0000;">4</span><span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>select<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Notice: the <code>selectPretty</code> ID is what we defined when we invoked the Select2 function in our <code>&lt;head&gt;</code> tag.</p>
<p>With miniscule coding effort, we&#8217;ve made huge improvements to the presentation of our usually-boring select menu. It&#8217;s so easy to implement that even the most black-and-white coding-minded web developers can add some pizzazz to their next form without having to get wrapped up in styling!</p>
<p>-Cassandra</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/tips-and-tricks-jquery-select2-plugin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Demystifying Social Media: Get Involved</title>
		<link>http://blog.softlayer.com/2012/demystifying-social-media-get-involved/</link>
		<comments>http://blog.softlayer.com/2012/demystifying-social-media-get-involved/#comments</comments>
		<pubDate>Wed, 29 Aug 2012 17:30:23 +0000</pubDate>
		<dc:creator>Rachel Katz</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[Gary Vaynerchuk]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[strategies]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=9165</guid>
		<description><![CDATA[A few weeks back, Kevin handed me The Thank You Economy by Gary Vaynerchuk and said we should give it a read. I&#8217;m only halfway through it, but I thought I should share some of Vaynerchuk&#8217;s insights on social media with the SoftLayer blog audience while they are still fresh in my mind. The best [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks back, Kevin handed me <em><a href="http://thankyoueconomybook.com/">The Thank You Economy</a></em> by Gary Vaynerchuk and said we should give it a read. I&#8217;m only halfway through it, but I thought I should share some of Vaynerchuk&#8217;s insights on social media with the SoftLayer blog audience while they are still fresh in my mind. </p>
<p>The best summary of <em>The Thank You Economy</em> comes straight from its pages: </p>
<blockquote><p>&#8220;<em>The Thank You Economy</em> explains how businesses must learn to adapt their marketing strategies to take advantage of platforms that have completely transformed consumer culture and society as a whole.&#8221;</p></blockquote>
<p>The book looks at how human nature hasn&#8217;t changed, but everything else has. The rise of social media is as game-changing as the radio and the television were, and that presents a combination of challenge and opportunity for businesses. In Vaynerchuk&#8217;s words, &#8220;What we call social media is not media, nor is it even a platform. It is a massive cultural shift that has profoundly affected the way society uses the greatest platform ever invented, the Internet.&#8221; </p>
<p>I&#8217;ve been &#8220;in the trenches&#8221; with SoftLayer&#8217;s <a href="http://blog.softlayer.com/2012/social-media-and-the-softlayer-server-challenge/">social media presences</a> for over a year now, and I realized that I take advantage of the fundamental openness of the company. Vaynerchuk urges businesses to dive into social media, and he shares some of most common reasons companies aren&#8217;t getting involved &mdash; I could list all eleven reasons here, but you&#8217;d probably recognize them all as excuses you&#8217;ve heard.* The common theme: People (and companies) fear uncertainty, and while that fear is understandable, it shouldn&#8217;t be paralyzing. The opportunity and necessity of engagement outweigh the excuses.</p>
<p>When you clear all the hurdles preventing your entrance to the world of social media, you need to execute. Vaynerchuk explains how &#8220;Cultural Building Blocks&#8221; of a company dictate that company&#8217;s success in social media, and while they aren&#8217;t exactly an Easy Bake Oven recipe to viral success, they are profound in their simplicity:</p>
<ol>
<li>Begin with Yourself</li>
<li>Commit Whole Hog</li>
<li>Set the Tone</li>
<li>Invest in Employees</li>
<li>Trust Your People</li>
<li>Be Authentic</li>
</ol>
<p>The &#8220;trust your people&#8221; and &#8220;be authentic&#8221; building blocks resonated the most when I thought of how SoftLayer&#8217;s social media is managed. The level of trust my boss has in me is both refreshing and challenging, and I find myself working harder to prove I deserve it. A cynic might read that sentence and scoff at its over-the-top positivity, but I&#8217;m as honest as I can be &#8230; And that&#8217;s an example of the challenge of being authentic. SoftLayer employees are passionate about their responsibilities and the <a href="http://blog.softlayer.com/culture/">company culture</a>, and that kind of enthusiasm is so rare that there&#8217;s a tendency to assume that it&#8217;s manufactured. </p>
<p>If I see someone talking to us via social media about a bad experience at SoftLayer, I&#8217;m more concerned about changing their experience than I am about what they share with their social network. Often, when I follow up with those customers, when the problem is resolved, it&#8217;s amazing how surprised people are that someone actually took the time to make things right. I <strong>want</strong> to hear if someone has a bad experience because I take pride in turning it around. Are we &#8220;in control&#8221; of what people say about SoftLayer on social media? No. We <em>are</em> in control of how SoftLayer responds to what people are saying about us, though. </p>
<p><strong>Your business needs to be active in social media.</strong></p>
<p>You don&#8217;t need a &#8220;social media team&#8221; or a budget or a strategy &#8230; You need to be passionate about your employees, customers and products, and you need to make time to reach out to your community &mdash; wherever they are.</p>
<p>What roadblocks have you run into when it comes to your business&#8217;s social media engagement? If you&#8217;ve been successful, what tips could you share with me (and the rest of the SoftLayer audience)?</p>
<p>-Rachel</p>
<p>*If you&#8217;re toying with the idea of social media engagement or you&#8217;re working for a company that hasn&#8217;t embraced it yet, it&#8217;s worth it for you to <a href="http://www.amazon.com/The-Thank-Economy-Gary-Vaynerchuk/dp/0061914185/">buy <em>The Thank You Economy</a></em> to read how <a href="https://twitter.com/garyvee">@garyvee</a> dismantles those excuses.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/demystifying-social-media-get-involved/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tips and Tricks &#8211; How to Use SFTP</title>
		<link>http://blog.softlayer.com/2012/tips-and-tricks-how-to-use-sftp/</link>
		<comments>http://blog.softlayer.com/2012/tips-and-tricks-how-to-use-sftp/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 19:38:08 +0000</pubDate>
		<dc:creator>Lyndell Rottmann</dc:creator>
				<category><![CDATA[Customer Service]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[manage]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[walkthrough]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=7619</guid>
		<description><![CDATA[Too often, new customers can get overwhelmed by a small administrative task on a Linux server. One of the more common questions I see in technical support is when a drive partition runs out of space. The website appears offline, and on of my coworkers advises you to just free-up some space. &#8220;Just?! Where can [...]]]></description>
			<content:encoded><![CDATA[<p>Too often, new customers can get overwhelmed by a small administrative task on a Linux server. One of the more common questions I see in technical support is when a drive partition runs out of space. The website appears offline, and on of my coworkers advises you to just free-up some space. &#8220;Just?! Where can I find files that are deletable without affecting my website?&#8221;</p>
<p>Don&#8217;t worry &#8230; it&#8217;s really quit simple. If you can use FTP (File Transfer Protocol), you can handle this bit of server management. Depending on the exact problem, we might instruct you to free up space by removing files in one of the following directories:</p>
<ul>
<li><code>/var/log</code></li>
<li><code>/usr/local/cpanel</code></li>
<li><code>/usr/local/apache/logs</code></li>
<li><code>/usr/local/apache/domlogs</code></li>
</ul>
<p>The reason these directories are usually overlooked is because they are not accessible by normal FTP users &mdash; users who only upload website content. When you upload website content to the server via FTP, the FTP user is limited to the directory structure for that website. Directories starting with &#8220;<code>/var</code>&#8221; and &#8220;<code>/usr</code>&#8221; cannot be accessed by these non-root users (The &#8220;root&#8221; user can access anything). And while root is a powerful user, for the sake of security, it is not normally allowed to log in over FTP because FTP is not secure &#8230; That&#8217;s where SFTP (Secure File Transfer Protocol) comes in.</p>
<p>Most FTP clients support SFTP, so you don&#8217;t have to learn a new environment to securely access any file on the server. Every FTP client is different, but I&#8217;ll illustrate with <a href="http://filezilla-project.org/">FileZilla</a> because it&#8217;s free and available on Mac, Windows and Linux. If you don&#8217;t already have an FTP client, I highly recommend FileZilla. Because there are a few ways to use FileZilla to get an SFTP connection, I can share different options for you to try:</p>
<p style="margin-bottom:0; padding-bottom:0;"><strong>Quick Connect</strong></p>
<p style="margin-top:0; padding-top:0;">The Quick Connect bar is the quickest way to connect to your server. Start FileZilla and look immediately under the toolbar for the Quick Connect bar:</p>
<p><a href="http://cdn.softlayer.com/innerlayer/fzquickconnect.png"><img class="centered" src="http://cdn.softlayer.com/innerlayer/fzquickconnect_sm.png" alt="SFTP Tutorial"/></a></p>
<p>Enter the hostname (IP address or domain name), “root” in the Username field, the root password in the Password field, and “22″ in the port field. Remember, port 22 is for SFTP, the same as SSH.  Click the Quickconnect button to connect.</p>
<p style="margin-bottom:0; padding-bottom:0;"><strong>Using the Site Manager</strong></p>
<p style="margin-top:0; padding-top:0;">The Site Manager lets you save your login details. Start FileZilla and you&#8217;ll see the following:</p>
<p><a href="http://cdn.softlayer.com/innerlayer/fzsitemanager.png"><img class="centered" src="http://cdn.softlayer.com/innerlayer/fzsitemanager_s.png" alt="SFTP Tutorial"/></a></p>
<p>To open the Site Manager, click the left-most icon in tool bar or go to <code>File &gt;&gt; Site Manager</code> in the menu.</p>
<p><a href="http://cdn.softlayer.com/innerlayer/fznewsite.png"><img class="centered" src="http://cdn.softlayer.com/innerlayer/fznewsite_s.png" alt="SFTP Tutorial"/></a></p>
<p>Enter an IP address or domain name for your server in the Host field, and select &#8220;SFTP&#8221; as your protocol. You&#8217;ll enter the root user&#8217;s login information, and you&#8217;re ready to connect by clicking the &#8220;Connect&#8221; button or you can click the &#8220;OK&#8221; button to save and close the dialog box.</p>
<p>If you just saved your settings and the Site Manager is not open, click the Site Manager icon again. From there, you can select the site under the &#8220;Select Entry&#8221; box, and you just have to click &#8220;Connect&#8221; to initiate the SFTP connection with your saved settings.</p>
<p>If you see a pop-up that warns of an &#8220;Unknown host key,&#8221; clicking the &#8220;Always trust this host, add this key to the cache&#8221; option will prevent this interruption from showing in the future. Once you click &#8220;OK&#8221; to complete the connection, your FileZilla screen should look like this:</p>
<p><a href="http://cdn.softlayer.com/innerlayer/fzrootlogin.png"><img class="centered" src="http://cdn.softlayer.com/innerlayer/fzrootlogin_s.png" alt="SFTP Tutorial"/></a></p>
<p>Notice the &#8220;Remote site&#8221; section on the middle right of the FileZilla screen:</p>
<p><a href="http://cdn.softlayer.com/innerlayer/fzremotesite.png"><img class="centered" src="http://cdn.softlayer.com/innerlayer/fzremotesite_s.png" alt="SFTP Tutorial"/></a></p>
<p>This area in FileZilla is the directory and file listing of the server. Navigate the server&#8217;s file structure here, and click &#8220;<code>/</code>&#8221; to access the top of the folder structure. You should see the &#8220;<code>/usr</code>&#8221; and &#8220;<code>/var</code>&#8221; directories, and you can explore the filesystem to delete the files technical support recommended to create space!</p>
<p style="margin-bottom:0; padding-bottom:0;"><strong>Message Log</strong></p>
<p style="margin-top:0; padding-top:0;">If you have a problem connecting to your server by FTP or SFTP, the open area below the Quickconnect bar is the Message Log. If you can copy and paste this text into a ticket, you&#8217;ll help technical support troubleshoot your connection problems. Below is an example log of a successful FTP session:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Status: Connecting to server.example.com...
Response:   fzSftp started
Command:    open <span style="color: #ff0000;">&quot;root@server.example.com&quot;</span> <span style="color: #000000;">22</span>
Command:    Trust new Hostkey: Once
Command:    Pass: <span style="color: #000000; font-weight: bold;">**********</span>
Status: Connected to server.example.com
Status: Retrieving directory listing...
Command:    <span style="color: #7a0874; font-weight: bold;">pwd</span>
Response:   Current directory is: <span style="color: #ff0000;">&quot;/root&quot;</span>
Command:    <span style="color: #c20cb9; font-weight: bold;">ls</span>
Status: Listing directory <span style="color: #000000; font-weight: bold;">/</span>root
Status: Calculating timezone offset of server...
Command:    mtime <span style="color: #ff0000;">&quot;.lesshst&quot;</span>
Response:   <span style="color: #000000;">1326387703</span>
Status: Timezone offsets: Server: <span style="color: #660033;">-21600</span> seconds. Local: <span style="color: #660033;">-21600</span> seconds. Difference: <span style="color: #000000;">0</span> seconds.
Status: Directory listing successful</pre></div></div>

<p>And here&#8217;s an example of a failed connection:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Status: Resolving address of example.com
Status: Connecting to 192.0.43.10:<span style="color: #000000;">21</span>...
Error:  Connection timed out
Error:  Could not connect to server
Status: Waiting to retry...
Status: Resolving address of example.com
Status: Connecting to 192.0.43.10:<span style="color: #000000;">21</span>...
Error:  Connection attempt interrupted by user</pre></div></div>

<p>If you have any questions, leave them in a comment below. Enjoy your new-found SFTP powers!</p>
<p>-Lyndell</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/tips-and-tricks-how-to-use-sftp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>14 Questions Every Business Should Ask About Backups</title>
		<link>http://blog.softlayer.com/2012/14-questions-every-business-should-ask-about-backups/</link>
		<comments>http://blog.softlayer.com/2012/14-questions-every-business-should-ask-about-backups/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 16:18:38 +0000</pubDate>
		<dc:creator>Kevin Hazard</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[back up]]></category>
		<category><![CDATA[Backups]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data protection]]></category>
		<category><![CDATA[disaster]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[redundancy]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=6892</guid>
		<description><![CDATA[Unfortunately, having &#8220;book knowledge&#8221; (or in this case &#8220;blog knowledge&#8221;) about backups and applying that knowledge faithfully and regularly are not necessarily one and the same. Regardless of how many times you hear it or read it, if you aren&#8217;t actively protecting your data, YOU SHOULD BE. Here are a few questions to help you [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately, having &#8220;book knowledge&#8221; (or in this case &#8220;blog knowledge&#8221;) about backups and applying that knowledge faithfully and regularly are not necessarily one and the same. Regardless of how many times you hear it or read it, if you aren&#8217;t actively protecting your data, <strong>YOU SHOULD BE</strong>.</p>
<p>Here are a few questions to help you determine whether your data is endangered:</p>
<ol style="margin-bottom:10px;">
<li>Is your data backed up?</li>
<li>How often is your data backed up?</li>
<li>How often do you test your backups?</li>
<li>Is your data backed up externally from your server?</li>
<li>Are your backups in another data center?</li>
<li>Are your backups in another city?</li>
<li>Are your backups stored with a different provider?</li>
<li>Do you have local backups?</li>
<li>Are your backups backed up?</li>
<li>How many people in your organization know where your backups are and how to restore them?</li>
<li>What&#8217;s the greatest amount of data you might lose in the event of a server crash before your next backup?</li>
<li>What is the business impact of that data being lost?</li>
<li>If your server were to crash and the hard drives were unrecoverable, how long would it take you to restore all of your data?</li>
<li>What is the business impact of your data being lost or inaccessible for the length of time you answered in the last question?</li>
</ol>
<p>We can all agree that the idea of backups and data protection is a great one, but when it comes to investing in that idea, some folks change their tune. While each of the above questions has a &#8220;good&#8221; answer when it comes to keeping your data safe, your business might not need &#8220;good&#8221; answers to all of them for your data to be backed up sufficiently. You should understand the value of your data to your business and invest in its protection accordingly. </p>
<p>For example, a million-dollar business running on a single server will probably value its backups more highly than a hobbyist with a blog she contributes to once every year and a half. The million-dollar business <em>needs</em> more &#8220;good&#8221; answers than the hobbyist, so the business should invest more in the protection of its data than the hobbyist. </p>
<p>If you haven&#8217;t taken time to quantify the business impact of losing your primary data (questions 11-14), sit down with a pencil and paper and take time to thoughtfully answer those questions for your business. Are any of those answers surprising to you? Do they make you want to reevaluate your approach to backups or your investment in protecting your data?</p>
<p>The funny thing about backups is that you don&#8217;t need them until you <strong>NEED</strong> them, and when you <strong>NEED</strong> them, you&#8217;ll usually want to kick yourself if you don&#8217;t have them.</p>
<p>Don&#8217;t end up kicking yourself.</p>
<p>-<a href="http://twitter.com/khazard">@khazard</a></p>
<p>P.S. SoftLayer has a ton of amazing backup solutions but in the interested of making this post accessible and sharable, I won&#8217;t go crazy linking to them throughout the post. The latest product release that got me thinking about this topic was the <a href="http://www.softlayer.com/services/storagelayer/object-storage">SoftLayer Object Storage</a> launch, and if you&#8217;re concerned about your answers to any of the above questions, object storage may be an economical way to easily get some more &#8220;good&#8221; answers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/14-questions-every-business-should-ask-about-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
