##Modem заходим удалено на сервак через обычный модем, а также ходим в инет через рабочий шлюз по средством обычного модема
iptables -A INPUT -p ALL -i ppp0 -j ACCEPT #razreshaem podcluchenie po ppp0
iptables -A FORWARD -s 192.168.0.10 #dlya dostupa po PPP
##USERS
iptables -t nat -A POSTROUTING -s 192.168.100.100 -o $INET_IFACE -j SNAT --to-source $INET_IP #ADMIN
iptables -t nat -A POSTROUTING -s 192.168.100.101 -o $INET_IFACE -j SNAT --to-source $INET_IP #User1
iptables -t nat -A POSTROUTING -s 192.168.100.102 -o $INET_IFACE -j SNAT --to-source $INET_IP #User2
iptables -t nat -A POSTROUTING -s 192.168.100.103 -o $INET_IFACE -j SNAT --to-source $INET_IP #User3
#
#
iptables -A INPUT -s zz.zz.zz.zz -j ACCEPT # админим удаленно сервак из дома например
iptables -A INPUT -s localhost -j ACCEPT
#Открываем доступ для всей локалки на определеные порты
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 3128 -j ACCEPT # squid
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 25 -j ACCEPT # smtp
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT # http
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 110 -j ACCEPT # pop3
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 445 -j ACCEPT # samba
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 443 -j ACCEPT # https
iptables -A INPUT -s 192.168.100.100 -j ACCEPT # Админ ходит на все порты
iptables -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128 # Заворачиваем обращения всех пользователей через прокси
#
iptables -t nat -A POSTROUTING -s 192.168.0.10 -j MASQUERADE # dlya dostupa po PPP
iptables -A INPUT -p icmp -j ACCEPT #Razreshay pingi iz vne
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #podderzhivaem vse sozdannye podclycheniya
iptables -P INPUT DROP # zaprechaem vse
Проблема заключается вот в чем, если я например комментирую скажем правило :
#iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 445 -j ACCEPT # samba
То люди не могут пользоваться самбовой шарой, все зер гуд, а как я только коментирую доступ на 80 порт
Закоментировал и все, нету доступа в инет через 80-й порт
Т.к. это у меня не работает, то пришлось ставить squid чтобы ограничить доступ. Сквид мне сейчас, не нужен.
Подскажите, если знаете что мне поменять в моем конфиге, чтобы ограничить 80-й порт только iptables, честно уже закипаю, никак немогу понять.
Буду очень признателен.
Тогда вам надо где-то в начале конфига добавить вот такую строку. И не будет у всех 80-го порта в инете =)
text
iptables -A PREROUTING -p tcp -s $LAN_IP_RANGE --dport 80 -j DROP
А когда понадобится этот порт, то можно закомментировать эту строчку.
З.Ы. Цепочка INPUT отвечает за обращения к серверу. С ее помощью инет вы регулировать не сможете.
А вообще лучше напишите что у вас есть на сервере и как вы хотите и куда ограничивать доступ. Я попробую написать вам новый скрипт.
Тогда вам надо где-то в начале конфига добавить вот такую строку. И не будет у всех 80-го порта в инете =)
text
iptables -A PREROUTING -p tcp -s $LAN_IP_RANGE --dport 80 -j DROP
А когда понадобится этот порт, то можно закомментировать эту строчку.
З.Ы. Цепочка INPUT отвечает за обращения к серверу. С ее помощью инет вы регулировать не сможете.
А вообще лучше напишите что у вас есть на сервере и как вы хотите и куда ограничивать доступ. Я попробую написать вам новый скрипт.
Спасибо за помощь elve
На сервере у меня вот что стоит:
1) SAMBA шара
2) FTP сервер
3) Почтовый сервер
4) OpenVPN сервер
5) Ну и раздача инета народу
6) PPP сервер подключаюсь через модем из дома при необходимсти
Что я хочу:
1) ограничить доступ в инет для локалки например
Для ip-шника 192.168.100.14 открыты порты в мир 80,25,3128,110,1394,21
Для ip-шника 192.168.100.15 открыты порты в мир 80 все только web
Для ip-шника 192.168.100.16 открыты порты все без ограничения и в обход прокси например
Кто не указан в списке разре-х ip адресов банится само собой.
2)Админить шлюз и выходить в нет при подключении по обычному модему стоит ppp сервер у меня
3)Чтобы был прозрачный прокси т.е. все обращения на 80-й порт перенаправлялись на squid
4) Ходить из дома например на рабочий сервак и админить удалено при необходимости (доступ только на мой внешний ip по все портам)
5) Открыть 25 всему миру для почтового сервака
Сейчас у меня такой:
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
iptables -F
iptables -t nat -F
#echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
## opisyvayu interfeis na storone provaidera
INET_IP="XXX.XXX.XXX.XXX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## opisyvayu interfeis na storone localnoi seti
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"
Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.
text
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
## Сеть провайдера
INET_IP="XXX.XXX.XXX.XXX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## Локальная сеть
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"
# Очищаем цепочки от того что там есть
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
# Выставляем политики по умолчанию (если не разрешено, то запрещено)
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
## Создаем цепочки с наборами правил
# Доступ из локалки
$ipt -N localnetwork
$ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp
$ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail
$ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba
$ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba
# Доступ снаружи
$ipt -N inside
# открываем доступ с домашнего ип
$ipt -A inside -s домашний_ип -j ACCEPT
# открыли всем 25-й порт
$ipt -A inside -p tcp --dport 25 -j ACCEPT
## INPUT
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться
# направляем в цепочку локальной сети
$ipt -A INPUT -i $LAN_IFACE -j localnetwork
# направляем в цепочку инетовского интерфейса
$ipt -A INPUT -i $INET_IFACE -j inside
З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.
Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.
text
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
## Сеть провайдера
INET_IP="XXX.XXX.XXX.XXX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## Локальная сеть
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"
# Очищаем цепочки от того что там есть
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
# Выставляем политики по умолчанию (если не разрешено, то запрещено)
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
## Создаем цепочки с наборами правил
# Доступ из локалки
$ipt -N localnetwork
$ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp
$ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail
$ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba
$ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba
# Доступ снаружи
$ipt -N inside
# открываем доступ с домашнего ип
$ipt -A inside -s домашний_ип -j ACCEPT
# открыли всем 25-й порт
$ipt -A inside -p tcp --dport 25 -j ACCEPT
## INPUT
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться
# направляем в цепочку локальной сети
$ipt -A INPUT -i $LAN_IFACE -j localnetwork
# направляем в цепочку инетовского интерфейса
$ipt -A INPUT -i $INET_IFACE -j inside
З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.
Спасибо буду в конце недели на работе, попробую :)
По результатам отпишусь.
Всем привет, создавал тему раньше но так и не смог добиться результат, кто-нить сможет помочь объяснить в чем я ошибся. Пытаюсь абсолютно всем дать прямой доступ к некоторым серверам в инете, всё остальное для сети 192,168,0,128/25 пустить через сквид, после запуска конфига получается что те кто напрямую спокойно работают, а кого заворачиваю в сквид вообще ничо не работает
да вроде всё нормально, одна проблема, фиг с ним со сквидом, я не могу дать прямой доступ до серверов:
iptables -A FORWARD -s 192.168.0.0/24 -d 79.170.111.11/32 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 217.11.1.50/32 -j ACCEPT
Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.
text
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
## Сеть провайдера
INET_IP="XXX.XXX.XXX.XXX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## Локальная сеть
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"
# Очищаем цепочки от того что там есть
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
# Выставляем политики по умолчанию (если не разрешено, то запрещено)
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
## Создаем цепочки с наборами правил
# Доступ из локалки
$ipt -N localnetwork
$ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp
$ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail
$ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba
$ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba
# Доступ снаружи
$ipt -N inside
# открываем доступ с домашнего ип
$ipt -A inside -s домашний_ип -j ACCEPT
# открыли всем 25-й порт
$ipt -A inside -p tcp --dport 25 -j ACCEPT
## INPUT
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться
# направляем в цепочку локальной сети
$ipt -A INPUT -i $LAN_IFACE -j localnetwork
# направляем в цепочку инетовского интерфейса
$ipt -A INPUT -i $INET_IFACE -j inside
З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.
Опробывал, я ваш конфиг :(
text
#!/bin/sh
## Сеть провайдера
INET_IP="XX.XX.XX.XX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## Локальная сеть
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"
# Очищаем цепочки от того что там есть
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
# Выставляем политики по умолчанию (если не разрешено, то запрещено)
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
## Создаем цепочки с наборами правил
# Доступ из локалки
$ipt -N localnetwork
$ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp
$ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail
$ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba
$ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba
# Доступ снаружи
$ipt -N inside
# открываем доступ с домашнего ип
$ipt -A inside -s ZZ.ZZ.ZZ.ZZ -j ACCEPT
# открыли всем 25-й порт
$ipt -A inside -p tcp --dport 25 -j ACCEPT
## INPUT
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться
# направляем в цепочку локальной сети
$ipt -A INPUT -i $LAN_IFACE -j localnetwork
# направляем в цепочку инетовского интерфейса
$ipt -A INPUT -i $INET_IFACE -j inside
## FORWARD
# Пускаем пользователей в инет
$ipt -t nat -A POSTROUTING -s 192.168.100.16 -j MASQUERADE
Вывод команды Iptables -L
text
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTAB LISHED
ACCEPT icmp -- anywhere anywhere
localnetwork all -- anywhere anywhere
inside all -- anywhere anywhere