Securing Apache X-Frame-Options


If specific origins are not listed or set to DENY, or SAMEORIGIN, a site can be vulnerable to embedded 3rd party code on embedded frames or embedded iframes.

Remediation Options

For servers running Apache web server, this can be addressed by adding the line below to the apache2.conf/httpd.conf file or to your .htaccess file if you need different options for each site and you have multiple sites on the same server.

Header always append X-Frame-Options SAMEORIGIN

Variations Allowed

Even if you still need content from multiple sites there are multiple ways to configure X-Frame-Options. Below is a table explaining the different options and I will provide some examples as well.

Setting Description
SAMEORIGIN Allows a page to be displayed in a frame or iframe as long as it’s from the same origin
DENY Disallows page to be displayed in a frame or iframe regardless of its origin
ALLOW-FROM Allows a specific white list of origins that pages in frames and iframes are permitted from, else all others are implicitly denied
 Header always append X-Frame-Options SAMEORIGIN
 Header always append X-Frame-Options DENY
 Header always append X-FRAME-OPTIONS ALLOW-FROM

Final Notes

If X-Frame-Options are declared in a global location such as the apache configuration file a restart of the apache service will be required for this setting to take effect. If implementing in the .htaccess file this will not require a restart of apache.

Quick and Dirty SOCKS Proxy From Mac

Purpose of SOCKS Proxy

If you need to access specific internal web pages and don’t want/need to use a VPN, or if you need to test something from another area of the world this is where SOCKS proxies can come in handy. For the sake of an explanation I’ll give a scenario. Let’s say your company has a geolocation service that automatically detects the region the user’s public IP is coming from and uses that to determine which pages get served. This is a common scenario with global applications that serve South America as much of that region speaks Spanish, however Brazil speaks Portuguese. With the geo-ip detection running on your servers if a Brazilian IP is detected the Portuguese site will be served rather than the standard South American sites. To test this functionality you can simply spin up a micro instance in AWS in the Sau Paulo Brazil region, then in your Security Group open port 22 for SSH as well as the port you’ll use for your SOCKS proxy (I’ll use 1080 in this example). Technically speaking you can use any unassigned port, but generally speaking the commonly used proxy ports are 1024 and 1080.


Making the Connection (Mac or Linux)

Now that you have your instance spun up and your security groups modified to open the port, you’ll be able to create the connection using the syntax below in your terminal:

ssh -D 1080 user@ip-or-hostname


Once you have authenticated and established connection we are halfway there. The last remaining step is to tell either your system or browser to forward traffic over localhost (which will then forward over the proxy.


Setting Up the Proxy in Firefox

I have chosen Firefox for this example because I primarily use Chrome and don’t want to clear cache just for a quick dirty test, and Firefox is also stupidly easy to configure SOCKS proxy settings for. First in your address bar type about:config


When you see the above warning go ahead and click the blue button to continue. Then on the next screen type “network.proxy” in the search:


Once you’ve done this you’ll want to change the following items (note these are listed in bold in the screenshot)


Preference Name
network.proxy.socks_port 1080 (or your port number)
network.proxy.socks_version 4
network.proxy.type 1



Validating Functionality

Now that you’ve made these changes in firefox visit or Google what’s my ip. Your public IP should match the remote box you are SOCKS proxied to. If this is the case you are all set to test, if not you will need to go back and verify your settings.


It is possible to setup a system wide SOCKS proxy but for this purpose I wanted to provide the least intrusive and easiest quick dirty way to test remote functionality via a super simple SOCKS proxy.

Happy Holidays! A Year in Review

Seasons Greetings,

A lot has changed in the past year since I started this blog. Today marks the 1 year anniversary of my blog site. A year ago I was a Systems Administrator for a small company with about 100 users, 4 VMware nodes in a cluster and a largely Windows environment and days away from passing my MCSA Certification. Over the past year as I reflect I’ve moved to an MSP providing support for thousands of servers on different OS and architectures, different hypervisors, learned SaltStack, became proficient in managed switching environments and got up to speed with F5 Load Balancers. In this time I’ve also gathered up Linux +, Hyper-V, Citrix Xen, and LPIC 1 certifications. What a wild ride this has been. I have nearly doubled my salary and grown in so many ways technically. One of the things that has become apparent to me is that the quest for knowledge must also be tempered with quality time with family and friends. It’s easy for a year to go by in an instant and work your heart out, but it’s equally important if not more important to maintain a balance between work and life beyond work. That said I do enjoy time with my home lab, still love what I do for a living, and have enjoyed engaging in the technical community, learning from others and mentoring others to grow their skills and careers. I want to spend a moment and be sentimental (which doesn’t happen for me as often as it should) and thank my wife, my dear friends, and my colleagues for making this life worth living and for standing by my side and putting up with the late night calls, untimely outages, and other fun that comes with the life of Server Operations. Looking forward to a new and killer year in 2016. Thank you all for reading and supporting my endeavors, feel free to reach out to me if you want to see any specific new content in the coming year. Have a happy and safe holiday!