Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Archer в Jan 05, 2006, 21:07



Титла: iptables
Публикувано от: Archer в Jan 05, 2006, 21:07
Здравейте, наскоро се опитах да премодифицирам един скрипт с iptables правила така, че да отговаря на мойте изисквания. Проблема е че нещо не работи, преди да го постна бих искал да дам малко повече инфо. Имам  Slackware 10.2--2.4.31, който го ползвам за рутер и има IP 83.228.X.X(това е за и-нета, а за към LAN 192.168.110.1). Зад него има машина със същите параметри(192.168.110.2), която ще се ползва за Web и FTP . Имам ping от вътрешната машина и към двата и-фейса на рутера, но след това няма никой. Молбата ми е ако на някой му се занимава да го погледне и ако има нещо което да му се струва нередно да го сподели(критиката ще бъде градивна). Благодаря предварително

Та ето го и скрипта:

#!/bin/bash
#RULES FOR FIREWALL & NAT
IPT="/usr/sbin/iptables"

echo "Loading aditional modules ..."
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter

function flush() {
echo "Flushing firewall ..."
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
}

case $1 in

start)
echo "Starting firewall ..."
flush
#Zadavame "othvurlqne" kato standartno povedenie na trite vgradeni verigi

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

#Davame pulna svoboda na interfacite za obratna vruzka

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


echo "Executing FILTER table ..."

#Nqkolko osnovni pravila protiv podpraveni IP-addressi

$IPT -A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 255.0.0.0/8 -j DROP

$IPT -A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 0.0.0.0/8 -j DROP

$IPT -A INPUT -s 127.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 127.0.0.0/8 -j DROP

$IPT -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 10.0.0.0/8 -j DROP

$IPT -A INPUT -s 172.16.0.0/12 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 172.16.0.0/12 -j DROP

#$IPT -A INPUT -s 192.168.0.0/16 -j LOG --log-prefix "Spoofed source IP!"
#$IPT -A INPUT -s 192.168.0.0/16 -j DROP

$IPT -A INPUT -s 83.228.X.X -j LOG --log-prefix "Spoofed by my own IP!"
$IPT -A INPUT -s 83.228.X.X -j DROP

#Definirame pravilo, s koeto kazvame na "netfilter", che vsichki sessions po TCP,
#zaduljitelno trqbva da zapochvat sus SYN (Vuzmojno scanirane ot strana na nqkoi lubopitko)

$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth scan attempt?"
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP


echo "Processing INPUT chain ..."

#Priemame vhodqshti paketi, koito sa chast ot veche odobreni sessinos
$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

#Priema vhodqshti paketi, koito startirat sessions po FTP
$IPT -A INPUT -p tcp -j ACCEPT --dport 21 -m state --state NEW

#Priema vhodqshti paketi, koito startirat sessions po SSH
$IPT -A INPUT -p tcp -j ACCEPT --dport 22 -m state --state NEW

#Priema vhodqshti paketi, koito startirat sessions po HTTP
$IPT -A INPUT -p tcp -j ACCEPT --dport 80 -m state --state NEW

#Priema vsichko koeto idva ot vutreshnata mreja 192.168.110.0/24  Tuk mojebi e dobre da ima portove 1025-65355
$IPT -A INPUT -p all -s 192.168.110.0/24 -d 83.228.X.X -j ACCEPT

#Zapisvame vsichko ostanalo v LOG
$IPT -A INPUT -j LOG --log-prefix "Dropped by default:"


echo "Processing OUTPUT chain ..."

#Ako paketa e chast ot veche odobrena vruzka go puskame navun
$IPT -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

#Pozvolqvame izhodqshti ICMP zaqvki- "ping"
$IPT -A OUTPUT -p icmp -j ACCEPT --icmp-type echo-reqest

#Pozvolqvame izhodqshti zaqvki po DNS "opredelqne na imena po IP address"
$IPT -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

#Zapisvame v LOG vsichko ostanalo
$IPT -A OUTPUT -j LOG --log-prefix "Dropped by default:"


echo "Processing FORWARD chain ..."

$IPT -A FORWARD -p all -j ACCEPT


echo "Executing NAT table ..."

#PREROUTING
#Prehvurlqne na vsichki zaqvki na port 21 kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.110.2:21

#Prehvurlqne na vsichki zaqvki na port 80 kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.110.2:80


#POSTROUTING
#Prehvurlqne na vsichko ot vutreshnata mreja kum 83.228.X.X
IPT -t nat -A POSTROUTING -o eth0 -j SNAT –to--source 83.228.X.X
;;


stop)
echo "Stoping firewall ..."
flush
;;


nat)
echo "Running firewall but only NAT table ..."
flush
;;


*)
echo "Usage: FIREWALL & NAT start|stop|nat"
;;
esac


Титла: iptables
Публикувано от: growchie в Jan 05, 2006, 22:31
eth0 с какъв адрес е, трябва да е този на интернет интерфейса
провери си реда за маскиране дали нетрябва да е -o eth1.


Титла: iptables
Публикувано от: в Jan 06, 2006, 09:02
Цитат (Archer @ Ян. 05 2006,22:07)

Здрасти !
Погледни това :
#Zadavame "othvurlqne" kato standartno povedenie na trite vgradeni verigi

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

Не трябва ли да е :

$IPT -P OUTPUT ACCEPT

Не е ли добра идея да се допуска по УДР и ТСП поне порт 53 ?


Титла: iptables
Публикувано от: carlitto в Jan 06, 2006, 13:24
При мен е така и работи...

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Титла: iptables
Публикувано от: в Jan 06, 2006, 13:37
Моят съвет е да почнеш с минимум правила, но работещо и постепенно да добавяш, докато разбереш къде ти е проблемното правило :)
Прим.

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
IPT -t nat -A POSTROUTING -o eth0 -j SNAT –to--source 83.228.X.X

Докато това не проработи не вкарвай нови правила ;)


Титла: iptables
Публикувано от: в Jan 06, 2006, 13:39
Опа, copy-paste-a не стана този път :)
В предишния пост - навсякъде е ACCEPT вместо DROP, и eth0 ти е външния интерфейс


Титла: iptables
Публикувано от: Archer в Jan 06, 2006, 18:25
Благодаря на всички, които се отзоваха. Щом се прибера днес ще тествам и ще върна инфо.