O dá OpenVPN jail kọ́ láti inú ìròyìn àwùjọ, tún fail2ban ṣiṣẹ́, kò sì sí àdírẹ́sì kankan tí a dèé rárá. Ìdí ni ọ̀nà àkọsílẹ̀ nígbà gbogbo: Access Server kò kọ àwọn ìlà ìkùnà ìjẹ́rìí tí àlẹmọ àkọ́kọ́ ń retí. Kí o tó fi ọwọ́ kan àlẹmọ, ṣàyẹ̀wò pé àwọn àkọsílẹ̀ wà rárá, nítorí àpèrè kò lè bá ohun tí iṣẹ́ kò kọ sílẹ̀ rí.

Èyí ni ìlànà tí mò ń tẹ̀lé lórí ẹrọ Access Server: ṣàyẹ̀wò ìrísí àkọsílẹ̀, kọ ọ̀rọ̀ ìdúró kan, dán an wò lórí àkọsílẹ̀ gidi, lẹ́yìn náà pín jail nípa ojú-ẹ̀rọ tí a ń kọlu, kí o sì ṣàyẹ̀wò pé ìdènà dé ọ̀dọ̀ odi-iná.

Ṣàyẹ̀wò pé àkọsílẹ̀ ìkùnà wà

Access Server kọ àwọn ìlà rẹ̀ tí ó ní ìlànà sínú /var/log/openvpnas.log, àti àdírẹ́sì alábàáṣepọ̀ wà nínú pápá real_ip laarin àmì àyọlò, kì í ṣe ní ìbẹ̀rẹ̀ ìlà syslog. Kí o tó kọ àpèrè kan, wá ìwọlé tí ó kùnà tí o mọ̀ pé ó ṣẹlẹ̀:

grep -i 'LOG ERR' /var/log/openvpnas.log | tail -20

Bí nǹkan kankan kò bá farahàn, ìpele àkọsílẹ̀ ni afurasi tó tẹ̀lé. Access Server ní yíyí debug fún ibi-ìpamọ́ àkọsílẹ̀ nínú /usr/local/openvpn_as/etc/as.conf (DEBUG_LOGDB=1), àti a gbọ́dọ̀ tún iṣẹ́ ṣiṣẹ́ lẹ́yìn tí a bá yí i padà. Wo yíyí yẹn gẹ́gẹ́ bí ètò ìṣàyẹ̀wò tí a ó tún sọ̀ kalẹ̀ lẹ́yìn tí àpèrè rẹ bá ti ṣetán, kì í ṣe ètò àìlópin.

Nígbà tí o wà nínú fáìlì, ṣàkíyèsí àwọn ojú-ẹ̀rọ tí ń kọ sínú rẹ̀. Àwọn ìkùnà ojú-ẹ̀rọ oníbàárà, ojú-ẹ̀rọ aláṣẹ àti ìjẹ́rìí tunnel ń bọ́ sínú fáìlì kan náà pẹ̀lú àmì ọ̀tọ̀ọ̀tọ̀, àti àlàyé yẹn ni yóò pinnu ìtòlẹ́sẹẹsẹ jail lẹ́yìn náà.

Fi ìdúró àlẹmọ kan sórí real_ip

Jẹ́ kí ọ̀rọ̀ náà kéré. Àlẹmọ tí ó bèèrè gbogbo ìlà tí ó ní àdírẹ́sì IP yóò dènà àwọn ènìyàn nítorí ìpínyà lasan, àti lórí ẹrọ tí ó kún, àpẹẹrẹ kan ṣoṣo ni àwọn olùlò ń ráwọ̀ pé a ti fi wọ́n mọ́lẹ̀ nítorí wọ́n ti pa kọ̀mpútà ẹlẹ́sẹ̀ mọ́. Béèrè àkọsílẹ̀ ìṣìnà kí o sì mú àdírẹ́sì tí ó wà laarin àmì àyọlò:

# /etc/fail2ban/filter.d/openvpnaccess.local
[Definition]
failregex = ^ .*LOG ERR.*"real_ip": "<HOST>".*
ignoreregex =

Àyè àkọ́kọ́ kì í ṣe ọ̀ṣọ́. Access Server ń fi àyè wọlé àwọn àkọsílẹ̀ rẹ̀, àti ìdúró lórí rẹ̀ ń dá àlẹmọ lọ́wọ́ láti béèrè àwọn ìlà tí àwọn iṣẹ́ mìíràn tí kò ní ìbáṣepọ̀ ń kọ sínú fáìlì kan náà. Bí àwọn àkọsílẹ̀ rẹ bá ní àmì àkókò ní ìbẹ̀rẹ̀ dípò, bá àkọ́kọ́ yẹn mu, ṣùgbọ́n fi ìdúró sórí ohun tí ó wà ní ti gidi nínú gbogbo àkọsílẹ̀ tí o fẹ́ béèrè.

Nígbà tí o nílò ìpéye nípa ojú-ẹ̀rọ, dín kù sí i nípa béèrè àmì ojú-ẹ̀rọ (WEB_CLIENT, WEB_ADMIN tàbí VPN) nínú ìlà kan náà. Àlẹmọ kan pẹ̀lú àpèrè mẹ́ta rọrùn láti yẹ̀wò ju àlẹmọ mẹ́ta tí ó yàtọ̀ ní ọ̀rọ̀ kan.

Dán ọ̀rọ̀ náà wò kí o tó mú jail ṣiṣẹ́

Má ṣe mú àlẹmọ tí o kò tíì gbé kalẹ̀ lórí àkọsílẹ̀ ìgbékalẹ̀ ṣiṣẹ́ rárá. Ìdánwò tí a kọ sílẹ̀ ń gbé àlẹmọ kọjá lẹ́ẹ̀mejì, ẹ̀kan fún gbígbé wọlé àti ẹ̀kan fún lílò, àti ìròyìn àwọn ìlà tí ó sọnù ni apá tí ó tọ́ láti kà:

fail2ban-regex --print-all-missed /var/log/openvpnas.log \
  /etc/fail2ban/filter.d/openvpnaccess.local \
  /etc/fail2ban/filter.d/openvpnaccess.local > missed.txt

Fi iye ìbámu wé àwọn ìkùnà tí o ṣàyẹ̀wò ní ìgbésẹ̀ àkọ́kọ́. Ìbámu òdo túmọ̀ sí pé àpèrè náà kò tọ́; ìbámu lórí àwọn ìlà tí kì í ṣe ìkùnà ìjẹ́rìí túmọ̀ sí pé ó gbòòrò jù. Ka missed.txt títí tí o fi lè ṣàlàyé gbogbo ìlà tí o yàn láti má ṣe béèrè.

Ṣe ìdánwò yìí lórí ẹ̀dà bí àkọsílẹ̀ bá tóbi, kí o sì tún ṣe é lẹ́yìn ìgbéga Access Server kankan. Ọ̀nà àkọsílẹ̀ ni ojú-ìkà tí o ń bá mu, kì í sì í ṣe API tí ó dúró ṣinṣin.

Pín jail nípa ojú-ẹ̀rọ, kì í ṣe nípa daemon

Access Server kan ń gbékalẹ̀ àwọn ojú-ẹ̀rọ ìjẹ́rìí púpọ̀: ojú-ẹ̀rọ wẹ́ẹ̀bù oníbàárà àti aláṣẹ lórí 943/tcp, àti tunnel lórí 1194/udp tàbí 443/tcp nínú ọ̀pọ̀ ìgbékalẹ̀. Jail kan tí ó bo gbogbo wọn ń jẹ́ kí àwọn ìgbìyànjú àfọ̀mọ́ lórí tunnel dènà àdírẹ́sì tí ó tún jẹ́ ọ̀nà aláṣẹ rẹ, ó sì fi ojú-ẹ̀rọ tí a ń kọlu gidi pamọ́. Fún ojú-ẹ̀rọ kọ̀ọ̀kan ní jail tirẹ̀ pẹ̀lú ibùdó àti àwọn àlà tirẹ̀:

# /etc/fail2ban/jail.d/openvpnaccess.local
[openvpnas-web-client]
enabled  = true
port     = 943
protocol = tcp
filter   = openvpnaccess
logpath  = /var/log/openvpnas.log
maxretry = 3
findtime = 10m
bantime  = 1h
[openvpnas-tunnel]
enabled  = true
port     = 443
protocol = udp
filter   = openvpnaccess
logpath  = /var/log/openvpnas.log
maxretry = 5
findtime = 10m
bantime  = 1h

Bẹ̀rẹ̀ pẹ̀lú àwọn òǹkà kékeré àti ìdènà kúkúrú, lẹ́yìn náà gbé wọn sókè nígbà tí o bá ti wo ọ̀sẹ̀ kan ti ìrìnàjò gidi. Àlà pẹ̀lú ọ̀wọ̀ lórí àdírẹ́sì ọ́fíìsì tí a pín yóò jẹ olùlò kọ̀ọ̀kan lẹ́yìn NAT kan ní ìyà, àti ìdènà líle lórí ojú-ẹ̀rọ tunnel yóò gé àwọn oníbàárà tí ó tọ́ tí àmì ìdánimọ̀ wọn tí a fipamọ́ ti parí lóru.

Ṣàyẹ̀wò ìdènà, backend àti ìpalára ẹ̀gbẹ́

Lẹ́yìn àtúnṣiṣẹ́, ìjáde ipò ni ìjẹ́rìí yára jùlọ pé jail wà, ó sì ń kà:

fail2ban-client status
fail2ban-client status openvpnas-tunnel

Lẹ́yìn náà ṣàyẹ̀wò pé ìdènà dé odi-iná tí o ń ṣiṣẹ́ gidi, nítorí jail tí a ṣètò fún backend tí ẹnìkankan kò fi ipá mú kì í dáàbò bo nǹkan kan. Pẹ̀lú ìgbésẹ̀ iptables àwọn àdírẹ́sì farahàn nínú ẹ̀wọ̀n tí a fi orúkọ jail sọ (f2b-openvpnas-tunnel); pẹ̀lú ìgbésẹ̀ nftables wọ́n bọ́ sínú àkójọ kan nínú tábìlì fail2ban fúnra rẹ̀. Ṣàyẹ̀wò èyí tí ẹrọ rẹ ń lò dípò kí o rò ó.

Àwọn ìṣàyẹ̀wò ẹ̀gbẹ́ méjì ṣe pàtàkì ju ìdènà fúnra rẹ̀. Lákọ̀ọ́kọ́, ṣàyẹ̀wò pé real_ip ni àdírẹ́sì oníbàárà kì í ṣe olùpín ìrùwé tàbí aṣojú yíyí; lẹ́yìn aṣojú gbogbo ìdènà ń bọ́ sórí aṣojú, ó sì ń fa gbogbo iṣẹ́ lọ pẹ̀lú. Lẹ́ẹ̀kejì, kọ ìlànà ìyọkúrò ìdènà sílẹ̀, nítorí àdírẹ́sì tí ó kọjá àlà ní 02:00 máa ń jẹ́ ti amọ̀nà tí ó wà níṣẹ́: fail2ban-client set openvpnas-tunnel unbanip 203.0.113.24.

Rántí ààlà nígbà tí o ń ṣàtúnṣe. Fail2ban jẹ́ olùdínwọ̀n ìyára lórí ojú-ẹ̀rọ ìjẹ́rìí kan, kì í ṣe ìpele ìṣàkóso àbáwọlé. Kò rọ́pò MFA, àwọn ìfòfindè fún àkọọ́lẹ̀ kọ̀ọ̀kan tàbí pípa ojú-ẹ̀rọ aláṣẹ mọ́ kúrò lórí íńtánẹ́ẹ̀tì gbangba, àti pé Access Server ní àwọn ètò autoban tirẹ̀ tí ó yẹ kí a ṣàyẹ̀wò kí a tó kó àwọn olùdínwọ̀n ìyára méjì sórí ibùdó kan náà.

Àwọn àpilẹ̀kọ tó jọra