Guest User

Untitled

a guest
Aug 22nd, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #######################################################################################################
  4. ### Переменные окружения
  5. #######################################################################################################
  6.  
  7. IPT="/sbin/iptables"
  8.  
  9. WAN1_IF="eth0" # внешний интерфейс
  10. WAN1_IP="server1" # внешний IP адрес
  11.  
  12. VPS_LAN="10.0.0.0/8" # внутренняя сеть VPS
  13.  
  14. LO_IF="lo" # loopback-интерфейс
  15. LO_IP="127.0.0.1" # loopback-адрес
  16. LOOPBACK="127.0.0.0/8" # loopback-петля
  17.  
  18. POLICY="ACCEPT" # политика по умолчанию (ACCEPT/DROP)
  19.  
  20. #######################################################################################################
  21. ### Сброс правил
  22. #######################################################################################################
  23.  
  24. $IPT -F
  25. $IPT -X
  26. $IPT -t nat -F
  27. $IPT -t mangle -F
  28.  
  29. $IPT -P INPUT $POLICY
  30. $IPT -P FORWARD $POLICY
  31. $IPT -P OUTPUT $POLICY
  32.  
  33. modprobe ip_conntrack ip_conntrack_enable_ve0=1
  34. modprobe ip_conntrack_ftp
  35.  
  36. #######################################################################################################
  37. ### Переброс портов в VPS
  38. #######################################################################################################
  39.  
  40. ## VPS main (DNS)
  41. $IPT -t nat -A PREROUTING -p tcp -d $WAN1_IP --dport 53 -i $WAN1_IF -j DNAT --to-destination 10.0.0.10:53
  42. $IPT -t nat -A PREROUTING -p udp -d $WAN1_IP --dport 53 -i $WAN1_IF -j DNAT --to-destination 10.0.0.10:53
  43.  
  44.  
  45. #######################################################################################################
  46. ### Правила фильтрации
  47. #######################################################################################################
  48.  
  49. ## Правила для входящего трафика c VPS
  50. $IPT -N vps-in
  51. $IPT -F vps-in
  52. # можно всё :)
  53. $IPT -A vps-in -j ACCEPT
  54.  
  55. ## Входящие icmp запросы (пинг etc)
  56. $IPT -N icmp-in
  57. $IPT -F icmp-in
  58.  
  59. $IPT -A icmp-in -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
  60. $IPT -A icmp-in -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
  61. $IPT -A icmp-in -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
  62.  
  63. ## Исходящие icmp запросы (пинг etc)
  64. $IPT -N icmp-out
  65. $IPT -F icmp-out
  66.  
  67. ## Разрешаем icmp-reply в ответ на icmp-request'ы
  68. $IPT -A icmp-out -p icmp --icmp-type 8 -j ACCEPT
  69. $IPT -A icmp-out -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
  70. $IPT -A icmp-out -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
  71.  
  72.  
  73. ## Разрешает пакеты с уже установленный соединений
  74. $IPT -N statefull
  75. $IPT -F statefull
  76.  
  77. $IPT -A statefull -m state --state ESTABLISHED,RELATED -j ACCEPT
  78.  
  79. ## Веб траффик
  80. $IPT -N http-in
  81. $IPT -F http-in
  82.  
  83.  
  84. ## Почтовый траффик (smtp)
  85. $IPT -N smtp-in
  86. $IPT -F smtp-in
  87.  
  88.  
  89. #######################################################################################################
  90. ### Применение правил фильтрации
  91. #######################################################################################################
  92.  
  93. ## Задание правил для входящего траффика
  94. $IPT -A INPUT -s $VPS_LAN -j vps-in
  95. $IPT -A INPUT -p icmp -j icmp-in
  96. # Переправляем входящие на петлю, при его включении заметно улучшение отклика при ssh-авторизации
  97. # (хотя это сомнительно)
  98. $IPT -A INPUT -i $LO_IF -d $LOOPBACK -j ACCEPT
  99. $IPT -A INPUT -j statefull
  100.  
  101. ## Задание правил для сквазного траффика в VPS
  102. $IPT -A FORWARD -i $WAN1_IF -p tcp --dport 80 -j http-in
  103. $IPT -A FORWARD -i $WAN1_IF -p tcp --dport 25 -j smtp-in
  104. $IPT -A FORWARD -s $VPS_LAN -j ACCEPT
  105. $IPT -A FORWARD -j statefull
  106. #$IPT -t nat -A POSTROUTING -o $WAN1_IF -j MASQUERADE
  107. $IPT -t nat -A POSTROUTING -s $VPS_LAN -o $WAN1_IF -j SNAT --to $WAN1_IP
  108.  
  109. ## Задание правил для исходящего траффика
  110. $IPT -A OUTPUT -s $VPS_LAN -j ACCEPT
  111. $IPT -A OUTPUT -p icmp -j icmp-out
  112. $IPT -A OUTPUT -o $LO_IF -j ACCEPT
  113. $IPT -A OUTPUT -o $WAN1_IF -j ACCEPT
  114. $IPT -A OUTPUT -j statefull
  115.  
  116. ## ipsec
  117. $IPT -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
  118. $IPT -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT
  119. $IPT -A INPUT -i eth0 -p 50 -j ACCEPT
  120. $IPT -A INPUT -i eth0 -p 51 -j ACCEPT
Advertisement
Add Comment
Please, Sign In to add comment