Защо да не променяме SSH порта от 22 на друг?

В този раздел ще се поместват уроците, свързани с програмирането и дизайна.
Post Reply
User avatar
UnknownBGPlayer
Потребител
Потребител
Posts: 294
Joined: 11 Nov 2013, 23:34
CS Nick: UnknownBGPlayer
Favorite version: CS: Global Offensive
Steam Community ID: gstamoss

Защо да не променяме SSH порта от 22 на друг?

Post by UnknownBGPlayer »

Много хора пропоръчват смяната на default 22 порта на SSH сървъра на някое друго число (примерно 2222 или дори 36797).
Това са няколко причини защо това е грешно и опасно за сигурността ви.

За начало изглежда правилно - как ще атакувате порт който не го знаете - вие не може да ги атакувате всички? Но, ако дочетете нататък ще видите, че това е повече от голяма грешка, и ако продължавате да мислите, че това е добра идея - вие просто трябва да не сядате зад компютър....завинаги..

Но ето няколко причини, защо това е лоша идея и една от най-важнити причини е свързана с TCP/IP портовете които биват контролирани от Linux. Когато влезнете в системата като non-root (без root права) потребител (никой не е UID 0), вие не може да "слушате" портовете под 1024. Това е защото, всички портове под 1024 са зададени като "резервирани" (системни) и могат да бъдат викани само от потребител с root права. За сравнение - вашият уеб сървър (apache, nginx и т.н) стартира и работи като root потребител и започва да "слуша" всички свързано с порт 80 (този порт се използва по подразбиране в HTTP трафика, като за сравнение във cs-bg.info се използва порт 80). След като порта е отворен и всичко е преминало като root потребител нормално, уебсървъра праща всичко към non-root потребител (като например www-data, apache или някой друг потребител). От тази точка нататък ако нещо "лошо" се случи, потребителите имат ограничения върху какви действия може да извършват.

Но да се върнем към SSH-а ни :
Когато ние отворим SSH сървър върху порт 22, ние знаем че това се извършва от потребител с root права, докато никой друг потребител не може да отвори този порт никога и за нищо. Но какво ще стане ако преместим SSH сървъра ни на порт 2222? Този порт може да бъде отворен от потребител без root права и дефакто, аз мога да създам скрипт който просто да слуша всичко върху порт 2222 и да го накарам да записва всички команди (включително и паролите ни). Това е изпълнимо с прости знания и "инструменти" които ги има във всяка linux система/сървър. Затова, отварянето на SSH сървър от non-root потребител може да създаде ОГРОМНА дупка в СИГУРНОСТТА. Вие нямате представа дали този порт е отворен от вас или от някой който желае да ви компрометира и само тази причина е достатъчна, вие да не използвате НИКОГА ПОВЕЧЕ non-root порт за пускането на вашият SSH сървър.

Друга причина: доста от компаниите имат входящи/изходящи ограничения от firewall-owe, които не позволяват да се ходи към никакви сайтове или случайни портове. Някои защитени портове, като порт 22 са изключения, докато останалите портове като 25 или 2222 са блокирани.

Така, нека да си представим, че вие ОЩЕ ИСКАТЕ да смените порта, поради причината, че имате много атаки върху вашият SSH сървър.
Първо - Можете ли да влезнете като root? Ако можете - оправете този пропуск веднага.
Второ - Използвате ли пароли? Ако използвате - оправете този пропуск веднага и преминете към public key ауторизация.
Но помислете и за това:
Представете си, че това е вашата къща и много хора минават пред нея - това проблем ли е? - те са просто тези които тестват вашите защити! :-)
Ако знам, че около къщата ми има натрапник който желае да пробие моята защита - аз ще направя всичко възможно за да не може да влезне в моята къща. Това е все едно да оставя вратата отворена, докато някой просто случайно не влезе вътре да каже здрaати (и да разбие цялото място всичко или по лошо).
Но ако вие НАИСТИНА сте притиснени от този натрапник, по добрият начин е да скриете вратата от това да я местите. Може да използвате port-knocking (почукване на порта (може ли да влязаа)). Може да използвате много удобен модул в IPtables наречен "recent" който ви позволява да създавате прости port-knocking връзки.

Прост пример:

Code: Select all

${IPTABLES} -A INPUT -p tcp --dport 2222 -m recent --set --name csbg
${IPTABLES} -A INPUT -p tcp --syn --dport 22 -m recent --rcheck \
  --seconds 60 --name csbg-j ACCEPT
Какво прави това? Когато някой се опита да се свърже към порт 2222 (да, точно така - non-root порт, но няма проблем - нищо не работи на него (остава си SSH сървъра на порт 22)), ние му задаваме флаг наречен "csbg". След това ако ние се опитаме да се свържем към реалният SSH порт (22-ри порт), ще проверим дали това IP има задеден "csbg" флаг през последните 60 секунди. Ако го няма този флаг - drop-ваме връзката.

Така, недейте да копирате директно това върху вашата firewall защита, просто ви показваме колко лесно е да "скриете" вашите портове. Вие може да създадете и серия от "почуквания" през различни портове, ако ви допада, това е просто досадно за потребителите и не печелите нищо от това.

Отново, това не променя НИЩО върху факта дали вашият порт е отворен или не. И моля към всички хостинг компании, системни администратори или дори разработчици - не казвайте на другите, че смяната на SSH порта е добра идея. Защото не е, и никога няма да бъде

Автор: Георгиос Стамос (аз), нека ако някой разпространява урока да ми напише името... просто от уважение... както и за авторски права.. - you know :)
User avatar
Charlike Mike Reagent
Потребител
Потребител
Posts: 395
Joined: 29 Jun 2012, 12:28
CS Nick: Deusch. или BashCaroline#
Favorite version: CS: 1.6
Contact:

Re: Защо да не променяме SSH порта от 22 на друг?

Post by Charlike Mike Reagent »

Ми не съм съгласен. Слаби аргументи.

Мога да кажа накратко едно "еми да де, ама ако имаш повече потребители, повече от един нормален и един root", то тогава това може и да важи.

Но главно идеята (препоръката навсякъде) за смяна на портовете, и то не само на SSH, е защото се смята че няма да влизаш от root, пък и не трябва. Винаги има и трябва да има минимален брой потребители, като е ясно зададено какво могат и какво не могат да правят. Винаги, по-добрата практика е да направиш един ясно ограничен потребител и той в повечето случаи е напълно достатъчен. Ясно ограничен потребител, с ограничени привилегии и възможности на действие.

"Сигурността" от смяната на портовете идва оттам, че портовете до 1024 са така да се каже "well-known", тоест ясно дефинирани кой порт за какъв сървис е, дори има списък. От което следва, че атаката ще е много по-лесна. Пробваш порт 22, оп има го и е SSH, ми продължаваш нататъка, otherwise шъ има да гадаеш 35000 възможности - хубу де, не са толкова, по-малко са, пък и в тия модерни времена изобщо не е трудно, но все пак вдига мизата и спасява от пишман хакери и не чак толкоз пишман хакери.

Даже няма да е лошо да се направи рандом смяна на порта след всеки път. Може и да има някви тулове, почти съм сигурен. Примерно влизаш на порт 2134, след излизането ти се преконфигурира на порт (5461 или който е свободен) и ти праща мейл (примерно) с новите данни за достъп. Или всеки път когато влезнете си го преконфигурирайте ръчно, или си направете скрипта сами - смисъл.. automation трябва да има ;d, да не трябва да го мислите и пишете всеки път.

И да, продължавайте да си сменяте портовете. Така наречената "опасност" за сигурността съществува, разбира се, ако не си конфигурирате правилно потребителя и изобщо системата като цяло. И да, съществува, толкова колкото съществува и когато не си ги смените, даже и повече.

@Гурутата от Shield.BG искам да чуя :rotfl:
User avatar
teknival
Потребител
Потребител
Posts: 9
Joined: 02 Mar 2015, 11:41

Re: Защо да не променяме SSH порта от 22 на друг?

Post by teknival »

Можеш да си промениш порта само ако сървъра ти стои зад NAT.
Така локално ще си остане 22 а нат сървъра ще пренасочва от 2222 към 22.

при мене е така: интернета влиза в 1 сървър който НЕ Е достъпен отвънка и в него има този ред:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2222 -d 10.4.112.100 -j DNAT --to 192.168.0.3:22

локалния сървър е именно 192.168.0.3

За да вляза в недостъпния сървър влизам във втория през 2222 порт което е по-удобно от knocking и пиша ssh root@192.168.0.254

И не съм съгласен че не трябва да се влиза с парола. Доста по-удобно е отколкото с разни сертификати.
Post Reply

Return to “Учебни теми”