Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Не закрывает порт в iptables [Решено]
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
ntsite
Tux's lil' helper
Tux's lil' helper


Joined: 13 Dec 2008
Posts: 86
Location: Khabarovsk, Russia

PostPosted: Fri Jan 16, 2009 1:02 am    Post subject: Не закрывает порт в iptables [Решено] Reply with quote

Всем доброе время суток!
Начну с информации о самой ОС
Стоит на сервере gentoo, версия ядра - 2.6.26-gentoo-r3 (SMP).
Поднят net-firewall/iptables-1.4.0-r1
Вот правила самого iptables
Code:
#!/bin/sh                                                           
# Generic IPTables script, accept all by default                     
# path to your iptables executable                                   
IPT=/sbin/iptables                                                   
                                                                     
$IPT -F                                                             
$IPT -t nat -F                                                       
                                                                     
$IPT -P INPUT ACCEPT                                                 
$IPT -P OUTPUT ACCEPT                                               
$IPT -P FORWARD DROP                                                 
                                                                     
export LAN=eth0                                                     
export LAN2=eth1                                                     
export WAN=ppp0                                                     
export WAN2=ppp1                                                     

COMBLOCK="0:1 13 98 111 161:162 1214 1999 2049 3049 4329 6346 8000 8008 8080 12345 65535"
TCPBLOCK="$COMBLOCK 98 512:515 1080 6000:6009 6112"   
UDPBLOCK="$COMBLOCK 161:162 520 123 517:518 1427 9000"

# Адреса все присать не буду, потому что их достаточно много
KAB20="192.168.100.1 192.168.100.2 192.168.100.3 192.168.100.4 192"
KAB21="192.168.100.11 192.168.100.12 192.168.100.13 192.168.100.14"
KAB22="192.168.100.90 192.168.100.21 192.168.100.22 192.168.100.23"
KAB23="192.168.100.31 192.168.100.32 192.168.100.33 192.168.100.34"
KAB30="192.168.100.41 192.168.100.42 192.168.100.43 192.168.100.44"
KAB31="192.168.100.51 192.168.100.52 192.168.100.53 192.168.100.54"
ADM="192.168.100.72 192.168.100.73 192.168.100.74 192.168.100.75"

$IPT -I INPUT 1 -i ${LAN} -j ACCEPT                     
$IPT -I INPUT 1 -i ${LAN2} -j ACCEPT                     
$IPT -I INPUT 1 -i lo -j ACCEPT                         
$IPT -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
$IPT -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

echo -n "FW: Blocking attacks to TCP port" 
for i in $TCPBLOCK;                         
do                                         
 echo -n "$i "                             
  $IPT -A INPUT   -p tcp --dport $i  -j DROP
  $IPT -A OUTPUT  -p tcp --dport $i  -j DROP
  $IPT -A FORWARD -p tcp --dport $i  -j DROP
done                                       
echo ""                                     
echo -n "FW: Blocking attacks to UDP port "
for i in $UDPBLOCK;                         
do                                         
 echo -n "$i "                             
  $IPT -A INPUT   -p udp --dport $i  -j DROP
  $IPT -A OUTPUT  -p udp --dport $i  -j DROP
  $IPT -A FORWARD -p udp --dport $i  -j DROP
done                                       
echo ""                                     

$IPT -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
$IPT -A INPUT -p TCP --dport 80 -i ${WAN} -j ACCEPT
$IPT -A INPUT -p TCP --dport 21 -i ${WAN} -j ACCEPT
$IPT -A INPUT -p TCP --dport 21 -i ${LAN2} -j ACCEPT

$IPT -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
$IPT -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

$IPT -I FORWARD -i ${LAN} -d 192.168.100.0/255.255.0.0 -j DROP 
$IPT -A FORWARD -i ${LAN} -s 192.168.100.0/255.255.0.0 -j ACCEPT
$IPT -A FORWARD -i ${WAN} -d 192.168.100.0/255.255.0.0 -j ACCEPT

echo -n "FW: accept connection MASQUERADE internet ADM: "
for i in $ADM;                                           
do                                                       
 echo -n "$i "                                           
$IPT -t nat -A POSTROUTING -o ${WAN} -s $i -j MASQUERADE
done                                                     
echo ""                                                 

$IPT -P FORWARD ACCEPT                                           
$IPT -A FORWARD -i ${WAN2} -d 192.168.100.0/255.255.0.0 -j ACCEPT
$IPT -t nat -A POSTROUTING -o ${WAN2} -j MASQUERADE             

echo -n "FW: accept connection squid internet ADM: "                           
for i in $ADM;                                                                 
do                                                                             
 echo -n "$i "                                                                 
    $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $i -j REDIRECT --to-port 3128
done                                                                           
echo ""                                                                         

echo -n "FW: accept connection squid internet Kab-20: "                         
for i in $KAB20;                                                               
do                                                                             
 echo -n "$i "                                                                 
    $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $i -j REDIRECT --to-port 3128
done                                                                           
echo ""                                                                         

echo -n "FW: deny connection squid internet Kab-22: "                           
for i in $KAB22;                                                               
do                                                                             
 echo -n "$i "                                                                 
    $IPT -A INPUT -i ${LAN} -p TCP --dport 3128 -s $i -d 192.168.100.254 -j DROP
done                                                                           
echo ""                                                                         

echo 1 > /proc/sys/net/ipv4/ip_forward                             
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done


Стоит прозрачный прокси (squid). Если в браузере пользователя не указывать настройки прокси, то все блокирует как и надо. Нет прямого доступа в интернет и само собой не перекидывает пакетики на прокси. Но если явно указать в браузере прокси, то как я не пробовал, какие бы правила не писал, клиент все равно ходит в игнтернет и порт 3128 - не блокируется.
Вот хотел поинтересоваться, где зарыта собака... скорей всего в правилах ошибся, но не сам не вижу причины :(

P.S. Если какой то информации не хватает, то выложу без проблем :)


Last edited by ntsite on Tue Jan 20, 2009 11:58 pm; edited 1 time in total
Back to top
View user's profile Send private message
ntsite
Tux's lil' helper
Tux's lil' helper


Joined: 13 Dec 2008
Posts: 86
Location: Khabarovsk, Russia

PostPosted: Fri Jan 16, 2009 1:49 am    Post subject: Reply with quote

Нашел причину...
Сперва изменил правило для закрытия порта
Code:
echo -n "FW: deny connection squid internet Kab-22: "       
for i in $KAB22;                                             
do                                                           
 echo -n "$i "                                               
    $IPT -A INPUT -i ${LAN} -p TCP --dport 3128 -s $i -j DROP
done                                                         
echo ""                                                     


А после, убрал правило, которое разрешает ходить всем пакетикам на интерфейс лан
Code:
$IPT -I INPUT 1 -i ${LAN} -j ACCEPT

Можно ли это правило изменить так, чтобы было все, кроме 3128 используя "!".
Если кто знает, подскажите пожалуйста с синтаксисом...
Например что то типа того, не знаю прав ли я
Code:
$IPT -I INPUT 1 -i ${LAN} -p tcp --dport ! 3128 -j ACCEPT

Но не уверен, будет ли работоспособно мое творение :) Просто если использовать первоначальное правило без указания порта, то никакие другие правила на закрытие портов на интерфейс Lan не работали...
Back to top
View user's profile Send private message
ba
l33t
l33t


Joined: 25 May 2003
Posts: 804

PostPosted: Fri Jan 16, 2009 7:03 pm    Post subject: Reply with quote

ntsite wrote:
Например что то типа того, не знаю прав ли я
Code:
$IPT -I INPUT 1 -i ${LAN} -p tcp --dport ! 3128 -j ACCEPT

Но не уверен, будет ли работоспособно мое творение :)

работать будет
Back to top
View user's profile Send private message
ntsite
Tux's lil' helper
Tux's lil' helper


Joined: 13 Dec 2008
Posts: 86
Location: Khabarovsk, Russia

PostPosted: Tue Jan 20, 2009 11:57 pm    Post subject: Reply with quote

Все, спасибо, вопрос решили :)
Back to top
View user's profile Send private message
ntsite
Tux's lil' helper
Tux's lil' helper


Joined: 13 Dec 2008
Posts: 86
Location: Khabarovsk, Russia

PostPosted: Tue Jan 27, 2009 8:03 am    Post subject: Reply with quote

Попробовал правило
Code:
$IPT -I INPUT 1 -i ${LAN} -p tcp --dport ! 3128 -j ACCEPT

И получилось так, что левый адрес (который у меня нигде не был зарегестрирован) смог выйти в интернет.
Думаю проще убрать правило типа открыть все порты, лучше будет окрывать порты по надобности, тем более безопаснее для системы.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum