Portál AbcLinuxu, 17. července 2025 07:26


Dotaz: Jak filtrovat pakety?

21.2.2003 16:01 Zdeněk | skóre: 3
Jak filtrovat pakety?
Přečteno: 186×
Odpovědět | Admin
Linux pc s RH 7.0 je připojené rozhraním eth1 (bezdrátové připojení) k internetu a rozhraním eth0 k win pc. Linux má sloužit jako webserver, mailserver, dns a firewall. Proxy ještě uvážím. Pro maškarádování a filtrování paketů chci použít následující skripty:

skript 1)
#!/bin/bash
ipchains -P forward DENY
ipchains -A forward -i eth1 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_masq_ftp
skript 2)
#!/bin/bash

RETVAL=0

# See how we were called.
case "$1" in
  start)
	echo -n "Starting Firewall script:"
	#maskarada
	/sbin/ipchains -P forward DENY
	/sbin/ipchains -A forward -i eth1 -j ACCEPT
	echo 1 > /proc/sys/net/ipv4/ip_forward
	/sbin/insmod ip_masq_ftp
	#paketove filtry
	/sbin/ipchains -A input -i eth1 -p ICMP -j ACCEPT
	#DNS
	/sbin/ipchains -A input -i eth1 -p TCP --source-port 53 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p TCP --destination-port 53 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p UDP --source-port 53 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p UDP --destination-port 53 -j ACCEPT
	#http
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 80 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 8080 -j ACCEPT
	#http z venku
	/sbin/ipchains -A input -i eth1 -p tcp --destination-port 80 -j ACCEPT
	#ftp
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 21 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 20 -j ACCEPT
	#ssh
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 22 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p tcp --destination-port 22 -j ACCEPT
	#smtp
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 25 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p tcp --destination-port 25 -j ACCEPT
	#pop3
	/sbin/ipchains -A input -i eth1 -p tcp --source-port 110 -j ACCEPT
	/sbin/ipchains -A input -i eth1 -p tcp --destination-port 110 -j ACCEPT
	#zakazani vseho ostatniho
	/sbin/ipchains -A input -i eth1 -j DENY
	#filtr samby
	#/sbin/ipchains -A input -i eth1 --destination-port 137:139 -j DENY
	#/sbin/ipchains -A output -i eth1 --source-port 137:139 -j DENY
	#filtr proxy z vnejsku
	#/sbin/ipchains -A input -i eth1 -p tcp --destination-port 3128 -j DENY
	#/sbin/ipchains -A input -i eth1 -p tcp --destination-port 3128 -j DENY

	;;
  stop)
	echo -n "Stopping Firewall script: "
	echo 0 > /proc/sys/net/ipv4/ip_forward
	/sbin/ipchains -F
	/sbin/ipchains -P forward ACCEPT
	/sbin/ipchains -P input ACCEPT -i eth1
	/sbin/rmmod ip_masq_ftp
	;;
  restart)
  	$0 stop
	$0 start
	;;
  *)
	echo "Usage: firewall {start|stop|restart}"
	exit 1
esac

exit $RETVAL
Můžete mi poradit, kam mám ty skripty uložit a pod jakým názvem a co si mám předtím zálohovat?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.2.2003 17:51 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Jak filtrovat pakety?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Deláš to špatně. 1.) Použij iptables (jsou novější 2.) Použij skrypty které již máš v RH tj udělej si skrypt s pravidly který spustíš jednou a potom ho zapiš do konfiguračního souboru příkazem /etc/rc.d/init.d/iptables save a pokud budeš mít povolenou službu iptables tak se ti to bude nastavovat samo. Moduly dej do /etc/rc.d/rc.local Jinak můj skrypt je pro inspiraci:
#!/bin/sh

echo "0" > /proc/sys/net/ipv4/ip_forward

MOJE_IP=192.168.3.67
DNS_SERVER=192.168.1.254

# Firevall
/sbin/iptables -X
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP

/sbin/iptables -A INPUT -i eth0 -d 127.0.0.1/255.0.0.0 -j LOG --log-level 6
/sbin/iptables -A INPUT -i eth0 -d 127.0.0.1/255.0.0.0 -j REJECT

# local
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT

# to co jsme navázali my
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -s $MOJE_IP -j ACCEPT

/sbin/iptables -A OUTPUT -p icmp -j ACCEPT
#/sbin/iptables -A INPUT -p icmp -j ACCEPT
#/sbin/iptables -A FORWARD -p icmp -j ACCEPT

# max5 pingu za s
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT

/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT

# DNS
/sbin/iptables -A INPUT -p udp -s $DNS_SERVER --sport 53 -j ACCEPT

# WWW
/sbin/iptables -A INPUT -p tcp -s 0/0 --sport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -d 0/0 --dport 80 -j ACCEPT

# odmitne port 113 auth
/sbin/iptables -A INPUT -i eth0 -p TCP --dport 113 -j REJECT

# LOGUJ OSTATNI
/sbin/iptables -A OUTPUT -j LOG --log-level 6
/sbin/iptables -A INPUT -j LOG --log-level 6
/sbin/iptables -A FORWARD -j LOG --log-level 6
21.2.2003 19:42 Zdeněk | skóre: 3
Rozbalit Rozbalit vše Jak filtrovat pakety?
Díky za odpověď. Linuxconf ukazuje, že iptables mám mezi nainstalovanými balíčky, ale asi se nepoužívají:
/sbin/iptables -L
iptables v1.1.1: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Naproti tomu
/sbin/ipchains -L
vypíše seznam pravidel. Jak bych tedy měl zprovoznit iptables? A potřebuji také balíček iptables-ipv6?
21.2.2003 20:35 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Jak filtrovat pakety?
Třeba zakázat původní to znamena zastavit služby ipchains a povolit iptables. Klidně balíčky ipchains můžete vyhodit. /etc/rc.d/init.d/ipchains stop Zadáte pravidla iptables a zadate /etc/rc.d/init.d/iptables save pro uložení no a /etc/rc.d/init.d/iptables start co to asi udělá ??? Jinak na linux@linux.cz už skrytizovaly můj skrypt takže se mrkněte tam a do skriptu přidat pouze tu maškarádu a mělo by to chodit... ipv6 balíčky nepotřebujete pokud nepoužíváte ipv6 adresy (asi ne používáte určitě ipv4) :-)
21.2.2003 20:40 Aloner | skóre: 24 | blog: Aloner | Praha
Rozbalit Rozbalit vše Jak filtrovat pakety?
Tak presne tenhle problem jsem tady resil nedavno.
A vyresil jsem to spustenim configuracni utilitky
SETUP (jako root) a odskrtnul jsem IPCHAINS a
zasktnul jsem IPTABLES. Od te doby to jede jako fik !
21.2.2003 20:45 Aloner | skóre: 24 | blog: Aloner | Praha
Rozbalit Rozbalit vše Jak filtrovat pakety?
ojoj, nez jsem stihnul odpovedet, uz mne nekdo prebehnul... :-) Moje odpoved patri k prispevku, kde se objevuje ta chybova hlaska...
21.2.2003 21:14 Zdeněk | skóre: 3
Rozbalit Rozbalit vše Jak filtrovat pakety?
Utilitka "setup" mi nabízí jen ipchains. Podle iptables-howto mi teď není tak úplně jasné, kterou že verzi jádra vlastně iptables potřebují. Já mám momentálně k dispozici distribuci RH 7.0 s jádrem 2.2.16-22, 2cd pack od cpress.cz a iptables jsou součástí instalace, ale různé zdroje na webu uvádějí, že iptables vyžadují jádro 2.4. Takže jsem z toho "volaaký zmetený" :-) Jak tedy zjistím, jestli můžu na své distribuci používat ipchains nebo iptables?
21.2.2003 21:33 Aloner | skóre: 24 | blog: Aloner | Praha
Rozbalit Rozbalit vše Jak filtrovat pakety?
Mam pocit, ze featury okolo IPTABLES jsou vymozenosti az jader 2.4.x
21.2.2003 23:08 Zdeněk | skóre: 3
Rozbalit Rozbalit vše Jak filtrovat pakety?
Ano, většina zdrojů to tak uvádí. Tak zkusím laborovat s ipchains. Díky všem za názory i za pomoc!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.