Манай VPS-ийг аюулгүй болгох алхамууд

Энэхүү гарын авлагад Debian GNU / Linux ашиглан Виртуал Хувийн Сервер (VPS) -ийг хэрхэн яаж бэлтгэж аюулгүй болгохыг харуулав. Эхлэхээсээ өмнө зарим зүйлийг таамаглаж байна.

  1. Та GNU / Linux-ийг сайн мэддэг.
  2. SSH-ээр дамжуулан нэвтрэх хувийн хэрэгцээнд зориулагдсан VPS байдаг.
  3. VPS нь зориулалтын гадаад ipv4 250.250.250.155-тэй бөгөөд манай үйлчилгээ үзүүлэгч 250.250.0.0/16 блокыг эзэмшдэг. (нэг)
  4. Манай VPS дээр зөвхөн http, https, ssh үйлчилгээнүүд гаднаас нэвтрэх боломжтой байх болно.
  5. Гаднах DNS нь ихэвчлэн манай үйлчилгээ үзүүлэгчийн самбарт хийгддэг тул идэвхжүүлэхгүй. (2)
  6. Энэ нь супер хэрэглэгчийн хувьд ажиллах болно.

Суурилуулалт

Эхний алхам бол серверээ шинэчилж, бидэнд хэрэгтэй зарим багцыг суулгаж өгье.

# ур чадварын шинэчлэлт ба ур чадварын аюулгүй байдлыг дээшлүүлэх # ур чадвар -RvW суулгах dropbear gesftpserver sslh iptables-persistent ulogd fail2ban nginx-light apache2-utils dnsutils telnet ghostscript poppler-utils zip unzip unrar-free p7zip-full less multitail tee

тохиргоо

Одоо бид ажлын хэрэглэгч үүсгэх гэж байна. Сервер дээр root байдлаар ажиллах нь найдваргүй тул бид эхлээд тусгай хэрэглэгч үүсгэх болно.

adduser оператор usermod -aG sudo оператор

Эхний тушаал нь операторын хэрэглэгчийг үүсгэдэг, хоёр дахь нь бүлэгт нэмдэг sudoпрограмыг root байдлаар ажиллуулах боломжийг танд олгоно.

Супер хэрэглэгчийн зөвшөөрлийг тохируулна уу

Тогтмол ажиллахын тулд бид хэрэглэгчийг ашиглах болно оператор Өмнө нь бүтээсэн тул бид дараах тушаалыг гүйцэтгэхийн тулд супер хэрэглэгчийн хувьд командын гүйцэтгэлийн тохиргоог тохируулах хэрэгтэй.

visudo

Энэ тушаал нь үндсэндээ файлыг өөрчлөх боломжийг олгодог / etc / sudoers файлыг үзнэ үү; бид эдгээр мөрүүдийг агуулах ёстой:

Анхдагчаар env_reset, timestamp_timeout = 0% sudo ALL = (ALL: ALL) ALL

Эхний мөрөнд сонголтыг анхдагч утгуудад нэмнэ цаг_тамга sudo тушаалыг гүйцэтгэх үед нууц үгийн хугацаа дуусах хугацааг (минутын дотор) тохируулах боломжийг олгодог. Анхдагч нь 5, гэхдээ энэ нь заримдаа хоёр шалтгаанаар аюултай байдаг:

  1. Хэрэв бид нууц үгээ дуусахаас өмнө санамсаргүйгээр компьютерээ оруулаад орхисон бол хэн нэгэн супер хэрэглэгчийн хувьд ямар нэгэн хязгаарлалтгүйгээр командыг гүйцэтгэх боломжтой.
  2. Хэрэв бид үл тоомсорлосноор нууц үг дуусахаас өмнө хортой код агуулсан програм эсвэл скриптийг ажиллуулдаг бол програм нь манай зөвшөөрөлгүйгээр бидний системд супер хэрэглэгчийн хувьд нэвтрэх боломжтой болно.

Эрсдэлээс зайлсхийхийн тулд бид утгыг тэг болгосон, өөрөөр хэлбэл sudo командыг гүйцэтгэх бүрт нууц үгээ оруулах шаардлагатай болно. Хэрэв сөрөг утгыг -1 гэж тохируулсан бол нууц үг нь хэзээ ч дуусдаггүй тул бидний хүссэнээс эсрэг үр дүн гарах болно.

Хоёрдахь мөрөнд sudo бүлгийг дурын компьютер дээр дурын командыг гүйцэтгэж болох бөгөөд энэ нь ердийн зүйл боловч үүнийг тохируулж болно. (3) Тааламжтай байхын тулд нууц үгээ оруулахаас зайлсхийхийн тулд мөрийг дараах байдлаар тавьдаг хүмүүс байдаг.

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

Гэхдээ бид өмнө нь тайлбарлаж байсанчлан энэ нь эрсдэлтэй тул зөвлөдөггүй.

Дахин эхлүүлэхийг идэвхгүй болгох

Аюулгүй байдлын үүднээс бид товчлуурын хослолыг ашиглан дахин эхлүүлэхийг идэвхгүйжүүлнэ Ctrl + Alt + DelҮүний тулд бид энэ мөрийг файлд нэмэх ёстой / etc / inittab:

ca: 12345: ctrlaltdel: / bin / echo "Ctrl + Alt + Del идэвхгүй болсон."

OpenSSH-ийг DropBear-ээр солино уу

Ихэнх VPS нь OpenSSH суулгагдсан байдаг бөгөөд энэ нь маш их ашиг тустай байдаг, гэхдээ бид OpenSSH-ийн бүх ажиллагааг ашиглах шаардлагагүй бол VPS-ийн хувьд илүү хөнгөн хувилбарууд байдаг. Бамбаруушихэвчлэн тогтмол хэрэглэхэд хангалттай байдаг. Гэсэн хэдий ч энэхүү програмын сул тал нь нэгдсэн SFTP сервер дагалддаггүй явдал бөгөөд тиймээс бид эхэнд нь багцыг суулгасан болно gesftpserver.

Dropbear-ийг тохируулахын тулд бид файлыг өөрчлөх болно / etc / default / dropbear Ингэснээр эдгээр хоёр мөрийг агуулна.

NO_START = 0 DROPBEAR_EXTRA_ARGS = "- w -p 127.0.0.1:22 -I 1200 -m"

Эхний мөр нь үйлчилгээг идэвхжүүлж, хоёр дахь нь хэд хэдэн зүйлийг хийдэг.

  1. Үндэс хандалтаас зайлсхий.
  2. Энэ нь үйлчилгээг локал интерфейсийн 22 порт дээр сонсох боломжийг олгодог (яагаад дараа нь тайлбарлах болно).
  3. Хүлээх хугацааг тохируулна (20 минут).

SSLH

Порт 22 (SSH) нь сайн танигдсан бөгөөд хакерууд хамгийн түрүүнд зөрчихийг оролддог тул бид 443 (SSL) портыг ашиглах болно. Энэ порт нь HTTPS дээр аюулгүйгээр үзэхэд ашиглагддаг.

Энэ шалтгааны улмаас бид sslh багцыг ашиглах бөгөөд энэ нь 443 порт дээр ирсэн пакетуудыг задлан шинжилж, траффикийн төрөл нь SSH эсвэл SSL байгаагаас хамааран дотооддоо нэг үйлчилгээнд эсвэл өөр үйлчилгээнд чиглүүлдэг мультиплексор юм.

SSLH нь өөр үйлчилгээ аль хэдийн сонссон интерфэйсийг сонсох боломжгүй тул бид өмнө нь Dropbear програмыг локал интерфэйс дээр сонсдог болгосон.

Одоо бидний хийх ёстой зүйл бол sslh интерфэйс болон түүний сонсох порт, үйлчилгээний төрлөөс хамааран пакетуудыг хаана дахин чиглүүлэхийг зааж өгөх бөгөөд ингэснээр тохиргооны файлыг өөрчлөх болно. / etc / default / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- user sslh --listen 250.250.250.155:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile / var / run / sslh / sslh. pid "RUN = тийм

Эцэст нь бид үйлчилгээг дахин эхлүүлнэ:

service ssh stop && service dropbear start && service sslh дахин эхлүүлэх

Өмнөх тушаалын дараа манай аюулгүй ажиллагаа тасалдсан байх магадлалтай бөгөөд энэ тохиолдолд дахин нэвтрэхэд хангалттай, гэхдээ энэ удаад ажлын хэрэглэгчид болон 443 порт ашиглан нэвтэрнэ үү. Хэрэв хуралдаан тасалдаагүй бол түүнийг хааж, дахин эхлээрэй. зохих утгуудаар.

Хэрэв бүх зүйл зөв ажиллаж байвал бид root хэлбэрээр үргэлжлүүлэн ажиллах боломжтой бөгөөд хэрэв хүсвэл OpenSSH-ийг устгана уу:

sudo su - ур чадвар -r цэвэрлэгээ opensh-сервер

Галт хана

Дараагийн хийх зүйл бол галт хананаас бүртгэлийг тусад нь файл болгон салгах явдал юм /var/log/firewall.log цаашдын анализыг хөнгөвчлөх үүднээс эхлүүлэх үедээ ulogd багцыг суулгасан болно. Үүний тулд бид файлыг засах болно /etc/logd.conf холбогдох хэсгийг тохируулах:

[LOGEMU] file = "/ var / log / firewall.log" sync = 1

Дараа нь бид бичлэгийн эргэлтийн файлыг өөрчлөх болно / etc / logrotate / ulogd өдөр тутмын эргэлтийг (огноотой хамт) хадгалах, шахсан салвуудыг лавлах санд хадгалах / var / log / ulog /:

/var/log/ulog/*.log /var/log/firewall.log {өдөр тутмын огноо байхгүй алга болсон шахах хойшлуулах компресс хуваалцсан скриптүүд нь 640 root adm postrotate /etc/init.d/ulogd reload mv /var/log/firewall.log-* үүсгэдэг .gz / var / log / ulog / endscript}

Дараа нь бид дараахь зүйлийг хийж netfilter дүрмийг бий болгоно.

IPT = $ (аль нь iptables) IPEXT = 250.250.250.155 IPEXTBLK = 250.250.0.0 / 16 IPBCAST = 255.255.255.255 $ IPT -F $ IPT -X $ IPT -Z $ IPT -A INPUT -i lo -j $ IPT - P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT APPTPT $ IPT -A INPUT -m state --state INVALID -j ULOG --ulog-угтвар IN_INVALID $ IPT -A INPUT -p igmp -j ULOG --ulog -prefix IN_IGMP $ IPT -A INPUT -m pkttype --pkt-type Broadcast -j ULOG --ulog-угтвар IN_BCAST $ IPT -A INPUT -m pkttype --pkt-type multicast -j ULOG --ulog-prefix IN_MCAST $ IPT -A FORWARD -j ULOG --ulog-угтвар FORWARD $ IPT -N ICMP_IN $ IPT -A INPUT!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-угтвар IN_ICMP_FRAGMENTED $ IPT -A ICMP_IN -p icmp -m icmp -m урт!  - 28: 1322 -j ULOG --ulog-угтвар IN_ICMP_INVALIDSIZE $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-above 4 / sec --hashlimit-mode srcip --hashlimit-srcmask 24 - -hashlimit-name icmpflood -j ULOG --ulog-угтвар IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-upto 64kb / min --hashlimit-mode srcip --hashlimit-srcmask 24 - hashlimit -name icmpattack -j ULOG --ulog-угтвар IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m u32!  --u32 "0x4 & 0x3fff = 0x0" -j ULOG --ulog-угтвар IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  --icmp төрлийн echo-request -m state --state NEW -j ULOG --ulog-угтвар IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -j ULOG --ulog- угтвар IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type echo-request -m limit - limit 1 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp маягийн цуурай хариу -m хязгаар - хязгаар 2 / сек - хязгаарлалт-тэсрэлт 4 -j ХҮЛЭЭН АВАХ $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type очих-хүрэх боломжгүй -m хязгаар - хязгаар 2 / сек - хязгаарлалт-тэсрэлт 4 -j ХҮЛЭЭН АВАХ $ IPT -A ICMP_IN -p icmp -m icmp --icmp төрлийн хугацаа хэтэрсэн -m хязгаар - хязгаарлалт 2 / сек - хязгаарлалт-тэсрэлт 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type parameter-problem -m limit --limit 2 / sec --limit-burst 4 -j ХҮЛЭЭН АВАХ $ IPT -A ICMP_IN -j RETURN $ IPT -N UDP_IN $ IPT - Оролт!  -i lo -p udp -j UDP_IN $ IPT -A UDP_IN!  -би!  -p udp -f -j ULOG --ulog-угтвар IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp --sport 53 -m length!  - 28: 576 -j ULOG --ulog-угтвар IN_UDP_DNS_INVALIDSIZE $ IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog-prefix IN_UDP_DNSREQUEST $ IPT - UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j REJECT --reject-with icmp-port-unchachable $ IPT -A UDP_IN -p udp -m udp!  - спорт 53!  -s $ IPEXTBLK!  -d $ IPBCAST -m state --state NEW -j ULOG --ulog-угтвар IN_UDP $ IPT -A UDP_IN -p udp -m udp -m state --state ESTABLISHED, RELATED -j ХҮЛЭЭН АВНА $ IPT -A UDP_IN -j $ IPT -N TCP_IN $ IPT -A оролт буцааж өгөх!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -би!  -p tcp -f -j ULOG --ulog-угтвар IN_TCP_FRAGMENTED $ IPT -A TCP_IN -p tcp -m tcp --sport 53 -m state --state ESTABLISHED, RELATED -m length!  - 513: 1500 -j ULOG --ulog-угтвар IN_TCP_DNS_INVALIDSIZE $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j ULOG --ulog-prefix IN_TCP_DNS $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j REJECT --reject-with icmp-port-unchachable $ IPT -A TCP_IN -p tcp -m tcp -m multiport!  --dports 80,443 -m state --state NEW -j ULOG --ulog-угтвар IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m hashlimit - hashlimit -upto 4 / sec --hashlimit-burst 16 --hashlimit-mode srcip --hashlimit-name navreq -j ХҮЛЭЭН АВАХ $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state - state ESTABLISHED -м хязгааргүй!  --connlimit дээрх 16 -j ХҮЛЭЭН АВНА $ IPT -A TCP_IN -p tcp -m tcp -m multiport! 

Өмнөх тохиргооны дагуу манай VPS нь найдвартай хамгаалагдсан байх ёстой, гэхдээ хүсвэл бид үүнийг арай илүү аюулгүй болгож, илүү дэвшилтэт дүрмийг ашиглаж болно.

Бүх VPS нь netfilter-д зориулж нэмэлт модулиудыг суулгахыг зөвшөөрдөггүй боловч энэ нь маш ашигтай байдаг psdнь портыг сканнердахаас зайлсхийх боломжийг олгодог. Харамсалтай нь энэ модуль нь анхдагчаар netfilter-тэй нэгтгэгдээгүй тул тодорхой багцуудыг суулгаж дараа нь модулийг бүтээх шаардлагатай байна.

чадвар -RvW суулгах iptables-dev xtables-addons-source модуль-туслах модуль-туслах --verbose --text-mode автоматаар суулгах xtables-addons-source

Дээрх зүйлийг хийсний дараа бид дараах дүрмийг нэмж болно.

iptables -A INPUT -m psd --psd-weight-босго 15 --psd-саатал-босго 2000 --psd-lo-port-weight 3 --psd-hi-ports-weight 1 -j ULOG --ulog- IN_PORTSCAN угтвар

Өмнөх дүрэм нь үндсэндээ бид 3-ээс бага порт уруу нэвтрэх оролдлого хийх бүрт 1024-аар, 1-ээс дээш порт руу нэвтрэх оролдлого хийх бүрт 1023-ээр нэмэгдэх тоолуур үүсгэх болно гэсэн үг юм. тоолуур нь 15 секундээс бага хугацаанд 20 хүрч, багцуудыг бүртгэх болно улог боомтоор оролдох гэж. Багцуудыг нэг дор хаяж болох боловч энэ тохиолдолд бид ашиглахыг зорьж байна fail2 байна, үүнийг дараа нь тохируулах болно.

Дүрмийг бий болгосны дараа бид тэдгээрийг тогтвортой байлгахын тулд тодорхой урьдчилан сэргийлэх арга хэмжээ авах ёстой, эс тэгвээс серверийг дахин эхлүүлэхэд бид үүнийг алдах болно. Үүнийг хэрэгжүүлэх хэд хэдэн арга байдаг. Энэхүү гарын авлагад бид эхэнд суулгасан iptables-persistent багцыг ашиглах бөгөөд дүрмийг хадгалдаг болно /etc/iptables/rules.v4 y /etc/iptables/rules.v6 ipv6-д зориулсан.

iptables-save> /etc/iptables/rules.v4

Үнэн хэрэгтээ, Кубад ipv6 ашиглах нь хараахан өргөн тархаагүй байгаа ч гэсэн бид зарим үндсэн дүрмийг бий болгож чадна.

IPT = $ (энэ нь ip6 хүснэгтүүд) $ IPT -P оролтын дусал $ IPT -P урагшаа унах $ IPT -P ГАРАЛТ ХҮЛЭЭН АВАХ $ IPT -A оролт -i lo -j ХҮЛЭЭН АВАХ $ IPT -A оролт! -i lo -m state --state ТОГТВОРТОЙ, ХОЛБООТОЙ -j IPET тохируулагдаагүй

Эдгээр дүрмийг тууштай болгож болно:

ip6tables-save> /etc/iptables/rules.v6

Эцэст нь илүү аюулгүй байдлыг хангах үүднээс галт ханын бүртгэлийг цэвэрлэж, үйлчилгээг дахин эхлүүлнэ үү.

echo -n> /var/log/firewall.log service logrotate restart service ulogd restart service iptables-persistent restart

Nginx

Vgin-ууд нь бодит сервертэй харьцуулахад RAM-ийн хэмжээ багасах хандлагатай байдаг тул бид Apache-ээс хөнгөн зүйлтэй байх нь сайн хэрэг юм.

Nginx-ийг тохируулахын өмнө бид HTTPS дээр ашиглах гэрчилгээг (нууц үггүй) үүсгэх болно.

cd / etc / nginx openssl genrsa -des3 -out cert.key 4096 cp -v cert.key cert.key.original openssl req -new -key cert.key -out cert.csr openssl rsa -in cert.key.original - гарч cert.key openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Үүнийг хийсний дараа бид "elusuario" хэрэглэгчид зориулж нууц үгийн файл үүсгэх болно.

htpasswd -c .htpasswd хэрэглэгч

Дараа нь бид файлыг өөрчлөх болно / etc / nginx / сайтууд-боломжтой / анхдагчаар сайтын анхдагч тохиргоог тохируулах. Энэ нь иймэрхүү харагдаж болно:

сервер {server_name localhost; index index.html index.htm default.html default.htm; root / var / www; байршил / {# URI олдоогүй тохиолдолд баталгаажуулах дараалал болон ачаалах хуудсыг тохируулна уу try_files $ uri $ uri / /index.html; }} сервер {сонсох 127.0.0.1:443; server_name localhost; index index.html index.htm default.html default.htm; root / var / www; ssl on; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl_session_timeout 5м; # HTTPS-ийг зөвхөн TLS-ээр (SSL-ээс илүү аюулгүй) идэвхжүүлэх ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # өндөр бат бэх [HIGH] шифрүүдэд давуу эрх олгох, # дунд бат бэх [MEDIUM] шифрүүдийг жагсаалтын төгсгөлд шилжүүлэх, # бага хүч чадалтай [LOW] шифрийг идэвхгүй болгох (40 ба 56 бит) # экспортын алгоритмаар шифрийг идэвхгүйжүүлэх [ EXP] # баталгаажуулахгүйгээр [aNULL], SSL (2 ба 3 хувилбарууд) ба DSS (зөвхөн 1024 бит хүртэлх түлхүүрүүдийг зөвшөөрдөг) null шифрүүдийг идэвхгүйжүүлнэ. Ssl_ciphers HIGH: + MEDIUM :! LOW :! EXP:! ANULL :! eNULL :! SSLv3 :! SSLv2 :! DSS; # Серверийн шифрлэх аргуудыг илүүд үздэг (анхдагчаар клиент ашигладаг) ssl_prefer_server_ciphers асаалттай байна; байршил / {# баталгаажуулалтыг идэвхжүүлэх auth_basic "Нэвтрэх"; auth_basic_user_file /etc/nginx/.htpasswd; # URI try_files $ uri $ uri / = 404 олдохгүй бол баталгаажуулах дараалал болон хуудасны кодыг ачаалахаар тохируулна уу; # баталгаажуулсан хэрэглэгчдэд индекс үүсгэхийг зөвшөөрөх autoindex; autoindex_exact_size унтраах; autoindex_localtime асаалттай; }}

Тохиргооны зөв эсэхийг бид шалгаж байна:

nginx -t

Эцэст нь бид үйлчилгээг дахин эхлүүлнэ:

service nginx дахин эхлүүлэх

Fail2Бан

Fail2Ban-ийг тохируулж эхлэхээс өмнө аюулгүй байдлыг дээшлүүлэхийн тулд бид үйлчилгээг зогсоож, бүртгэлийг цэвэрлэнэ.

fail2ban-client stop echo -n> /var/log/fail2ban.log

Дараа нь бид тохиргооны файлыг үүсгэдэг /etc/fail2ban/jail.local дараахь захиалгын агуулгатай:

# Гаалийн тохиргооны файл /etc/fail2ban/jail.local # [DEFAULT] findtime = 43200; 12 цаг bantime = 86400; 1 өдөр maxretry = 3; 4-р оролдлогын дараа хориг хүчин төгөлдөр болно [ssh] enabled = false [nginx-auth] enabled = true filter = nginx-auth action = iptables-multiport [name = NoAuthFailures, port = "http, https"] logpath = / var / log / nginx * / * error * .log [nginx-badbots] enabled = true filter = apache-badbots action = iptables-multiport [name = BadBots, port = "http, https"] logpath = / var / log / nginx * /*access*.log bantime = 604800; 1 долоо хоног maxretry = 0 [nginx-login] enabled = true filter = nginx-login action = iptables-multiport [name = NoLoginFailures, port = "http, https"] logpath = / var / log / nginx * / * access *. бүртгэлийн хугацаа = 1800; 30 минут [nginx-noscript] идэвхжүүлсэн = үнэн үйлдэл = iptables-олон порт [нэр = NoScript, порт = "http, https"] шүүлтүүр = nginx-noscript logpath = /var/log/nginx*/*access*.log maxretry = 0 [nginx-proxy] enabled = true action = iptables-multiport [name = NoProxy, port = "http, https"] filter = nginx-proxy logpath = /var/log/nginx*/*access*.log bantime = 604800 ; 1 долоо хоног maxretry = 0 [firewall] enabled = true action = iptables-multiport [name = Firewall] filter = firewall logpath = /var/log/firewall.log maxretry = 0

Үүнийг хийсний дараа бид директор дотор үүсгэнэ /etc/fail2ban/filters.d/ дараах файлууд:

# /etc/fail2ban/filter.d/nginx-auth.conf # Auth шүүлтүүр # Үндсэн нэвтрэлт танилтыг ашиглан нэвтрэх боломжгүй IP хаягийг блоклодог # [Тодорхойлолт] failregex = үндсэн нэвтрэлт танилтанд хэрэглэгчийн / нууц үг оруулаагүй болно. * клиент: хэрэглэгч. * ​​-д олдсонгүй. * клиент: хэрэглэгч. * ​​нууц үг таарахгүй. * үйлчлүүлэгч: мэдлэггүй =
# /etc/fail2ban/filter.d/nginx-login.conf # Нэвтрэх шүүлтүүр # Вэб програмын нэвтрэх хуудсыг ашиглан баталгаажуулаагүй IP-үүдийг блоклодог # HTTP 200-д хандах хандалтын бүртгэл + POST / session => нэвтрэх амжилтгүй болсон # [Тодорхойлолт ] failregex = ^ -. * POST / сесс HTTP / 1 \ .. "200 bilimeregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf # Noscript шүүлтүүр # .php, .pl, .exe гэх мэт скриптүүдийг ажиллуулахыг оролдож буй IP-үүдийг хориглох. # Тоглолтуудыг жишээ нь # 192.168.1.1 - - "GET /something.php # [Тодорхойлолт] failregex = ^ -. * GET. * (\. Php | \ .asp | \ .exe | \ .pl | \ .cgi | \ scgi) bilimeregex =
# /etc/fail2ban/filter.d/proxy.conf # Прокси шүүлтүүр # Серверийг прокси болгон ашиглахыг оролдож буй IP хаягуудыг блоклох. # Тоглолтуудыг жишээ нь # 192.168.1.1 - - "GET http://www.something.com/ # [Тодорхойлолт] failregex = ^ -. * Http авах. * Ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf # Firewall filter # [Тодорхойлолт] failregex = ^. * IN_ (ХҮЧИНГҮЙ | PORTSCAN | UDP | TCP |). * SRC = . * $

Эцэст нь бид үйлчилгээг эхлүүлж тохиргоог ачаалж байна.

fail2ban-service -b fail2ban-client дахин ачаалах

Баталгаажуулалт

Сүүлчийн алхам бол бид бичлэгийг үзэж болно сүүл -f o олон суваг - дагаж мөрдөх. Үнэн хэрэгтээ сүүлийн програм нь олон файлыг нэгэн зэрэг үзэх боломжийг олгодог бөгөөд синтаксийн үндсэн тодруулгыг өгдөг давуу талтай юм.

Хэрэв VPS дээр имэйлийн данс тохируулагдаагүй бол олон цуврал эхлүүлэх үед гарч ирэх анхааруулах мессежийг идэвхгүй болгохыг зөвлөж байна. Үүний тулд бид дараах тушаалыг гүйцэтгэнэ.

echo "check_mail: 0"> ~ / .multitailrc

Үнэн хэрэгтээ бид бүртгэлийг богино тушаалаар хурдан харахын тулд өөр нэр (4) хийж болно, жишээлбэл "ташуур":

alias flog = 'multitail --follow-all /var/log/firewall.log /var/log/fail2ban.log'

1) Эдгээр нь зохиомол үнэт зүйлс юм.
2) Бусад үйлчилгээнүүд хэрхэн ажилладагийг ойлгосноор түүнийг идэвхжүүлэх нь амархан байдаг.
3) Дэлгэрэнгүй мэдээллийг man sudoers програмыг ажиллуулна уу.
4) Сонголтоор ~ / .bash_aliases файлд нэмж оруулах боломжтой


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

6 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно.

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   msx гэж хэлэв

    Зарим сонирхолтой зүйлүүд байна, +1

  2.   Юкитеру гэж хэлэв

    @Hugo энэ мөрийг тохиргоонд оруулна уу:

    ssl_protocols SSLv3 TLSv1;

    SSLv3 протоколыг аюулгүй болгохоо больсон, яагаад гэвэл Debian Jessie дээр ч гэсэн олон үйлчилгээг тэр шалтгаанаар ашиглахгүй байхаар тохируулсан байдаг.

    Сэдвийн талаархи мэдээлэл энд:

    https://www.linode.com/docs/security/security-patches/disabling-sslv3-for-poodle
    http://disablessl3.com/

    1.    Хюго гэж хэлэв

      Энэ санаа нь үндсэндээ HTTPS-ээр дамжуулан үндсэн үйлчилгээг санал болгох гэсэнгүй, харин шаардлагатай бол HTTPS-д ашиглах боломжийг алдалгүйгээр SSH-д зориулж 443 портыг хэрхэн ашиглахаа тайлбарлах гэсэн боловч анхааруулсанд баярлалаа.

      Гэсэн хэдий ч би nginx тохиргоог бага зэрэг өөрчлөхийн тулд нийтлэлээ шинэчилж, санамсаргүйгээр шифрлэх механизмын тусламжтайгаар зарим зүйлийг жаахан тодруулж, зарим жижиг алдааг засахын тулд зарим тайлбарыг оруулав.

  3.   Daniel PZ гэж хэлэв

    Энэхүү гайхалтай хичээлд маш их баярлалаа, одоо би үүнийг практик дээр хэрэгжүүлэх болно! : D, Линуксээс үргэлжлүүлээрэй, чи намайг үргэлж гайхшруулдаг, Перугийн мэндчилгээ.

  4.   Ekandekuera гэж хэлэв

    Хуваалцсанд маш их баярлалаа.

  5.   Фернандо гэж хэлэв

    маш сайн гарын авлага бөгөөд одоо би энэ блогтоо нээгдсэн сувднаас гаралтай боловч одоо анхны vps-ээ холбох гэж байгаа ч гэсэн олон бэрхшээлтэй тулгараад байгаа боловч энэ нийтлэл намайг олон эргэлзээ, талархал, мэндчилгээнээс гаргаж авлаа.