Як заблокувати доступ до сайту для цілої країни


Як додати модуль в конфігурацію nginx
Коннектимся до сервера по ssh і в консолі набираємо
і дивимося на список того, що нам відповіли.
Якщо в списку присутній with-http_geoip_module (а вище його присутність відчуваєш), то це добре і збирати заново нічого не потрібно. Якщо ж ні, то тоді - починаємо цей модуль додавати.
1. Спочатку збережемо все, що ми отримали після nginx -V куди-небудь в Notepad ++ або в Sublime, надалі нам це знадобиться.
2. Подивимося, яка версія nginx у нас зараз стоїть: у висновку команди видно, що це 1.8.0
3. Качаємо таку ж версію з сайту розробника, розпаковуємо, переходимо в папку:
4. У процесі нам знадобляться деякі пакети і зараз ми їх встановимо. Якщо пакети вже стоять, то ставити не треба. Не страшно ввести команду - якщо пакет є, то побачите щось типу «already installed» або типу того. Отже.
# Yum install gcc gcc-c ++ kernel-devel
# Yum groupinstall 'Development Tools'
5. Тепер найголовніше - починаємо додавати потрібний нам модуль, в нашому випадку http_geoip_module.
Копіюємо те, що ми зберегли в блокноті, починаючи від -prefix і закінчуючи останнім модулем (-with-бла-бла-бла), пишемо в консолі
Тиснемо пробіл і вставляємо скопійоване з блокнота. Таким чином, повинно вийти як-то так:
/ Congigure -prefix = / etc / nginx -sbin-path = / usr / sbin / nginx -conf-path = / etc / nginx / nginx.conf -error-log-path = / var / log / nginx / error.log -http-log-path = / var / log / nginx / access.log -pid-path = / var / run / nginx.pid -lock-path = / var / run / nginx.lock -http-client-body- temp-path = / var / cache / nginx / client_temp -http-proxy-temp-path = / var / cache / nginx / proxy_temp -http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp -http-uwsgi -temp-path = / var / cache / nginx / uwsgi_temp -http-scgi-temp-path = / var / cache / nginx / scgi_temp -user = nginx -group = nginx -with-http_ssl_module -with-http_realip_module -with-http_addition_module -with-http_sub_module -with-http_dav_module -with-http_flv_module -with-http_mp4_module -with-http_gunzip_module -with-http_gzip_static_module -with-http_random_index_module -with-http_secure_link_module -with-http_stub_status_module -with-http_auth_request_module -with-mail -with-mail_ssl_module -with -file-aio -with-ipv6 -with-http_spdy_module -with-cc-opt = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong -param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 - mtune = generic '
І додаємо в кінці, зробивши пробіл, -with-http_geoip_module. щоб загальна картина виглядала так:
/ Congigure -prefix = / etc / nginx -sbin-path = / usr / sbin / nginx -conf-path = / etc / nginx / nginx.conf -error-log-path = / var / log / nginx / error.log -http-log-path = / var / log / nginx / access.log -pid-path = / var / run / nginx.pid -lock-path = / var / run / nginx.lock -http-client-body- temp-path = / var / cache / nginx / client_temp -http-proxy-temp-path = / var / cache / nginx / proxy_temp -http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp -http-uwsgi -temp-path = / var / cache / nginx / uwsgi_temp -http-scgi-temp-path = / var / cache / nginx / scgi_temp -user = nginx -group = nginx -with-http_ssl_module -with-http_realip_module -with-http_addition_module -with-http_sub_module -with-http_dav_module -with-http_flv_module -with-http_mp4_module -with-http_gunzip_module -with-http_gzip_static_module -with-http_random_index_module -with-http_secure_link_module -with-http_stub_status_module -with-http_auth_request_module -with-mail -with-mail_ssl_module -with -file-aio -with-ipv6 -with-http_spdy_module -with-cc-opt = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong -param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 - mtune = generic '-with-http_geoip_module
Жамкаем Ентер і спостерігаємо за процесом. Якщо все пройде без помилок, то в кінці ми побачимо список шляхів, якими nginx користується:
nginx configuration prefix: «/ etc / nginx»
nginx configuration file: «/etc/nginx/nginx.conf»
nginx pid file: «/var/run/nginx.pid»
nginx error log file: «/var/log/nginx/error.log»
і т.д.
Якщо по ходу п'єси будуть виникати помилки, то тоді необхідно доставити те, чого не вистачає. Нижче я приведу список того, що, можливо, доведеться доставляти. Порівнюйте вимоги в помилку з бібліотеками, які в списку нижче і доставляйте. Отже, список того, що можливо попросять поставити і команда установки.
# Yum install openssl-devel
# Yum install GeoIP-devel
# Yum install libxslt-devel
# Yum install pcre-devel
Якщо помилки виникали і ви щось ставили зі списку вище, то після кожної установки збоку nginx треба запускати заново:
/ Congigure -prefix = / etc / nginx -sbin-path = / usr / sbin / nginx -conf-path = / etc / nginx / nginx.conf -error-log-path = / var / log / nginx / error.log -http-log-path = / var / log / nginx / access.log -pid-path = / var / run / nginx.pid -lock-path = / var / run / nginx.lock -http-client-body- temp-path = / var / cache / nginx / client_temp -http-proxy-temp-path = / var / cache / nginx / proxy_temp -http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp -http-uwsgi -temp-path = / var / cache / nginx / uwsgi_temp -http-scgi-temp-path = / var / cache / nginx / scgi_temp -user = nginx -group = nginx -with-http_ssl_module -with-http_realip_module -with-http_addition_module -with-http_sub_module -with-http_dav_module -with-http_flv_module -with-http_mp4_module -with-http_gunzip_module -with-http_gzip_static_module -with-http_random_index_module -with-http_secure_link_module -with-http_stub_status_module -with-http_auth_request_module -with-mail -with-mail_ssl_module -with -file-aio -with-ipv6 -with-http_spdy_module -with-cc-opt = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong -param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 - mtune = generic '-with-http_geoip_module
6. Тепер, соственно, компілюємо бінарник nginx. спочатку виконуємо
і чекаємо завершення процесу.
7. Перевіряємо, що у нас все встановилося і тут є два варіанти: або новий бінарник зібрався відразу там, де треба - / usr / sbin / nginx, а старий - забекапілся там же в nginx.old. Або, він зібрався в папці / etc / nginx / sbin / nginx і тоді нам треба його перемістити в потрібне місце. Отже, якщо бінарник зібрався в / etc / nginx / sbin / nginx, то тоді:
зупиняємо nginx,
# Service nginx stop (CentOS до 6.х)
# Systemctl stop nginx.service (CentOS від 7.х)
робимо бекап старого бінарники,
# Mv / usr / sbin / nginx /usr/sbin/nginx.old
свіжозібраний бінарник відправляємо туди, де він і повинен працювати:
# Mv / etc / nginx / sbin / nginx / usr / sbin / nginx
Ну і запускати:
# Service nginx start (CentOS до 6.х)
# Systemctl start nginx.service (CentOS від 7.х)
Якщо бінарник відразу зібрався там, де треба (/ usr / sbin / nginx) і створив бекап .old, то рухів тіла з перейменуванням і перенесенням не потрібно, та й нема чого буде переносити)
Перевіряємо, чи є модуль:
і якщо все добре, то бачимо, що ми пересобран nginx з потрібним нам модулем:
На цьому все з додаванням модуля в nginx) Насправді це зовсім не складно і займе у вас хвилин 5-7, просто я намагався максимально з подробицями. Отже, ми додали модуль в конфіг. А тепер саме час закрити нахер доступ до сайту з неугодних нам країн!)
У нас встановлено geoip і модуль для nginx, приступаємо до налаштування.
1. Заходимо в конфіг nginx (/etc/nginx/nginx.conf) і додаємо в http <> секцію наступне
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $ geoip_country_code $ bad_country default 1;
include goodcountries;
>
Шлях до /usr/share/GeoIP/GeoIP.dat у вас може відрізнятися, так що перевірте, де лежить GeoIP.dat
Цим конфіг ми сказали nginx, що йому потрібно дивитися звідки прийшов користувач по geoip і звіряти країну з файлом goodcountries, який ми зараз і заповнимо.
Створюємо в / etc / nginx / сам файл goodcountries і наповнюємо його ось таким вмістом.
А тепер підключаємо це до конфігу самого сайту в nginx, в секцію localhost:
if ($ bad_country) return 403;
>
і вийде ось такий location
От і все. Перезапускаємо nginx і на цьому муки закінчилися)
Тепер, якщо ми хочемо заблокувати будь-яку країну і заборонити звідти доступ до нашого сайту, то у файлі goodcountries ми просто змінюємо «0» на «1» навпроти потрібної країни. Також, в файл можна додати значення:
Де А1 - блокує доступ через анонімні проксі, А2 - доступ через супутникових провайдерів і О1 - блокує «інші» країни.
На цьому на сьогодні все) Сподіваюся, було корисно. А я беру поки відпустку від постів і йду в запій на кілька днів, а то я втомився). А до п'ятниці намічено похмілля паті, на якому я напишу перший пост з серії «Звіт по Евротріпу».
PS. Забув додати, що бази даних GeoIP потрібно оновлювати хоча б раз на місяць. Робити руками це досить гамірно, тому бонусом вам bash скриптик, який буде робити це на автоматі)
Створимо де-небудь в непалевной папці сервера скрипт і назвемо його updgeo.sh і наповнимо його ось таким вмістом:
Обов'язково ставимо потрібні права:
# Chmod 750 /ne/palevnaya/papka/updgeo.sh
І ставимо на крон раз в тиждень-місяць. Ось, тепер точно все)
Я чого призабув: в Україні вже ввели відповідальність за публікацію матеріалів про обхід блокування? Або ще немає?)
Відповім я тобі так. Те, що заблокований сайт доступний через деяких провайдерів, - явище тимчасове. Просто не всі провайдери встигли оновити «розстрільні» списки, оновити ДНС і ось це все. Через місяць зайти на сайт не вийде зовсім.
З SSH-тунелем тобі доведеться налаштовуватися самому, але це не так складно. У будь-якому випадком, при використанні таких серверів у тебе не буде IP з РФ, будуть IP інших країн.
І, звичайно ж, я проти таких дій, як обхід блокування !! 11 Якщо уряд заблокував якийсь сайт, то воно все зробило правильно: може, на цих сайтах вчать поганому і взагалі там немає духовності!
Держава піклується про нас і це треба цінувати !! 11
VPN за 50 руб. Немає зараз таких, бо сервіс затребуваний як ніколи раніше. За нормальний готуйте платити від 10 $ до 20 $ або беріть VPS за 5 баксів і ставте самі.
Навіть безкоштовні є поки ще) А також фрігейт у вигляді браузерного плагіна і тд.
Та так в казино хорошим хотів посидіти пограти :-). До речі там можна і на фантики грати. Але найголовніше там можна виграти, на відміну від того що у нас нібито прибрано (але насправді все залишилося в офлайні, але тільки грають через комп'ютер, в залі де і раніше були, тільки зараз там букмекерська, а в сусідньому залі ласка. І природно все там скручене, звичайний скрипт настроюється, на відміну від норм софта в європейських казино) Тоесть наші Не дозволяється грати в західних казино, а в наших лохотронах ласка. -)
Ну ось, тепер зможеш)