[Урок] Как да си направим сайта защитен (Anti DDoS)

PHP, MySQL, Javascript, XHTML и др.
Отговори
Потребителски аватар

Автор на темата
V.A.L.V.E WEB DEV
Потребител
Потребител
Мнения: 305
Регистриран: 18 дек 2016, 22:48
Се отблагодари: 44 пъти
Получена благодарност: 20 пъти
Години: 24

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от V.A.L.V.E WEB DEV » 24 яну 2019, 21:21

Здравейте, днешно време всеки втори се прави на "хахор" "хакер" "макер" "шмекер" и прочие, във този урок ще ви обесня как можете да защитите сайта си от атаки тип DDoS атаки и от къде да си закупите най-евтино домейн.

Разходи:
6 евро в Paypal или 12,50лв в дебината ви карта (VISA или Master Card) (заради таксата от банката към транзакциите 50ст.)

Действия:

1. Закупуваме си домейн от ТУК цените са сравително ниски (домейн .info = 3 евро)
2. Закупуваме си VPS (Virtual Private Server ) или на наш език казано ВПС от ТУК
(цените са в долари но 3.35 долара са почти 3 евро без няколко цента)
3. Когато купувате VPS-а изберете локация "London" според мен тя е най-добрата тъй като другата най-близка локация е на 100км по-далеч от Лондон и България
(това че сайта ви е в Лондон не пречи, сайта ви пак ще зарежда бързо)
4. Избираме (поне по мое предпочитание и урок) операционна система Ubuntu (версия 16 или 18)
5. След около 1-2 часа ще получите данните си на е-майл за вход и парола във вашият VPS.
6. Изтеглете тази програма Bitvise SSH Client от ТУК
7. Отворете Bitvise SSH напишете IP адреса който сте получили в е-майла и на Username въведете потребителското име което сте получили по принцип е root но има хостинг компании който дават други имена.
8. След това кликнете на бутона "Connect" и ще ви пита дали желаете да приемете сертификата кливате "accept"
9. Отваря ви "Terminal" прозорец същинско приличащ на "CMD"
10. Копирайте командата която ще ви напиша поставете я и натиснете бутона Enter
apt-get install update ; apt-get install upgrade
11. Може да ви иска разрешение за ъпдейт или ъпгрейд като е нужно да натиснет е бутона Y и бутон Enter
12. След като свърши с инсталацията пишете следната команда
apt-get install nginx ; sudo apt-get install php-fpm php-mysql ; apt-get install mysql-server ; apt-get install phpmyadmin

Напишете в терминала sudo nano /etc/php/7.0/fpm/php.ini намерете настройката ;cgi.fix_pathinfo и я сменете на тази cgi.fix_pathinfo=0

Отворете терминала и напишете командата sudo systemctl restart php7.0-fpm

Когато инсталацията стигне до mysql-server Ще ви иска парола, желателно е да напишете паролата с която влизате във вашият VPS, същото е и за phpmyadmin там въвеждате същата парола която сте въвели в mysql-server ЗАДЪЛЖИТЕЛНО

След като и 3-те инсталации завършат пишете следното в прозорчето "Terminal"
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Напишете след това команда sudo nano /etc/nginx/sites-available/default
Изтриите всичко от файла и сложете този код

Код: Избери всички

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /usr/share/nginx/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name 127.0.0.1;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
ЗАМЕНЕТЕ 127.0.0.1 със името на вашият домейн или ако нямате такъв с IP–то на VPS–а ви


За да запазите файла натиснете CTRL+O после бутона Enter след това CTRL+X
След това напишете в терминала systemctl restart nginx

После отваряте сайта от където закупихте домейна (сайта който съм сложил най-отгоре) и кликвате горе в дясно да се логнете, след като се логнете кликвате пак горе в дясно на вашето потребителско име и избирате меню "Domain Managment"
След това като скролнете малко надолу ще видите вашият домейн, кликнете в дясно на бутон Details
Срещу меню "DNS RECORDS" ще видите малък бутон Edit кликнете на него и ще ви се отворят всички записи на домейна, скролвате малко по-надолу и ще видите записите, изтривате всички A записи НО не и TXT записите, след което скролвате малко по-нагоре и във формата където пише "Here you can configure custom DNS records for your domain." пишете следното
Type - A record ( Тук не бутате)
Host ( Тук не бутате)
Answer - (Тук въвеждате IP адреса на вашият VPS)
и кликвате на бутона Add

След което отваряте програмата Bitvise SSH И се свързвате със вашият VPS

И отваряте папка /usr/share/nginx/html там ще намерите файл index.html изтривате го и си качвате сайта.

Как да вляза в phpmyadmin?

Отворете терминала и напишете следната команда

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html/
След като напишете командата отворете следният линк в браузъра си: http://vashiqtsait.com/phpmyadmin
влизате с потребителското име на VPS-а примерно root и паролата която написахте когато инсталирахте phpmyadmin
Ето и примерни данни за да свържете сайта ви към датабазата (примерно имате config.php и там трябва да въведете данните за връзка с базата данни)
host 'localhost'
user 'root'
password '1234'


Как да променя линк на phpmyadmin? (препоръчтително е да го направите)

1. Напишете в терминала команда cd /usr/share/nginx/html
2. Напишете след това sudo mv phpmyadmin nothingtosee
На мястото на nothingtosee пишете новото име на папката примерно: adminphp
След като го направите вече ще отваяте phpmyadmin с линк : http://vashiqtsait.com/adminphp/


НИКОГА! Не използвайте apache2 за да си държите сайта, независимо че някой хостинг компании имат защити няма да ви помогне против някой вид атаки.

Защита против Slowloris ТУК

Ако имате въпорси, можете да пишете в темата.

Копирането на материала само ако на източник пише: Автор V.A.L.V.E

Ще пишем 2-ма човека от екипа ни уроци в темата свързани с Nginx emineemrs94 и Jaxxin
Последна промяна от V.A.L.V.E WEB DEV на 25 яну 2019, 19:47, променено общо 2 пъти.
Стар никнейм в форума: emineemrs94
GameHost-BG :hooray:
Има 1 бутон "Like" можете по често да го използвате :cool:
"Действителната стойност на ума ви може да се определи според размера на доходите, които ще получавате от продажбата на вашите услуги. Парите не са с по-висока цена от ума. Често стойността им е по-ниска." Наполеон Хил

Потребителски аватар

Автор на темата
V.A.L.V.E WEB DEV
Потребител
Потребител
Мнения: 305
Регистриран: 18 дек 2016, 22:48
Се отблагодари: 44 пъти
Получена благодарност: 20 пъти
Години: 24

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от V.A.L.V.E WEB DEV » 25 яну 2019, 15:55

Урок #1
Как да инсталираме форум PHPBB на Nginx

Тъй като Nginx няма модул mod rewrite, трябва да се правят настройките на виртуал хоста, след 4 часа търсене и тестове намерих лесен начин.

Начин на инсталация:
Влизате във папка /etc/nginx/sites-available Правите си копие на файла default
Отваряте файла default изтривате всичко и слагате този код

Код: Избери всички

server {
	#listen 80;
	server_name sait.com;

	root /usr/share/nginx/html/forum;

	location / {
		# phpBB uses index.htm
		index index.php index.html index.htm;
		try_files $uri $uri/ @rewriteapp;
	}

	location @rewriteapp {
		rewrite ^(.*)$ /app.php/$1 last;
	}

	# Deny access to internal phpbb files.
	location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb|store|vendor) {
		deny all;
		# deny was ignored before 0.8.40 for connections over IPv6.
		# Use internal directive to prohibit access on older versions.
		internal;
	}

	# Pass the php scripts to fastcgi server specified in upstream declaration.
	location ~ \.php(/|$) {
		# Unmodified fastcgi_params from nginx distribution.
		include fastcgi_params;
		# Necessary for php.
		fastcgi_split_path_info ^(.+\.php)(/.*)$;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
		fastcgi_param DOCUMENT_ROOT $realpath_root;
		try_files $uri $uri/ /app.php$is_args$args;
		fastcgi_pass php;
	}

	# Correctly pass scripts for installer
	location /install/ {
		# phpBB uses index.htm
		try_files $uri $uri/ @rewrite_installapp;

		# Pass the php scripts to fastcgi server specified in upstream declaration.
		location ~ \.php(/|$) {
			# Unmodified fastcgi_params from nginx distribution.
			include fastcgi_params;
			# Necessary for php.
			fastcgi_split_path_info ^(.+\.php)(/.*)$;
			fastcgi_param PATH_INFO $fastcgi_path_info;
			fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
			fastcgi_param DOCUMENT_ROOT $realpath_root;
			try_files $uri $uri/ /install/app.php$is_args$args;
			fastcgi_pass php;
		}
	}

	location @rewrite_installapp {
		rewrite ^(.*)$ /install/app.php/$1 last;
	}

	# Deny access to version control system directories.
	location ~ /\.svn|/\.git {
		deny all;
		internal;
	}
}

# If running php as fastcgi, specify php upstream.
upstream php {
	server unix:/var/run/php/php7.2-fpm.sock;
}
Пишете в терминала командата systemctl restart nginx

Задължително!
1. Сменете в файла sait.com със името на вашият домейн или ако нямате такъв с IP–то на VPS–а ви
2. Където пише /usr/share/nginx/html/forum можете да промените САМО forum със друго найменование ако искате папката където ще инсталирате форума да се казва по друг начин, примерно мой колега реши че не иска папката му да се казва forum а community и в таквъ случай смени кода да стане ето така: /usr/share/nginx/html/community
3. Правите си папка във /usr/share/nginx/html/ примерно с име forum и качвате файловете на форума
4. Отваряте терминала и пишете chmod -R 777 /usr/share/nginx/html/forum
5. Отваряте vashiqtsait.com/forum/install и инсталирате.
6. След като приключите инсталацияте отварят папка /usr/share/nginx/html/forum давате десен бутон на файла config.php и сменяте правата от 777 на 644
7. Влизате в папка /etc/nginx/sites-available изтривате default файла и слагате вашият оригиналният на който по-рано направихте копие
8. Отваряте терминала и пишете systemctl restart nginx
Стар никнейм в форума: emineemrs94
GameHost-BG :hooray:
Има 1 бутон "Like" можете по често да го използвате :cool:
"Действителната стойност на ума ви може да се определи според размера на доходите, които ще получавате от продажбата на вашите услуги. Парите не са с по-висока цена от ума. Често стойността им е по-ниска." Наполеон Хил

Потребителски аватар

Jaxxin
Потребител
Потребител
Мнения: 6
Регистриран: 16 яну 2019, 23:30
Местоположение: Варна
Получена благодарност: 2 пъти
Контакти:

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от Jaxxin » 25 яну 2019, 23:00

Урок #2

Как да активираме модула за SSL в nginx


След инсталация на nginx по подразбиране вашият модул за SSL не е активен, както и някой др.
Позволяването на SSL модула става много лесно.

1. Създавате файл с името на вашият домейн в папка /etc/nginx/conf.d файлът трябва да завършва на .conf
Пример: example.com.conf
2. Отваряте файла, който токущо създадохте. Няма значение каква програма използвате стига да е текстов редактор.
3. Въвеждате следния код:

Код: Избери всички

server {
    listen              443 ssl default_server;
    listen              [::]:443 ssl default_server ;
    server_name         example.com www.example.com;
    root                /var/www/example.com;
    }
След като въведете кода във файла, който създадохте променете server_name и root с вашият домейн и пътят към сайта ви.
4. Щом вече сте въвели всички данни напишете nginx -t , за да проверите дали сте спазили синтаксиса
5. Ако всичко е точно въвеждате командата nginx -s reload

Потребителски аватар

hackera457 СОТА
Модератор
Модератор
Мнения: 637
Регистриран: 01 ное 2016, 09:46
Местоположение: София
Получена благодарност: 67 пъти
Години: 24
Контакти:

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от hackera457 СОТА » 26 яну 2019, 00:17

Сравнително добра защита може и да се постигне чрез подходящи IPTables правила. Не знам защо толкова не се споменава тази мощна защитна стена по Linux базирани системи, която ако се разучи може да спре едно 99% от DDOS атаките, жалко е че на повечето български хостинги им куца тази защита или не инвестират на хора, който да я изградят.
ngix е сравнително лек и доста добра алтернатива на смотания apache, също така е хубаво да се направят лимити на порт 80 /който се позва от уеб сървърите/, другото което трябва да направите е с IPTables да ограничите достъпа до MySQL сървъра само за вашето IP и локалното IP и евентуално CS сървърите, които ще ползват достъпа до MySQL. Идеята е да не може всеки да прави connection към MySQL сървъра

С две думи - като ползвате IPTables дропвате целия входен трафик (INPUT) и вече започвате да се отваряте нужните портове както и да ограничите заявките давам пример (прости ограничения на Web сървъра и MySQL сървъра):

Код: Избери всички

iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -I INPUT -p tcp --syn --dport 80 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 6 --connlimit-mask 24 -j DROP

iptables -I INPUT -p tcp --syn --dport 3306 -j DROP
iptables -I INPUT -p tcp --syn --dport 3306 -s 127.0.0.1 -m state --state NEW -j ACCEPT
Това е пример за ориентир, не значи че трябва да го ползвате :D
Отделно си има решения за повечето атаки, които един хахор може да направи, но както се казва - хванете попрочетете за iptables, прочете различните видове атаки и сами си изградете защитата.
Моите плъгини

Код: Избери всички

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Потребителски аватар

BaKuGan. nFL
Потребител
Потребител
Мнения: 192
Регистриран: 27 окт 2018, 20:11
Местоположение: New York
Се отблагодари: 50 пъти
Получена благодарност: 2 пъти
Години: 23
Контакти:

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от BaKuGan. nFL » 05 апр 2019, 00:45

Искам да попитам безплатният домейн може ли да се защити щом хоста е платен???
nFL-Cs.InFo Ела и се забавлявай
Изображение

Потребителски аватар

Gaming-Error
Потребител
Потребител
Мнения: 20
Регистриран: 27 мар 2019, 20:33
Се отблагодари: 8 пъти
Получена благодарност: 1 път

[Урок] Как да си направим сайта защитен (Anti DDoS)

Мнение от Gaming-Error » 05 апр 2019, 19:24

Разбира се че става. Можеш да закупиш и за защитиш :)

Отговори

Върни се в “Уеб Програмиране”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 6 госта