Minecraft სერვერების უმეტესობა, რომლებიც "გატეხეს", სინამდვილეში არავის გაუტეხია. ვიღაც offline-mode სერვერზე ოპერატორად შევიდა, გამოიყენა plugin, რომელიც კონსოლის ბრძანებებს ყველასთვის უშვებდა, გამოიცნო RCON-ის პაროლი, ან დააყენა გაჟონილი ფასიანი plugin, რომელშიც backdoor იყო. ჩამონათვალი, რომელიც თითქმის ყველაფერ ამას აფერხებს, მოკლეა: შეინარჩუნე online-mode=true (ან proxy-ის forwarding სწორად გამართე), კერძო სერვერებზე whitelist ჩართე, ოპერატორი თითქმის არავის მისცე და ნაცვლად უფლებების plugin გამოიყენე, RCON და query გამორთული დატოვე, თუ მათ რამე არ სჭირდება, plugin-ები მხოლოდ მათი ავტორებისგან დააყენე, სერვერის პროგრამა განახლებული შეინახე და დაიცავი პანელის ანგარიში, რომელიც ამ ყველაფერს აკონტროლებს. ამ პოსტის დანარჩენი ნაწილი თითოეულ პუნქტს და მის შემოწმებას ხსნის.
იცოდე, რას იცავ#
სხვადასხვა საფრთხეს სხვადასხვა დაცვა სჭირდება და მათი დასახელება გეხმარება:
| საფრთხე | როგორ გამოიყურება | მთავარი დაცვა |
|---|---|---|
| თვითმარქვიობა | ვიღაც ადმინის სახელით შემოდის | online-mode, proxy-ის forwarding |
| შემთხვევითი grief-ერები | უცნობები მოდიან და ნაგებობებს ანგრევენ | Whitelist, claim-ები, ლოგირება |
| უფლებების ბოროტად გამოყენება | მოდერატორი ან plugin ზედმეტს აკეთებს | LuckPerms, wildcard უფლებების გარეშე |
| დისტანციური წვდომა | RCON ან ვებ-პანელი ხელში ჩაიგდეს | ნაგულისხმევად გამორთული, ძლიერი საიდუმლოებები |
| მავნე plugin-ები | Backdoor jar-ში | მხოლოდ სანდო წყაროები |
| პროგრამის სისუსტეები | კრაშის ან კოდის ექსპლოიტები | Paper-ის ამჟამინდელი build-ები |
| ანგარიშის ხელში ჩაგდება | შენი პანელის ან Mojang-ის ანგარიში მოიპარეს | 2FA, ცალკე პაროლები |
Grief-ისგან დაცვა გეიმპლეის აზრით - claim-ები, rollback-ები, anti-xray - განხილულია სტატიაში grief-ისგან დაცვა და ანტიჩიტი. ეს პოსტი თავად სერვერს ეხება.
online-mode და offline რეჟიმის საფრთხე#
online-mode=trueenforce-secure-profile=trueonline-mode=true სერვერს აიძულებს, ყველა მოთამაშის შესვლა Mojang-ის სესიის სერვერებთან შეამოწმოს. ამის შემდეგ სახელი და UUID, რომლითაც მოთამაშე მოდის, დამტკიცებულია, რომ მას ეკუთვნის.
online-mode=false-ით სერვერი მოთამაშის სახელს ნდობით იღებს. ნებისმიერს შეუძლია შევიდეს როგორც Notch, შენი სახელით ან ops.json-ში მყოფი ნებისმიერი ოპერატორის სახელით, და სერვერი მას ოპერატორის უფლებებს მისცემს - offline-mode UUID-ები სახელიდან გამოიყვანება, ამიტომ ერთი და იგივე სახელი ყოველთვის ერთსა და იმავე offline UUID-ს შეესაბამება. საჯარო offline-mode სერვერზე შენი op-ების სია სახელების სიაა, რომელთა აკრეფაც ნებისმიერს შეუძლია.
online-mode=false-ის გამოყენების ზუსტად ერთი ლეგიტიმური მიზეზი არსებობს: backend სერვერი proxy-ის უკან, რომელიც ავთენტიფიკაციას აკეთებს და დადასტურებულ იდენტობებს გადასცემს. ეს უსაფრთხოა მხოლოდ მაშინ, როცა forwarding ისეა გამართული, რომ backend უარყოფს კავშირებს, რომლებიც proxy-ს გავლით არ მოსულა - Velocity-ის modern forwarding Paper-ზე ამას აკეთებს, BungeeCord-ისას კი BungeeGuard ან firewall სჭირდება. BungeeCord თუ Velocity ხსნის, რატომ არის ეს განსხვავება უსაფრთხოების საკითხი.
"Cracked" სერვერები, რომლებიც მოთამაშეებს ფასიანი ანგარიშის გარეშე იღებენ, offline რეჟიმს და ავთენტიფიკაციის plugin-ს ეყრდნობიან, რომელიც მოთამაშეებს თამაშში პაროლის რეგისტრაციას აიძულებს. ეს შენს უსაფრთხოებას Microsoft-ის ანგარიშების სისტემიდან plugin-სა და მოთამაშეების მიერ არჩეულ პაროლებზე გადაიტანს, და ყოველი offline სერვერი სწორედ ასეთი თვითმარქვიობის სამიზნეა. თუ ასეთს უშვებ, გაითვალისწინე, რომ უფრო რთული პრობლემა აირჩიე.
Whitelist და ვის შეუძლია შესვლა#
კერძო სერვერისთვის whitelist ყველაზე ძლიერი ცალკეული პარამეტრია, რაც გაქვს:
white-list=trueenforce-whitelist=trueორი გასაღები სხვადასხვა საქმეს აკეთებს:
white-list=trueუარს ეუბნება ყველას, ვინცwhitelist.json-ში არ არის.enforce-whitelist=truewhitelist-ის ხელახლა ჩატვირთვისას აგდებს მოთამაშეებს, რომლებიც ონლაინ არიან, მაგრამ სიაში არ არიან - ასე რომ, ვინმეს ამოშლა დაუყოვნებლივ მოქმედებს და არა მის შემდეგ შესვლაზე.
JSON-ის ხელით რედაქტირების ნაცვლად კონსოლიდან გამოიყენე whitelist add <name> და whitelist remove <name>; სერვერი სახელებს UUID-ებად შენ ნაცვლად გადაიყვანს.
რატომ ღირს სერვერზე, რომლის შესახებაც არავინ იცის: საჯარო სკანერები ინტერნეტს Minecraft სერვერების საძებნად უწყვეტად ავლენენ და აქვეყნებენ, რასაც პოულობენ, ვერსიის, მოთამაშეთა რაოდენობისა და whitelist-ის ჩართულობის ჩათვლით. ჯგუფები ამ სიებს ღია სერვერების საპოვნელად და მათ გასანადგურებლად იყენებენ, ზოგჯერ სერვერის პირველი გაშვებიდან საათებში. დამალულობა დაცვა არ არის. მხოლოდ მეგობრების სერვერი whitelist-ის გარეშე საჯარო სერვერია, რომელიც ჯერ არ უპოვიათ.
საჯარო სერვერებზე whitelist-ს claim-ები, ლოგირება და მოდერაცია ცვლის - მაგრამ ქვემოთ მოცემული თვითმარქვიობისა და უფლებების პუნქტები კიდევ უფრო მნიშვნელოვანია. Whitelist-ისა და უფლებების გზამკვლევი მექანიკას სრულად განიხილავს.
ოპერატორები და უფლებები#
ოპერატორის სტატუსი უხეში ინსტრუმენტია. მე-4 დონე, op-ის ნაგულისხმევი, ყველა ბრძანების გაშვებას შეუძლია, stop-ის, op-ისა და ყველაფრის ჩათვლით, რასაც plugin ოპერატორებისთვის არეგისტრირებს. ბევრი plugin ნაგულისხმევად ყველა თავის უფლებას op-ებს აძლევს.
op-permission-level=4function-permission-level=2ჩამონათვალი:
- მხოლოდ მფლობელები. ერთი ან ორი ადამიანი ოპერატორით. დანარჩენი ყველა - მოდერატორები, მშენებლები, დამხმარეები - LuckPerms-ის ჯგუფს იღებს ზუსტად იმ უფლებებით, რაც მათ საქმეს სჭირდება.
- **
*უფლების გარეშე.** ჯგუფისთვის*-ის მიცემა სხვა სახელით ოპერატორია, იმ ნაწილების ჩათვლით, რომლებზეც არ გიფიქრია, მაგალითად plugin-ების უფლებები კონსოლის ბრძანებების გასაშვებად. - თვალი ადევნე ბრძანებების გამშვებ უფლებებს. Plugin-ები, რომლებიც ბრძანებებს კონსოლის სახელით უშვებენ (
/sudo-ს სტილის ბრძანებები, ბრძანებების ნიშნები, NPC-ზე დაწკაპუნების მოქმედებები, მენიუს plugin-ები), არასწორ ხელში ოპერატორივით ძლიერია. მათი permission node-ები მხოლოდ მფლობელებს ეკუთვნის. - დროდადრო გადახედე `ops.json`-ს. სახელები იქ გროვდება. ყოფილი სტაფის წევრის ანგარიში, რომელსაც ჯერ კიდევ op აქვს, რისკია, თუ მისი Minecraft ანგარიში ოდესმე მოიპარეს.
- დალოგე სტაფის მოქმედებები. CoreProtect ბლოკებსა და კონტეინერებს იწერს; მოდერაციის plugin-ების უმეტესობა სასჯელებს იწერს. ანგარიშვალდებულება უფრო მეტად აფერხებს, ვიდრე აღმოაჩენს.
LuckPerms არის უფლებების plugin, რომელიც უნდა გამოიყენო, და მისი გზამკვლევი აჩვენებს ჯგუფების კიბეს, რომელსაც მფლობელის ქვემოთ არაფრისთვის სჭირდება ოპერატორი.
RCON, query და სტატუსის ping#
თამაშის პორტის გვერდით სამი ქსელური სერვისი შეიძლება იყოს ჩართული. თითოეული გამორთული უნდა იყოს, თუ მას რამე არ იყენებს.
enable-rcon=falsercon.port=25575rcon.password=broadcast-rcon-to-ops=trueenable-query=falsequery.port=25565enable-status=truehide-online-players=falseRCON კონსოლზე სრულ წვდომას აძლევს ყველას, ვისაც პაროლი აქვს, პროტოკოლით, რომელიც ამ პაროლს ღია ტექსტით აგზავნის. თუ ინსტრუმენტი, რომელსაც ის სჭირდება, არ გაქვს, დატოვე enable-rcon=false. თუ გაქვს, გამოიყენე გრძელი შემთხვევითი პაროლი, პორტი იმაზე მეტად ნუ გახსნი, რაც საჭიროა, და პაროლი სხვაგან არასოდეს გამოიყენო. პანელის კონსოლი ადამიანების უმეტესობისთვის RCON-ს ცვლის. RCON უსაფრთხოდ პროტოკოლსა და წესებს დეტალურად განიხილავს.
Query (enable-query) GameSpy-ის სტილის მოთხოვნებს UDP-ით პასუხობს სერვერის მოთამაშეთა სიით, plugin-ებითა და ვერსიით. მას სერვერების სიის საიტები იყენებენ. ის შენს plugin-ების სიას ავლენს - რუკა ყველასთვის, ვინც სუსტ plugin-ს ეძებს. ჩართე მხოლოდ მაშინ, თუ სიის საიტი, რომელსაც იყენებ, ამას მოითხოვს.
Status (enable-status) სერვერების სიის ჩვეულებრივი ping-ია. მისი გამორთვა სერვერს კლიენტების სერვერების სიაში offline-ად აჩენს, რაც მოთამაშეებს უფრო აღიზიანებს, ვიდრე სკანერებს ანელებს. hide-online-players=true hover სიაში მოთამაშეების სახელებს მალავს, რაც პატარა სერვერისთვის კონფიდენციალურობის გონივრული არჩევანია.
Plugin-ების წყაროები და გაჟონილი plugin-ები#
ყოველი plugin, რომელსაც აყენებ, სერვერის პროცესის სრული ძალით მუშაობს: მას შეუძლია ყველა ფაილის წაკითხვა, ქსელური კავშირების გახსნა, კონსოლის ბრძანებების გაშვება და მეტი კოდის ჩამოტვირთვა. Plugin ფუნქცია არ არის, ის პროგრამაა, რომელსაც სრულად ენდობი.
- ჩამოტვირთე ავტორის საკუთარი გვერდიდან. Hangar (PaperMC), Modrinth, SpigotMC და ავტორის GitHub-ის release-ები. არა ხელახალი ატვირთვები, არა "mirror" საიტები, არა Discord-ში გადაცემული ფაილები.
- არასოდეს გამოიყენო გაჟონილი ან "nulled" ფასიანი plugin-ები. უფასოდ გავრცელებული ფასიანი plugin-ები backdoor-იანი jar-ების მიწოდების მთავარი გზაა. ტიპური payload-ები ბრძანებით კონკრეტულ მოთამაშეს ოპერატორს აძლევს, დისტანციურ ბრძანებებს უშვებს, ფაილებს იპარავს ან
pluginsსაქაღალდის ყველა სხვა jar-ზე ვრცელდება. Plugin ნორმალურად მუშაობს, რაც სწორედ აზრია. - უპირატესობა მიანიჭე მხარდაჭერილ plugin-ებს. მიტოვებული plugin არ გასწორდება, როცა მასში სისუსტეს იპოვიან.
- უყურე, რას ითხოვს plugin. კოსმეტიკის plugin, რომელსაც საკუთარი ვებ-სერვერის პორტი სჭირდება ან განახლებებს შემთხვევითი დომენიდან ტვირთავს, მეორე შეხედვას იმსახურებს.
- შეინახე სია. იცოდე, რა არის შენს
pluginsსაქაღალდეში და რატომ. რისი ახსნაც არ შეგიძლია, უნდა წავიდეს.
თუ გაქვს ეჭვი, რომ jar კომპრომეტირებულია - op, რომელიც არავის მიუცია, უცნობი jar-ები ან ფაილები, კონსოლის ბრძანებები, რომლებიც არავის აუკრეფია - მთელი სერვერი კომპრომეტირებულად ჩათვალე. Backdoor, რომელიც jar-ებს შორის ვრცელდება, ნიშნავს, რომ ერთი plugin-ის წაშლა საკმარისი არ არის. რა გავაკეთოთ, როცა სერვერი გატეხეს შეკავებას განიხილავს, ხოლო mod-იანი სერვერის სისუფთავე შეიცავს ჩვევებს, რომლებიც ამას აფერხებს.
სერვერის პროგრამა განახლებული შეინახე#
Minecraft-ს სერიოზული სისუსტეები ჰქონია, ყველაზე ცნობილი Log4Shell (CVE-2021-44228) 2021 წლის დეკემბერში: ჩატის შეტყობინებას შეეძლო, დაუპაჩავი სერვერი ან კლიენტი კოდის ჩამოტვირთვასა და გაშვებაზე აეძულებინა. Vanilla 1.18.1 და შემდეგი ვერსიები გასწორებას შეიცავს, ხოლო ძველ ვერსიებს უსაფრთხოებისთვის JVM flag ან დაპაჩული კონფიგურაცია სჭირდებოდა. სერვერები, რომლებიც ჯერ კიდევ დაუპაჩავ ძველ ვერსიებზე მუშაობენ, ჯერ კიდევ ექსპლოიტირებადია.
მთავარი სისუსტეების მიღმა Paper-ის build-ები რეგულარულად ასწორებს კრაშის ექსპლოიტებს - არასწორ პაკეტებს, ზედმეტად დიდ წიგნებს ან ნივთებს, chunk-ban-ის ხრიკებს - რომლებიც ერთ მოთამაშეს სერვერის გათიშვის ან chunk-ების ჩატვირთვის შეუძლებლობის საშუალებას აძლევს. ეს ჩუმად და უწყვეტად სწორდება.
- გაუშვი ამჟამინდელი build Paper-ისა იმ Minecraft ვერსიისთვის, რომელსაც იყენებ.
- განაახლე build-ები რეგულარულად, არა მხოლოდ ვერსიები. Build-ის განახლება იმავე Minecraft ვერსიაში დაბალი რისკისაა.
- თუ თავსებადობისთვის ძველი ვერსიის გაშვება გიწევს, იცოდე, რომ დაუპაჩავ bug-ებს იღებ, და შეზღუდე, ვის შეუძლია შესვლა.
Minecraft-ის ვერსიების განახლებები სამყაროს გაუფუჭებლად განახლებას განიხილავს.
ქსელური დაცვა და რას არ ფარავს#
ზოგიერთი შეტევა თამაშის ნაცვლად ქსელს მიზნავს. შენს პორტზე ტრაფიკის წყალდიდობას შეუძლია სერვერი მიუწვდომელი გახადოს, როგორც არ უნდა იყოს კონფიგურირებული, ხოლო კავშირების წყალდიდობას - ათასობით ყალბ შესვლას - შეუძლია სერვერის შესვლის დამუშავება დაკავებული დატოვოს.
Paper-სა და Velocity-ს კავშირებსა და შესვლებზე ჩაშენებული rate limit-ები აქვთ, ხოლო server.properties-ში rate-limit თითო მოთამაშეზე წამში პაკეტებს ზღუდავს (0 თიშავს). RE:NODE-ზე არის upstream ფილტრაცია, რომელიც აშკარა მოცულობით წყალდიდობებს, ასევე reflection-სა და არასწორ ტრაფიკს ჭრის; შეტევები, რომლებიც ნამდვილ მოთამაშეებს ჰგავს, არ იფილტრება, და ვერც ერთი ჰოსტი საპირისპიროს ვერ დაგპირდება. რას ვაკეთებთ შეტევების წინააღმდეგ ამ წინადადების პატიოსანი ვერსიაა.
საკუთარი მისამართიც დაიცავი. სერვერის IP დიზაინით საჯაროა, შენი სახლის IP კი არა: ნუ გაუშვებ ინსტრუმენტებს ან plugin-ებს, რომლებიც მოთამაშეების IP-ებს სხვა მოთამაშეებს უჩვენებს, და ფრთხილად იყავი, რას აზიარებს სტაფი კონსოლის screenshot-ებში, რომელიც ყოველი შემოსული მოთამაშის IP მისამართს აჩვენებს.
დაიცავი პანელი და მის გარშემო მყოფი ანგარიშები#
სერვერი იმდენად უსაფრთხოა, რამდენადაც ანგარიშები, რომლებიც მას აკონტროლებს:
- შენი ჰოსტინგის პანელის ანგარიში. მას შეუძლია სერვერის გაჩერება, ყველა ფაილის წაკითხვა, ყველა backup-ის ჩამოტვირთვა. გამოიყენე უნიკალური პაროლი და ორფაქტორიანი ავთენტიფიკაცია. RE:NODE-ზე 2FA იყენებს კოდებს ნებისმიერი authenticator აპიდან, პლუს ერთჯერად აღდგენის კოდებს - აღდგენის კოდები სადმე offline შეინახე, რადგან ანგარიში, რომელმაც ორივე დაკარგა, ვერ აღდგება. ორფაქტორიანი ავთენტიფიკაცია პანელის ანგარიშზე ამას ნაბიჯ-ნაბიჯ გადის.
- სტაფის წვდომა. სტაფს მიეცი subuser-ები მხოლოდ იმით, რაც სჭირდებათ - მხოლოდ კონსოლი, მხოლოდ ფაილები, ბილინგის გარეშე - და არა შენი login. RE:NODE თითო სერვერზე აქტივობის ლოგს იწერს, ამიტომ ხედავ, ვინ რა გააკეთა. Subuser-ები და მინიმალური პრივილეგია დიზაინს განიხილავს.
- SFTP მონაცემები. ისინი თითო სერვერზეა; Discord-ში ნუ ჩასვამ.
- შენი Minecraft ანგარიში. მფლობელი, რომლის Microsoft ანგარიშიც მოიპარეს, თავდამსხმელს ოპერატორს აძლევს ყველა სერვერზე, რომელსაც ფლობს. ისიც 2FA-ით დაიცავი.
- ინტეგრაციები. Discord ბოტები კონსოლის არხებით, ვებ-პანელები, მაღაზიის plugin-ები - თითოეული შესვლის კიდევ ერთი გზაა. DiscordSRV-ის კონსოლის არხი კონსოლზე წვდომაა ყველასთვის, ვისაც მასში წერა შეუძლია.
ჩამონათვალი#
დააკოპირე და გაიარე გაშვებამდე და შემდეგ ყოველ რამდენიმე თვეში:
[ ] online-mode=true on every server players reach directly[ ] proxy backends reject direct connections (tested from outside)[ ] white-list=true and enforce-whitelist=true on private servers[ ] ops.json holds only owners[ ] no group has the * permission[ ] command-running plugin permissions held by owners only[ ] enable-rcon=false, or a long unique password and limited exposure[ ] enable-query=false unless a listing site needs it[ ] every plugin downloaded from its author, none leaked[ ] Paper on a current build[ ] panel account with 2FA and recovery codes stored offline[ ] staff on subusers or roles, not shared logins[ ] backups scheduled, and one restore actually testedბოლო ხაზი დეკორაცია არ არის. ზემოთ ყოველი პუნქტი ცუდი დღის შანსს ამცირებს; მომუშავე backup არის ის, რაც მას ამთავრებს. RE:NODE-ზე backup slot-ები ყველა Minecraft გეგმას მოჰყვება, ინახება იმ მანქანის გარეთ, რომელსაც იცავს, და შეიძლება დაიბლოკოს, რომ როტაციამ ინციდენტამდე აღებული არ წაშალოს. Backup-ები, რომლებიც მართლა აღდგება ხსნის, რატომ არის ტესტი მნიშვნელოვანი.
FAQ#
უსაფრთხოა offline-mode Minecraft სერვერი?
არა, როცა მოთამაშეებს მასთან პირდაპირ მიწვდომა შეუძლიათ. Online რეჟიმის გარეშე ნებისმიერს შეუძლია ნებისმიერი სახელით შესვლა, ოპერატორების სახელების ჩათვლით. ერთადერთი უსაფრთხო გამოყენებაა backend სწორად გამართული proxy-ის უკან, რომელიც პირდაპირ კავშირებს უარყოფს.
მჭირდება whitelist, თუ ჩემი სერვერის მისამართი საიდუმლოა?
დიახ. სკანერები Minecraft სერვერებს მთელ ინტერნეტში საათებში პოულობენ და სიებს აზიარებენ. სიაში შეუყვანელი სერვერი დამალული არ არის. Whitelist ერთადერთია, რაც კერძო სერვერს კერძოდ ინახავს.
მივცე ჩემს მოდერატორებს ოპერატორი?
არა. მიეცი უფლებების ჯგუფი იმ ბრძანებებით, რაც სჭირდებათ. ოპერატორი ყველაფერს იძლევა, იმის ჩათვლით, რასაც plugin-ები op-ებს ნაგულისხმევად აძლევენ, და მოპარულ მოდერატორის ანგარიშს მოპარულ სერვერად აქცევს.
უსაფრთხოა ფასიანი plugin-ების უფასო ასლების გამოყენება?
არა. გაჟონილი ფასიანი plugin-ები Minecraft სერვერებზე backdoor-ების ყველაზე გავრცელებული წყაროა. Plugin იმუშავებს, და იმუშავებს დამალული კოდიც, რომელიც კონტროლს სხვას აძლევს.
როგორ გავიგო, კომპრომეტირებულია თუ არა ჩემი სერვერი?
აუხსნელი ოპერატორები, ბრძანებები ლოგში, რომლებიც არავის აუკრეფია, ახალი ან შეცვლილი jar-ები plugins-ში, უცნობი ფაილები ან დაგეგმილი ამოცანები. ნებისმიერი მათგანი მთელი სერვერის კომპრომეტაციად ჩათვალე, აღადგინე ცნობილად სუფთა backup-იდან და ყველა მონაცემი შეცვალე.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.