Showing posts sorted by relevance for query pci compliant. Sort by date Show all posts
Showing posts sorted by relevance for query pci compliant. Sort by date Show all posts

Jun 5, 2012

How To Force SSL 3.0 or TLS 1.0

My day job handles a lot of sensitive data. Because of that we are required by a lot of our partners to perform frequent penetration testing on our public facing servers to determine if they are vulnerable to attack. I think it's great! I mean, I think all companies should scan their public facing stuff to identifiy potential problems and fix them before bad things happen. It would have saved Sony a world of bad publicity if they had done it don't you think?

Well luckily we are required to, so I get to oversee this. Without giving too much away, our last scan went pretty well but the big thing we were hit on was the fact that our secure web servers offered the ability to connect using SSL v2. There are several problems with SSL v2 according to Wikipedia:

  • Identical cryptographic keys are used for message authentication and encryption.
  • SSL 2.0 has a weak MAC construction that uses the MD5 hash function with a secret prefix, making it vulnerable to length extension attacks.
  • SSL 2.0 does not have any protection for the handshake, meaning a man-in-the-middle downgrade attack can go undetected.
  • SSL 2.0 uses the TCP connection close to indicate the end of data. This means that truncation attacks are possible: the attacker simply forges a TCP FIN, leaving the recipient unaware of an illegitimate end of data message (SSL 3.0 fixes this problem by having an explicit closure alert).
  • SSL 2.0 assumes a single service and a fixed domain certificate, which clashes with the standard feature of virtual hosting in Web servers. This means that most websites are practically impaired from using SSL.

If SSL v2 sucks so bad, then isn't it disabled by default at the server level? In a word, Nope! It is disabled at the client level in modern browsers, but if you stand up a fresh IIS server or Apache server and put an SSL certificate on it then call it a day, guess what, that puppy will accept connections from SSL v2 clients, and that is a PCI compliancy no no!

pci compliantTo disable it in Windows, it's fairly easy. Just do the following on your web server:

  • Type Win+R > Type in regedit and press Enter
  • Browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\
  • In Windows 2003, you will see sub-keys for SSL 2.0 and PCT 1.0 both with Server sub-keys
  • In Windows 2008 and 2008 R2 you will only see a sub-key for SSL 2.0, you will need to create one for PCT 1.0 and create sub-keys under each for Server
  • Now that our keys are similar, in the Server sub-key under both PCT 1.0 and SSL 2.0 right click the white area and create a new DWORD called Enabled
  • Leave the value set at 0 and reboot
  • Your server is now PCI compliant

For Apache under Ubuntu:


  • Browse to /etc/apache2
  • Edit apache2.conf with your favorite text editor (I like nano)
  • Scroll to the very bottom and add the following two lines:
  • SSLProtocol all -SSLv2
    SSLCipherSuite HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL
  • Restart apache by running sudo /etc/init.d/apache2 restart
  • Your server is now PCI compliant

Well, I should say that the encryption standard is now PCI compliant. The rest of the results will depend on your code. is your company required to be PCI compliant, or perform regular pen testing? What company or service do you use for that? let us know in the comments.


    Enhanced by Zemanta

    Jul 10, 2013

    My Local City's Website For Paying The Water Bill Is Not PCI Compliant

    One of the many facets of my day job is making sure my company's public facing web servers are PCI compliant because we do a lot of business with Banks and financial institutions and they require it. The funny thing is, we don't really store any personally identifiable information that really requires it.

    Now, if you've ever had to make sure your systems are compliant, you know what a pain in the butt it can be sometimes. That's why I get really ticked off when I see a government website that is accepting credit card information, and should be PCI compliant, isn't. I get particularly ticked off when I have to enter my credit card information in on their site to pay my bills!

    Well, that is exactly the case with the city of Escondido in California. I decided to check how well they implemented their SSL on their water utility bill pay site using SSL Labs test tool. The good news is that it's not terrible. The bad news is that it wouldn't pass a PCI compliant security scan, which it should be able to do since they are accepting credit cards!


    This isn't the first time I've seen poor SSL implementation from a government agency. Last year I found out that my company's help desk ticketing system had better SSL implementation than the friggin' CIA!

    Anyway, the main point here is that if the website belongs to the government, whether it's federal, state, city or county, they need to implement their security the right way.

    Do you agree? Disagree? Why or why not? Let us know in the comments.

    Enhanced by Zemanta

    Nov 13, 2012

    How To Disable All Ciphers Except RC4 128 In Windows 2008 R2

    If you have been reading the blog lately you know I've been making configuration settings on my web servers  to make my SSL implementation PCI compliant. I even made a video about it on my weekly video podcast Tech Chop. The thing is I didn't have any Windows 2008 R2 web servers in my environment, but I will pretty soon. That means I had to figure out how to basically set the same things in Windows 2008 R2.

    In Windows 2003 in order to disable all weak ciphers, and pretty much any cipher except RC4 in order to mitigate the BEAST attack, you had to make registry changes. In Windows 2008 R2, you have to do this by creating a group policy. For this post, I'll just make a local group policy.


    • Click WIN + R > type gpedit.msc and click OK
    • Navigate to Computer Configuration > Administrative Templates > Network > SSL Configuration Settings
    • Open SSL Cipher Suite Order and click the Enabled radio button
    • In the Cipher Suites Box paste in TLS_RSA_WITH_RC4_128_SHA then click OK

    After that is set, just reboot. Now if you run a scan using something like SSLTest, you will see that your server is only using RC4 128 Bit Encryption which is not susceptible to the BEAST attack.



    True, you can just disable all versions of SSL and TLS except TLS 1.1 and TLS 1.2, but if you have users that use browsers that don't support the newer TLS versions, like Firefox for example, then you will still want to be able to use SSL 3 and TLS 1. By limiting the cipher used to only RC4, you can still be PCI compliant, and protected from the BEAST!

    Aug 27, 2013

    Handy GUI Tool To Configure SSL on Your Windows Server For PCI/DSS or FIPS 104-2 Compliance

    I've written a number of posts on making your servers PCI compliant. It's one of the many duties I'm tasked with at my day job. The hardest part in my opinion is getting your SSL certificates squared away.

    In Windows 2003 you had to manually edit the registry to disable ciphers and protocals. In Windows 2008 and above you have to set a local security policy to modify the cipher suite order. It's all a bit of a pain.

    Well I found a free tool that lets you make the necessary changes with the click of a button. It's called IIS Crypto! From their page:
    IIS Crypto is a free tool that gives administrators the ability to enable or disable protocols, ciphers, hashes and key exchange algorithms on Windows Server 2003, 2008 and 2012. It also lets you reorder SSL/TLS cipher suites offered by IIS and mitigate the BEAST attack. 
    Here is a screen shot:


    I originally found this tool because I was looking to see if there was a way to avoid restricting all ciphers to 128 bit RC4 on Windows 2003. I was hoping this tool would allow me to change the cipher order, but sadly it just isn't supported in Server 2003, so restricting all ciphers to 128 bit RC4 is still the only way to mitigate against The BEAST.

    In Windows Server 2008 R2 at least it makes changing the SSL Cipher Suite order super easy.

    All-in-all it's still a great tool for making your servers compliant, and more secure.
    Enhanced by Zemanta

    Nov 1, 2012

    How To Upgrade From SSL to GnuTLS for Apache in Ubuntu

    This post is about moving away from the old school implementation of SSL and upgrading to TLS, or specifically GnuTLS in Apache on Ubuntu Linux. The reason you would want to do this is so that your web server will support more the more secure TLS versions 1.1 and 1.2.

    The main reason one would want to replace SSL with TLS though is probably because they found out during a PCI scan that their web server was susceptible to the BEAST attack, and it was recommended that they upgrade to TLS 1.1 or TLS 1.2. No matter the reason, it's not that difficult.

    First you will want to disable SSL in Apache by running:
    sudo a2dismod ssl
    Next you will want to install GnuTLS by running:
    sudo apt-get install libapache2-mod-gnutls
    Next you will want to enable the GnuTLS module:
    sudo a2enmod gnutls
    Now you will need to edit the apache2 config you have for SSL using your favorite text editor. I am using default-ssl located in /etc/apache2/sites-available. Comment out the following items with the # symbol:

    #SSLEngine on
    #SSLCertificateFile /path/to/public.cer#SSLCertificateKeyFile /path/to/private.key#SSLCACertificateFile /path/to/ca-bundle.pem# SSLOptions +StdEnvVars# SSLOptions +StdEnvVars
    Now change <IfModule mod_ssl.c> at the beginning to <IfModule mod_gnutls.c> and paste the following under #SSLEngine on:
    #GnuTLS
    GnuTLSEnable on
    GnuTLSPriorities SECURE256:-VERS-SSL3.0:-VERS-TLS1.0
    GnuTLSCertificateFile /path/to/public.cer GnuTLSKeyFile /path/to/private.key GnuTLSClientCAFile /path/to/ca-bundle.pem
    Now save the file and restart Apache by running:
    sudo service apache2 restart
    If you have any errors after restarting you may need to comment out some other SSL related items in the config. Otherwise your site should now be using the most secure version of TLS that your browser supports:
    
    
    
    
    The problem with this setup is that not all browsers support TLS 1.1 yet. I'm looking at you Firefox. Anyway, if you still need to be PCI compliant, but still offer support to shitty browsers, you can do it at the expense of encryption strength by only using RC4. To do that replace the string after GnuTLSPriorities to say:

    NONE:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2:+ARCFOUR-128:+RSA:+SHA1:+COMP-NULL

    The above string will only give you 128bit encryption, but will protect you fromThe BEAST while allowing your users to use shitty browsers.
    Pretty cool right? Are you upgrading your web server to TLS 1.1 and 1.2? Is it for PCI compliance issues or something else? Let us know in the comments.
    
    

    Jun 14, 2018

    Script To Configure Your Azure Application Gateway For TLS 1.2 Only

    If you are just reading this post, you are cutting things pretty close with PCI/DSS compliance! After all, you have until the end of the month to remove older versions of TLS to remain PCI compliant.

    Well, if you are using Application Gateways in Azure to secure your web servers, you're in luck, because setting a custom SSL policy is pretty easy. You just have to do it via PowerShell.

    Now, this script assumes you've already created your Application Gateway. If you are trying to configure one from scratch, you'll have to keep Googling my friend... Sorry.

    Before you can run your script, you must first connect to Azure via PowerShell, and select your subscription.

    • Connect-AzureRmAccount
    • Select-AzureRmsubscription -SubscriptionName "<Subscription name>"

    After that, you can copy and paste the below script to set your custom SSL policy. Be sure to replace the Application Gateway Name and the Resource Group Name to match your environment.

    Here's the script:

     # get an application gateway resource  
     $gw= Get-AzureRmApplicationGateway -Name <Application Gateway Name> -ResourceGroup <Resource Group Name>  
     # set the SSL policy on the application gateway  
     Set-AzureRmApplicationGatewaySslPolicy -ApplicationGateway $gw -PolicyType Custom -MinProtocolVersion TLSv1_2 -CipherSuite "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_256_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256"  
     # validate the SSL policy locally  
     Get-AzureRmApplicationGatewaySslPolicy -ApplicationGateway $gw  
     # update the gateway with validated SSL policy  
     Set-AzureRmApplicationGateway -ApplicationGateway $gw  
    

    After that, your Application Gateway will only support TLS 1.2, and will use the following ciphers in order:
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_128_GCM_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_AES_128_CBC_SHA256
    Pretty easy right? Did this help you out? Let us know in the comments!

    Oct 22, 2014

    I'm switching back to OpenSSL on my Ubuntu Apache Servers

    Many moons ago I posted about how I switched from OpenSSL to GnuTLS. That was because I wanted to mitigate against The BEAST attack, and at that time the version of OpenSSL that came with Ubuntu didn't support TLS 1.1 or TLS 1.2.

    Well, in the latest Ubuntu releases OpenSSL does support it, but the funny thing is that something is wrong with GnuTLSPriorities in Ubuntu 14.04. For some reason, the string doesn't work anymore and I can't so simple things like disable SSL 3.0 which you need to do to mitigate against the new POODLE vulnerability.

    I decided to switch back to OpenSSL, and in order to be PCI compliant and get an A+ rating on SSLLabs.com I also added the following to my /etc/apache2/sites-enabled/default-ssl.conf file:
    SSLCipherSuite AES256+EECDH:AES256+EDH
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1
    SSLHonorCipherOrder On
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Content-Type-Options nosniff
    You need to be sure that you have headers enabled for the above to work.

    Once all of that is done you should be good to go!
    [Code via Cipherli.st]

    Jun 7, 2012

    Why Do You Pay So Much For Your SSL Cert?

    One of the many things I do for my company, and did for my previous company, is manage web servers. Many of these web servers have sites secured by SSL, which means that I frequently have to purchase SSL certificates. Because of this, one of the things I find myself doing a lot is checking the vendor of SSL certificates for sites I go to. I just like to see what everyone is doing.

    For instance, Facebook and Twitter buy their SSL certificates from Verisign, and Gmail is protected with a Thawte certificate. My company likes to use GoDaddy certificates because they were the cheapest for the longest time, and the VoIP company we use likes Digicert. Now Verisign, Thawte and Digicert have been around for a long time, and they charge a hefty fee for their name, but in reality, they don't secure things any better. SSL is a standard, not proprietary, so the actual encryption you get from Verisign is not really any better than GoDaddy's.

    So that brings me to my next point, if the company doesn't matter, then why pay so damn much? I found a company that sells SSL certificates for probably the cheapest you will find anywhere without a promo code, or special offer. It's NameCheap! NameCheap is a registrar similar to GoDaddy, except they never once supported SOPA. Besides that they have the best deals on SSL that I've ever seen! Standard SSL certs from Comodo are as low as $7.95 per year, and wildcard certs are as low as $89.99 per year! Compare that with Verisign or Digicert!

     

    cheap ssl certificates

     

    The next time you need to purchase an SSL cert, buy them through NameCheap and save a few bucks.

    del.icio.us tags:           

     

    Sep 18, 2013

    How To Enable TLS 1.1 in Firefox 23

    As many of you know, I setup my own email server back when Edward Snowden first leaked the story about the NSA's Prism program. I wanted to get my email off of Google, and not only make an email server as secure as I could, I wanted to make it so that the government couldn't request my emails from a third party without my knowledge with a national security letter.

    Anyway, up until last month all modern browsers supported at least TLS 1.1 with the exception of Firefox. Since I don't use Internet Explorer, and I stopped using Chrome because of Google's involvement with the NSA, that really left me with Firefox. Since Firefox didn't support TLS 1.1 or TLS 1.2, I had to configure webmail on my server to use the less secure RC4 128 bit encryption to make my server PCI compliant, and mitigate against the BEAST Attack. Not to mention being able to access it in Firefox.

    That's all changed now. Like I said, last month Firefox 23 came out with TLS 1.1 support! The only problem is it's not enabled by default. To enable it you need to do the following:
    • In Firefox type about:config in the address bar and you will get this error:
    • Click the I'll be careful button to proceed
    • Search for security.tls.version.max and change the value from 1 to 2
    That's it, now Firefox will be able to visit websites with TLS 1.1. That's good because now you can disable all versions below TLS 1.1 which will mitigate against the BEAST and will allow you to use 256 bit encryption again!

    That's exactly what I did on my email server. I configured GnuTLS to use 256 bit encryption and I disabled TLS 1.0, SSL3 and below. I also disabled 128 bit RC4, and disabled RSA to force perfect forward secrecy.

    Are you going to force TLS 1.1 and TLS 1.2 now that Firefox supports it? Why or why not? Let us know in the comments.
    [Via Hiawatha]
    Enhanced by Zemanta

    Aug 16, 2013

    To "Cloud" or Not To "Cloud"? From A Security Standpoint, That is The Question. The Answer? You Probably Should Avoid The Cloud.

    At my day job, like in many organizations, we are constantly looking at whether or not we should move to the cloud. I mean, the cost of standing up cloud virtual machines rather than running virtual machines at a data center can be significantly cheaper in most cases.

    If you move to the cloud, is your data secure though? That is the ultimate question isn't it? I mean, all cloud providers say they are secure right? Look at Amazon, they tout that they are SSAE-16 compliant, as well as PCI-DSS compliant. They must be secure right? Not necessarily.

    From Computer World:
    While online data storage services claim your data is encrypted, there are no guarantees. With recent revelations that the federal government taps into the files of Internet search engines, email and cloud service providers, any myth about data "privacy" on the Internet has been busted.

    Experts say there's simply no way to ever be completely sure your data will remain secure once you've moved it to the cloud.

    "You have no way of knowing. You can't trust anybody. Everybody is lying to you," said security expert Bruce Schneier. "How do you know which platform to trust? They could even be lying because the U.S. government has forced them to."

    While providers of email, chat, social network and cloud services often claim -- even in their service agreements -- that the data they store is encrypted and private, most often they -- not you -- are the ones who hold the keys. That means a rogue employee or any government "legally" requesting encryption keys can decrypt and see your data.

    Even when service providers say only customers can generate and maintain their own encryption keys, Schneier said there's no way to be sure others won't be able to gain access.

    For example, Apple's SMS/MMS-like communications platform, iMessage, claims both voice and text are encrypted and can't be heard or seen by third parties. But because the product isn't open source, "there's no way for us to know how it works," said Dan Auerbach, a staff technologist with the Electronic Frontier Foundation (EFF). "It seems because of the way it works on functionality, they do have a way to access it. The same goes for iCloud."

    Freedom of Information Act requests by the American Civil Liberties Union (ACLU) revealed earlier this year that the U.S. government claims the right to read personal online data without warrants.

    "It is the case everywhere in the world that governments seem to believe that if data is recorded and available, they should be able to access it," said Jay Heiser, an analyst at research firm Gartner. "It's not unique to the U.S., although the United States brags about it to a unique degree."
    So it would seem that if making sure your data is truly secure, the rule of thumb in the surveillance state we live in is that you can't trust anybody. Your data could easily be turned over to the feds without a warrant, and without your knowlege.

    If you truly want to protect your data, especially from Uncle Sam, then you have to host it yourself.

    Do you agree? Disagree? Why or why not? Let us know in the comments.

    Dec 30, 2013

    How Secure is Alex Jones's Prison Planet? Not Very


    Before I get too involved in this let me first say that I am actualy a fan of Alex Jones and his Infowars site, as well as his Nightly News program on PrisonPlanet.tv. In fact, I have a similar website called Mainwashed where I did a video talking about how to read Infowars to get valuable information.

    Check it out:



    So now you know that I am a fan, and this is not just an attack on Alex or his team. This is simply to point out a major security flaw I noticed the other night when I was logging into PrisonPlanet.tv to check out the Nightly News show. That security flaw is in how Alex's team has implemented SSL encryption when you login to PrisonPlanet.tv or go to sign up for a subscription.

    I'm a Network and Security Manager by trade, so one of my duties at the company I work for is to make sure our websites are secure and PCI/DSS compliant. One of the biggest part of that process is implementing SSL/TLS encryption properly. I have written about how to do that in the past for both Windows and Linux servers. Basically, I know what I'm talking about here.

    Anyway, when I logged into PrisonPlanet.tv the other night I happened to notice the SSL icon in my address bar. Like I always do, I checked out the certificate information, but I went a step further and ran a test of the website on SSL Labs. The result? Alex's site got an 'F' rating!

    As you can see above, the certificate he uses is fine, but the key exchange they have enabled, as well as the cipher strength is piss poor! Because of this poor implementation their site is vulnerable to a CRIME attack or a BEAST attack.

    They have a badge from Authorize.net at the bottom of their login page that says they are secure too:


    Well that is clearly not the case is it?

    If you are new to PrisonPlanet.tv and were planning on signing up for a subscription, you can still do it securely if you use the PayPal option that they offer:


    In conclusion, the PrisonPlanet.tv website is not a secure as it could be. Their SSL implementation is vulnerable to various attacks because is allows the use of weak ciphers and key exchange. If you are going to sign up for a subscription, use the PayPal option.

    What do you think of this? Let us know in the comments.



    Twitter Delicious Facebook Digg Stumbleupon Favorites More

     
    Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | stopping spam