Правілы ўваходу SSH і VPN: чым насамрэч кіруе белы спіс
Прайдзіце адно злучэнне ад кліента да хоста: які хук яно перасякае, чаму завісанне і адмова азначаюць розныя правілы і чаму адхіленне ніколі не бывае палітыкай.
Злучыцеся адзін раз, перш чым змяніць правіла, і адзначце, ці кліент завісае, ці яго адразу адхіляюць. Гэтая адзіная розніца падказвае, якое рашэнне скінула пакет, і эканоміць гадзіну чытання файлаў палітыкі. Астатні шлях кароткі: пакет перасякае хук, супадае з правілам і альбо дасягае слухача, альбо не. Белы спіс — гэта проста ўлік вакол гэтых трох фактаў.
Прайдзіце адну спробу SSH да хука ўваходу
Кліент шле SYN на адрас хоста праз порт 22, і ядро вырашае, ці гэты пакет для лакальнай службы. Калі так, працуе шлях уваходу, і набор правілаў альбо прымае пакет, альбо адкідвае яго. Цішыня азначае, што SYN загінуў раней, чым слухач яго ўбачыў, а хуткая адмова — што нешта адказала скідам. Гэта розныя вердыкты ад розных правілаў, і абодва — законныя вынікі.
Пасля праверце слухача, бо ніякае правіла не ўратуе службу, якой няма. Запусціце ss -ltnp і ўпэўніцеся, што нешта прывязана да патрэбнага порта і сямейства адрасоў, затым прачытайце ssh -v на кліенце, каб убачыць, дзе ён спыняецца.
Перасыланне — асобнае рашэнне
На серверы VPN цікавейшы хук — forward, бо кліенцкі трафік ідзе праз машыну, а не дастаўляецца ёй. Хост, які запускае толькі ўласны кліент VPN, мае патрэбу ў значна меншым наборы правілаў, чым той, што перасылае пакеты іншых людзей. Змешванне двух дызайнаў на адной скрыні стварае правілы, якія выглядаюць правільна і нічога не прапускаюць.
Запішыце ўнутраную палітыку як асобнае пытанне: якія адрасы кліентаў могуць дасягаць якіх прызначэнняў праз тунель. Трымайце адміністрацыйны шлях, напрыклад SSH, на шляху ўваходу з уласным абмежаваннем крыніцы. Дазвольнае правіла forward, дададзенае падчас тэставання, — класічны дэфект, які перажывае тэст, таму пасля змены праглядайце ўвесь набор правілаў, а не той радок, які вы правілі. Адкрыццё слухача тунеля не дае кожнаму падключанаму кліенту права кіраваць хостам.
Адкідванне і адхіленне — дзеянні, а не палітыкі
Палітыка базавага ланцуга прымае або адкідвае, і гэта ўвесь спіс выбару, як сцвярджае даведнік па nftables. Адхіленне існуе як дзеянне правіла з абраным адказам, таму запіс яго як палітыкі правальваецца і на nftables, і на iptables. На практыцы адкідванне не дае кліенту ніякай інфармацыі, а адхіленне перадае яму памылку, з якой можна нешта зрабіць.
table inet admin {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ip saddr 203.0.113.0/28 tcp dport 22 accept
udp dport 51820 accept
icmp type { destination-unreachable, time-exceeded } accept
}
}
Чытайце гэты накід як форму рашэння, а не як файл для ўстаўкі, бо дыяпазоны адрасоў — прыклады. Яўнае адхіленне на порце SSH прымушае непаўнамоцнага кліента пацярпець няўдачу за секунду замест чакання тайм-аўту, што скарачае вашу ўласную адладку. Цішыня стрымлівае выпадковае сканаванне і не паведамляе аўтарызаванаму карыстальніку нічога. Выбірайце для кожнай службы і запісвайце прычыну, бо інакш наступны чалавек верне ўсё назад.
Трымайце той кіруючы трафік, які вам сапраўды патрэбны
Блакаванне ўсяго ICMP — папулярны стандарт, які ламае выяўленне MTU шляху, і сімптом — злучэнне, што ўстанаўліваецца і потым застывае на буйнейшых пакетах. Выяўленне суседзяў у IPv6 залежыць ад уласных тыпаў ICMPv6, і адкідванне іх ламае канал раней, чым будзе прачытана любое правіла TCP. Абодва належаць у белы спіс як названыя залежнасці, а не як суцэльныя дазволы. Палітыка, якая моўчкі ламае выяўленне, горш за тую, што дапускае крыху дыягнастычнага трафіку.
Дазвольце стан established і related для злучэнняў, якія вы ініцыявалі, і дайце рухавіку станаў апрацаваць адказы. Затым пераканайцеся, што шлях адказу не заблакаваны далей, бо абмежаванне толькі на выходзячы трафік вышэй па стэку стварае той самы тайм-аўт, які вы збіраліся звесці да хоста.
Дакажыце аднаўленне, перш чым адмовіцца ад старога шляху
Трымайце адкрытую кансольную сесію, ужывіце змену і адкрыйце цалкам новае кіруючае злучэнне з іншага тэрмінала. Існуючая сесія нічога не даказвае, бо яна можа перажыць правіла, якое блакуе кожны новы ўваход, і гэта робіць яе самым пераканаўчым ілжывым станоўчым вынікам у працы з фаерволам. Калі сістэма маніторынгу правярае хост, дадайце яе адрас крыніцы да змены, а не пасля першага папярэджання. Затым праверце адзін буйны і адзін малы пакет, каб даказаць, што выяўленне ўсё яшчэ працуе.
Для службы VPN паўтарыце з кліента, які ніколі не падключаўся, бо адноўленая сесія можа выкарыстаць стан, які свежая павінна ўзгадніць. Запішыце дакладны набор правілаў, які прайшоў, з кантрольнай сумай або копіяй, каб пазнейшую праўку можна было параўнаць, а не ўгадваць. Узгадніце з тым, хто валодае парадкам правілаў, бо папярэдняе правіла моўчкі перамагае дададзенае вамі.