Кіраванне ўваходзячымі злучэннямі з дапамогай iptables на прыкладзе RPC вузла Autonity
У свеце сеткавай бяспекі і кіравання трафікам, iptables з'яўляецца магутным і адносна простым інструментам для Linux-сістэм. Давайце падрабязна разгледзім, як выкарыстоўваць iptables для абмежавання ўваходных злучэнняў, што асабліва важна пры наладзе сервераў з высокай нагрузкай або пры абароне ад DDoS-нападаў.
iptables-гэта ўтыліта каманднага радка, якая з'яўляецца стандартным інтэрфейсам для кіравання правіламі фільтрацыі пакетаў у ядры Linux. Яна дазваляе сістэмным адміністратарам наладжваць правілы для ўваходнага і выходнага сеткавага трафіку.
Перш за ўсё, пераканайцеся, што ў вас усталяваны і ўключаны iptables. У большасці дыстрыбутываў Linux, iptables пастаўляецца прадусталяваным. Аднак, калі ён у вас не ўсталяваны, можна ўсталяваць яго з дапамогай наступнай каманды:
sudo apt-get install iptables
Пасля ўстаноўкі iptables неабходна ўключыць яго і праверыць статус. Для гэтага можна выкарыстоўваць наступныя каманды:
sudo systemctl enable iptables sudo systemctl start iptables sudo systemctl status iptables
Для прагляду бягучых правілаў iptables, вы можаце выкарыстоўваць каманду:
sudo iptables -L
Гэта пакажа вам спіс бягучых правілаў iptables.
Перш чым пагрузіцца ў канкрэтныя прыклады, давайце разгледзім базавую структуру каманды iptables:
iptables -A CHAIN -p PROTOCOL --dport PORT -m module -j ACTION
- A CHAIN: дадае новае правіла ў паказаную ланцужок (напрыклад, INPUT для ўваходнага трафіку)
- p PROTOCOL: паказвае пратакол (напрыклад, tcp)
- dport PORT: паказвае порт прызначэння
- m модуль: загружае дадатковы модуль iptables
- j ACTION: паказвае дзеянне, якое трэба выканаць (напрыклад, ACCEPT, DROP, QUEUE)
Абмежаванне ўсіх тыпаў ўваходзяць злучэнняў на RPC вузел Autonity
Каманды для ўстаноўкі правілаў iptables для партоў 8545 (http) і 8546 (ws):
Першая каманда iptables дазваляе TCP трафік на партах 8545 і 8546 з абмежаваннем у 100 пакетаў у хвіліну для новых, устаноўленых і звязаных злучэнняў. Другая каманда забараняе ўвесь астатні TCP трафік на тых жа партах.
iptables -A INPUT -p tcp --match multiport --dports 8545,8546 -m state --state NEW,ESTABLISHED,RELATED -m limit --limit 100/minute -j ACCEPT iptables -A INPUT -p tcp --match multiport --dports 8545,8546 -j DROP
Пасля таго як вы наладзілі правілы iptables, важна захаваць іх, каб яны ўжываліся пасля перазагрузкі. У большасці выпадкаў, гэта можна зрабіць з дапамогай каманды iptables-save, якая захоўвае бягучыя правілы iptables ў файл. Напрыклад:
sudo iptables-save > /etc/iptables/rules.v4
Гэта захоўвае правілы ў файл rules.v4, які будзе аўтаматычна загружаны пры запуску iptables.
Такі падыход да кіравання ўваходзяць злучэннямі мае некалькі пераваг:
- абарона ад перагрузкі: абмяжоўваючы колькасць ўваходных злучэнняў, вы абараняеце свой сервер ад празмернай нагрузкі.
- прадухіленне DDoS-нападаў: гэта дапамагае змякчыць наступствы DDoS-нападаў, абмяжоўваючы колькасць адначасовых злучэнняў.
- кіраванне рэсурсамі: дазваляе больш эфектыўна размяркоўваць рэсурсы сервера, прадухіляючы іх знясіленне з-за вялікай колькасці злучэнняў.
- гнуткасць: выкарыстанне опцыі QUEUE замест DROP дазваляе апрацоўваць перавышаюць ліміт злучэння, а не проста адкідаць іх.
Настройка iptables для працы з HTTP і WebSocket патрабуе разумення асаблівасцяў абодвух пратаколаў. Правільная канфігурацыя дазваляе эфектыўна кіраваць ўваходзяць злучэннямі, забяспечваючы пры гэтым нармальную працу як кароткачасовых HTTP-запытаў, так і доўгажывучых WebSocket злучэнняў. Не забывайце рэгулярна маніторыць і пры неабходнасці карэктаваць налады ў залежнасці ад нагрузкі і спецыфікі вашага прыкладання.