ਟਨਲ ਰੋਕੇ ਬਿਨਾਂ ਇੱਕ OpenVPN ਕਲਾਇੰਟ ਨੂੰ LAN ਤੋਂ ਬਲਾਕ ਕਰੋ
ਕਲਾਇੰਟ ਦਾ ਟਨਲ ਪਤਾ ਉਸਦੇ ਸਰਟੀਫਿਕੇਟ ਨਾਲ ਪਿੰਨ ਕਰੋ, FORWARD ਦੇ ਸਿਰ 'ਤੇ ਉਸਦਾ LAN ਟ੍ਰੈਫਿਕ ਡ੍ਰੌਪ ਕਰੋ, ਫਿਰ IPv6, ਟ੍ਰੈਕ ਕੀਤੇ ਸੈਸ਼ਨ ਅਤੇ ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਬਚਾਅ ਦੀ ਜਾਂਚ ਕਰੋ।
ਤੁਹਾਡੇ OpenVPN ਸਰਵਰ 'ਤੇ ਇੱਕ ਕਲਾਇੰਟ ਨੂੰ LAN ਪਹੁੰਚ ਗੁਆਉਣੀ ਚਾਹੀਦੀ ਹੈ ਜਦੋਂ ਕਿ ਬਾਕੀ ਸਾਰੇ ਟਨਲ ਚੱਲਦੇ ਰਹਿਣ। ਇਸਨੂੰ ਖੋਜੋ ਤਾਂ ਸਭ ਤੋਂ ਵਧੀਆ ਜਵਾਬ ਆਮ ਤੌਰ 'ਤੇ ਕਹਿੰਦਾ ਹੈ ਕਿ ਡੀਮਨ ਇਹ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਜੋ ਅੱਧਾ ਹੀ ਸੱਚ ਹੈ: OpenVPN ਵਿੱਚ ਹਰ ਕਲਾਇੰਟ ਲਈ ਫਾਇਰਵਾਲ ਨਹੀਂ, ਪਰ ਜੋ ਹੋਸਟ ਟਨਲ ਖਤਮ ਕਰਦਾ ਹੈ ਉਹ ਪਹਿਲਾਂ ਹੀ ਪੈਕਟ ਫਿਲਟਰ ਕਰਦਾ ਹੈ। ਅਸਲ ਦੋ ਫੈਸਲੇ ਹਨ ਤੁਸੀਂ ਕਿਹੜੀ ਪਛਾਣ ਬਲਾਕ ਕਰਦੇ ਹੋ ਅਤੇ ਨਿਯਮ ਦੀ ਸਥਿਤੀ। ਇਹ ਦੋਵੇਂ ਸਹੀ ਕਰੋ ਤਾਂ ਬਦਲਾਅ ਇੱਕ ਲਾਈਨ ਬਣ ਜਾਂਦਾ ਹੈ ਜਿਸਨੂੰ ਤੁਸੀਂ ਜਾਂਚ ਅਤੇ ਹਟਾ ਸਕਦੇ ਹੋ।
ਨਿਯਮ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਕਲਾਇੰਟ ਨੂੰ ਪਿੰਨ ਕਰੋ
OpenVPN ਪੂਲ ਤੋਂ ਟਨਲ ਪਤੇ ਕਿਰਾਏ 'ਤੇ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ 10.8.0.6 ਵਿਅਕਤੀ ਨਹੀਂ, ਸੀਟ ਹੈ। ਸੈਸ਼ਨ ਖਤਮ ਹੋਣ 'ਤੇ ਕਿਰਾਇਆ ਵਾਪਸ ਆਉਂਦਾ ਹੈ ਅਤੇ ਅਗਲੇ ਕਨੈਕਸ਼ਨ ਨੂੰ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਭਾਵ ਉਸ ਪਤੇ ਵਿਰੁੱਧ ਲਿਖਿਆ ਨਿਯਮ ਸੀਟ ਦਾ ਪਿੱਛਾ ਕਰਦਾ ਹੈ, ਵਰਤੋਂਕਾਰ ਦਾ ਨਹੀਂ। ਇਸ ਲਈ ਪਹਿਲਾਂ ਤੈਅ ਕਰੋ ਕਿ ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਕੀ ਬਲਾਕ ਕਰ ਰਹੇ ਹੋ: ਛੋਟੇ ਪ੍ਰਯੋਗ ਲਈ ਪਤਾ, ਜਾਂ ਕਿਸੇ ਨੂੰ ਬਾਹਰ ਰੱਖਣ ਲਈ ਸਰਟੀਫਿਕੇਟ।
ਪਤੇ ਨੂੰ ਸਰਟੀਫਿਕੇਟ ਨਾਲ ਬੰਨ੍ਹਣ ਲਈ, client-config-dir ਵੱਲੋਂ ਦਿੱਤੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਇੱਕ ਫਾਈਲ ਬਣਾਓ ਅਤੇ ਫਾਈਲ ਨੂੰ ਸਰਟੀਫਿਕੇਟ ਦਾ common name ਬਿਲਕੁਲ ਉਹੀ ਦਿਓ। ਇਸ ਵਿੱਚ ਇੱਕ ਨਿਰਦੇਸ਼ ਰੱਖੋ, ifconfig-push 10.8.0.6 255.255.255.0, ਅਤੇ ਉਹ ਕਲਾਇੰਟ ਦੁਬਾਰਾ ਜੁੜਨ 'ਤੇ ਵੀ ਉਹੀ ਟਨਲ ਪਤਾ ਰੱਖਦਾ ਹੈ। ਇਹ ਪ੍ਰਭਾਵੀ ਹੋਣ ਲਈ ਦੋ ਸੈਟਿੰਗਾਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ: ਸਰਵਰ ਕੌਨਫਿਗਰੇਸ਼ਨ ਵਿੱਚ client-config-dir ਘੋਸ਼ਿਤ ਹੋਵੇ, ਅਤੇ ਭੇਜਿਆ ਪਤਾ ਅਜਿਹੇ ਸਬਨੈੱਟ ਵਿੱਚ ਹੋਵੇ ਜਿਸਨੂੰ ਸਰਵਰ ਰੂਟ ਕਰ ਸਕੇ। ਇੱਕ ਵੀ ਛੁੱਟਿਆ ਤਾਂ ਫਾਈਲ ਬਿਨਾਂ ਗਲਤੀ ਦੇ ਅਣਡਿੱਠੀ ਹੋ ਜਾਂਦੀ ਹੈ, ਜੋ ਅਗਲੀ ਫਾਇਰਵਾਲ ਜਾਂਚ ਨੂੰ ਭਰਮਾਉਣ ਵਾਲੀ ਬਣਾਉਂਦੀ ਹੈ।
ਅਸਥਾਈ ਬਲਾਕ ਪੂਲ ਦਾ ਪਤਾ ਵਰਤ ਸਕਦਾ ਹੈ, ਜੇ ਟਿਕਟ ਵਿੱਚ ਦਰਜ ਹੋਵੇ ਕਿ ਉਸ ਸਮੇਂ ਕਿਹੜੇ ਸੈਸ਼ਨ ਕੋਲ ਇਹ ਸੀ।
ਕ੍ਰਮ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਡ੍ਰੌਪ ਚੱਲੇਗਾ ਜਾਂ ਨਹੀਂ
ਜੋ Linux ਗੇਟਵੇ ਟਨਲ ਅਤੇ LAN ਵਿਚਕਾਰ ਫਾਰਵਰਡ ਕਰਦਾ ਹੈ, ਉੱਥੇ ਪੈਕਟ FORWARD ਚੇਨ ਵਿੱਚੋਂ ਲੰਘਦੇ ਹਨ। ਹੇਠਾਂ ਦਿੱਤੇ ਹੁਕਮ ਨੂੰ ਵਾਕ ਵਜੋਂ ਪੜ੍ਹੋ: FORWARD ਦੇ ਸਿਰ 'ਤੇ ਪਾਓ, tun0 ਤੋਂ ਆਉਣ ਵਾਲਾ, ਸਿਰਫ ਉਸੇ ਇੱਕ ਹੋਸਟ ਦਾ, LAN ਸਬਨੈੱਟ ਵੱਲ ਭੇਜਿਆ ਟ੍ਰੈਫਿਕ ਮਿਲਾਓ ਅਤੇ ਡ੍ਰੌਪ ਕਰੋ।
iptables -I FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP-I ਹੀ ਨਿਯਮ ਚਲਾਉਂਦਾ ਹੈ। -A ਨਾਲ ਜੋੜਨ 'ਤੇ ਇਹ ਟਨਲ ਸਬਨੈੱਟ ਲਈ ਕਿਸੇ ਵੀ ਵਿਆਪਕ ਪ੍ਰਵਾਨਗੀ ਹੇਠਾਂ ਚਲਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਕਦੇ ਪੈਕਟ ਨਹੀਂ ਵੇਖਦਾ। ਸਥਿਤੀ iptables -vnL FORWARD --line-numbers ਨਾਲ ਜਾਂਚੋ ਅਤੇ ਕਾਊਂਟਰ ਵੀ ਪੜ੍ਹੋ: ਉੱਪਰਲਾ ਡ੍ਰੌਪ ਜੇ ਕੁਝ ਨਹੀਂ ਗਿਣਦਾ ਤਾਂ ਟ੍ਰੈਫਿਕ ਕਿਸੇ ਹੋਰ ਰਸਤੇ ਤੋਂ ਆ ਰਿਹਾ ਹੈ।
ਗੇਟਵੇ ਦਾ ਆਪਣਾ LAN ਪਤਾ ਵੱਖਰਾ ਰਸਤਾ ਹੈ। ਬਾਕਸ ਨੂੰ ਹੀ ਭੇਜੇ ਪੈਕਟ INPUT ਵਿੱਚ ਜਾਂਦੇ ਹਨ, FORWARD ਵਿੱਚ ਨਹੀਂ, ਇਸ ਲਈ ਕਲਾਇੰਟ LAN ਹੋਸਟ ਗੁਆ ਕੇ ਵੀ ਰਾਊਟਰ ਦਾ ਐਡਮਿਨ ਪੇਜ ਖੋਲ੍ਹ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਇਹ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ ਤਾਂ ਮਿਲਦਾ INPUT ਨਿਯਮ ਜੋੜੋ।
ਫਿਲਟਰ ਕੀ ਨਹੀਂ ਵੇਖ ਸਕਦਾ
ਫਿਲਟਰਿੰਗ ਪੈਕਟ ਦੇ ਮੁਲਾਂਕਣ ਵੇਲੇ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਸਥਾਪਿਤ TCP ਸੈਸ਼ਨ ਬੰਦ ਜਾਂ ਰੀਸੈਟ ਹੋਣ ਤੱਕ ਚੱਲ ਸਕਦਾ ਹੈ। ਜੇ ਬਲਾਕ ਨੂੰ ਤੁਰੰਤ ਅਸਰ ਕਰਨਾ ਹੈ ਤਾਂ ਨਿਯਮ ਪਾਉਣ ਤੋਂ ਬਾਅਦ ਉਸ ਸਰੋਤ ਦੇ ਟ੍ਰੈਕ ਕੀਤੇ ਫਲੋ conntrack -D -s 10.8.0.6 ਨਾਲ ਸਾਫ ਕਰੋ। ਜੇ ਕੁਝ ਸਕਿੰਟ ਦਾ ਓਵਰਲੈਪ ਸਵੀਕਾਰਯੋਗ ਹੈ ਤਾਂ ਉਹ ਚੋਣ ਦਰਜ ਕਰੋ, ਅਪ੍ਰਤੱਖ ਛੱਡਣ ਦੀ ਥਾਂ। ਕਿਸੇ ਵੀ ਹਾਲਤ ਵਿੱਚ, ਅਗਲੇ ਵਿਅਕਤੀ ਨੂੰ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਨਿਯਮ ਜੀਵਤ ਟ੍ਰੈਫਿਕ ਰੋਕਦਾ ਹੈ ਜਾਂ ਸਿਰਫ ਨਵੇਂ ਕਨੈਕਸ਼ਨ।
ਪੀਅਰਾਂ ਵਿਚਕਾਰ ਟ੍ਰੈਫਿਕ ਕਦੇ ਹੋਸਟ ਫਾਇਰਵਾਲ ਨੂੰ ਨਹੀਂ ਛੂਹਦਾ। client-to-client ਸਮਰੱਥ ਹੋਣ 'ਤੇ OpenVPN ਉਹ ਪੈਕਟ ਡੀਮਨ ਦੇ ਅੰਦਰ ਭੇਜਦਾ ਹੈ, ਇਸ ਲਈ FORWARD ਜਾਂ INPUT ਉਹਨਾਂ ਨੂੰ ਨਹੀਂ ਵੇਖਦੇ। ਇੱਕੋ ਇੱਕ ਹੱਲ client-to-client ਬੰਦ ਕਰਨਾ ਜਾਂ ਇਹ ਮੰਨਣਾ ਹੈ ਕਿ ਪੀਅਰ ਇੱਕ ਦੂਜੇ ਤੱਕ ਪਹੁੰਚ ਸਕਦੇ ਹਨ; iptables ਨਿਯਮ ਉਹ ਟ੍ਰੈਫਿਕ ਨਹੀਂ ਵੇਖੇਗਾ।
IPv6, ਫਰਮਵੇਅਰ ਅਤੇ ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਬਚਾਅ
IPv4 ਨਿਯਮ IPv6 ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਕਹਿੰਦਾ। ਜੇ ਟਨਲ ਅਤੇ LAN ਦੋਵੇਂ ਪਰਿਵਾਰ ਢੋਂਦੇ ਹਨ, ਤਾਂ ਸਮਾਨ ਨਿਯਮ ip6tables ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਉਸ ਹੋਸਟ 'ਤੇ ਨੀਤੀ ਰੱਖਣ ਵਾਲੇ nftables ਨਿਯਮ-ਸਮੂਹ ਵਿੱਚ। ਰਾਊਟਰ ਫਰਮਵੇਅਰ ਅਕਸਰ netfilter ਨੂੰ ਆਪਣੇ ਅਮੂਰਤੀਕਰਨ ਪਿੱਛੇ ਲੁਕਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਫੋਰਮ ਤੋਂ ਨਕਲ ਕੀਤਾ ਸਿੰਟੈਕਸ ਅਤੇ ਟੇਬਲ ਨਾਮ ਲਾਗੂ ਨਹੀਂ ਹੋ ਸਕਦੇ।
OpenWrt 'ਤੇ ਦਸਤਾਵੇਜ਼ੀ ਰਾਹ ਫਾਇਰਵਾਲ ਕੌਨਫਿਗਰੇਸ਼ਨ ਐਂਟਰੀ ਹੈ, ਹੱਥ ਨਾਲ ਲਿਖੀ iptables ਲਾਈਨ ਨਹੀਂ, ਅਤੇ ਹੱਥ ਨਾਲ ਲਿਖੀ ਲਾਈਨ ਫਾਇਰਵਾਲ ਦੁਬਾਰਾ ਲੋਡ ਹੋਣ 'ਤੇ ਗਾਇਬ ਹੋ ਸਕਦੀ ਹੈ। ਹੋਰ ਡਿਸਟਰੀਬਿਊਸ਼ਨ ਨਿਯਮ netfilter-persistent, ਬੂਟ ਯੂਨਿਟ ਜਾਂ ਵਿਕਰੇਤਾ ਸਟੋਰ ਰਾਹੀਂ ਬਹਾਲ ਕਰਦੇ ਹਨ, ਅਤੇ ਇਹ ਵਿਧੀਆਂ ਆਪਸ ਵਿੱਚ ਬਦਲਣਯੋਗ ਨਹੀਂ। ਤੁਸੀਂ ਚੁਣਿਆ ਰੀਬੂਟ ਨਾਲ ਸਾਬਤ ਕਰੋ, ਕਿਉਂਕਿ ਦੁਬਾਰਾ ਲੋਡ ਹੋਣਾ ਹੋਰ ਰਾਹ ਅਭਿਆਸ ਕਰਦਾ ਹੈ।
ਰਾਹ ਅਨੁਸਾਰ ਜਾਂਚੋ, ਫਿਰ ਸਾਫ਼ ਤਰੀਕੇ ਨਾਲ ਵਾਪਸ ਲਓ
ਹਰ ਰਾਹ ਨੂੰ ਵੱਖਰਾ ਜਾਂਚੋ, ਕਿਉਂਕਿ ਇੱਕ ਸਫਲ ਜਾਂਚ ਬਾਕੀਆਂ ਨੂੰ ਲੁਕਾਉਂਦੀ ਹੈ। ਬਲਾਕ ਕੀਤੇ ਕਲਾਇੰਟ ਨੂੰ ਟਨਲ ਰਾਹੀਂ ਇੰਟਰਨੈੱਟ ਤੱਕ ਪਹੁੰਚਣਾ ਚਾਹੀਦਾ ਹੈ ਪਰ LAN ਹੋਸਟ 'ਤੇ ਅਸਫਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਦੂਜੇ ਕਲਾਇੰਟ ਨੂੰ ਉਸੇ ਹੋਸਟ ਤੱਕ ਪਹੁੰਚਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਗੇਟਵੇ ਪਤਾ ਤੇ ਪੀਅਰ ਰਾਹ ਨੂੰ ਹਰ ਇੱਕ ਦੀ ਆਪਣੀ ਨਿਗਰਾਨੀ ਚਾਹੀਦੀ ਹੈ। ਨਤੀਜੇ ਨਿਯਮ ਦੇ ਕੋਲ ਲਿਖੋ ਤਾਂ ਜੋ ਅਗਲੇ ਬਦਲਾਅ ਦਾ ਆਧਾਰ ਹੋਵੇ। ਹੇਠਾਂ ਦਿੱਤੀ ਸਾਰਣੀ ਉਹ ਸਮੂਹ ਹੈ ਜੋ ਟਿਕਟ ਵਿੱਚ ਰੱਖਣਾ ਯੋਗ ਹੈ।
| ਰਾਹ | ਨਿਯਮ ਨਾਲ ਉਮੀਦ | ਜਦੋਂ ਅਸਫਲ ਹੋਵੇ |
|---|---|---|
| ਬਲਾਕ ਕੀਤਾ ਕਲਾਇੰਟ LAN ਹੋਸਟ ਵੱਲ | ਕੋਈ ਜਵਾਬ ਨਹੀਂ | ਨਿਯਮ ਪ੍ਰਵਾਨਗੀ ਹੇਠਾਂ ਹੈ, ਜਾਂ ਸਰੋਤ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ |
| ਬਲਾਕ ਕੀਤਾ ਕਲਾਇੰਟ ਇੰਟਰਨੈੱਟ ਵੱਲ | tun0 ਰਾਹੀਂ ਕੰਮ ਕਰਦਾ ਹੈ | ਨਿਯਮ ਬਹੁਤ ਵਿਆਪਕ ਹੈ, ਮੰਜ਼ਿਲ ਮੇਲ ਤੋਂ ਬਿਨਾਂ |
| ਦੂਜਾ ਕਲਾਇੰਟ ਉਸੇ LAN ਹੋਸਟ ਵੱਲ | ਕੰਮ ਕਰਦਾ ਹੈ | ਨਿਯਮ ਨੇ ਲੋੜੀਂਦੇ ਹੋਸਟ ਤੋਂ ਵੱਧ ਮਿਲਾਇਆ |
| ਬਲਾਕ ਕੀਤਾ ਕਲਾਇੰਟ ਗੇਟਵੇ ਦੇ LAN ਪਤੇ ਵੱਲ | ਸਿਰਫ ਮਿਲਦੇ INPUT ਨਿਯਮ ਨਾਲ ਬਲਾਕ | INPUT ਨਿਯਮ ਗੁੰਮ ਹੈ |
| ਬਲਾਕ ਕੀਤਾ ਕਲਾਇੰਟ ਪੀਅਰ ਟਨਲ ਪਤੇ ਵੱਲ | ਫਿਰ ਵੀ ਕੰਮ ਕਰਦਾ ਹੈ | client-to-client ਸਮਰੱਥ ਹੈ ਅਤੇ ਫਾਇਰਵਾਲ ਦੇ ਦਾਇਰੇ ਤੋਂ ਬਾਹਰ |
ਵਾਪਸ ਲੈਣਾ ਵਿਸ਼ੇਸ਼ਤਾ ਅਨੁਸਾਰ ਹਟਾਉਣਾ ਹੈ, ਫਲੈਸ਼ ਨਹੀਂ: iptables -D FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP ਠੀਕ ਉਹ ਐਂਟਰੀ ਹਟਾਉਂਦਾ ਹੈ ਅਤੇ ਚੇਨ ਦਾ ਬਾਕੀ ਹਿੱਸਾ ਅਟੁੱਟ ਰੱਖਦਾ ਹੈ। ਜੋ ਵੀ ਫਾਈਲ ਬੂਟ 'ਤੇ ਨਿਯਮ ਬਹਾਲ ਕਰਦੀ ਹੈ ਉਸ ਵਿੱਚੋਂ ਉਹੀ ਲਾਈਨ ਹਟਾਓ, ਉਸਨੂੰ ਦੁਬਾਰਾ ਲੋਡ ਕਰੋ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਕਲਾਇੰਟ ਫਿਰ LAN ਹੋਸਟ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ। FORWARD ਫਲੈਸ਼ ਕਰਨ ਨਾਲ ਤੁਹਾਡੇ ਨਾ ਲਿਖੇ ਨਿਯਮ ਵੀ ਰੱਦ ਹੋ ਜਾਂਦੇ, ਜੋ ਵਾਪਸੀ ਨੂੰ ਦੂਜੀ ਘਟਨਾ ਬਣਾ ਦਿੰਦਾ ਹੈ।
ਟਿਕਟ ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਗੱਲਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ: ਪਿੰਨ ਕੀਤਾ ਪਤਾ ਸਰਟੀਫਿਕੇਟ ਨਾਲ ਮਿਲਦਾ ਹੈ, ਨਿਯਮ ਪ੍ਰਵਾਨਗੀਆਂ ਦੇ ਉੱਪਰ ਹੈ ਅਤੇ ਕਾਊਂਟਰ ਜ਼ੀਰੋ ਨਹੀਂ, ਅਤੇ ਸਥਿਰਤਾ ਫਾਈਲ ਵਿੱਚ ਤੁਹਾਡੇ ਜਾਂਚੇ ਉਹੀ ਨਿਯਮ ਹੈ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਾ ਹੋਵੇ ਤਾਂ ਬਲਾਕ ਸ਼ੈੱਲ ਸੈਸ਼ਨ ਦਾ ਭਰਮ ਹੈ।