3

I have a website that I do not want to be viewed by entire countries. The website is running on a LAMP server. How can I achieve this?

13
  • 7
    There is nothing more anoying than access denytion becaus you live in a specific country.
    – user42235
    Aug 18, 2009 at 8:01
  • I also do not recommend it, but it is a requirement of the client
    – haim evgi
    Aug 18, 2009 at 8:04
  • Except for getting sued because of sharing content with people not eligible for it :).
    – Zed
    Aug 18, 2009 at 8:33
  • It is impossible to block access from countries, the internet is not configured that way. You will get many false positives and false negatives.
    – Jacco
    Aug 18, 2009 at 8:42
  • there are many legal reasons to block countries, for example some countries do not allow online gambling and if you happen to run a gambling site and don't want to get into jail in that country, you might need to block those countries.
    – rytis
    Feb 1, 2010 at 20:03

6 Answers 6

11

Use mod_geoip module. http://www.maxmind.com/app/mod_geoip

For example:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry

# ... place more countries here
Deny from env=BlockCountry
3

You can use rewrite_mod's REMOTE_ADDR condition to redirect banned users to a single page describing the fact that they are not allowed to enter, or simply give them a 403 error.

RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.[0-9]{3}$ 
RewriteRule .* ...

To get the range of IPs for a country, get the Maxmind database for example.

2
  • +1 for referencing a source, though I don't think using rewrite rules is the way to go, the list might be quite large!
    – Paul Dixon
    Aug 18, 2009 at 7:58
  • You are absolutely correct. It all depends on how many and what type of countries to block...
    – Zed
    Aug 18, 2009 at 8:31
1

Check the IP and determine which country hosts it, and then block it. Of course it's not accurate, but it's something. Generally I'm not a fan of doing this though; but maybe it's required for some legal reason.

1

You can filter the country ISP's ip adresses. There are a lot of geolocation database, to help you to identify the users country by ip.

0

I have came across this site, which claims to ban country,

IMO, the best way it to block using the .htaccess file

0

You can use services like this:

http://www.maxmind.com/app/geolitecountry

to extract info which IP ranges belong to which countries and block them. Keep in mind if you block too many ranges on a high traffic web site you may see some heavy utilisation on your firewalls.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .