Существует проблема такого рода, на компьютере стоит Ubuntu 7.10, поднят apache и vsftpd. Подключение к интернету через vpn. Внутренний адреса в локалке 172.20.129.x подсеть /24.
Проблема такого рода что нужно разрешить заходить на ftp и http сервер пользователям только из моей локалной сети. А то иногда получается что при включенном vsftp и законекченном к vpn куда то уходит море трафика, а отследить это никак не могу.
Может кто нибудь подсказать путное решение этой проблемы?
На данный момент правила выглядят так, но на ftp с удаленного компьютера зайти невозможно, помимо этого не пингуется ничего за предлелами локальной сети =(
#!/bin/bash
start_firewall ()
{
# Защита от спуфинга
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# Загрузка модулей которые могут пригодиться
# modprobe ip_tables
# modprobe iptable_filter
# разрешаем входящие и исходящие соединения
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
# Удалить все правила и цепочки
iptables -F
iptables -X
# создаем свои цепочки
# отбрасываем tcp с неправильными флагами
iptables -N bad_tcp_packets
# tcp, прошедшие основную проверку
iptables -N allowed
# все пакеты соотв. протоколов
iptables -N tcp_packets
iptables -N udp_packets
iptables -N icmp_packets
# разрешаем входящие и исходящие соединения на локальном интерфейсе
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но не имеющие флагов SYN,ACK
# предохраняет от определенных типов атак, подробности в приложении B4 к Iptables Tutorial
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
# принимаем все пакеты, относящиеся к уже установленным соединениям
iptables -A allowed -p TCP --syn -j ACCEPT
iptables -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
# а все остальные из этой цепочки сбрасываем
iptables -A allowed -j DROP
# здесь можно открыть некоторые порты, т.к. по умолчанию мы закрыли всё
# открываем 20-й tcp (FTP)
iptables -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
# открываем 21-й tcp (FTP)
iptables -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
# открываем 22-й tcp (SSH])
iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
# открываем 53-й udp (DNS)
iptables -A udp_packets -p UDP -s 0/0 --sport 53 -j ACCEPT
# открываем 80-й udp (WEB)
iptables -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
# Разрешить icmp
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT # Dest unreachable
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # Time exceeded
iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT # Parameter problem
# Setup connection oriented access
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Дропать всё и отписывать в лог
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
echo " [End iptables rules setting]"
}
stop_firewall ()
{
#
# Set the default policy
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# Set the default policy for the NAT table
#
# iptables -t nat -P PREROUTING ACCEPT
# iptables -t nat -P POSTROUTING ACCEPT
# iptables -t nat -P OUTPUT ACCEPT
#
# Delete all rules
#
iptables -F
# iptables -t nat -F
#
# Delete all chains
#
iptables -X
# iptables -t nat -X
# End message
echo " [End of flush]"
}
RETVAL=0
# To start the firewall
start() {
echo -n "Iptables rules creation: "
start_firewall
RETVAL=0
}
# To stop the firewall
stop() {
echo -n "Removing all iptables rules: "
stop_firewall
RETVAL=0
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
/sbin/iptables -L
# /sbin/iptables -t nat -L
RETVAL=0
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
RETVAL=1
esac
exit