Өзүн, жакындарын SSH/RDP/башка аркылуу дүйнөнүн каалаган жеринен серверлерине кирүү мүмкүнчүлүгүн камсыз кылуу керек болгондор үчүн, кичинекей RTFM/spur.
Колубуздагы каалаган түзмөктөн VPN жана башка коңгуроолорсуз иштешибиз керек.
Жана сервер менен ашыкча көнүгүү жасабашыңыз үчүн.
Бул үчүн сизге керек болгон нерсе
"Баары Интернетте", албетте (ал тургай
Мисал катары биз Fedora/CentOS колдонуп машыгабыз, бирок бул маанилүү эмес.
Шпор бул маселеде жаңы баштагандарга да, эксперттерге да ылайыктуу, андыктан комментарийлер болот, бирок алар кыскараак болот.
1. Сервер
-
knock-серверди орнотуу:
yum/dnf install knock-server
-
аны конфигурациялоо (мисалы, ssh боюнча) - /etc/knockd.conf:
[options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
"Ачуучу" бөлүгү 1 сааттан кийин автоматтык түрдө жабылат. Сиз эч качан билесиз...
-
/etc/sysconfig/iptables:
... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ...
-
алдыга:
service iptables restart service knockd start
-
ичинде айлануучу виртуалдык Windows серверине RDP кошо аласыз (/etc/knockd.conf; интерфейстин атын табитиңизге жараша алмаштырыңыз):
[RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
Биз буйрук менен сервердеги кардардан бардык соккуларыбызды көзөмөлдөйбүз
iptables -S
.
2. Тырмоолорго жол көрсөтүүчү
knockd.conf:
Манада да бардыгы камтылган (бирок бул так эмес), бирок knockd - бул билдирүүлөргө абдан сараң дос, андыктан өтө этият болушуңуз керек.
- версия
Fedora/CentOS репозиторийлеринде бүгүнкү күндө эң акыркы такылдатуу 0.63. Ким UDP каалайт - 0.70 пакеттерди изде. - Interface
Демейки Fedora/CentOS конфигурациясында бул линия жоголгон. Колуңуз менен кошуңуз, антпесе иштебейт. - убакыт бүттү
Бул жерде сиз табитиңизге жараша тандай аласыз. Кардардын бардык соккулар үчүн жетиштүү убактысы болушу керек - жана порт сканер боту бузулат (жана 146% сканерлейт). - баштоо/токтоо/буйрук.
Эгер бир буйрук болсо, анда команда, экөө болсо, анда баштоо_буйрук+токтотуу_командасы.
Эгер ката кетирсеңиз, knockd унчукпай калат, бирок иштебейт. - прото
Теориялык жактан UDP колдонсо болот. Иш жүзүндө мен tcp менен udpди аралаштырдым, Балидеги пляждан келген кардар дарбазаны бешинчи жолу гана ача алды. Анткени TCP керек болгондо келди, бирок UDP бул факт эмес. Бирок бул дагы бир даам маселеси. - ирээт
Жашыруун тырмоо - тизмектер кесилишпөөсү керек ... муну кантип айтышым керек ...
Мисалы, бул:
open: 11111,22222,33333
close: 22222,11111,33333
By kick 11111 ачык кийинки тепкени 22222 күтөт. Бирок, бул (22222) тепкенден кийин ал иштей баштайт жакын жана баары бузулат. Бул кардардын кечигүүсүнө да көз каранды. Мындай нерселер ©.
iptables
/etc/sysconfig/iptables ичинде болсо, бул:
*nat
:PREROUTING ACCEPT [0:0]
Бул бизди чындап эле тынчсыздандырбайт, ошондуктан бул жерде:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Бул кийлигишет.
knockd INPUT чынжырынын аягына эрежелерди кошкондуктан, биз четке кагылабыз.
Ал эми бул баш тартууну өчүрүү машинаны бардык шамалдарга ачууну билдирет.
IPtables'де адашып калбоо үчүн эмненин алдында эмнени киргизүү керек (ушуга окшогон
- демейки CentOS/Fedora боюнча биринчи эрежеси («тыюу салынбаганга уруксат») тескерисине алмаштырылат,
- жана биз акыркы эрежени алып салдык.
Натыйжа төмөнкүдөй болушу керек:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Сиз, албетте, DROP ордуна REECT жасай аласыз, бирок DROP менен жашоо боттор үчүн кызыктуураак болот.
3. Кардар
Бул жер эң кызыктуу (менин көз карашым боюнча), анткени сиз каалаган пляждан гана эмес, каалаган түзмөктөн да иштешиңиз керек.
Негизи, бир катар кардарлардын тизмеси бар
Кардар тандоодо, ал пакеттердин ортосунда кечигүү опциясын колдой тургандыгын текшеришиңиз керек. Ооба, пляждардын ортосунда айырмачылыктар бар жана 100 мегабит пакеттер белгиленген жерден керектүү убакта керектүү тартипте келе тургандыгына эч качан кепилдик бербейт.
Ооба, кардарды орнотуп жатканда, кечиктирүүнү өзүңүз тандап алышыңыз керек. Өтө көп тайм-аут - боттор кол салат, өтө аз - кардардын убактысы болбойт. Өтө көп кечигүү - кардар аны өз убагында аткара албайт же акмактардын чатагы болот ("тырмоолорду" караңыз), өтө аз - пакеттер Интернетте жоголуп кетет.
Таймут = 5 сек, кечигүү = 100..500ms - бул толугу менен иштеген вариант
Windows
Канчалык күлкүлүү угулбасын, Google үчүн бул платформа үчүн так тыкылдатуу кардары үчүн анча маанилүү эмес. Мындай CLI кечиктирүүнү колдойт, TCP - жана жаа жок.
Же болбосо, аракет кылсаңыз болот
Linux
Бул жерде баары жөнөкөй:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Эң оңой жолу - портту homebrewден орнотуу:
brew install knock
жана буйруктар үчүн керектүү пакет файлдарын тартыңыз:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
Белги
Жумушчу вариант - KnockOnD (дүкөндөн бекер).
Android
"Портторду тык" Жарнама эмес, бирок ал жөн гана иштейт. Жана иштеп чыгуучулар абдан жооп беришет.
PS Хабреге белгилөө, албетте, Кудай аны качандыр бир күнү колдосун ...
UPD1: рахмат
UPD2: дагы бир
Source: www.habr.com