nlo 0 Posted 2012-05-17 07:34:59 Author Share Posted 2012-05-17 07:34:59 Что именно не работает ? Не блокирует доступ на внешние ип заданные в правилах всем пользователям кроме админов Нужно заблокировать полный доступ с сети всем пользователям кроме админов на конкретные ип вышестоящего провайдера Link to post Share on other sites
DarkSpider 36 Posted 2012-05-17 08:29:52 Share Posted 2012-05-17 08:29:52 Написали б в аську, чтоли ... Link to post Share on other sites
nlo 0 Posted 2012-05-19 18:17:52 Author Share Posted 2012-05-19 18:17:52 Вот мучился мучился но всё таки осилил Выкладываю скрипт запуска /etc/init.d/bil #! /bin/sh # /etc/init.d/bil ######################################################################## ######################## Конфигурация путей ############################ HTB="/etc/init.d/htb.init" #Путь к шейперу IPTABLES="/sbin/iptables" # Путь до IPTABLES IPSET="/usr/sbin/ipset" # Путь до IPSET WAN_IP="172.16.0.2" #IP адрес внешнего интерфейса LOCAL_IP0="10.0.0.1" #IP адрес локальный подсеть 10 LOCAL_IP1="192.168.10.5" #IP адрес локальный подсеть 192 IF_WORLD="eth1" #Интерфейс смотрящий в грешный мир IF_LOCAL0="eth0" #Интерфейс локалки 10.0.0.0/24 IF_LOCAL1="eth3" #Интерфейс локалки 192.168.10.0/24 SQL="/etc/init.d/mysql" # Путь до init.d скрипта MySQL WEB="/etc/init.d/apache2" # Путь до init.d скрипта Apache2 DHCP="/etc/init.d/dhcp-server" # Путь до init.d скрипта Dhcp3-server BAND="/etc/init.d/bandwidthd" # Путь до init.d скрипта Bandwindthd STAR="/usr/sbin/stargazer" # Путь до bin файла stargazer SOFTD="/etc/init.d/softflowd" # Путь до init.d скрипта Softflowd #Softflowd для разных подсетей SOFT="/usr/sbin/softflowd -i eth0 -n 127.0.0.1:42111" # Тут указываем интерфейс на котором висят юзвери eth0 SOFT="/usr/sbin/softflowd -i eth3 -n 127.0.0.1:42111" # Тут указываем интерфейс на котором висят юзвери eth3 ######################################################################## # Что будет происходить и запускаться при старте: (Конфигурация запуска) ######################################################################## case "$1" in start) echo "###################################################################################" echo "###################################################################################" echo "########################### Запускаем Биллинговую систему #########################" echo "###################################################################################" echo "###################################################################################" #Разрешаем хождение пакетов echo 1 > /proc/sys/net/ipv4/ip_forward $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X $IPTABLES -t mangle -Z $IPTABLES -t mangle -F ## allow loopback $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT #По умолчанию проходящие пакеты в DROP $IPTABLES -P FORWARD DROP # Разрешаем пингам ходить всюду и всегда $IPTABLES -t filter -A INPUT -p icmp -j ACCEPT $IPTABLES -t filter -A FORWARD -p icmp -j ACCEPT $IPTABLES -t filter -A OUTPUT -p icmp -j ACCEPT #Создаём цепочку бана для ненужных ип #Например банить злостных ботов нарушающих спокоствие сервера $IPSET -F Virus $IPSET -X Virus $IPSET -N Virus nethash $IPSET -A Virus 216.163.188.0/24 $IPSET -A Virus 59.37.54.46/31 $IPTABLES -t filter -I INPUT -m set --set Virus src -j DROP # Создаём списки для подсети: (10.0) $IPSET -N FFIN ipmap --network 10.0.0.0/24 $IPSET -N FSNAT ipmap --network 10.0.0.0/24 #$IPSET -N FSNATDROP ipmap --network 10.0.0.0/24 # Создаём списки для подсети: (192.168) $IPSET -N FFINW ipmap --network 192.168.10.0/24 $IPSET -N FSNATW ipmap --network 192.168.10.0/24 #$IPSET -N FSNATDROPW ipmap --network 192.168.10.0/24 #Закрываем порт прокси для неавторизованных и открываем авторизованных и протаскиваем #$IPTABLES -t filter -I INPUT -p tcp -s 192.168.10.0/24 --dport 3128 -j DROP $IPTABLES -t filter -I INPUT -p tcp -s 10.0.0.0/24 --dport 3128 -j DROP #$IPTABLES -t nat -A PREROUTING -m set --set FSNAT -p tcp --dport 80 -j REDIRECT --to-ports 10.0.0.1:3128 #$IPTABLES -t nat -A PREROUTING -m set --set FSNATW -p tcp --dport 80 -j REDIRECT --to-ports 10.0.0.1:3128 # Добавляем наши адреса в NAT таблицу 10.0.0.0/24 $IPTABLES -t filter -I FORWARD -m set --set FFIN src -j ACCEPT $IPTABLES -t filter -I FORWARD -m set --set FFIN dst -j ACCEPT $IPTABLES -t nat -A POSTROUTING -m set --set FSNAT src -o $IF_WORLD -j SNAT --to-source $WAN_IP #$IPTABLES -t nat -A PREROUTING -s 192.168.10.0/24 -p TCP --dport 80 -j DNAT --to 10.0.0.1:82 # Добавляем наши адреса в NAT таблицу 192.168.10.0/24 $IPTABLES -t filter -I FORWARD -m set --set FFINW src -j ACCEPT $IPTABLES -t filter -I FORWARD -m set --set FFINW dst -j ACCEPT $IPTABLES -t nat -A POSTROUTING -m set --set FSNATW src -o $IF_WORLD -j SNAT --to-source $WAN_IP #$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -p TCP --dport 80 -j DNAT --to 10.0.0.1:82 #разрешаем ходить на локальный сайт $IPTABLES -t filter -I INPUT -p tcp --dport 80 -j ACCEPT #Редирект неавторизованных на страничку приветствия и контактов $IPSET -N authorized1 ipmap --network 10.0.0.0/24 $IPSET -N authorized2 ipmap --network 192.168.10.0/24 $IPTABLES -A FORWARD -m set --set authorized1 src,dst -j ACCEPT $IPTABLES -A FORWARD -m set --set authorized2 src,dst -j ACCEPT $IPTABLES -A FORWARD -m set --set authorized1 dst,src -j ACCEPT $IPTABLES -A FORWARD -m set --set authorized2 dst,src -j ACCEPT $IPTABLES -t nat -N park $IPTABLES -t nat -A park -m set --set authorized1 src -j RETURN $IPTABLES -t nat -A park -m set --set authorized2 src -j RETURN $IPTABLES -t nat -A park -d 10.0.0.1/32 -j RETURN $IPTABLES -t nat -A park -p TCP --dport 80 -j DNAT --to 10.0.0.1:82 $IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -j park $IPTABLES -t nat -A PREROUTING -s 192.168.10.0/24 -j park #Перенаправляем всех на внутренний прокси #$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 #$IPTABLES -t nat -A PREROUTING -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 # Создание правил доступа к Авангард (разрешённые IP адреса) $IPSET -N WHITE iptree $IPSET -A WHITE 10.0.0.0 $IPSET -A WHITE 10.128.0.0 #Адреса серверов Авангард страниц: $IPSET -N AVANGARD iptree $IPSET -A AVANGARD 212.48.199.125 $IPSET -A AVANGARD 212.48.192.132 $IPSET -A AVANGARD 193.222.109.119 $IPSET -A AVANGARD 193.222.109.113 $IPSET -A AVANGARD 193.222.109.102 $IPSET -A AVANGARD 78.36.121.68 $IPSET -A AVANGARD 78.36.121.69 # Запрещаем всем , кроме 1 адреса (админа) посейщать Авангард $IPTABLES -t filter -I FORWARD -s ! 10.0.0.0/32 -m set --set AVANGARD dst -j DROP #Закрываем доступ к нужным портам $IPSET -F Vports $IPSET -X Vports $IPSET -N Vports portmap --from 1 --to 65535 $IPTABLES -t filter -I FORWARD -m set --set Vports dst -j DROP #$IPSET -A Vports 135 $IPSET -A Vports 25 #$IPSET -A Vports 139 #$IPSET -A Vports 445 # Запускаем Bandwindthd $BAND start # Запускаем HTB (Шейпер) $HTB start # Запускаем прослушку Softflowd для (10) $SOFT # Запускаем Stargazer $STAR echo "###################################################################################" echo "###################################################################################" echo "#################################### Биллинг запущен ##############################" echo "###################################################################################" echo "###################################################################################" ;; ######################################################################################## ######################################################################################## # Что будет происходить при остановке скрипта: (Конфигурация завершения работы биллинга) ######################################################################################## stop) echo "###################################################################################" echo "###################################################################################" echo "############################# Выключаем систему Биллинга ##########################" echo "###################################################################################" echo "###################################################################################" #Убиваем все процессы старгазера killall stargazer #Удаляем правила шейпера tc qdisc del dev eth1 root #(10) #Останавливаем softflowd $SOFTD stop #Останавливаем Bandwindthd $BAND stop #Останавливаем шейпер HTB $HTB stop # Чистим правила в таблицах Iptables и удаляем списки IPSET #(10) $IPTABLES -F $IPTABLES -F -t nat $IPSET -F FFIN $IPSET -F FFINW $IPSET -F FFINV $IPSET -X FFIN $IPSET -X FFINW $IPSET -X FFINV $IPSET -F FSNAT $IPSET -F FSNATW $IPSET -F FSNATV $IPSET -X FSNAT $IPSET -X FSNATW $IPSET -X FSNATV $IPSET -F FSNATDROP $IPSET -F FSNATDROPW $IPSET -F FSNATDROPV $IPSET -X FSNATDROP $IPSET -X FSNATDROPW $IPSET -X FSNATDROPV #Удаляем учётные записи с конфигурацией шейпера. rm -rf /etc/stargazer/dn/* echo "###################################################################################" echo "###################################################################################" echo "#################################### Биллинг выключен #############################" echo "###################################################################################" echo "###################################################################################" ;; *) echo "Usage: /etc/init.d/billing {start|stop}" exit 1 ;; esac exit 0 А так же скрипты он коннект #!/bin/bash #OnConnect IFUP="eth1" IFDOWN="eth1" ########################### LOGIN=$1 IP=$2 CASH=$3 ID=$4 SPEED=`/etc/stargazer/GetSpeed $LOGIN` UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN` MAC=`/etc/stargazer/GetMac $LOGIN` SCOUNT="Kbit" IPT="/sbin/iptables" IPS="/usr/sbin/ipset" tc="/sbin/tc" arpcmd="/usr/sbin/arp" cur_date=`date +%Y.%m.%d` cur_time=`date +%H:%M:%S` #Разрешаем авторизованным инет #$IPS -D $IP NOINET # DELETE RULEZ ###################################################################### #iptables -A INPUT -i eth3 -p tcp --dport 80 -s $ip -j ACCEPT #iptables -A INPUT -i eth3 -p tcp --dport 3128 -s $ip -j ACCEPT #iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -s $ip -j REDIRECT --to-port 3128 #$IPT -t nat -D PREROUTING --src $IP --dst 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2 #$IPT -t filter -D INPUT -s $IP -j ACCEPT #while [ $? -eq 0 ] #do #$IPT -t filter -D INPUT -s $IP -j ACCEPT #done #$IPT -t filter -D FORWARD -s $IP -j ACCEPT #while [ $? -eq 0 ] #do #$IPT -t filter -D FORWARD -s $IP -j ACCEPT #done #$IPT -t filter -D FORWARD -d $IP -j ACCEPT #while [ $? -eq 0 ] #do #$IPT -t filter -D FORWARD -d $IP -j ACCEPT #done #$IPT -t filter -D OUTPUT -d $IP -j ACCEPT #while [ $? -eq 0 ] #do #$IPT -t filter -D OUTPUT -d $IP -j ACCEPT #done ####################################################################### # fix user mac to ip #$arpcmd -d $IP $MAC #while [ $? -eq 0 ] #do #$arpcmd -d $IP $MAC #done $arpcmd -s $IP $MAC ############################ declare -i mark1=$ID+101 declare -i mark2=$ID+4101 $IPT -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark1 $IPT -t mangle -A FORWARD -s $IP -j MARK --set-mark $mark2 ############################################ ########## 1subnet #Download $tc class add dev $IFDOWN parent 1:1 classid 1:$mark1 htb rate $SPEED$SCOUNT $tc filter add dev $IFDOWN parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1 #Upload $tc class add dev $IFUP parent 1:1 classid 1:$mark2 htb rate $UPSPEED$SCOUNT $tc filter add dev $IFUP parent 1: protocol ip prio 3 handle $mark2 fw classid 1:$mark2 ############################################# ## Интернет для (10) $IPS -D FSNATDROP $IP ## Интернет для (192) $IPS -D FSNATDROPW $IP ## Интернет для (10.128) $IPS -D FSNATDROV $IP while [ $? -eq 0 ] do $IPS -D FSNATDROP $IP $IPS -D FSNATDROPW $IP $IPS -D FSNATDROPV $IP done $IPS -A FFIN $IP $IPS -A FFINW $IP $IPS -A FFINV $IP $IPS -A FSNAT $IP $IPS -A FSNATW $IP $IPS -A FSNATV $IP # ################################################ #Редирект на авторизацию отключен для пользователя ipset -A authorized1 $2 ipset -A authorized2 $2 # DAY/NIGHT switcher /bin/echo $SPEED:`expr $ID + 4101` > /etc/stargazer/dn/$LOGIN # ADD TO LOG echo "$cur_date $cur_time CONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /var/log/stg/allconnect.log и дисконнект #!/bin/bash # OnDisconnect IFUP="eth1" IFDOWN="eth1" LOGIN=$1 IP=$2 CASH=$3 ID=$4 SPEED=`/etc/stargazer/GetSpeed $LOGIN` UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN` SCOUNT="Kbit" IPT="/sbin/iptables" IPS="/usr/sbin/ipset" tc="/sbin/tc" # TIME FORMAT cur_date=`date +%Y.%m.%d` cur_time=`date +%H:%M:%S` #Запрещаем инет редирект на локаль #$IPS -A $IP NOINET # DELETE RULEZ IPT ###################################################################### $IPT -t filter -D INPUT -s $IP -j ACCEPT while [ $? -eq 0 ] do $IPT -t filter -D INPUT -s $IP -j ACCEPT done $IPT -t filter -D FORWARD -s $IP -j ACCEPT while [ $? -eq 0 ] do $IPT -t filter -D FORWARD -s $IP -j ACCEPT done $IPT -t filter -D FORWARD -d $IP -j ACCEPT while [ $? -eq 0 ] do $IPT -t filter -D FORWARD -d $IP -j ACCEPT done $IPT -t filter -D OUTPUT -d $IP -j ACCEPT while [ $? -eq 0 ] do $IPT -t filter -D OUTPUT -d $IP -j ACCEPT done ######################### declare -i mark1=$ID+101 declare -i mark2=$ID+4101 if [ -n "$mark1" ] then $IPT -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark1 while [ $? = 0 ] do $IPT -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark1 done fi if [ -n "$mark2" ] then $IPT -t mangle -D FORWARD -s $IP -j MARK --set-mark $mark2 while [ $? = 0 ] do $IPT -t mangle -D FORWARD -s $IP -j MARK --set-mark $mark2 done fi ############################################################################# #Download $tc filter del dev $IFDOWN parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark $tc class del dev $IFDOWN parent 1:1 classid 1:$mark1 htb rate $SPEED$SCOUNT #Upload $tc filter del dev $IFUP parent 1: protocol ip prio 3 handle $mark2 fw classid 1 :$mark1 $tc class del dev $IFUP parent 1:1 classid 1:$mark2 htb rate $UPSPEED$SCOUNT ############################################################################ ## Отключить интернет (10) $IPS -D FFIN $IP $IPS -D FFINW $IP $IPS -D FFIV $IP while [ $? -eq 0 ] do $IPS -D FFIN $IP $IPS -D FFINW $IP $IPS -D FFIV $IP done $IPS -D FSNAT $IP $IPS -D FSNATW $IP $IPS -D FSNATV $IP while [ $? -eq 0 ] do $IPS -D FSNAT $IP $IPS -D FSNATW $IP $IPS -D FSNAV $IP done $IPS -A FSNATDROP $IP $IPS -A FSNATDROPW $IP $IPS -A FSNATDROPV $IP ############################################################################ #iptables -D INPUT -i eth3 -p tcp --dport 80 -s $ip -j ACCEPT #iptables -D INPUT -i eth3 -p tcp --dport 3128 -s $ip -j ACCEPT #iptables -t nat -D PREROUTING -i eth3 -p tcp --dport 80 -s $ip -j REDIRECT --to-port 3128 #$IPT -t nat -A PREROUTING --src $IP --dst 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2 #Редирект на страницу авторизации включен ipset -D authorized1 $2 ipset -D authorized2 $2 # DAY/NIGHT switcher /bin/rm /etc/stargazer/dn/$LOGIN echo "$cur_date $cur_time DISCONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH" >> /var/log/stg/allconnect.log Ну пока ещё сырые но работает отлично Естественно остальные сервисы выстраиваете под свои нужды Всем спасибо за помощь! Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now