hook_post-iptable-rules 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. host6=$(dig AAAA +short <TPL:SERVER_NAME> | tail -n1)
  3. host4=$(dig A +short <TPL:SERVER_NAME> | tail -n1)
  4. # IPv6
  5. sudo ip6tables -N vpnclient_in
  6. sudo ip6tables -N vpnclient_out
  7. sudo ip6tables -N vpnclient_fwd
  8. sudo ip6tables -A vpnclient_in -p icmpv6 -j ACCEPT
  9. sudo ip6tables -A vpnclient_in -s fd00::/8,fe80::/10 -j ACCEPT
  10. sudo ip6tables -A vpnclient_in -p tcp --dport 22 -j ACCEPT
  11. sudo ip6tables -A vpnclient_in -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  12. sudo ip6tables -A vpnclient_in -j DROP
  13. if [ ! -z "${host6}" ]; then
  14. sudo ip6tables -A vpnclient_out -d ${host6} -p <TPL:PROTO> --dport <TPL:SERVER_PORT> -j ACCEPT
  15. fi
  16. for i in <TPL:DNS0> <TPL:DNS1>; do
  17. if [[ "${i}" =~ : ]]; then
  18. sudo ip6tables -A vpnclient_out -p udp -d "${i}" --dport 53 -j ACCEPT
  19. fi
  20. done
  21. sudo ip6tables -A vpnclient_out -d fd00::/8,fe80::/10 -j ACCEPT
  22. sudo ip6tables -A vpnclient_out -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  23. sudo ip6tables -A vpnclient_out -j DROP
  24. sudo ip6tables -A vpnclient_fwd -j DROP
  25. sudo ip6tables -I INPUT 1 -i <TPL:WIRED_DEVICE> -j vpnclient_in
  26. sudo ip6tables -I OUTPUT 1 -o <TPL:WIRED_DEVICE> -j vpnclient_out
  27. sudo ip6tables -I FORWARD 1 -o <TPL:WIRED_DEVICE> -j vpnclient_fwd
  28. # IPv4
  29. sudo iptables -N vpnclient_in
  30. sudo iptables -N vpnclient_out
  31. sudo iptables -N vpnclient_fwd
  32. sudo iptables -A vpnclient_in -p icmp -j ACCEPT
  33. sudo iptables -A vpnclient_in -s 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16 -j ACCEPT
  34. sudo iptables -A vpnclient_in -p tcp --dport 22 -j ACCEPT
  35. sudo iptables -A vpnclient_in -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  36. sudo iptables -A vpnclient_in -j DROP
  37. if [ ! -z "${host4}" ]; then
  38. sudo iptables -A vpnclient_out -d ${host4} -p <TPL:PROTO> --dport <TPL:SERVER_PORT> -j ACCEPT
  39. fi
  40. for i in <TPL:DNS0> <TPL:DNS1>; do
  41. if [[ "${i}" =~ \. ]]; then
  42. sudo iptables -A vpnclient_out -p udp -d "${i}" --dport 53 -j ACCEPT
  43. fi
  44. done
  45. sudo iptables -A vpnclient_out -d 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16 -j ACCEPT
  46. sudo iptables -A vpnclient_out -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  47. sudo iptables -A vpnclient_out -j DROP
  48. sudo iptables -A vpnclient_fwd -j DROP
  49. sudo iptables -I INPUT 1 -i <TPL:WIRED_DEVICE> -j vpnclient_in
  50. sudo iptables -I OUTPUT 1 -o <TPL:WIRED_DEVICE> -j vpnclient_out
  51. sudo iptables -I FORWARD 1 -o <TPL:WIRED_DEVICE> -j vpnclient_fwd
  52. exit 0