[Guide] Making, Secure, Populate your MU Online Server

OmaRuCat

Well-Known Member
Joined
Jun 3, 2008
Messages
531
Reaction score
457
1 Step :
Making Your Server :
Install SQL : [Guide] How To Install SQLEVAL
Making MU Server : [Guide] Setting up server + ROUTER SUPPORT [Season 3] + Images

Usefull Scripts :
Run This in Query Analyser This delete all logs from MuOnline DataBase :
PHP:
USE master
    backup log [MuOnline] with truncate_only
    dbcc shrinkdatabase([MuOnline],0)

This is fix ConnectStat 1 run when Server is stopped !!!
PHP:
UPDATE MEMB_STAT
SET ConnectStat='0'
WHERE ConnectStat>0

How to make NON PVP Server ?!?!? : Отворете :
MuServer\GameServer\Data\ServerInfo.dat
Като го отворите променете :
[GameServerInfo]
ServerName = SCF001
ServerCode = 0
ConnectMemberLoad = 0
NonPK = 0
PkLimitFree = 1

на :

[GameServerInfo]
ServerName = SCF001
ServerCode = 0
ConnectMemberLoad = 0
NonPK = 1
PkLimitFree = 0



Стъпка 2 :

ЗАЩИТА :

Как да защитим нашият сайт ?!?!? :

ВАЖНО Сложете всички кодове след като сте инсталирали дадения Уеб Пакет : Най отгоре в конфиг файла ви например на МуУеб конфиг.пхп добавете :

PHP:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$time = date("l dS of F Y h:i:s A");
$script = $_SERVER[PATH_TRANSLATED];
$fp = fopen ("C:/MuServer/[WEB]SQL_Injection.txt", "a+");

$sql_inject_1 = array(";","'","%",'"'); #Whoth need replace
$sql_inject_2 = array("", "","","&quot;"); #To wont replace
$GET_KEY = array_keys($_GET); #array keys from $_GET
$POST_KEY = array_keys($_POST); #array keys from $_POST
$COOKIE_KEY = array_keys($_COOKIE); #array keys from $_COOKIE
/*begin clear $_GET */
for($i=0;$i<count($GET_KEY);$i++)
{
$real_get[$i] = $_GET[$GET_KEY[$i]];
$_GET[$GET_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_GET[$GET_KEY[$i]]));
  if($real_get[$i] != $_GET[$GET_KEY[$i]])
  {
  fwrite ($fp, "IP: $ip\r\n");
  fwrite ($fp, "Method: GET\r\n");
  fwrite ($fp, "Value: $real_get[$i]\r\n");
  fwrite ($fp, "Script: $script\r\n");
  fwrite ($fp, "Time: $time\r\n");
  fwrite ($fp, "==================================\r\n");
  }
}
/*end clear $_GET */
/*begin clear $_POST */
for($i=0;$i<count($POST_KEY);$i++)
{
$real_post[$i] = $_POST[$POST_KEY[$i]];
$_POST[$POST_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_POST[$POST_KEY[$i]]));
  if($real_post[$i] != $_POST[$POST_KEY[$i]])
  {
  fwrite ($fp, "IP: $ip\r\n");
  fwrite ($fp, "Method: POST\r\n");
  fwrite ($fp, "Value: $real_post[$i]\r\n");
  fwrite ($fp, "Script: $script\r\n");
  fwrite ($fp, "Time: $time\r\n");
  fwrite ($fp, "==================================\r\n");
  }
}
/*end clear $_POST */
/*begin clear $_COOKIE */
for($i=0;$i<count($COOKIE_KEY);$i++)
{
$real_cookie[$i] = $_COOKIE[$COOKIE_KEY[$i]];
$_COOKIE[$COOKIE_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_COOKIE[$COOKIE_KEY[$i]]));
  if($real_cookie[$i] != $_COOKIE[$COOKIE_KEY[$i]])
  {
  fwrite ($fp, "IP: $ip\r\n");
  fwrite ($fp, "Method: COOKIE\r\n");
  fwrite ($fp, "Value: $real_cookie[$i]\r\n");
  fwrite ($fp, "Script: $script\r\n");
  fwrite ($fp, "Time: $time\r\n");
  fwrite ($fp, "==================================\r\n");
  }
}

/*end clear $_COOKIE */
fclose ($fp);
?>

-------------------------------------------------

PHP:
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i");
$lfh = "log.txt";
$lfh = "logove.php";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "You think you can hack me? Now You will eat the BANN!!";
}

Създайте файл logove.php !



Ето така трябва да ви изглежда началото на примерния индекс.пхп :


PHP:
<?php ob_start(); ?> 



<? 


session_start(); 
header("Cache-control: private"); 
ob_start(); 
$timeStart=gettimeofday(); 
$timeStart_uS=$timeStart["usec"]; 
$timeStart_S=$timeStart["sec"];  
require("config.php");
include("flood/gate.php");
include("tweety.php");
include ("ctracker.php"); 
include ("anti-inject-base64.php");
include ("safesql.class.php");
include("includes/web_modules.php"); 
include("includes/clean_var.php"); 
include("includes/login.class.php"); 
include("includes/scripts/index.inc"); 
include("config.php"); 
include("ipban.php");
include("class.floodblocker.php");


login(); 
logincheck(); 
check_user(); 

$queryString = strtolower($_SERVER['QUERY_STRING']); 

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR 
strstr($queryString,"..") OR 
strstr($queryString,"%") OR 
strstr($queryString,"*") OR 
strstr($queryString,"+") OR 
strstr($queryString,"!") OR 
strstr($queryString,"@")) { 
$loc = $_SERVER['PHP_SELF']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$date = date ("d-m-Y @ h:i:s"); 
$lfh = "log.txt"; 
$lfh = "credits.php";
$log = fopen ( $lfh,"a+" ); 
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n"); 
fclose($log); 
echo "You think you can hack me? Now You will eat the BANN!!"; 
} 

?>

Download scripts :
http://4storing.com/cv4z5c/578b5ea50fe4470ddd10773ce780bc40.html

MegaUpload :
MEGAUPLOAD - The leading online storage and file delivery service


ВАЖНО е да прегледате всички файлове в Уеб Пакета ви защото може да има файлове който не са вързани към индекс.пхп или конфиг.пхп и естествено там може да има "дупка" .




За да се защитите от DoS attacks , buffer flow , port scan си сложете някаква анти вирусна например : Kaspersky Internet Security 2009 , Comodo Internet Security , Avast Pro
или wipfw-0.2.8


-----------------------------------------------------------

Как да се защитим от DoS атака на сайта ако нямаме анти вирусна (естествено трябва да ви е силен ПЦ) :
Отворете : xampp\apache\conf\httpd.conf
Търсете ThreadsPerChild (default 250)
Променете на : ThreadsPerChild 99999
Рестартирайте вашия уеб сървър !

-----------------------------------------------------------

За повече защита ви предлагам да си изтеглите и mod_security на Apache 2

Download : http://4storing.com/y22u7r/1d12fc99077508e624d720cf83bca1bd.html

Как да го инсталираме ?!?!? :
Отворете xampp/apache/conf/httpd.conf
Допълнете на последните редове :

LoadModule security2_module modules/mod_security2/mod_security2.so
LoadModule unique_id_module modules/mod_unique_id.so
SecRuleEngine On
SecDefaultAction log,auditlog,deny,status:403,phase:2,t:lowercase,t:replaceNulls,t:compressWhitespace

SecAuditEngine RelevantOnly
SecAuditLogType Serial
SecAuditLog logs/mod_security2.log

SecRule ARGS "c:/" t:normalisePathWin
SecRule ARGS "\.\./" "t:normalisePathWin,id:99999,severity:4,msg:'Drive Access'"
SecRule ARGS "d:/" t:normalisePathWin

SecRule ARGS:highlight "(\x27|%27|\x2527|%2527)"


----------------------------------------------------------
Какво е N3t Shell? :
[Guide] Какво е N3t Shell

----------------------------------------------------------




----------------------------------------------------------
Защита с : htmlspecialchars() + ENT_QUOTES


Пример :
$test = htmlspecialchars($_POST['module'] , ENT_QUOTES);

Преобразува :
"'" на "&amp;"
"&" на "&amp;"
"<" на "&lt;"
">" на "&gt;"


----------------------------------------------------------




----------------------------------------------------------
Защита с : addslashes()

Пример :
$test = addslashes($_POST['module']);

Преобразува :

"'" на "\'"





----------------------------------------------------------


----------------------------------------------------------
Защита с : trim()

Пример :
$test = trim($_POST['module']);

Премахва празното място от началото и края .

Може също да използвате и :
ltrim() - Премахва празното място от началото .
rtrim() - Премахва празното място от края .





----------------------------------------------------------



----------------------------------------------------------
Защита с : str_replace()

Пример :

PHP:
<?
$new = ("Babau baubbab");
$new = str_replace(" ","B",$new);

echo $new; 
?>

Краен резултат от примера : BabauBbaubbab

По тоя начин ако някой напише :
'update table ....
Ще стане на :
'updateBtable ....


(" ","B",$new)

Знака който искате да замените .
Символа с който заменяте .

По същия начин може и да използвате за следните символи :
"'" , ";" , "drop" , "update" и тн .

$new = str_replace("'","",$new);
$new = str_replace(";","",$new);
$new = str_replace("drop","",$new);
$new = str_replace("update","",$new);


----------------------------------------------------------



----------------------------------------------------------
Защита с : strtolower()

Пример :

$test = strtolower($_POST['module']);

Тази функция прави всички големи букви на малки .

Например ако напишете Test ще бъде преобразувано на test .

Може да използвате тая функция при регистрацията на полето (Account Name) ако нямате case sensitive на Data Base или имате проблем с него, а не искате да има дублирани акаунти .



----------------------------------------------------------

----------------------------------------------------------
Защита с : preg_replace()

Пример :

PHP:
<?
$new = (";'Babau baubbab");
$new = preg_replace("/[^a-zA-Z0-9_-]/",'',$new);
echo $new;
?>

Краен резултат : Babaubaubbab





----------------------------------------------------------



Защита на сървъра :

Базова защита на сървъра :

Отворете Windows FireWall :

Дайте на On > Exceptions >
и махнете тикчето на ДатаСерверите , ЕхДБ , ЖойнСървър , ЧатСървър , РанкингСървър , mysql , sqlservr , sqlmanager

----------------------------------------------------
Fix SQL Inject in MuServer

This is Fixing Guild SQL Inject


Go to Enterprise Manager > MuOnline > Guild > Design Table > and Delete G_Notice


-------------------------------------------------------------

Стъпка 3 :

Как да популялизираме нашият Web Site ?!?!? :

Като за начало може да го добавите тука : MuOnline Server Advertisements - DarksTeam Forums

и в други подобни форуми

Например Mu Online top 100 - Private servers, free servers, Guides, Guilds в него има безплатна услуга чрез която след като се регистрирате и ъпдейтните вашето сървър инфо получавате 7 дни безплатно ГОЛД МЕМБЕР !!!


4 Step :

How to Avoid some DDoS Attacks :
Add in xampp/apache/conf/httpd.conf

LimitRequestBody 10240000

This is 10 mb upload size per user and can be used to avoid some tips of DDoS attacks !

LimitRequestBody 102400
This is 100 kb ...

Happy avoiding DDoS Attacks ! Read and other instructions !!



-----------------------------------------------------------------------

Block Common Exploit's via .htaccess :
PHP:
########## Begin - Rewrite rules to block out some common exploits
#                              
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
# 
########## End - Rewrite rules to block out some common exploits


----------------------------------------------------------------------

WebShop Hole's :
You need to delete module give points
You need to delete module give resets
You need to delete module vip


----------------------------------------------------------------------

----------------------------------------------------------------------

Xammp Hole's :
You need to delete everything except ( apache , htdocs , mysql , php ) in XAMPP folder to avoid uploading
of files sometimes (shells) .
~ First make backups of all folders if you need them sometime .




----------------------------------------------------------------------



Credits :

Ahmet Aydэn Antmen
Bupyc
Christian Knerr
DarkMaster
diablo21
DestructiO
Filth
FeliXCat
Gasolincho
Guinevere
h3tr1k
Luc13eR
Mephisto
MeRtEkA
MeMoS
Monte Ohrt
Myanmar
Omaru
omarmaster
PaskaL
ReaL
SpiceBoy
 
Last edited:
Браво това за encrypt е много полезно мерси :)
 
  • Like
Reactions: Milanoob
браво това за encrypt е много полезно мерси :)

аз немога го ползвам .. при мен доста е защитата ако го сложа и защита ми го засича като атака и ми спира достъп до сървъра :д
 
аз немога го ползвам .. при мен доста е защитата ако го сложа и защита ми го засича като атака и ми спира достъп до сървъра :д

то затва не ти тряят 1000000 защити а една :)(rock)
 
Междодругото като си енкриптна сайта и не всеки може да го отваря
що така ? (think)
 
FiReWaLL ? NIS (Norton Internet Security) Detect Virus but NOD 32 , KIS 2009 , KIS 2010 , Avast , AVG , Avira don't detect i test only with this ;)
 
значи права сичко което е тук самоче ми дава това Fatal error: Cannot redeclare class safesql_mysql in C:\AppServ\www\safesql.class.php on line 268
 
браво най накрая 1 хубава тема в която е събрано всичко 10/10
 
Ах добро е само дето си откраднал от мене Бз уеба include("xss.php");
include("xss2.php");