Üdv mindenkinek! :)
Mostanság elszaporodott a p2p portok támadása avagy Api tool támadás. Most 2017-ben nem divat már védeni az Api tool-t, pedig MUSZÁJ! Már vannak webtárhelyre feltöltött p2p bash panelek, melyeken keresztül lövöldözik a szervert. Ezzel a forrásos védelemmel nem fogja tudni lelőni a szervert, hiába tudják az IP-t és a p2p portot.
Azonban még mindig kötelező a CONFIG fájlokban az adminpage_ip: 127.0.0.1 legyen és az adminpage_password: legyen saját magunk által megadott jelszó, amit nem adunk ki senkinek.
Most pedig következzen a forrás védelem:
common/service.h
rákeresel erre:
PET_SYSTEM
Beilleszted a többi közé ezt:
#define ENABLE_PORT_SECURITY
game fájl forrás:
desc_p2p.cpp
Rákeresel erre:
#include "p2p.h"
alá írod ezt:
#include "../../common/service.h"
Rákeresel erre:
bool DESC_P2P::Setup(LPFDWATCH fdw, socket_t fd, const char * host, WORD wPort)
Így nézzen ki:
bool DESC_P2P::Setup(LPFDWATCH fdw, socket_t fd, const char * host, WORD wPort)
{
m_lpFdw = fdw;
m_stHost = host;
m_wPort = wPort;
m_sock = fd;
#ifdef ENABLE_PORT_SECURITY
#include "config.h"
#endif
if (!(m_lpOutputBuffer = buffer_new(1024 * 1024)))
return false;
if (!(m_lpInputBuffer = buffer_new(1024 * 1024)))
return false;
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false);
m_iMinInputBufferLen = 1024 * 1024;
#ifdef ENABLE_PORT_SECURITY
if (strcmp(host, g_szPublicIP)) // refuse if remote host != public ip (only the same machine must be able to connect in here)
{
sys_log(0, "SYSTEM: new p2p connection from [%s] to [%s] fd: %d BLOCKED", host, g_szPublicIP, m_sock);
SetPhase(PHASE_CLOSE);
return true;
}
#endif
SetPhase(PHASE_P2P);
sys_log(0, "SYSTEM: new p2p connection from [%s] fd: %d", host, m_sock);
return true;
}
input.cpp
Rákeresel erre:
#include "HackShield_Impl.h"
Aláírod ezt:
#include "../../common/service.h"
Rákeresel erre a részre:
int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
{
if (bHeader == 10)
return 0;
if (bHeader == HEADER_CG_TEXT)
{
Beilleszted ezt alá:
#ifdef ENABLE_PORT_SECURITY
if (IsEmptyAdminPage() || !IsAdminPage(inet_ntoa(d->GetAddr().sin_addr)))
{
sys_err("SOCKET_CMD: BLOCK FROM(%s)", d->GetHostName());
return -1;
}
#endif
Így nézzen ki ahogy a képen látod:
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fi.epvpimg.com%2Fw0aFdab.jpg&hash=577755e398f1f337e5f8e185b9848ae5aa1a8b76)
Source: [spoiler]https://forum.turkmmo.com/konu/3453876-p2p-giris-baglantisini-engelleme/[/spoiler]
Üdv, Pisti95