Szerver levédés kezdőknek.[1]

Indította DeathRangers, 2016-04-15, 14:20:02

2016-04-15, 14:20:02 Utolsó szerkesztés: 2016-04-15, 15:03:02 Szerző: gabimka12
Sziasztok
Nagyon sok szervert látom hogy röhögve feltönek
Ezért lerom nektek mit kell megtennetek hogy ha egyszer felakarnak törni titeket ne legyen könnyü dolguk.
A javát csak össze szedtem nem én írtam.
Mert ugye bár 100% védelem nincsen sose főleg 2016 de annyit elérhetünk hogy mindenféle kis támadás pl injection stb ne vigyen földhez minket.
A Linkeket vagy némely leírást NEM ÉN írtam én csak össze gyűjtöttem nektek !
Nos térjünk is rá.
1.
Az alap jelszavakat kötelező megváltoztatni mind a szerverét és a navicat-t is !
2.
Érdemes a 3306-os portot kicserélni.Illetve letiltani.
A 3306-os port cseréje néhány lépésben:
IdézFilezillán felcsatlakozol a szerveredre.
Megkeresed a my.cnf és amy-new.cnf fájlt.
Megnyitod.
Látsz benne olyat hogy :# port = .....
A "#" töröld ki és ird be a portot.
Ha meg van így kell kinéznie:port = 4444
Reboot és ha jól csináltad meg van.
Adódhat probléma a weboldal csatlakozással.
Akkor mindössze annyi a dolgunk hogy megnyitjuk a config.php-t
Ott bent megkeressük az ip-t és utána irjuk a portot kettőspontal.
Így kell kinéznie:0.0.0.0:444
A 4444-t kell átírni arra amire szeretnéd!
Ha ez meg van akkor tiltsuk le a 3306-os portot.
A navicatnál a csatlakozásnál ne felejtsük el átírni a saját portunkra.
Fontos hogy a általunk kitalált port 4 számjegyü legyen !

Ha ez meg van akkor egy nagy támadási pontot lefedtünk ,persze ez még nem elég védelem.
Következő lépésünkben levédjük a szervert SQL CSALÁS ELLEN
2089M DIFF:
Idézgame_2089M

0010F5C3: 31 EB
0010F5C4: C0 09
33820 DIFF: (DB DIFF NEM GAME DIFF!!)
IdézThis difference file is created by The Interactive Disassembler


db_r33820_32_u
000925A5: 01 00
34083 GAME DIFF
IdézThis difference file is created by The Interactive Disassembler


game_r34083_32
0040DFE5: 01 00
Forrás:

game/src messenger_manager.cpp
Idézvoid MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
Idézvoid MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
    if (companion.size() == 0)
        return;


    sys_log(1, "Messenger Remove %s %s", account.c_str(), companion.c_str());
    DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' AND companion = '%s'",
            get_table_postfix(), account.c_str(), companion.c_str());


    __RemoveFromList(account, companion);


    TPacketGGMessenger p2ppck;


    p2ppck.bHeader = HEADER_GG_MESSENGER_REMOVE;
    strlcpy(p2ppck.szAccount, account.c_str(), sizeof(p2ppck.szAccount));
    strlcpy(p2ppck.szCompanion, companion.c_str(), sizeof(p2ppck.szCompanion));
    P2P_MANAGER::instance().Send(&p2ppck, sizeof(TPacketGGMessenger));
}
Idézvoid MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
    if (companion.empty())
        return;


    // Second fix
    if (m_Relation[account].find(companion) == m_Relation[account].end() || m_InverseRelation[companion].find(account) == m_InverseRelation[companion].end())
    {
        LPCHARACTER ch = CHARACTER_MANAGER::Instance().FindPC(account.c_str());
        if (ch)
        {
            sys_err("MessengerManager::RemoveFromList: %s tries to use messenger sql injection", ch->GetName());
            DBManager::Instance().DirectQuery("UPDATE account.account SET status = 'BAN' WHERE id = %u", ch->GetAID());
            if (ch->GetDesc())
                ch->GetDesc()->DelayedDisconnect(3);
        }
        else
            sys_err("MessengerManager::RemoveFromList: Omg! The ghost tried to use this function!");
        return;
    }


    sys_log(1, "MessengerManager::RemoveFromList: Remove %s %s", account.c_str(), companion.c_str());
    DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' AND companion = '%s'", get_table_postfix(), account.c_str(), companion.c_str());
    __RemoveFromList(account, companion);
    TPacketGGMessenger p2ppck;
    p2ppck.bHeader = HEADER_GG_MESSENGER_REMOVE;
    strlcpy(p2ppck.szAccount, account.c_str(), sizeof(p2ppck.szAccount));
    strlcpy(p2ppck.szCompanion, companion.c_str(), sizeof(p2ppck.szCompanion));;
    P2P_MANAGER::instance().Send(&p2ppck, sizeof(TPacketGGMessenger));
}
game/src guild_manager.cpp
IdézDWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
IdézDWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
{
    if (!gcp.master)
        return 0;


    if (!check_name(gcp.name))
    {
        gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 길ë“Å" 이ë¦â€žì´ ì í•©í•˜ì§â,¬ ì•ŠìÅ µë‹ˆë‹¤."));
        return 0;
    }


    std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
                get_table_postfix(), gcp.name));


    if (pmsg->Get()->uiNumRows > 0)
    {
        MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);


        if (!(row[0] && row[0][0] == '0'))
        {
            gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 이미 ê°â,,¢ìâ,¬ 이ë¦â€žìËœ 길ë“Å"ê°â,¬ ìžË†ìÅ µë‹ˆë‹¤."));
            return 0;
        }
    }
    else
    {
        gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 길ë“Å"를 ìÆ'ì„±í•  수 ìâ€"†ìÅ µë‹ˆë‹¤."));
        return 0;
    }


    // new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers.
    // other game server calls CGuildManager::LoadGuild to load guild.
    CGuild * pg = M2_NEW CGuild(gcp);
    m_mapGuild.insert(std::make_pair(pg->GetID(), pg));
    return pg->GetID();
}
IdézDWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
{
    if (!gcp.master)
        return 0;


    if (!check_name(gcp.name))
    {
        gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 길ë“Å" 이ë¦â€žì´ ì í•©í•˜ì§â,¬ ì•ŠìÅ µë‹ˆë‹¤."));
        return 0;
    }
    static char __escape_name[GUILD_NAME_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(__escape_name, sizeof(__escape_name), static_cast<const char *>(gcp.name),
    sizeof(gcp.name));
    std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
                get_table_postfix(), __escape_name));


    if (pmsg->Get()->uiNumRows > 0)
    {
        MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);


        if (!(row[0] && row[0][0] == '0'))
        {
            gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 이미 ê°â,,¢ìâ,¬ 이ë¦â€žìËœ 길ë“Å"ê°â,¬ ìžË†ìÅ µë‹ˆë‹¤."));
            return 0;
        }
    }
    else
    {
        gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길ë“Å"> 길ë“Å"를 ìÆ'ì„±í•  수 ìâ€"†ìÅ µë‹ˆë‹¤."));
        return 0;
    }


    // new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers.
    // other game server calls CGuildManager::LoadGuild to load guild.
    CGuild * pg = M2_NEW CGuild(gcp);
    m_mapGuild.insert(std::make_pair(pg->GetID(), pg));
    return pg->GetID();
}
Fontos hogy ezeket úgy csináljuk hogy
A szervert leállított állapotában töltjük le a game és a db fájlt.
Biztonsági mentést csinálj ! Sose árt...
Diffeljük be
Itt a letöltés a diff patcherhez:
http://data.hu/get/4904534/Dif-Patcher_by_Imer.exe
Használata: http://metin2hungary.net/index.php/topic,128221.msg710800.html#msg710800
Ha meg van akkor amíg áll a szerver töltsük fel és reboot.
Evvel meg is volnánk.
Figyeljünk oda hogy ne használjunk sablonos weboldalakat mert teli vannak backdoor-al (kiskapukkal)
Inkább vegyünk egyet vagy csináljunk egy sajátot levédve de sablonosat soha.
Válogasd meg hogy kinek adod meg az adataidat.
Illetve érdemes a 22-s portot is kicserélni.
Itt egy videó hozzá:
https://www.youtube.com/watch?v=uOSYu4meFaQ
A navicat jelszó váltás meg megint egyszerü.
A kiválasztott jelszót generáljuk ugye :https://www.browserling.com/tools/mysql-password
Utána navicatra felmész:
Mysql>User> és ott a localhost-nál megadod a jelszót ugye amit generáltál.
VPS en a Puttyba beirod
(evvel a parancsal tudsz jelszót váltani):
passwd
A témát még folytatom.
Remélem érthető.
Ha segítettem egy +-t mert ugye sose árt..
"A mai világ, a sátán világa,
Ahol a becsületért bitó, az árulásért hatalom" jár.https://www.youtube.com/watch?v=A0euseeiIFM&list=WL&index=