Jump to content

Помогите разобраться с файерволом


Recommended Posts

Что именно не работает ?

Не блокирует доступ на внешние ип заданные в правилах всем пользователям кроме админов

 

Нужно заблокировать полный доступ с сети всем пользователям кроме админов на конкретные ип вышестоящего провайдера

Link to post
Share on other sites
  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

А что это у вас, батенька, логи в неположенном месте лежат, а?

ssh, другого админа отправить учиться.

Вот мучился мучился но всё таки осилил

Выкладываю скрипт запуска

/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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...