Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. root@debian:~# cat /etc/network/if-up.d/firewall
  2. #! /bin/sh
  3. #
  4. #######################
  5. # Настройка интерфейсов
  6. #######################
  7.  
  8. # Internet (Поменяйте на ваш интернет-интерфейс)
  9. Inet_Interface="eth0"
  10.  
  11. # Lan (поменяйте на ваш интерфейс сетевого моста)
  12. Lan_Interface="br0"
  13.  
  14. # Lo (локальный интефейс - петля)
  15. Lo_Interface="lo"
  16.  
  17. # Описываем путь до iptables
  18. IPT="/sbin/iptables"
  19.  
  20. # Очищаем текущие правила (если вдруг есть какие-то правила)
  21.  
  22. $IPT -F
  23. $IPT -t nat -F
  24. $IPT -t mangle -F
  25.  
  26. $IPT -X
  27. $IPT -t nat -X
  28. $IPT -t mangle -X
  29.  
  30. # Задаем политики по умолчанию
  31.  
  32. $IPT -P INPUT DROP
  33. $IPT -P FORWARD DROP
  34. $IPT -P OUTPUT DROP
  35.  
  36. # Создаем цепочку для обработки неправильных пакетов.
  37. # bad_packets
  38.  
  39. $IPT -N bad_packets
  40.  
  41. $IPT -A bad_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
  42. -m state --state NEW -j REJECT --reject-with tcp-reset
  43. $IPT -A bad_packets -p tcp ! --syn -m state --state NEW \
  44. -j LOG --log-prefix "New not syn:"
  45. $IPT -A bad_packets -p tcp ! --syn -m state --state NEW -j DROP
  46.  
  47. # Создаем цепочку для обработки входящих (из интернета) tcp соединений.
  48. # tcp_p
  49. $IPT -N tcp_p
  50.  
  51. # Чтобы, например, разрешить подключаться к нашему шлюзу из интернета по ssh:
  52. ##ssh="22"
  53. ##ssh_ip_allowed="0/0"
  54. ##$IPT -A tcp_p -p tcp -s $ssh_ip_allowed --dport $ssh -j ACCEPT
  55.  
  56. $IPT -A tcp_p -p tcp -s 0/0 -j DROP
  57.  
  58. # Создаем цепочку для обработки входящих (из интернета) udp соединений.
  59. # udp_p
  60. $IPT -N udp_p
  61.  
  62. $IPT -A udp_p -p udp -s 0/0 -j DROP
  63.  
  64. # Создаем цепочку для обработки входящих (из интернета) icmp соединений.
  65. # icmp_p
  66. $IPT -N icmp_p
  67.  
  68. # Разрешаем "пинговать" наш шлюз из интернета:
  69.  
  70. $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
  71. $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 11 -j ACCEPT
  72.  
  73. $IPT -A icmp_p -p icmp -s 0/0 -j DROP
  74.  
  75. # Цепочка INPUT
  76.  
  77. $IPT -A INPUT -p tcp -j bad_packets
  78.  
  79. $IPT -A INPUT -p all -i $Lan_Interface -j ACCEPT
  80. $IPT -A INPUT -p all -i $Lo_Interface -j ACCEPT
  81.  
  82. $IPT -A INPUT -p all -i $Inet_Interface -m state --state \
  83. ESTABLISHED,RELATED -j ACCEPT
  84. $IPT -A INPUT -p tcp -i $Inet_Interface -j tcp_p
  85. $IPT -A INPUT -p udp -i $Inet_Interface -j udp_p
  86. $IPT -A INPUT -p icmp -i $Inet_Interface -j icmp_p
  87.  
  88. # Цепочка FORWARD
  89.  
  90. $IPT -A FORWARD -p tcp -j bad_packets
  91.  
  92. $IPT -A FORWARD -p all -i $Lan_Interface -j ACCEPT
  93. $IPT -A FORWARD -p all -i $Lo_Interface -j ACCEPT
  94. $IPT -A FORWARD -p all -i $Inet_Interface -m state \
  95. --state ESTABLISHED,RELATED -j ACCEPT
  96.  
  97. # Цепочка OUTPUT
  98.  
  99. $IPT -A OUTPUT -p tcp -j bad_packets
  100.  
  101. $IPT -A OUTPUT -p all -o $Inet_Interface -j ACCEPT
  102. $IPT -A OUTPUT -p all -o $Lan_Interface -j ACCEPT
  103. $IPT -A OUTPUT -p all -o $Lo_Interface -j ACCEPT
  104.  
  105. # Цепочка POSTROUTING (таблица nat)
  106.  
  107. $IPT -t nat -A POSTROUTING -o $Inet_Interface -j MASQUERADE
  108.  
  109. # Включаем перенаправление ipv4.
  110.  
  111. echo "1" > /proc/sys/net/ipv4/ip_forward
  112.  
  113. echo "Firewall started"
  114.  
  115. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement