Зони на Shorewall за двата пътя на пакетите OpenVPN
Отделете шифрования транспортен канал на OpenVPN от дешифрирания клиентски трафик, дайте на тунела собствена зона и разрешете само онази услуга, от която клиентът се нуждае.
Два потока от пакети пресичат шлюз на Shorewall, който терминира OpenVPN, и само единият от тях е шифрован. Първият е транспортът на клиента до слушателя на VPN на интерфейса, обърнат към интернет. Вторият е дешифрираната заявка, която излиза от тунелния интерфейс към офис сървър или услуга на шлюза. Начертайте и двата преди да редактирате политиката, защото правило, което удовлетворява първия, не прави нищо за втория.
Начертайте двата потока преди да редактирате политиката
Запишете потоците като редове с източник, дестинация, протокол и порт. По външния път източникът е публичният адрес на клиента, а дестинацията е портът на слушателя на шлюза; Shorewall третира това като трафик от интернет към защитната стена. По вътрешния път източникът е диапазонът от адреси на тунела, а дестинацията е одобрената услуга. Двата реда имат различни собственици, дори когато един администратор поддържа и двата.
| Flow | Zone relationship | What to constrain |
|---|---|---|
| Encrypted OpenVPN transport | Internet to the firewall host | The listener's actual protocol and port |
| Decrypted request to a LAN service | VPN clients to the LAN zone | One approved server and service |
| Decrypted request to the gateway | VPN clients to the firewall host | Only the local services required |
| Request to another VPN client | VPN clients to VPN clients | Denied unless deliberately required |
Добавяйте ред само ако заявката завършва на самия шлюз, например достъп до резолвър или управление. Услуга на хоста следва политиката за входящ трафик на хоста, а не пътя на препращане. Смесването на двете е начинът, по който тясно правило за тунела излага административен интерфейс.
Задайте зоната на тунела и обхвата на интерфейса
Зоната за пътуващия потребител се декларира в /etc/shorewall/zones, тунелният интерфейс се прикача в /etc/shorewall/interfaces, а външната връзка се описва в /etc/shorewall/tunnels. Съобразете се със синтаксиса на инсталираната версия, защото редът на колоните и имената на опциите са се променили между основните версии. Примерният порт от ръководството не е причина да разрешите различен порт от този, на който демонът действително слуша. TCP и UDP не са взаимозаменяеми само защото числата съвпадат.
Ръководството групира интерфейсите с tun+. На хост с повече от един тунел този заместващ знак може да постави втори VPN с различно ниво на доверие в същата зона. Прегледайте обхвата спрямо интерфейсите, които реално съществуват, и дръжте именуването под жизнения цикъл на мениджъра на връзки, вместо да редактирате имената на интерфейсите на ръка.
Историческото ръководство съдържа много по-стари примерни конфигурации на OpenVPN и неговите криптографски съвети не бива да се копират в текущо внедряване. Вземете вместо това модела на зоните и потоците. Вземете криптографската основа от поддържаната политика на OpenVPN на шлюза.
Разрешете само пътя, който сте класифицирали
Широкото приемане от зоната на VPN към LAN е начална схема, а не завършена политика. Запишете разрешения клиентски източник, действителния адрес на услугата, протокола и порта. След това прочетете правилата над него и подразбирането на зоната, защото тясното допълнение не отменя широко разрешение, което вече съвпада. Трафикът към хоста на шлюза е отделна връзка от трафика, препращан през него.
Клиентският трафик между равностойни клиенти се нуждае от собствено решение. client-to-client на OpenVPN и routeback на Shorewall и двете влияят дали клиентите могат да се достигат, и никое от тях не бива да се включва само за да работи едно LAN приложение. Решете къде се налага изолация, преди да я тествате.
Дръжте пътя на отговора в същия план. Услугата или нейният рутер трябва да знаят как да върнат трафика към диапазона на тунела, или дизайнът трябва умишлено да трансформира източника и в рамките на предвидения обхват.
Проверете, после докажете и двата пътя
Проверете конфигурацията преди да рестартирате каквото и да е и дръжте отворена независима административна сесия в случай, че новата политика е погрешна.
shorewall check
След чиста проверка приложете конфигурацията и прочетете какво е заредил Shorewall. Тези четения описват работещата политика, а не това, което файлът изглежда казва.
shorewall show zones
ip route get 192.168.10.20
Тествайте една нова разрешена заявка и една умишлено отказана заявка от същия клиент. Успешното ръкостискане на OpenVPN доказва само външния обмен; разрешената услуга и отказаният ресурс доказват вътрешната политика, която сте имали предвид. След това свържете клиента отново и повторете, защото името и адресът на тунелния интерфейс могат да се променят между сесиите. Ако резултатът се различава, поправете обхвата на зоната, вместо да разширявате правилото.