Guest User

Untitled

a guest
Jan 29th, 2024
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.34 KB | Source Code | 0 0
  1. #!/bin/bash
  2.  
  3. IPT="/usr/sbin/iptables"
  4.  
  5. # Внешний интерфейс
  6. WAN=ens18
  7. WAN_IP=10.20.1.36
  8.  
  9. # Локальная сеть
  10. LAN1=ens19
  11. LAN1_IP_RANGE=192.168.1.0/24
  12.  
  13. # Очищаем правила
  14. $IPT -F
  15. $IPT -F -t nat
  16. $IPT -F -t mangle
  17. $IPT -X
  18. $IPT -t nat -X
  19. $IPT -t mangle -X
  20.  
  21. # Отбрасываем неопознанные пакеты
  22. $IPT -A INPUT -m state --state INVALID -j DROP
  23. $IPT -A FORWARD -m state --state INVALID -j DROP
  24.  
  25. # Отбрасываем нулевые пакеты
  26. $IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  27.  
  28. # Блокируем доступ с указанных адресов
  29. $IPT -A INPUT -s 84.122.21.197 -j REJECT
  30.  
  31. # разрешаем установленные подключения
  32. $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  33. $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  34. $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
  35.  
  36. # Разрешаем localhost и локалку
  37. $IPT -A INPUT -i lo -j ACCEPT
  38. $IPT -A INPUT -i $LAN1 -j ACCEPT
  39. $IPT -A OUTPUT -o lo -j ACCEPT
  40. $IPT -A OUTPUT -o $LAN1 -j ACCEPT
  41.  
  42. # Рзрешаем пинги
  43. $IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
  44. $IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
  45. $IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
  46. $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  47.  
  48. # Разрешаем исходящие соединения сервера
  49. $IPT -A OUTPUT -o $WAN -j ACCEPT
  50.  
  51. # Пробрасываем порт в локалку
  52. $IPT -t nat -A PREROUTING -p tcp --dport 23543 -i ${WAN} -j DNAT --to 192.168.1.10:3389
  53. $IPT -A FORWARD -i $WAN -d 192.168.1.10 -p tcp -m tcp --dport 3389 -j ACCEPT
  54.  
  55. # Разрешаем доступ из локалки в интернет
  56. $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
  57. # Закрываем доступ снаружи в локалку
  58. $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
  59.  
  60. # Включаем NAT
  61. $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE
  62.  
  63. # открываем доступ к SSH
  64. $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
  65.  
  66. # Открываем доступ к почтовому серверу
  67. $IPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
  68. $IPT -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
  69. $IPT -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
  70. $IPT -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
  71. $IPT -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
  72. $IPT -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
  73.  
  74. #Открываем доступ к web серверу
  75. $IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  76. $IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
  77.  
  78. # Запрещаем всё, что не разрешено
  79. $IPT -P INPUT DROP
  80. $IPT -P OUTPUT DROP
  81. $IPT -P FORWARD DROP
  82.  
  83. # Включаем логирование
  84. #$IPT -N block_in
  85. #$IPT -N block_out
  86. #$IPT -N block_fw
  87. #$IPT -A INPUT -j block_in
  88. #$IPT -A OUTPUT -j block_out
  89. #$IPT -A FORWARD -j block_fw
  90. #$IPT -A block_in -j LOG --log-level info --log-prefix "-IN-BLOCK-"
  91. #$IPT -A block_in -j DROP
  92. #$IPT -A block_out -j LOG --log-level info --log-prefix "-OUT-BLOCK-"
  93. #$IPT -A block_out -j DROP
  94. #$IPT -A block_fw -j LOG --log-level info --log-prefix "-FW-BLOCK-"
  95. #$IPT -A block_fw -j DROP
  96.  
  97. # Сохраняем правила
  98. /sbin/iptables-save  > /etc/iptables.rules
Tags: iptables
Advertisement
Add Comment
Please, Sign In to add comment