Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Ioma-eadar-aghaidh + SpamAssassin-learn + Bind

Tha an artaigil seo mu dheidhinn mar a stèidhicheas tu frithealaiche puist ùr-nodha.
Postfix + Dovecot. SPF + DKIM + rDNS. Le IPv6.
Le crioptachadh TSL. Le taic airson iomadh raon - pàirt le teisteanas SSL fìor.
Le dìon antispam agus ìre àrd antispam bho luchd-frithealaidh puist eile.
A 'toirt taic do ioma-eadar-aghaidh corporra.
Le OpenVPN, tha an ceangal ris tro IPv4, agus a bheir seachad IPv6.

Mura h-eil thu airson na teicneòlasan sin ionnsachadh, ach gu bheil thu airson a leithid de fhrithealaiche a stèidheachadh, tha an artaigil seo dhutsa.

Chan eil an artaigil a’ dèanamh oidhirp sam bith air a h-uile mion-fhiosrachadh a mhìneachadh. Tha am mìneachadh a’ dol gu dè nach eil air a dhealbhadh mar ìre àbhaisteach no a tha cudromach bho shealladh an neach-cleachdaidh.

Tha am brosnachadh airson frithealaiche puist a stèidheachadh air a bhith na bhruadar fad-ùine dhomh. Is dòcha gu bheil seo gòrach, ach IMHO, tha e tòrr nas fheàrr na bhith a’ bruadar air càr ùr bhon bhrand as fheàrr leat.

Tha dà adhbhar ann airson IPv6 a stèidheachadh. Feumaidh eòlaiche IT teicneòlasan ùra ionnsachadh gu cunbhalach gus a bhith beò. Bu mhath leam mo thabhartas beag a thoirt don t-sabaid an aghaidh caisgireachd.

Is e an adhbhar airson OpenVPN a stèidheachadh dìreach airson IPv6 a bhith ag obair air an inneal ionadail.
Is e an adhbhar airson grunn eadar-aghaidh corporra a stèidheachadh gu bheil aon eadar-aghaidh agam air an t-seirbheisiche agam “slaodach ach gun chrìoch” agus fear eile “luath ach le targaid”.

Is e an adhbhar airson suidheachaidhean Bind a stèidheachadh gu bheil an ISP agam a’ toirt seachad frithealaiche DNS neo-sheasmhach, agus uaireannan bidh google a’ fàiligeadh. Tha mi ag iarraidh frithealaiche DNS seasmhach airson cleachdadh pearsanta.

Spreagadh airson artaigil a sgrìobhadh - sgrìobh mi dreach 10 mìosan air ais, agus tha mi air sùil a thoirt air dà uair mu thràth. Eadhon ged a tha feum aig an ùghdar air gu cunbhalach, tha e glè choltach gum bi feum aig daoine eile air cuideachd.

Chan eil fuasgladh uile-choitcheann ann airson frithealaiche puist. Ach feuchaidh mi ri rudeigin a sgrìobhadh mar “dèan seo agus an uairsin, nuair a bhios a h-uile càil ag obair mar bu chòir, tilg a-mach an stuth a bharrachd.”

Tha frithealaiche Colocation aig a’ chompanaidh tech.ru. Tha e comasach coimeas a dhèanamh le OVH, Hetzner, AWS. Gus an duilgheadas seo fhuasgladh, bidh co-obrachadh le tech.ru mòran nas èifeachdaiche.

Tha Debian 9 air a stàladh air an fhrithealaiche.

Tha 2 eadar-aghaidh aig an fhrithealaiche `eno1` agus `eno2`. Tha a’ chiad fhear gun chrìoch, agus tha an dàrna fear luath, fa leth.

Tha 3 seòlaidhean IP statach ann, XX.XX.XX.X0 agus XX.XX.XX.X1 agus XX.XX.XX.X2 air an eadar-aghaidh `eno1` agus XX.XX.XX.X5 air an eadar-aghaidh `eno2` .

Ri fhaighinn XXXX:XXXX:XXXX:XXXX::/64 chaidh cruinneachadh de sheòlaidhean IPv6 a tha air an sònrachadh don eadar-aghaidh `eno1` agus bhuaithe XXXX:XXXX:XXXX:XXXX:1:2::/96 a shònrachadh do `eno2` air m' iarrtas.

Tha 3 raointean ann `domain1.com`, `domain2.com`, `domain3.com`. Tha teisteanas SSL ann airson `domain1.com` agus `domain3.com`.

Tha cunntas Google agam a bu mhath leam mo bhogsa puist a cheangal ris[post-d fo dhìon]` (a’ faighinn post agus a’ cur post gu dìreach bhon eadar-aghaidh gmail).
Feumaidh bogsa-puist a bhith ann`[post-d fo dhìon]`, leth-bhreac den phost-d bhon a tha mi airson fhaicinn sa gmail agam. Agus is ann ainneamh a bhios e comasach rudeigin a chuir às leth `[post-d fo dhìon]` tron ​​eadar-aghaidh lìn.

Feumaidh bogsa-puist a bhith ann`[post-d fo dhìon]`, a chleachdas Ivanov bhon iPhone aige.

Feumaidh puist-d a thèid a chuir a-steach cumail ri riatanasan antispam an latha an-diugh.
Feumaidh an ìre as àirde de chrioptachadh a bhith air a thoirt seachad ann an lìonraidhean poblach.
Bu chòir taic IPv6 a bhith ann airson litrichean a chur agus fhaighinn.
Bu chòir SpamAssassin a bhith ann nach sguab às puist-d gu bràth. Agus bidh e an dàrna cuid a’ breabadh no a’ leumadh no a’ cur gu pasgan “Spam” IMAP.
Feumaidh fèin-ionnsachadh SpamAssassin a bhith air a rèiteachadh: ma ghluaiseas mi litir dhan phasgan Spam, ionnsaichidh e bho seo; ma ghluaiseas mi litir bhon phasgan Spam, ionnsaichidh e bho seo. Bu chòir do thoraidhean trèanadh SpamAssassin buaidh a thoirt air co-dhiù a thig an litir gu crìch sa phasgan Spam.
Feumaidh sgriobtaichean PHP a bhith comasach air post a chuir às leth àrainn sam bith air frithealaiche sònraichte.
Bu chòir seirbheis openvpn a bhith ann, le comas IPv6 a chleachdadh air teachdaiche aig nach eil IPv6.

An toiseach feumaidh tu eadar-aghaidh agus slighe a rèiteachadh, a’ toirt a-steach IPv6.
An uairsin feumaidh tu OpenVPN a rèiteachadh, a cheanglas tro IPv4 agus a bheir seòladh IPv6 fìor-statach don neach-dèiligidh. Bidh cothrom aig an neach-dèiligidh seo air a h-uile seirbheis IPv6 air an fhrithealaiche agus cothrom air goireasan IPv6 sam bith air an eadar-lìn.
An uairsin feumaidh tu Postfix a rèiteachadh gus litrichean + SPF + DKIM + rDNS agus rudan beaga eile den aon seòrsa a chuir.
An uairsin feumaidh tu Dovecot a rèiteachadh agus Multidomain a rèiteachadh.
An uairsin feumaidh tu SpamAssassin a rèiteachadh agus trèanadh a rèiteachadh.
Mu dheireadh, stàlaich Bind.

============ Ioma-eadar-aghaidh ===========

Gus eadar-aghaidh a rèiteachadh, feumaidh tu seo a sgrìobhadh ann an “/etc/network/interfaces”.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
iface eno1 inet static
        address XX.XX.XX.X0/24
        gateway XX.XX.XX.1
        dns-nameservers 127.0.0.1 213.248.1.6
        post-up ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t
        post-up ip route add default via XX.XX.XX.1 table eno1t
        post-up ip rule add table eno1t from XX.XX.XX.X0
        post-up ip rule add table eno1t to XX.XX.XX.X0

auto eno1:1
iface eno1:1 inet static
address XX.XX.XX.X1
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X1
        post-up ip rule add table eno1t to XX.XX.XX.X1
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X2
        post-up ip rule add table eno1t to XX.XX.XX.X2

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE

# The secondary network interface
allow-hotplug eno2
iface eno2 inet static
        address XX.XX.XX.X5
        netmask 255.255.255.0
        post-up   ip route add XX.XX.XX.0/24 dev eno2 src XX.XX.XX.X5 table eno2t
        post-up   ip route add default via XX.XX.XX.1 table eno2t
        post-up   ip rule add table eno2t from XX.XX.XX.X5
        post-up   ip rule add table eno2t to XX.XX.XX.X5
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t

iface eno2 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:2::/96
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE

# OpenVPN network
iface tun0 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:3::/80

Faodar na roghainnean sin a chuir an sàs air frithealaiche sam bith ann an tech.ru (le beagan co-òrdanachadh le taic) agus obraichidh e sa bhad mar a bu chòir.

Ma tha eòlas agad air rudan coltach ris a stèidheachadh airson Hetzner, OVH, tha e eadar-dhealaichte an sin. Nas duilghe.

Is e eno1 an t-ainm air cairt lìonra #1 (slaodach ach gun chrìoch).
Is e eno2 an t-ainm air cairt lìonra # 2 (luath, ach le targaid).
is e tun0 ainm a’ chairt lìonraidh mas-fhìor bho OpenVPN.
XX.XX.XX.X0 - IPv4 #1 air eno1.
XX.XX.XX.X1 - IPv4 #2 air eno1.
XX.XX.XX.X2 - IPv4 #3 air eno1.
XX.XX.XX.X5 - IPv4 #1 air eno2.
XX.XX.XX.1 - IPv4 geata.
XXXX:XXX:XXXX:XXXX::/64 - IPv6 airson an fhrithealaiche gu lèir.
XXXX:XXXX:XXXX:XXXX:1:2:/96 - IPv6 airson eno2, tha a h-uile càil eile bhon taobh a-muigh a' dol a-steach gu eno1.
XXXX:XXXX:XXXX:XXXX::1 - IPv6 geata (feumar a thoirt fa-near gum faod/bu chòir seo a dhèanamh ann an dòigh eadar-dhealaichte. Sònraich an tionndadh IPv6).
dns-nameservers - tha 127.0.0.1 air a chomharrachadh (seach gu bheil ceangal air a chuir a-steach gu h-ionadail) agus 213.248.1.6 (tha seo bho tech.ru).

“table eno1t” agus “table eno2t” - is e brìgh nan riaghailtean slighe seo gum biodh trafaic a’ dol a-steach tro eno1 -> a’ falbh troimhe, agus trafaic a’ dol a-steach tro eno2 -> a’ falbh troimhe. Agus cuideachd bhiodh ceanglaichean a thòisicheadh ​​​​leis an fhrithealaiche a 'dol tro eno1.

ip route add default via XX.XX.XX.1 table eno1t

Leis an àithne seo tha sinn a’ sònrachadh gun tèid trafaic do-chreidsinneach sam bith a thig fo riaghailt sam bith air a chomharrachadh “table eno1t” -> a chuir chun eadar-aghaidh eno1.

ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t

Leis an àithne seo tha sinn a’ sònrachadh gum bu chòir trafaic sam bith a thòisicheas am frithealaiche a stiùireadh chun eadar-aghaidh eno1.

ip rule add table eno1t from XX.XX.XX.X0
ip rule add table eno1t to XX.XX.XX.X0

Leis an àithne seo shuidhich sinn na riaghailtean airson trafaic a chomharrachadh.

auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X2
        post-up ip rule add table eno1t to XX.XX.XX.X2

Tha am bloc seo a’ sònrachadh dàrna IPv4 airson an eadar-aghaidh eno1.

ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

Leis an àithne seo shuidhich sinn an t-slighe bho luchd-dèiligidh OpenVPN gu IPv4 ionadail ach a-mhàin XX.XX.XX.X0.
Chan eil mi fhathast a’ tuigsinn carson a tha an àithne seo gu leòr airson a h-uile IPv4.

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1

Seo far an do shuidhich sinn an seòladh airson an eadar-aghaidh fhèin. Cleachdaidh am frithealaiche e mar sheòladh “a-mach”. Cha tèid a chleachdadh ann an dòigh sam bith a-rithist.

Carson a tha " :1:1 : " cho iom-fhillte? Gus am bi OpenVPN ag obair gu ceart agus dìreach airson seo. Tuilleadh mu dheidhinn seo nas fhaide air adhart.

Air cuspair geata - sin mar a tha e ag obair agus tha sin ceart gu leòr. Ach is e an dòigh cheart a bhith a’ comharrachadh an seo IPv6 an suidse ris a bheil am frithealaiche ceangailte.

Ach, airson adhbhar air choireigin stad IPv6 ag obair ma nì mi seo. Is dòcha gur e seo seòrsa de dhuilgheadas tech.ru.

ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE

Tha seo a’ cur seòladh IPv6 ris an eadar-aghaidh. Ma tha ceud seòladh a dhìth ort, tha sin a’ ciallachadh ceud loidhne san fhaidhle seo.

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
...
iface eno2 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:2::/96
...
iface tun0 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:3::/80

Thug mi fa-near seòlaidhean agus subnets gach eadar-aghaidh gus a dhèanamh soilleir.
eno1 - feumaidh "/64" - oir is e seo an cruinneachadh iomlan de sheòlaidhean againn.
tun0 - feumaidh an subnet a bhith nas motha na eno1. Rud eile, cha bhith e comasach geata IPv6 a rèiteachadh airson teachdaichean OpenVPN.
eno2 - feumaidh an subnet a bhith nas motha na tun0. Rud eile, cha bhith e comasach dha teachdaichean OpenVPN faighinn gu seòlaidhean IPv6 ionadail.
Airson soilleireachd, thagh mi ceum subnet de 16, ach ma thogras tu, faodaidh tu eadhon ceum “1” a dhèanamh.
A rèir sin, 64+16 = 80, agus 80+16 = 96.

Airson soilleireachd eadhon nas motha:
XXXX:XXXX:XXXX:XXXX:1:1:BBBB:YYYY 'S e seòlaidhean a th' ann an seòlaidhean a bu chòir a bhith air an sònrachadh do làraichean no seirbheisean sònraichte air an eadar-aghaidh eno1.
XXXX:XXXX:XXXX:XXXX:1:2:BBBB:YYYY 'S e seòlaidhean a th' ann an seòlaidhean a bu chòir a bhith air an sònrachadh do làraichean no seirbheisean sònraichte air an eadar-aghaidh eno2.
XXXX:XXXX:XXXX:XXXX:1:3:BBBB:YYYY seòlaidhean a bu chòir a bhith air an sònrachadh do luchd-dèiligidh OpenVPN no air an cleachdadh mar sheòlaidhean seirbheis OpenVPN.

Gus an lìonra a rèiteachadh, bu chòir gum biodh e comasach am frithealaiche ath-thòiseachadh.
Bithear a’ togail atharrachaidhean IPv4 nuair a thèid an cur an gnìomh (bi cinnteach gun cuir thu a-steach e san sgrion - air neo cha dèan an àithne seo ach an lìonra a bhualadh air an fhrithealaiche):

/etc/init.d/networking restart

Cuir ri deireadh an fhaidhle “/etc/iproute2/rt_tables”:

100 eno1t
101 eno2t

Às aonais seo, chan urrainn dhut clàran àbhaisteach a chleachdadh anns an fhaidhle “/etc/network/interfaces”.
Feumaidh na h-àireamhan a bhith gun samhail agus nas lugha na 65535.

Faodar atharrachaidhean IPv6 atharrachadh gu furasta gun ath-thòiseachadh, ach airson seo a dhèanamh feumaidh tu co-dhiù trì òrduighean ionnsachadh:

ip -6 addr ...
ip -6 route ...
ip -6 neigh ...

A' suidheachadh "/etc/sysctl.conf"

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward = 1

# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0

# For receiving ARP replies
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.arp_filter = 0

# For sending ARP
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.default.arp_announce = 0

# Enable IPv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

# IPv6 configuration
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.accept_ra = 0

# For OpenVPN
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

# For nginx on boot
net.ipv6.ip_nonlocal_bind = 1

Seo na roghainnean “sysctl” aig an fhrithealaiche agam. Leig dhomh rudeigin cudromach a chomharrachadh.

net.ipv4.ip_forward = 1

Às aonais seo, chan obraich OpenVPN idir.

net.ipv6.ip_nonlocal_bind = 1

Gheibh neach sam bith a dh'fheuchas ri IPv6 a cheangal (mar eisimpleir nginx) dìreach às deidh an eadar-aghaidh a bhith suas mearachd. Nach eil an seòladh seo ri fhaighinn.

Gus suidheachadh mar sin a sheachnadh, thèid an leithid de shuidheachadh a dhèanamh.

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

Às aonais na roghainnean IPv6 seo, cha bhith trafaic bhon neach-dèiligidh OpenVPN a’ dol a-mach don t-saoghal.

Chan eil suidheachaidhean eile buntainneach no chan eil cuimhne agam carson a tha iad.
Ach dìreach gun fhios, fàgaidh mi e “mar a tha.”

Gus an tèid atharrachaidhean san fhaidhle seo a thogail gun a bhith ag ath-thòiseachadh an fhrithealaiche, feumaidh tu an àithne a ruith:

sysctl -p

Barrachd fiosrachaidh mu na riaghailtean “clàr”: habr.com/post/108690

============ OpenVPN ===========

Chan eil OpenVPN IPv4 ag obair às aonais iptables.

Tha na iptables agam mar seo airson VPN:

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
##iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

Is e YY.YY.YY.YY an seòladh IPv4 statach agam air an inneal ionadail.
10.8.0.0/24 - IPv4 lìonra openvpn. Seòlaidhean IPv4 airson teachdaichean openvpn.
Tha cunbhalachd nan riaghailtean cudromach.

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
...
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

Is e cuingealachadh a tha seo gus nach urrainn dhomh ach OpenVPN a chleachdadh bhon IP statach agam.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
  -- или --
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE

Gus pacaidean IPv4 a chuir air adhart eadar teachdaichean OpenVPN agus an eadar-lìn, feumaidh tu aon de na h-òrdughan sin a chlàradh.

Airson diofar chùisean, chan eil aon de na roghainnean freagarrach.
Tha an dà àithne freagarrach airson mo chùis.
Às deidh dhomh na sgrìobhainnean a leughadh, thagh mi a ’chiad roghainn oir tha e a’ cleachdadh nas lugha de CPU.

Gus an tèid a h-uile suidheachadh iptables a thogail às deidh ath-thòiseachadh, feumaidh tu an sàbhaladh an àiteigin.

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

Cha deach ainmean mar sin a thaghadh le cothrom. Tha iad air an cleachdadh leis a 'phacaid "iptables-persistent".

apt-get install iptables-persistent

A’ stàladh a’ phrìomh phacaid OpenVPN:

apt-get install openvpn easy-rsa

Nach cuir sinn air dòigh teamplaid airson teisteanasan (cuir na luachan agad an àite):

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
ln -s openssl-1.0.0.cnf openssl.cnf

Deasaich sinn roghainnean teamplaid an teisteanais:

mcedit vars

...
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Krasnodar"
export KEY_CITY="Dinskaya"
export KEY_ORG="Own"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"

# X509 Subject Field
export KEY_NAME="server"
...

Cruthaich teisteanas frithealaiche:

cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key

Nach ullaich sinn an comas na faidhlichean deireannach “client-name.opvn” a chruthachadh:

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
mcedit ~/client-configs/base.conf

# Client mode
client

# Interface tunnel type
dev tun

# TCP protocol
proto tcp-client

# Address/Port of VPN server
remote XX.XX.XX.X0 1194

# Don't bind to local port/address
nobind

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Remote peer must have a signed certificate
remote-cert-tls server
ns-cert-type server

# Enable compression
comp-lzo

# Custom
ns-cert-type server
tls-auth ta.key 1
cipher DES-EDE3-CBC

Nach ullaich sinn sgriobt a chuireas a h-uile faidhle còmhla ann an aon fhaidhle opvn.

mcedit ~/client-configs/make_config.sh
chmod 700 ~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} 
    <(echo -e '<ca>') 
    ${KEY_DIR}/ca.crt 
    <(echo -e '</ca>n<cert>') 
    ${KEY_DIR}/.crt 
    <(echo -e '</cert>n<key>') 
    ${KEY_DIR}/.key 
    <(echo -e '</key>n<tls-auth>') 
    ${KEY_DIR}/ta.key 
    <(echo -e '</tls-auth>') 
    > ${OUTPUT_DIR}/.ovpn

A’ cruthachadh a’ chiad neach-dèiligidh OpenVPN:

cd ~/openvpn-ca
source vars
./build-key client-name
cd ~/client-configs
./make_config.sh client-name

Thèid am faidhle “~/client-configs/files/client-name.ovpn” a chuir gu inneal an neach-dèiligidh.

Airson teachdaichean iOS feumaidh tu an cleas a leanas a dhèanamh:
Feumaidh susbaint an taga “tls-auth” a bhith gun bheachdan.
Agus cuideachd cuir “key-direction 1” dìreach ron taga “tls-auth”.

Dèanamaid rèiteachadh an fhrithealaiche OpenVPN:

cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | tee /etc/openvpn/server.conf
mcedit /etc/openvpn/server.conf

# Listen port
port 1194

# Protocol
proto tcp-server

# IP tunnel
dev tun0
tun-ipv6
push tun-ipv6

# Master certificate
ca ca.crt

# Server certificate
cert server.crt

# Server private key
key server.key

# Diffie-Hellman parameters
dh dh2048.pem

# Allow clients to communicate with each other
client-to-client

# Client config dir
client-config-dir /etc/openvpn/ccd

# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"

# Server mode and client subnets
server 10.8.0.0 255.255.255.0
server-ipv6 XXXX:XXXX:XXXX:XXXX:1:3::/80
topology subnet

# IPv6 routes
push "route-ipv6 XXXX:XXXX:XXXX:XXXX::/64"
push "route-ipv6 2000::/3"

# DNS (for Windows)
# These are OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# Configure all clients to redirect their default network gateway through the VPN
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6" #For iOS

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Ping every 10s. Timeout of 120s.
keepalive 10 120

# Enable compression
comp-lzo

# User and group
user vpn
group vpn

# Log a short status
status openvpn-status.log

# Logging verbosity
##verb 4

# Custom config
tls-auth ta.key 0
cipher DES-EDE3-CBC

Tha feum air seo gus seòladh statach a shuidheachadh airson gach neach-dèiligidh (chan eil sin riatanach, ach bidh mi ga chleachdadh):

# Client config dir
client-config-dir /etc/openvpn/ccd

Am mion-fhiosrachadh as duilghe agus as cudromaiche.

Gu mì-fhortanach, chan eil fios aig OpenVPN fhathast mar a chruthaicheas tu geata IPv6 gu neo-eisimeileach dha teachdaichean.
Feumaidh tu seo a chuir air adhart “le làimh” airson gach neach-dèiligidh.

# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"

Faidhle “/etc/openvpn/server-clientconnect.sh”:

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
        echo $ipv6
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Create proxy rule
/sbin/ip -6 neigh add proxy $ipv6 dev eno1

Faidhle “/etc/openvpn/server-clientdisconnect.sh”:

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Delete proxy rule
/sbin/ip -6 neigh del proxy $ipv6 dev eno1

Bidh an dà sgriobt a’ cleachdadh am faidhle “/etc/openvpn/variables”:

# Subnet
prefix=XXXX:XXXX:XXXX:XXXX:2:
# netmask
prefixlen=112

Tha e doirbh dhomh cuimhneachadh carson a tha e sgrìobhte mar seo.

A-nis tha netmask = 112 a’ coimhead neònach (bu chòir dha a bhith 96 dìreach an sin).
Agus tha an ro-leasachan neònach, chan eil e a 'freagairt ris an lìonra tun0.
Ach ceart gu leòr, fàgaidh mi e mar a tha.

cipher DES-EDE3-CBC

Chan eil seo airson a h-uile duine - thagh mi an dòigh seo airson an ceangal a chrioptachadh.

Ionnsaich tuilleadh mu bhith a’ stèidheachadh OpenVPN IPv4.

Ionnsaich tuilleadh mu bhith a’ stèidheachadh OpenVPN IPv6.

============ Postfix ===========

Stàladh a 'phrìomh phacaid:

apt-get install postfix

Nuair a bhios tu a’ stàladh, tagh “làrach eadar-lìn”.

Tha mo "/etc/postfix/main.cf" a' coimhead mar seo:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1

smtp_tls_security_level = may
smtp_tls_ciphers = export
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_loglevel = 1

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = domain1.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = domain1.com
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4

internal_mail_filter_classes = bounce

# Storage type
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
        permit_sasl_authenticated,
        permit_mynetworks,
        #reject_invalid_hostname,
        #reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        check_policy_service unix:private/policyd-spf

smtpd_helo_restrictions =
        #reject_invalid_helo_hostname,
        #reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

smtpd_client_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_helo_hostname,
        permit

# SPF
policyd-spf_time_limit = 3600

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock

# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre

Bheir sinn sùil air mion-fhiosrachadh an config seo.

smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key

A rèir luchd-còmhnaidh Khabrovsk, tha “fiosrachadh ceàrr agus tràchdasan ceàrr” anns a’ bhloc seo.Dìreach 8 bliadhna às deidh toiseach mo chùrsa-beatha thòisich mi a’ tuigsinn mar a tha SSL ag obair.

Mar sin, gabhaidh mi an saorsa cunntas a thoirt air mar a chleachdas tu SSL (gun a bhith a’ freagairt nan ceistean “Ciamar a tha e ag obair?” agus “Carson a tha e ag obair?”).

Is e bunait crioptachadh an latha an-diugh cruthachadh prìomh phaidhir (dà shreath de charactaran glè fhada).

Tha aon “iuchair” prìobhaideach, is e an iuchair eile “poblach”. Bidh sinn a’ cumail an iuchair phrìobhaideach gu math dìomhair. Bidh sinn a’ sgaoileadh an iuchair phoblach don h-uile duine.

Le bhith a’ cleachdadh iuchair phoblach, faodaidh tu sreang teacsa a chrioptachadh gus nach fhaod ach sealbhadair na h-iuchrach phrìobhaideach a dhì-chrioptachadh.
Uill, is e sin bunait iomlan an teicneòlais.

Ceum #1 - https làraich.
Nuair a gheibh e cothrom air làrach, bidh am brabhsair ag ionnsachadh bhon t-seirbheisiche lìn gur e https a th’ anns an làrach agus mar sin ag iarraidh iuchair phoblach.
Bheir am frithealaiche lìn an iuchair phoblach. Cleachdaidh am brabhsair an iuchair phoblach gus an http-iarraidh a chrioptachadh agus a chuir.
Chan urrainn susbaint iarrtas http a leughadh ach leis an fheadhainn aig a bheil an iuchair phrìobhaideach, is e sin, dìreach am frithealaiche ris an tèid an t-iarrtas a dhèanamh.
Tha co-dhiù URI ann an Http-request. Mar sin, ma tha dùthaich a’ feuchainn ri ruigsinneachd a chuingealachadh chan ann air an làrach gu lèir, ach gu duilleag shònraichte, tha e do-dhèanta seo a dhèanamh airson làraich https.

Ceum #2 - freagairt crioptaichte.
Tha am frithealaiche lìn a’ toirt seachad freagairt a tha furasta a leughadh air an rathad.
Tha am fuasgladh air leth sìmplidh - bidh am brabhsair gu h-ionadail a’ gineadh an aon phrìomh phaidhir prìobhaideach-poblach airson gach làrach https.
Agus còmhla ris an iarrtas airson iuchair phoblach na làraich, bidh e a’ cur an iuchair phoblach ionadail aige.
Bidh am frithealaiche lìn a’ cuimhneachadh air agus, nuair a chuireas e http-response, bidh e ga chrioptachadh le iuchair phoblach neach-dèiligidh sònraichte.
A-nis chan urrainnear http-freagairt a dhì-chrioptachadh ach le sealbhadair iuchair phrìobhaideach brabhsair an neach-dèiligidh (is e sin, an neach-dèiligidh fhèin).

Ceum Àireamh 3 - stèidheachadh ceangal tèarainte tro poblach sianal.
Tha so-leòntachd ann an eisimpleir Àir. 2 - chan eil dad a’ cur casg air luchd-taic bho bhith a’ gabhail thairis iarrtas http agus a’ deasachadh fiosrachadh mun iuchair phoblach.
Mar sin, chì an eadar-mheadhan gu soilleir a h-uile susbaint de theachdaireachdan a chaidh a chuir agus a fhuaireadh gus an atharraich an sianal conaltraidh.
Tha dèiligeadh ri seo gu math sìmplidh - dìreach cuir iuchair phoblach a’ bhrobhsair mar theachdaireachd air a chrioptachadh le iuchair phoblach an fhrithealaiche lìn.
Bidh am frithealaiche lìn an uairsin a’ cur freagairt mar “tha an iuchair phoblach agad mar seo” agus a’ crioptachadh na teachdaireachd seo leis an aon iuchair phoblach.
Bidh am brabhsair a’ coimhead air an fhreagairt - ma gheibhear an teachdaireachd “tha an iuchair phoblach agad mar seo” - is e gealltanas 100% a tha seo gu bheil an sianal conaltraidh seo tèarainte.
Dè cho sàbhailte 'sa tha e?
Bidh cruthachadh sianal conaltraidh cho tèarainte a’ tachairt aig astar ping * 2. Mar eisimpleir 20ms.
Feumaidh iuchair phrìobhaideach aon de na pàrtaidhean a bhith aig an neach-ionnsaigh ro-làimh. No lorg iuchair phrìobhaideach ann am millisecond no dhà.
Le bhith a’ slaodadh aon iuchair phrìobhaideach ùr-nodha bheir e deicheadan air supercomputer.

Ceum #4 - stòr-dàta poblach de iuchraichean poblach.
Gu dearbh, anns an sgeulachd slàn seo tha cothrom ann airson neach-ionnsaigh suidhe air an t-sianal conaltraidh eadar an neach-dèiligidh agus an frithealaiche.
Faodaidh an neach-dèiligidh leigeil air gur e am frithealaiche a th’ ann, agus faodaidh an frithealaiche leigeil air gur e an neach-dèiligidh a th’ ann. Agus dèan aithris air paidhir iuchraichean an dà thaobh.
An uairsin chì an neach-ionnsaigh an trafaic gu lèir agus bidh e comasach dha an trafaic “deasachadh”.
Mar eisimpleir, atharraich an seòladh far am bu chòir dhut airgead a chuir no lethbhreac a dhèanamh den fhacal-fhaire bho bhancaireachd air-loidhne no casg a chuir air susbaint “duilich”.
Gus cuir an-aghaidh an leithid de luchd-ionnsaigh, chruthaich iad stòr-dàta poblach le iuchraichean poblach airson gach làrach https.
Tha fios aig gach brobhsair gu bheil timcheall air 200 stòr-dàta mar sin ann. Tha seo a’ tighinn ro-stàlaichte anns a h-uile brobhsair.
Tha “Eòlas” a’ faighinn taic bho iuchair phoblach bho gach teisteanas. Is e sin, chan urrainnear an ceangal ri gach ùghdarras teisteanais sònraichte a bhith meallta.

A-nis tha tuigse shìmplidh air mar a chleachdas tu SSL airson https.
Ma chleachdas tu an eanchainn agad, bidh e soilleir mar as urrainn do na seirbheisean sònraichte rudeigin a sheacadh san structar seo. Ach cosgaidh e oidhirpean uamhasach dhaibh.
Agus buidhnean nas lugha na an NSA no CIA - tha e cha mhòr do-dhèanta an ìre dìon a th ’ann mar-thà a slaodadh, eadhon dha VIPan.

Cuiridh mi cuideachd mu cheanglaichean ssh. Chan eil iuchraichean poblach ann, mar sin dè as urrainn dhut a dhèanamh? Tha a’ chùis air a fuasgladh ann an dà dhòigh.
Roghainn ssh-by-password:
Rè a 'chiad cheangal, bu chòir don neach-dèiligidh ssh rabhadh a thoirt gu bheil iuchair phoblach ùr againn bhon fhrithealaiche ssh.
Agus rè tuilleadh cheanglaichean, ma nochdas an rabhadh “iuchair phoblach ùr bhon t-seirbheisiche ssh”, bidh e a’ ciallachadh gu bheil iad a’ feuchainn ri cluais a chuir ort.
No bha thu air do chluinntinn air a’ chiad cheangal agad, ach a-nis bidh thu a’ conaltradh ris an fhrithealaiche gun eadar-mheadhanairean.
Gu fìrinneach, air sgàth gu bheil fìrinn wiretapping air fhoillseachadh gu furasta, gu sgiobalta agus gun oidhirp, chan eil an ionnsaigh seo air a chleachdadh ach ann an cùisean sònraichte airson neach-dèiligidh sònraichte.

Roghainn ssh-by-key:
Gabhaidh sinn draibheadh ​​​​flash, sgrìobh an iuchair phrìobhaideach airson an fhrithealaiche ssh air (tha teirmean agus tòrr nuances cudromach airson seo, ach tha mi a’ sgrìobhadh prògram foghlaim, chan e stiùireadh airson a chleachdadh).
Bidh sinn a’ fàgail an iuchair phoblach air an inneal far am bi an neach-dèiligidh ssh agus bidh sinn cuideachd ga chumail dìomhair.
Bheir sinn an draibhear flash chun t-seirbheisiche, cuir a-steach e, dèan lethbhreac den iuchair phrìobhaideach, agus loisgidh sinn an draibhear flash agus sgap an luaithre chun na gaoithe (no co-dhiù cruth e le neamhan).
Tha sin uile - às deidh a leithid de ghnìomhachd bidh e do-dhèanta a leithid de cheangal ssh a sheacadh. Gu dearbh, ann an 10 bliadhna bidh e comasach trafaic fhaicinn air supercomputer - ach is e sgeulachd eadar-dhealaichte a tha sin.

Tha mi duilich airson an offtopic.

Mar sin a-nis gu bheil an teòiridh aithnichte. Innsidh mi dhut mun t-sruth a thaobh cruthachadh teisteanas SSL.

A’ cleachdadh “openssl genrsa” bidh sinn a’ cruthachadh iuchair phrìobhaideach agus “bànaichean” airson an iuchair phoblach.
Bidh sinn a’ cur na “beàrnan” gu companaidh treas-phàrtaidh, ris am pàigh sinn timcheall air $9 airson an teisteanais as sìmplidhe.

Às deidh uair no dhà, gheibh sinn an iuchair “poblach” againn agus seata de ghrunn iuchraichean poblach bhon chompanaidh treas-phàrtaidh seo.

Carson a bu chòir do chompanaidh treas-phàrtaidh pàigheadh ​​​​airson an iuchair phoblach agam a chlàradh na cheist air leth, cha bheachdaich sinn air an seo.

A-nis tha e soilleir dè an ciall a tha air an sgrìobhadh:

smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key

Anns a’ phasgan “/ etc/ssl” tha na faidhlichean gu lèir airson cùisean ssl.
domain1.com - ainm fearainn.
Is e 2018 a’ bhliadhna de phrìomh chruthachadh.
“iuchair” - sònrachadh gur e iuchair phrìobhaideach a th’ anns an fhaidhle.

Agus brìgh an fhaidhle seo:

smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
domain1.com - ainm fearainn.
Is e 2018 a’ bhliadhna de phrìomh chruthachadh.
chained - sònrachadh gu bheil sreath de iuchraichean poblach ann (is e a’ chiad fhear an iuchair phoblach againn agus is e an còrr a thàinig bhon chompanaidh a chuir a-mach an iuchair phoblach).
crt - sònrachadh gu bheil teisteanas deiseil (iuchair phoblach le mìneachaidhean teicnigeach).

smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1

Chan eil an suidheachadh seo air a chleachdadh sa chùis seo, ach tha e sgrìobhte mar eisimpleir.

Air sgàth 's gu bheil mearachd sa pharameter seo a' ciallachadh gun tèid spam a chuir bhon fhrithealaiche agad (às aonais do thoil).

An uairsin dearbhaich don h-uile duine nach eil thu ciontach.

recipient_delimiter = +

Is dòcha nach eil fios aig mòran dhaoine, ach is e caractar àbhaisteach a tha seo airson puist-d a rangachadh, agus tha e a’ faighinn taic bhon mhòr-chuid de luchd-frithealaidh puist an latha an-diugh.

Mar eisimpleir, ma tha bogsa puist agad "[post-d fo dhìon]"feuch ri cur gu"[post-d fo dhìon]"- seall dè thig às.

inet_protocols = ipv4

Is dòcha gu bheil seo troimh-chèile.

Ach chan ann dìreach mar sin a tha e. Mar as trice chan eil anns gach raon ùr ach IPv4, agus an uairsin tionndaidhidh mi IPv6 airson gach fear fa leth.

virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

An seo tha sinn a’ sònrachadh gum bi a h-uile post a tha a’ tighinn a-steach a’ dol gu dovecot.
Agus na riaghailtean airson àrainn, bogsa puist, alias - coimhead anns an stòr-dàta.

/etc/postfix/mysql-virtual-mailbox-domains.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_domains WHERE name='%s'

/etc/postfix/mysql-virtual-mailbox-maps.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_users WHERE email='%s'

/etc/postfix/mysql-virtual-alias-maps.cf

user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT destination FROM virtual_aliases WHERE source='%s'

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

A-nis tha fios aig postfix gum faodar gabhail ri post airson tuilleadh a chuir air falbh dìreach às deidh cead fhaighinn le calman.

Chan eil mi dha-rìribh a’ tuigsinn carson a tha seo air a dhùblachadh an seo. Tha sinn mu thràth air a h-uile dad a tha a dhìth a shònrachadh ann an “virtual_transport”.

Ach tha an siostam postfix gu math sean - is dòcha gur e tilleadh air ais bho na seann làithean a th’ ann.

smtpd_recipient_restrictions =
        ...

smtpd_helo_restrictions =
        ...

smtpd_client_restrictions =
        ...

Faodar seo a rèiteachadh ann an dòigh eadar-dhealaichte airson gach frithealaiche puist.

Tha 3 frithealaichean puist agam rim faighinn agus tha na roghainnean sin gu math eadar-dhealaichte air sgàth diofar fheumalachdan cleachdaidh.

Feumaidh tu a rèiteachadh gu faiceallach - air neo dòirtidh spam a-steach thugad, no eadhon nas miosa - dòirtidh spam bhuat.

# SPF
policyd-spf_time_limit = 3600

A’ stèidheachadh cuid de plugan co-cheangailte ri bhith a’ sgrùdadh SPF litrichean a tha a’ tighinn a-steach.

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock

Is e an suidheachadh gum feum sinn ainm-sgrìobhte DKIM a thoirt seachad leis a h-uile post-d a tha a’ dol a-mach.

# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre

Tha seo na phrìomh mhion-fhiosrachadh ann an slighe litrichean nuair a bhios tu a’ cur litrichean bho sgriobtaichean PHP.

Faidhle “/etc/postfix/sdd_transport.pcre”:

/^[email protected]$/ domain1:
/^[email protected]$/ domain2:
/^[email protected]$/ domain3:
/@domain1.com$/             domain1:
/@domain2.com$/             domain2:
/@domain3.com$/             domain3:

Air an taobh chlì tha seallaidhean cunbhalach. Air an taobh dheas tha leubail a tha a’ comharrachadh na litreach.
Postfix a rèir an leubail - bheir e aire do ghrunn loidhnichean rèiteachaidh eile airson litir shònraichte.

Bidh dè cho dìreach ‘s a thèid postfix ath-dhealbhadh airson litir shònraichte air a chomharrachadh ann an“ master.cf ”.

Is e loidhnichean 4, 5, 6 na prìomh fheadhainn. Às leth an àrainn a tha sinn a 'cur na litreach, tha sinn a' cur an leubail seo.
Ach chan eil an raon “bho” an-còmhnaidh air a chomharrachadh ann an sgriobtaichean PHP san t-seann chòd. An uairsin thig an t-ainm-cleachdaidh chun an teasairginn.

Tha an artaigil farsaing mu thràth - cha bhithinn airson a bhith air mo tharraing le bhith a’ stèidheachadh nginx + fpm.

Ann an ùine ghoirid, airson gach làrach shuidhich sinn an sealbhadair linux-user aige fhèin. Agus a rèir sin do fpm-pool.

Bidh Fpm-pool a’ cleachdadh dreach sam bith de php (tha e sgoinneil nuair as urrainn dhut dreachan eadar-dhealaichte de php a chleachdadh air an aon fhrithealaiche agus eadhon php.ini eadar-dhealaichte airson làraich faisg air làimh gun duilgheadasan).

Mar sin, tha làrach-lìn domain2.com aig neach-cleachdaidh sònraichte linux “www-domain2”. Tha còd aig an làrach seo airson puist-d a chuir gun a bhith a’ sònrachadh an raon bhon raon.

Mar sin, eadhon anns a 'chùis seo, thèid na litrichean a chuir gu ceart agus cha bhi iad gu bràth ann an spam.

Tha mo “/etc/postfix/master.cf” a’ coimhead mar seo:

...
smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
...
policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}
...
domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

domain2  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X5
   -o smtp_helo_name=domain2.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:2:1:1
   -o syslog_name=postfix-domain2

domain3  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X2
   -o smtp_helo_name=domain3
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:5:1
   -o syslog_name=postfix-domain3

Chan eil am faidhle air a thoirt seachad gu h-iomlan - tha e mar-thà glè mhòr.
Cha do mhothaich mi ach na chaidh atharrachadh.

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Seo roghainnean co-cheangailte ri spamassasin, barrachd air sin nas fhaide air adhart.

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Leigidh sinn leat ceangal ris an fhrithealaiche puist tro phort 587.
Gus seo a dhèanamh, feumaidh tu logadh a-steach.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

Dèan comas air sgrùdadh SPF.

apt-get install postfix-policyd-spf-python

Nach stàlaich sinn am pasgan airson sgrùdaidhean SPF gu h-àrd.

domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

Agus is e seo an rud as inntinniche. Is e seo an comas litrichean a chuir airson raon sònraichte bho sheòladh IPv4 / IPv6 sònraichte.

Tha seo air a dhèanamh airson adhbhar rDNS. Is e rDNS am pròiseas airson sreang fhaighinn le seòladh IP.
Agus airson post, tha am feart seo air a chleachdadh gus dearbhadh gu bheil an helo a’ freagairt gu dìreach ri rDNS an t-seòlaidh bhon deach am post-d a chuir.

Mura h-eil an helo a’ freagairt ris an raon post-d às leth an deach an litir a chuir, thèid puingean spam a thoirt seachad.

Chan eil Helo a 'maidseadh rDNS - tha tòrr phuingean spam air an toirt seachad.
Mar sin, feumaidh a sheòladh IP fhèin a bhith aig gach àrainn.
Airson OVH - anns a 'chonsail tha e comasach rDNS a shònrachadh.
Airson tech.ru - tha a 'chùis air a rèiteachadh tro thaic.
Airson AWS, tha a’ chùis air a rèiteach tro thaic.
“inet_protocols” agus “smtp_bind_address6” - bidh sinn a’ comasachadh taic IPv6.
Airson IPv6 feumaidh tu cuideachd rDNS a chlàradh.
“syslog_name” - agus tha seo airson na logaichean a leughadh gu furasta.

Ceannaich teisteanasan Tha mi a 'moladh an seo.

A’ stèidheachadh ceangal postfix+dovecot an seo.

A 'suidheachadh SPF.

============ Dovecot ===========

apt-get install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql dovecot-antispam

A’ stèidheachadh mysql, a’ stàladh nam pacaidean iad fhèin.

Faidhle "/etc/dovecot/conf.d/10-auth.conf"

disable_plaintext_auth = yes
auth_mechanisms = plain login

Chan eil an t-ùghdarrachadh ach air a chrioptachadh.

Faidhle “/etc/dovecot/conf.d/10-mail.conf”

mail_location = maildir:/var/mail/vhosts/%d/%n

An seo tha sinn a 'comharrachadh an àite stòraidh airson na litrichean.

Tha mi airson gum bi iad air an stòradh ann am faidhlichean agus air an cruinneachadh a rèir àrainn.

Faidhle "/etc/dovecot/conf.d/10-master.conf"

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 995
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service imap {
}
service pop3 {
}
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

Is e seo am prìomh fhaidhle rèiteachaidh dovecot.
An seo tha sinn a’ cuir à comas ceanglaichean neo-thèarainte.
Agus cuir an comas ceanglaichean tèarainte.

Faidhle "/etc/dovecot/conf.d/10-ssl.conf"

ssl = required
ssl_cert = </etc/nginx/ssl/domain1.com.2018.chained.crt
ssl_key = </etc/nginx/ssl/domain1.com.2018.key
local XX.XX.XX.X5 {
  ssl_cert = </etc/nginx/ssl/domain2.com.2018.chained.crt
  ssl_key =  </etc/nginx/ssl/domain2.com.2018.key
}

A 'suidheachadh ssl. Tha sinn a’ comharrachadh gu bheil feum air ssl.
Agus an teisteanas fhèin. Agus is e mion-fhiosrachadh cudromach an stiùireadh “ionadail”. A’ nochdadh dè an teisteanas SSL a chleachdas tu nuair a cheanglas tu ris an IPv4 ionadail.

Co-dhiù, chan eil IPv6 air a rèiteachadh an seo, ceartaichidh mi an dearmad seo nas fhaide air adhart.
XX.XX.XX.X5 (àrainn2) - gun teisteanas. Gus teachdaichean a cheangal feumaidh tu domain1.com a shònrachadh.
XX.XX.XX.X2 (domain3) - tha teisteanas, faodaidh sibh a shònrachadh domain1.com no domain3.com ceangal luchd-dèiligidh.

Faidhle "/etc/dovecot/conf.d/15-lda.conf"

protocol lda {
  mail_plugins = $mail_plugins sieve
}

Bidh feum air seo airson spamassassin san àm ri teachd.

Faidhle "/etc/dovecot/conf.d/20-imap.conf"

protocol imap {
  mail_plugins = $mail_plugins antispam
}

Is e plugan antispam a tha seo. Feum air spamassasin trèanaidh aig àm an gluasad gu / bhon phasgan “Spam”.

Faidhle "/etc/dovecot/conf.d/20-pop3.conf"

protocol pop3 {
}

Chan eil ann ach faidhle mar sin.

Faidhle “/etc/dovecot/conf.d/20-lmtp.conf”

protocol lmtp {
  mail_plugins = $mail_plugins sieve
  postmaster_address = [email protected]
}

A 'suidheachadh lmtp.

Faidhle "/etc/dovecot/conf.d/90-antispam.conf"

plugin {
  antispam_backend = pipe
  antispam_trash = Trash;trash
  antispam_spam = Junk;Spam;SPAM
  antispam_pipe_program_spam_arg = --spam
  antispam_pipe_program_notspam_arg = --ham
  antispam_pipe_program = /usr/bin/sa-learn
  antispam_pipe_program_args = --username=%Lu
}

Suidhichidhean trèanaidh Spamassasin aig àm an gluasad gu / bhon phasgan Spam.

Faidhle "/etc/dovecot/conf.d/90-sieve.conf"

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  sieve_after = /var/lib/dovecot/sieve/default.sieve
}

Faidhle a tha a 'sònrachadh dè a nì thu le litrichean a tha a' tighinn a-steach.

Faidhle "/var/lib/dovecot/sieve/default.sieve"

require ["fileinto", "mailbox"];

if header :contains "X-Spam-Flag" "YES" {
        fileinto :create "Spam";
}

Feumaidh tu am faidhle a chuir ri chèile: “sievec default.sieve”.

Faidhle "/etc/dovecot/conf.d/auth-sql.conf.ext"

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

Sònrachadh faidhlichean sql airson cead.
Agus tha am faidhle fhèin air a chleachdadh mar dhòigh ceadachaidh.

Faidhle "/etc/dovecot/dovecot-sql.conf.ext"

driver = mysql
connect = host=127.0.0.1 dbname=servermail user=usermail password=password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

Tha seo a’ freagairt ri roghainnean co-chosmhail airson postfix.

Faidhle "/etc/dovecot/dovecot.conf"

protocols = imap lmtp pop3
listen = *, ::
dict {
}
!include conf.d/*.conf
!include_try local.conf

Prìomh fhaidhle rèiteachaidh.
Is e an rud cudthromach gu bheil sinn a 'comharrachadh an seo - cuir protocols ris.

============ SpamAssassin ============

apt-get install spamassassin spamc

Leig leinn na pacaidean a stàladh.

adduser spamd --disabled-login

Nach cuir sinn cleachdaiche ris às a leth.

systemctl enable spamassassin.service

Bidh sinn a’ comasachadh seirbheis spamassassin fèin-luchdachadh nuair a thèid a luchdachadh.

Faidhle "/etc/default/spamassassin":

CRON=1

Le bhith a’ comasachadh ùrachadh fèin-ghluasadach air riaghailtean “gu bunaiteach”.

Faidhle “/etc/spamassassin/local.cf”:

report_safe 0

use_bayes          1
bayes_auto_learn   1
bayes_auto_expire  1
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn      DBI:mysql:sa:localhost:3306
bayes_sql_username sa
bayes_sql_password password

Feumaidh tu stòr-dàta “sa” a chruthachadh ann am mysql leis an neach-cleachdaidh “sa” leis an fhacal-fhaire “facal-faire” (cuir rudeigin iomchaidh na àite).

report_safe - cuiridh seo cunntas air post-d spama an àite litir.
Tha use_bayes nan roghainnean ionnsachaidh inneal spamassassin.

Chaidh na roghainnean spamassassin a bha air fhàgail a chleachdadh na bu thràithe san artaigil.

Suidheachadh coitcheann "spamassassin".
Mu bhith a’ gluasad puist-d Spam ùra gu pasgan “Spam” IMAP.
Mu mheasgachadh sìmplidh de Dovecot + SpamAssassin.
Tha mi a’ moladh teòiridh ionnsachaidh spamassasin a leughadh nuair a ghluaiseas tu litrichean ann am pasganan imap (agus chan eil mi a’ moladh a chleachdadh).

============ Ath-thagradh don choimhearsnachd ===========

Bu mhath leam cuideachd beachd a thilgeil a-steach don choimhearsnachd mu mar as urrainn dhut ìre tèarainteachd litrichean air adhart àrdachadh. Leis gu bheil mi air mo bhogadh cho mòr ann an cuspair a’ phuist.

Gus an urrainn don neach-cleachdaidh paidhir iuchraichean a chruthachadh air an neach-dèiligidh aige (sealladh, thunderbird, brabhsair-plugin, ...). Prìobhaideach agus poblach. Poblach - cuir gu DNS. Prìobhaideach - sàbhail air an neach-dèiligidh. Bhiodh e comasach do luchd-frithealaidh puist iuchair phoblach a chleachdadh airson a chuir gu neach sònraichte.

Agus gus dìon an aghaidh spama le litrichean mar sin (tha, chan urrainn don fhrithealaiche puist an susbaint fhaicinn) - feumaidh tu 3 riaghailtean a thoirt a-steach:

  1. Ainm-sgrìobhte fìor DKIM èigneachail, SPF èigneachail, rDNS èigneachail.
  2. Lìonra neural air cuspair trèanadh antispam + stòr-dàta air a shon air taobh an neach-dèiligidh.
  3. Feumaidh an algairim crioptachaidh a bhith cho mòr is gum feum an taobh cur 100 uair a bharrachd cumhachd CPU a chosg air crioptachadh na an taobh faighinn.

A bharrachd air litrichean poblach, leasaich litir molaidh àbhaisteach “gus conaltradh tèarainte a thòiseachadh.” Bidh aon de na cleachdaichean (bogsa puist) a 'cur litir le ceangal gu bogsa puist eile. Anns an litir tha moladh teacsa gus sianal conaltraidh tèarainte a thòiseachadh airson conaltradh agus iuchair phoblach sealbhadair a ’bhogsa puist (le iuchair phrìobhaideach air taobh an neach-dèiligidh).

Faodaidh tu eadhon iuchair no dhà a dhèanamh gu sònraichte airson gach conaltradh. Faodaidh an neach-cleachdaidh a gheibh e gabhail ris an tairgse seo agus an iuchair phoblach aige a chuir (cuideachd air a dhèanamh gu sònraichte airson a’ chonaltraidh seo). An uairsin, bidh a 'chiad neach-cleachdaidh a' cur litir smachd seirbheis (air a chrioptachadh le iuchair phoblach an dàrna neach-cleachdaidh) - nuair a gheibhear e faodaidh an dàrna neach-cleachdaidh beachdachadh air an t-sianal conaltraidh a chaidh a chruthachadh earbsach. An uairsin, bidh an dàrna neach-cleachdaidh a ’cur litir smachd - agus an uairsin faodaidh a’ chiad neach-cleachdaidh beachdachadh air an t-sianal cruthaichte tèarainte.

Gus cuir an-aghaidh casg air iuchraichean air an rathad, feumaidh am protocol ullachadh airson cothrom air co-dhiù aon iuchair phoblach a chuir a-mach le bhith a’ cleachdadh draibhear flash.

Agus is e an rud as cudromaiche gu bheil e uile ag obair (is e a 'cheist "cò a phàigheas air a shon?"):
Cuir a-steach teisteanasan puist a’ tòiseachadh aig $10 airson 3 bliadhna. A leigeas leis an neach a chuir an cèill anns na dns gu bheil “na h-iuchraichean poblach agam thall an sin.” Agus bheir iad cothrom dhut ceangal tèarainte a thòiseachadh. Aig an aon àm, tha e an-asgaidh gabhail ri ceanglaichean mar sin.
tha gmail mu dheireadh a’ dèanamh airgead air an luchd-cleachdaidh aige. Airson $ 10 gach 3 bliadhna - an còir seanalan conaltraidh tèarainte a chruthachadh.

============ Co-dhùnadh ============

Gus an artaigil gu lèir a dhearbhadh, bha mi a’ dol a thoirt air màl frithealaiche sònraichte airson mìos agus ceannach àrainn le teisteanas SSL.

Ach leasaich suidheachadh beatha agus mar sin chaidh a’ chùis seo air adhart airson 2 mhìos.
Agus mar sin, nuair a bha ùine shaor agam a-rithist, chuir mi romham an artaigil fhoillseachadh mar a tha, seach cunnart gun slaod am foillseachadh airson bliadhna eile.

Ma tha tòrr cheistean ann mar “ach chan eil seo air a mhìneachadh gu mionaideach”, is dòcha gum bi neart ann frithealaiche sònraichte a ghabhail le raon ùr agus teisteanas SSL ùr agus cunntas a thoirt air eadhon nas mionaidiche agus, a’ mhòr-chuid. gu cudromach, comharraich a h-uile mion-fhiosrachadh cudromach a tha a dhìth.

Bu mhath leam cuideachd fios air ais fhaighinn mu bheachdan mu theisteanasan puist. Ma tha am beachd a’ còrdadh riut, feuchaidh mi ris an neart a lorg airson dreachd a sgrìobhadh airson rfc.

Nuair a bhios tu a’ dèanamh lethbhreac de phàirtean mòra de artaigil, thoir seachad ceangal don artaigil seo.
Nuair a bhios tu ag eadar-theangachadh gu cànan sam bith eile, thoir seachad ceangal don artaigil seo.
Feuchaidh mi ri eadar-theangachadh gu Beurla mi-fhìn agus fàgaidh mi tar-iomraidhean.


Source: www.habr.com

Cuir beachd ann