LinuxForum.Fans
Тема

прошу помощи со скриптом iptables для шлюза

Автор: Me_Shock 182 сообщений 27881 просмотров
#309036

Здравствуйте) есть шлюз с белым ip.
1. Хочу)) все-все закрыть и пускать на шлюз только 2 хоста (и внутрь всякие винды по RDP форвардингом)
2. Выпускать всех только по разрешенному списку портов.

и Да, у меня ничего не работает (не могу войти через putty с ip: 192.168.0.65 на 192.168.0.254:22)

вот что я чудо наделал: root@gw5:~# cat /root/iptables.test.rules

Показать
text

#!/bin/bash
# ******************************************************** Define variables
#
# list of allowed hosts
IMEX="80.247.XX.XXX"            # allowed_machine1 (white_provider_IP)
AVANTEL="109.202.X.XXX"         # allowed_machine2 (white_provider_IP)
DEBUG="192.168.0.65"
# FG="79.122.XXX.XX"            # this_machine_white_provider_IP(WAN)
FG="192.168.0.254" #debug
#
EXT_PORTS="22,3333,3335,3336,5555,6666,8080,9998"                               # accesible WAN port
INT_PORTS="25,53,80,110,143,443,445,1024,2041,2042,5060,5190,11024"             # accessible LAN ports
T_PORT="3389"                   # target port for terminals RDP
#
IPT="/sbin/iptables"            # iptables location
EXT_IF="eth0"                   # external WAN interface
INT_IF="eth1"                   # internal LAN interface
# ******************************************************* End v. defenition
#
echo "\n\tIPTABLES MODIFICATION STARTED\n"
# flashing all rules (twice and separate - to be sure)
$IPT -F && $IPT -t mangle -F && $IPT -t nat -F && $IPT -t filter -F && $IPT -F && echo " - all rules was flushed"
#
# Allow loopback traffic
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT && echo " - local traffic allowed"
#
# Allow packets of established and  related connections
$IPT -A INPUT -i $EXT_IF -p all -m state --state ESTABLISHED,RELATED -j ACCEPT  # WAN
$IPT -A INPUT -i $INT_IF -p all -m state --state ESTABLISHED,RELATED -j ACCEPT  # LAN
echo " - inside initialized connections allowed"
#
# allow Internet access to DEFINED PORTS on external(WAN)interface for DIFENED hosts
$IPT -A INPUT -i $EXT_IF -p tcp -s $IMEX,$AVANTEL,$DEBUG -m multiport --dport $EXT_PORTS -j ACCEPT && echo " - hosts "$IMEX" and "$AVANTEL" added to TRUSTED"
#
# allow NAT (WAN > - - -GATEWAY- - - > LAN) RDP protocol
$IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3333 -j DNAT --to-destination  192.168.1.250:$T_PORT    # RTS
$IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3335 -j DNAT --to-destination  192.168.1.4:$T_PORT      # MAV
$IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3336 -j DNAT --to-destination  192.168.1.2:$T_PORT      # RDC1
$IPT -t nat -A PREROUTING -p tcp -d $FG --dport 5555 -j DNAT --to-destination  192.168.1.232:$T_PORT    # buh-sh
echo " - RDP NAT activated"
#
# Set default policy to DROP ALL
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP && echo " - polycy drop ALL(exclude upper rules) aplied"
#
# port forwarding ()
echo "\n\tIPTABLES MODIFICATION COMPLETED\n"
#

ЗЫ: не поможете, так хоть поржете )) :D

#309081

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


А разрешающие правила только для ветки INPUT.

#309095
text

#!/bin/bash
# ******************************************************** Define variables
#
IMEX="80.247.XX.XXX"            # allowed_machine1 (white_provider_IP)
AVANTEL="109.202.X.XXX"         # allowed_machine2 (white_provider_IP)
DEBUG="192.168.0.65"
FG="192.168.0.254" #debug
#
EXT_PORTS="22,3333,3335,3336,5555,6666,8080,9998"                               # accesible WAN port
INT_PORTS="25,53,80,110,143,443,445,1024,2041,2042,5060,5190,11024"             # accessible LAN ports
T_PORT="3389"                   # target port for terminals RDP
#
IPT="/sbin/iptables"            # iptables location
EXT_IF="eth0"                   # external WAN interface
INT_IF="eth1"                   # internal LAN interface
# ******************************************************* End v. defenition
#
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

$IPT -t mangle -F $IPT -t nat -F $IPT -t filter -F $IPT -F

$IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT

# Allow packets of established and related connections $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # WAN $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # LAN

$IPT -A INPUT -i $INT_IF -p all -s $YOUR_NETWORK -j ACCEPT

$IPT -A INPUT -i $EXT_IF -p tcp -s $IMEX,$AVANTEL,$DEBUG -m multiport --dport $EXT_PORTS -j ACCEPT

$IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3333 -j DNAT --to-destination 192.168.1.250:$T_PORT # RTS $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3335 -j DNAT --to-destination 192.168.1.4:$T_PORT # MAV $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3336 -j DNAT --to-destination 192.168.1.2:$T_PORT # RDC1 $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 5555 -j DNAT --to-destination 192.168.1.232:$T_PORT # buh-sh

Вот так лучче выглядит. Ну и я добавил правило которое даёт доступ для всей вашей локальной сети к серваку. Такое же нужно и на OUTPUT.

#309120

"marikk⇓" написал:
А разрешающие правила только для ветки INPUT.
спасибо, добавлю OUTPUT и FORWARD. :)
#309122

"kisil⇓" написал:
Такое же  нужно и на OUTPUT.
Вот так?
text

MY_NW1="192.168.1.0/24"
#
$IPT -A INPUT -i $INT_IF -p $INT_PORTS -s $MY_NW1 -j ACCEPT
$IPT -A OUTPUT  -i $INT_IF -p $INT_PORTS -s $MY_NW1 -j ACCEPT
#309123

Можете для начала поставить политику OUTPUT в ACCEPT. Для быстроты настройки. Видь если трафик попал к вам на сервак, то пускай и уходит куда надо. А INPUT настройте по всей строгости админских законов. ]:-> Так будет попроще. Если всё закрутитса как надо потом и OUTPUT поправите.

#309126

Не

text
-p $INT_PORTS

а

text
-m multiport --destination-port $INT_PORTS
#309127

"kisil⇓" написал:
Можете для начала поставить политику OUTPUT в ACCEPT.
Да, наверное..)) По-хорошему бы в $MY_NW1 все завотачивать на http_port 192.168.1.1:3128, в $MY_NW2 - http_port 192.168.2.1:3128 )) (Сквид не прозрачный)

И похоже это нормально что после $IPT -F все маршруты пропадают.(( Вост. только ребутом..
#309128

kisil, а ну да!)))

text

MY_NW1="192.168.1.0/24"
#
$IPT -A INPUT -i $INT_IF -m multiport --dport $INT_PORTS -s $MY_NW1 -j ACCEPT
$IPT -A OUTPUT  -i $INT_IF -m multiport --dport $INT_PORTS -s $MY_NW1 -j ACCEPT
#309147

Так что то до конца не понятно. Так нужно пускать тока на squid'а или ещё на какието то порты. Опишыте нормально задание!

#309159

"kisil⇓" написал:
Опишыте нормально задание!
На "Ты" pls.) Мое ТЗ звучало так:

Общие фичи:
1. На шлюзе должен считаться весь http трафик кроме почты" (т.к. сквид это не умеет - иные протоколы smtp / pop3)
2. Все что прокси может посчитать - завернуть принудительно, либо с пом. прозрачного проксирования - отпадает т.к. https:443 в режиме "intercept" не заведешь)
Как я понимаю, если принудительно не заворачивать на 3128 - юзеры ЛС поломятся напрямую и потратят неучтенный траф, если порты не прикрыть.. Тут у меня и вышл(о/а) заморока недопонимание концепции прокси-сервера..
Теперь не пойму как лучше сделать..
3. Определенные "ViP ip" пускать ALL через NAT.
#309161

Так тебе нужно считать весь трафик кроме почты????И выстявлять лимиты или тока считать???
Ну для считалки Ulog, netams.
Но щас проблема в том что кто то не может попасть на сервак?? Верно?
Так что щас не работает?

#309167

"kisil⇓" написал:
Так тебе нужно считать весь трафик кроме почты????
Весь какой возможно с пом. Сквида (исключая почту - она NAT)
"kisil⇓" написал:
И выстявлять лимиты или тока считать???
Биллинг и нарезка квот squid3 + sams2 + squidguard (связка слажена, отлажена и работает с авторизацией по IP)
"kisil⇓" написал:
Но щас проблема в том что кто то не может попасть на сервак?? Верно?
Нет - я бы уже тогда не жил)) В данный момент хилая железка с 1м винтом под управлением MS 2003 server + usergate - оно медлено начинает сдавать свои позиции, отказы участились.. DS: replace to nix на мощной железке с mdraid! в скрипте как раз DEBUG="192.168.0.65" временная мера текущего WAN, в последствии переезд и поменяю на "настоящий".
#309169

в том и трабл - замена в рабочей сети "на горячую" винды на никсы.. уже 2 мес. меняю, а еще почтовый релей поднимать (эт я умею)

#309171
Enzo_brn написал:
в том и трабл - замена в рабочей сети "на горячую" винды на никсы.. уже 2 мес. меняю, а еще почтовый релей поднимать (эт я умею)

Это понятно.
А что щас не работает???
Конкретно.

#309174

Допилил до такого вида:

Показать
text
#!/bin/bash
# ******************************************************** Define variables
#
IMEX="80.247.XX.XXX"            # allowed_machine1 (white_provider1_IP)
AVANTEL="109.202.X.XXX"         # allowed_machine2 (white_provider2_IP)
#
DEBUG="192.168.0.65"            # Client_PC_betta_tester
#
MY_NW1="192.168.1.0/24"            # My NetWork1 on eth1 (add 2nd in future)
FG="192.168.0.254"                 #debug (replace with WHITE_ip_of_company_F.XX.Group in future)
D_GW="192.168.0.210"            # default gateway (edit in future)
#
#
EXT_PORTS="22,3333,3335,3336,5555,6666,8080,9998"                     # accesible WAN port
INT_PORTS="25,53,80,110,143,443,445,1024,2041,2042,5060,5190,11024" # accessible LAN ports
#
T_PORT="3389"                   # target Terminals RDP
P_PORT="3128"                    # target Proxy squid3
#
IPT="/sbin/iptables"            # iptables location
#
EXT_IF="eth0"                   # external WAN interface
INT_IF="eth1"                   # internal LAN interface
# ******************************************************* End v. defenition
#
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP                # DROP ALL
$IPT -P FORWARD DROP

$IPT -t mangle -F $IPT -t nat -F # CLEAR ALL $IPT -t filter -F $IPT -F

$IPT -A INPUT -i lo -j ACCEPT # ALLOW LOOPBACK TRAFFIC $IPT -A OUTPUT -o lo -j ACCEPT

# Allow packets of established and related connections $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # WAN $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # LAN

# Allow IN/OUT connections on trusted ports in LAN $IPT -A INPUT -i $INT_IF -m multiport --dport $INT_PORTS -s $MY_NW1 -j ACCEPT $IPT -A OUTPUT -i $INT_IF -m multiport --dport $INT_PORTS -s $MY_NW1 -j ACCEPT

# Allow remote access fot trusted IP's $IPT -A INPUT -i $EXT_IF -p tcp -s $IMEX,$AVANTEL,$DEBUG -m multiport --dport $EXT_PORTS -j ACCEPT # DEBUG (temp var)

# RDP port map $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3333 -j DNAT --to-destination 192.168.1.250:$T_PORT # RTS $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3335 -j DNAT --to-destination 192.168.1.4:$T_PORT # MAV $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 3336 -j DNAT --to-destination 192.168.1.2:$T_PORT # RDC1 $IPT -t nat -A PREROUTING -p tcp -d $FG --dport 5555 -j DNAT --to-destination 192.168.1.232:$T_PORT # buh-sh

# FLUSHED ROUTE RECOVERY NEEDED HERE !!!!!!!!!!!!!!! # ip r a default gw $D_GW service networking stop && service networking start

"kisil⇓" написал:
Конкретно.
Щас не поднимаются маршруты. т.е. вывод route или ip r - пустая строка. После перезагрузки прописываются, а рестарт сети не помогал..
Нужно запилить в скрипт поднятие маршрутизации с пом. добавления дефолтного шлюза видимо.. $D_GW
#309177

Как нету стандартных маршрутов? o_O
После назначения интерфейсу айпи в статической таблице маршрутизацыи должны прописыватса маршруты на целую сеть. Тока дефолтный нужно добавлять ну и уже какието экзотические, когда нужно разрулить сложную топологию сети.
А

text
netstat -r

что говорит?

#309179

Enzo_brn, кстати ответ получил на пошту от меня?

#309183

Маршруты были, потом iptables -F и их нестало.. reboot и наместе!)

"kisil⇓" написал:
А
netstat -r
что говорит?
говорит: wait Monday - go work ((
2. нет ответа не получал
#309190

Послал ЛС.
Как такое правило как

text
iptables -F

может очистить таблицу маршрутизацыи.???
Я только что такое проделал у себя и у меня тока скинулись правила из цепочек. Причём тут iptables.
Мистика.

Войдите или зарегистрируйтесь, чтобы ответить.