Advertisement
Guest User

Firewall

a guest
Oct 9th, 2023
94
0
157 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.63 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. WAN_IF=eth0
  4. SERVER_IP=xxx.xxx.xxx.xxx
  5.  
  6. SSH_PORT=1337
  7. WHITELIST_SSH="xxx.xxx.xxx.xxx/16, 185.195.25.207/32"
  8. WHITELIST_ICMP="xxx.xxx.xxx.xxx/32, xxx.xxx.xxx.xxx/16"
  9.  
  10. DOCKER_IF=user0
  11.  
  12. #---------------Starting Point----------------------------------------------------------
  13. nft flush ruleset
  14. nft add table ip filter
  15. nft add chain ip filter INPUT { type filter hook input priority 0 \; policy accept \;  }
  16. nft add chain ip filter FORWARD { type filter hook forward priority 0 \; policy accept \;  }
  17. nft add chain ip filter OUTPUT { type filter hook output priority 0 \; policy accept \;  }
  18. #--------------Type filter INPUT Chain--------------------------------------------------
  19.  
  20. #enable loopback intarface
  21. nft add rule ip filter INPUT iifname "lo" counter accept
  22.  
  23. #drop invalid packets
  24. nft add rule ip filter INPUT ct state invalid counter drop
  25.  
  26. #enable connections initiated by server
  27. nft add rule ip filter INPUT ct state related,established counter accept
  28.  
  29. #enable network
  30. #nft add rule ip filter INPUT iifname "eth0" ip saddr 192.168.0.0/16 counter accept
  31.  
  32. #---------------------------------------------------------------------------------------
  33. #ssh
  34. #enable ssh on custom port 1337
  35. nft add rule ip filter INPUT ip saddr { $WHITELIST_SSH } tcp dport $SSH_PORT counter accept
  36.  
  37. #enable ssh to saddr only from specified mac addr
  38. #nft add rule ip filter INPUT ip saddr 192.168.8.235/32 ether saddr 44:85:00:8e:42:84 tcp dport 22 counter accept
  39.  
  40. #---------------------------------------------------------------------------------------
  41. #Services
  42. #
  43. #enable dns
  44. #nft add rule ip filter INPUT ip protocol udp dport 53 counter accept
  45. nft add rule ip filter INPUT udp dport 53 counter accept
  46.  
  47. #enable ntp global
  48. nft add rule ip filter INPUT udp dport 123 counter accept
  49.  
  50. #enable ntp only for network 192.168.8.0/24
  51. #nft add rule ip filter INPUT ip saddr 192.168.8.0/24 udp dport 137 counter accept
  52.  
  53. #enable http https 80, 443
  54. #nft add rule ip filter INPUT ip saddr 192.168.8.0/24 tcp dport {80, 443} counter accept
  55. nft add rule ip filter INPUT ip protocol tcp tcp dport {80, 443} counter accept
  56. nft add rule ip filter INPUT ip protocol tcp tcp dport { 8080 } counter accept
  57.  
  58. #---------------------------------------------------------------------------------------
  59. #ICMP
  60.  
  61. #enable icmp
  62. #nft add rule ip filter INPUT ip protocol icmp counter log prefix \"ICMP_TRACE\"
  63. nft add rule ip filter INPUT ip saddr { $WHITELIST_ICMP} ip protocol icmp counter accept
  64. nft add rule ip filter INPUT ip protocol icmp drop
  65.  
  66. #enable icmp at specified time only
  67. #nft add rule ip filter INPUT ip protocol icmp meta hour "08:13"-"08:14" counter accept
  68.  
  69. #enable max ping packet length = 64 bytes (64 + 28 icmp packet payload = 92 bytes for incoming ping 64 byte)
  70. #nft add rule ip filter INPUT icmp type echo-request meta length 93-65535 counter drop
  71. #nft add rule ip filter INPUT ip protocol icmp counter accept
  72.  
  73. #rate limit icmp packets 10 per minute
  74. #nft add rule ip filter INPUT ip protocol icmp limit rate 10/minute burst 5 packets counter accept
  75.  
  76. #rate limit icmp packets 10 per second
  77. #nft add rule ip filter INPUT ip protocol icmp limit rate 10/second burst 5 packets counter accept
  78.  
  79. #---------------------------------------------------------------------------------------
  80. #testing
  81.  
  82. # Allow outgoing from my custom Docker network
  83. #nft add rule ip filter INPUT iifname $DOCKER_IF accept
  84.  
  85. #---------------------------------------------------------------------------------------
  86. #EXIT RULE
  87. # block all other traffic
  88. nft add rule ip filter INPUT counter drop
  89. #------------------------------INPUT--END-----------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement