Tak už mě z toho hrabe, dělám to druhý den, bez jakéhokoli efektu .
Popis situace : modem ADSL s adresou 192.168.1.2 na který připojuju eth1 DHCP pod adresou 192.168.2.100 internet funguje OK. Pokud nespustím skript, vse funguje OK. POkud spustim skript, nejde vůbec internet ven. Pokud povolím výchozí podmínku OUTPUT ACCEPT, jede vše OK. Jediné, co jsem u skriptu vypnul je preouting, zatím nepoužívám proxy. Zkoušel jsem ruzné adresy , netmasky vůbec netušim, kde to může být. V modemu je vše vypnuto, podle me komunikace ven by měla jít v pohodě.
Díky moc za náměty, fakt tphle je asi nad moje chápání, i když to bude blbost....
Díky. Hyp
Používám skript následujcí :
[quote]#
# Vase IP adresa a vnejsi rozhrani
INET_IP="192.168.2.100"
INET_IFACE="eth1"
# IP a broadcast adresa a rozhrani vnitrni site
LAN1_IP="168.192.1.0/32"
LAN1_BCAST="168.192.1.255/32"
LAN1_IFACE="eth0"
# Lokalni loopback rozhrani
LO_IFACE="lo"
LO_IP="127.0.0.1/32"
# Cesta k programu iptables
IPTABLES="/sbin/iptables"
# Inicializace databaze modulu
/sbin/depmod -a
# Zavedeme moduly pro nestandardni cile
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
# Modul pro FTP prenosy
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
# Zapneme routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" > ${interface}
done
# Implicitni politikou je zahazovat nepovolene pakety
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# Retezec PREROUTING v NAT tabulce
#
# Odchozi HTTP pozadavky (na port 80 s vyjimkou lokalniho serveru)
# budou presmerovany na lokalniho squida (na portu 3128) ve funkci
#transparentni proxy cache.
#nahrazeno $IPTABLES -t nat -A PREROUTING -p tcp ! -i $INET_IFACE -d ! $INET_IP --dport 80 -j REDIRECT --to-port 3128
#$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 80 -j REDIRECT --to-port 80
#$IPTABLES -t nat -A PREROUTING -p all -i $INET_IFACE --dport 80 -j REDIRECT --to 80
#$IPTABLES -t nat -A PREROUTING -p tcp -i $INET_IFACE -d $INET_IP -j REDIRECT --to 80
# Presmerujeme port 2222 na port 22 (ssh) stanice uvnitr site
$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 2222 -j DNAT --to 192.168.2.100:22
#
# Retezec POSTROUTING v NAT tabulce
#
# IP maskarada - SNAT
# NATujeme
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP
#
# Pridavne retezce pro snazsi kontrolu na rezervovane adresy
#
# Zahazovat a logovat (max. 5 x 3 pakety za hod)
$IPTABLES -N logdrop
$IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "Rezervovana adresa: "
$IPTABLES -A logdrop -j DROP
# V tomto retezci se kontroluje, zda prichozi pakety nemaji nesmyslnou IP adresu
$IPTABLES -N IN_FW
$IPTABLES -A IN_FW -s 192.168.0.0/16 -j logdrop # rezervovano podle RFC1918
$IPTABLES -A IN_FW -s 10.0.0.0/8 -j logdrop # ---- dtto ----
$IPTABLES -A IN_FW -s 172.16.0.0/12 -j logdrop # ---- dtto ----
#$IPTABLES -A IN_FW -s 96.0.0.0/4 -j logdrop # rezervovano podle IANA
# ... dalsi rezervovane adresy mozno doplnit podle
# http://www.iana.com/assignments/ipv4-address-space
# TOS flagy slouzi k optimalizaci datovych cest. Pro ssh, ftp a telnet
# pozadujeme minimalni zpozdeni. Pro ftp-data zase maximalni propostnost
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput
#
# Retezec FORWARD
# Navazovani spojeni ala Microsoft -
# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
## jedna zlobiva IPdodano mnou
#$IPTABLES -A FORWARD -i $LAN_IFACE -s 192.168.1.99 -j REJECT
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP
# Nechceme rezervovane adresy na internetovem rozhrani
$IPTABLES -A FORWARD -i $INET_IFACE -j IN_FW
# Umoznit presmerovani portu na stanici dovnitr site
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -p tcp -d 192.168.2.100 --dport ssh -j ACCEPT
# Routing zevnitr site ven neomezujeme
$IPTABLES -A FORWARD -i $LAN1_IFACE -j ACCEPT
# Routing zvenku dovnitr pouze pro navazana spojeni (stavovy firewall)
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
# Ostatni pakety budou zahozeny, tak je budeme logovat (12 x 5 pkt/hod)
$IPTABLES -A FORWARD -m limit --limit 12/h -j LOG --log-prefix "forward drop: "
#
# Retezec INPUT
#
# Navazovani spojeni ala Microsoft -
# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# Portscan s nastavenym SYN,FIN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP
# Nejprve se zbavime nezadoucich adres
$IPTABLES -A INPUT -i $INET_IFACE -j IN_FW
# Pravidla pro povolene sluzby
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 21 -j ACCEPT #FTP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT #SSH server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT #SMTP server
$IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 53 -j ACCEPT #DNS server UDP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 53 -j ACCEPT #DNS server TCP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT #WWW server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT #POP3 server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 143 -j ACCEPT #IMAP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 443 -j ACCEPT #HTTPS server
Sluzbu AUTH neni dobre filtrovat pomoci DROP, protoze to muze
# vest k prodlevam pri navazovani nekterych spojeni. Proto jej
# sice zamitneme, ale tak, aby nedoslo k nezadoucim prodlevam.
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -m limit --limit 12/h -j LOG
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -j REJECT --reject-with tcp-reset #AUTH server
# Propoustime pouze ICMP ping
$IPTABLES -A INPUT -i $INET_IFACE -p ICMP --icmp-type echo-request -j ACCEPT
# Loopback neni radno omezovat
$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT
# Stejne jako pakety z lokalni site, jsou-li urceny pro nas
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT
$IPTABLES -A INPUT -i $LAN1_IFACE -d $INET_IP -j ACCEPT
# Broadcasty na lokalnim rozhrani jsou take nase
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT
# MS klienti maji chybu v implementaci DHCP
$IPTABLES -A INPUT -i $LAN1_IFACE -p udp --dport 67 -j ACCEPT
# Pakety od navazanych spojeni jsou v poradku
$IPTABLES -A INPUT -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
# Vsechno ostatni je zakazano - tedy logujeme, maxim. 12x5 pkt/hod
$IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT drop: "
#
# Retezec OUTPUT
#
# TOS flagy slouzi k optimalizaci datovych cest. Pro ssh, ftp a telnet
# pozadujeme minimalni zpozdeni. Pro ftp-data zase maximalni propostnost
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput
# Povolime odchozi pakety, ktere maji nase IP adresy
$IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT
# Povolime DHCP broadcasty na LAN rozhrani
$IPTABLES -A OUTPUT -o $LAN1_IFACE -p UDP --dport 68 --sport 67 -j ACCEPT
# Ostatni pakety logujeme (nemely by byt zadne takove)
$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT drop: "
[/quote]
výpis ifconfigu
ifconfig
eth0 Link encap:Ethernet HWadr 00:0c:f1:d0:5b:ba
inet adr:168.192.1.1 Všesměr:168.192.255.255 Maska:255.255.0.0
inet6-adr: fe80::20c:f1ff:fed0:5bba/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1
RX packets:265 errors:0 dropped:0 overruns:0 frame:0
TX packets:181 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
Přijato bajtů: 26489 (26.4 KB) Odesláno bajtů: 52649 (52.6 KB)
eth1 Link encap:Ethernet HWadr 00:30:bd:b6:af:22
inet adr:192.168.2.100 Všesměr:192.168.2.255 Maska:255.255.255.0
inet6-adr: fe80::230:bdff:feb6:af22/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1
RX packets:11389 errors:0 dropped:0 overruns:0 frame:0
TX packets:10615 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
Přijato bajtů: 10231152 (10.2 MB) Odesláno bajtů: 1461331 (1.4 MB)
Přerušení:22 Vstupně/Výstupní port:0xb800
lo Link encap:Místní smyčka
inet adr:127.0.0.1 Maska:255.0.0.0
inet6-adr: ::1/128 Rozsah:Počítač
AKTIVOVÁNO SMYČKA BĚŽÍ MTU:16436 Metrika:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:0
Přijato bajtů: 240 (240.0 B) Odesláno bajtů: 240 (240.0 B)
vypis iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
LOG tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN limit: avg 10/min burst 5 LOG level warning prefix `bogus packet: '
DROP tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN
IN_FW all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:rsync
LOG tcp -- anywhere anywhere tcp dpt:auth limit: avg 12/hour burst 5 LOG level warning
REJECT tcp -- anywhere anywhere tcp dpt:auth reject-with tcp-reset
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere 168.192.1.0
ACCEPT all -- anywhere 192.168.2.100
ACCEPT all -- anywhere 168.192.1.255
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT all -- anywhere 192.168.2.100 state RELATED,ESTABLISHED
LOG all -- anywhere anywhere limit: avg 12/hour burst 5 LOG level warning prefix `INPUT drop: '
Chain FORWARD (policy DROP)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
LOG tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN limit: avg 10/min burst 5 LOG level warning prefix `bogus packet: '
DROP tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN
IN_FW all -- anywhere anywhere
ACCEPT tcp -- anywhere 192.168.2.100 tcp dpt:ssh
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere anywhere limit: avg 12/hour burst 5 LOG level warning prefix `forward drop: '
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- localhost anywhere
ACCEPT all -- 168.192.1.0 anywhere
ACCEPT all -- 192.168.2.100 anywhere
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
LOG all -- anywhere anywhere LOG level warning prefix `OUTPUT drop:
Chain IN_FW (2 references)
target prot opt source destination
logdrop all -- 192.168.0.0/16 anywhere
logdrop all -- 10.0.0.0/8 anywhere
logdrop all -- 172.16.0.0/12 anywhere
Chain logdrop (3 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 5/hour burst 3 LOG level warning prefix `Rezervovana adresa: '
DROP all -- anywhere anywhere