
Im Internet surfen mit Linux über einen Ken ISDN Router.
Datum: Mittwoch, 06.August. @ 10:42:38 CEST Thema: LINUX / UNIX
Vorgeschichte:
Wer sich schon mal in einen Bürohaus gearbeitet hat kennt das bestimmt. Irgendwo auf dem Gang steht eine Windowskiste mit der Software von AVM Names Ken ISDN. Diese Software übernimmt das Routen ins I-Net (Als Proxy) kann zu jeweils einen Rechner eine ssh oder Telnet Verbindung herstellen. Auf dem Ken Router läuft noch ein Mail Server der Mails abholen kann bzw. an einen Mailrelay Server weitleiten zb. der von T-Online.
Wer dann noch einen Router mit Linux und iptables kennt fühlt sich echt ein wenig verarscht, damit man Aber Trotzdem alle Funktionen nutzen kann soll dieses Tutorial zeigen.
Ziel des Tutorials:
Es soll ein eigenes Subnetz mit denn IP-Adressen 192.168.0.* entstehen, welches kommplett von denn anderen Netz getrennt ist. Dafür richten wir einen Internen Router mit Linux und Iptables ein. Auf diesen Router läuft ein eigener DNS und Dhcp Server. Das externe Netz hat die Ip Adressen 192.168.10.* die Ip des Ken Routers ist 192.168.10.8.
Die Ip Adressen unseres Linux Routers ist 192.168.10.88 (extern) und 192.168.0.3 (intern).
Teilnehmer aus dem Netz 192.168.10.* sollen keine Möglichkeit haben in das unsere Subnetz zugelagen. Rechner aus Unserem Netz (192.168.0.*)sollen ebenfalls keine Rechner aus dem Subnetz 192.168.10.* erreichen können, eine Ausnahme ist der Ken Router mit der Ip 192.168.10.8.
Routen setzen:
Damit die Rechner aus dem Netz 192.168.0.1 denn Router auf 192.168.10.8 erreichen können muß auf dem Client Rechner der Default Router 192.168.0.3 (Linux Router) eingetragen werden. Dieses geschiet zur einfacheren Netzkonfiguration mit eine Dhcp Server.
Desweitern wird auf dem Linux Router eine Default Route mit dem Ken Router als GW gesetzt.
DNS
Damit wir nicht jedesmal den Ken Router in Anspruch nehmen haben wir einen Lokalen DNS Server auf dem Router für die IP Bereiche 192.168.0.* installiert als forward DNS ist der Ken Router eingetragen.
Firewall
Die Firewall wurde mit iptables programmiert.
Dabei gilt es zubeachten das man in unseren Fall auch Masquarding machen muß, da wir den Ken Router nur mit der exterenen IP des Linux Routers nutzen dürfen.
Als Hilfe bei des generrierung des Firwall Konzeptes diente das Script von harry.homelinux.org, welches nach unseren Wünschen Angepast und verbessert wurde.
Script:
#!/bin/bash
modprobe ip_tables
modprobe ip_conntrack_irc
if [ "$1" = start ]
then
echo "starte firewall :) script by sademar ( Christian Waldner ) "
echo "die neuste Version giebt es unter http://tip.openpipe.de oder bei harry.homelinux.org (Generrator) ( GPL )"
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
echo 1 >/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null
echo 1 >/proc/sys/net/ipv4/ip_forward 2> /dev/null
echo 1 >/proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
echo 1 >/proc/sys/net/ipv4/ip_dynaddr 2> /dev/null
#MAX. 500/Sek. (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
# SPEICHERallozierung und -timing für IP-De/-FRAGMENTIERUNG
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time
#TCP-FIN-TIMEOUT zum SCHUTZ vor DENIAL OF SERVICE ATTACKEN SETZEN
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
#TCP-Packete max. 15 mal wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2
# STOP REDIRECTING
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done
# STOP SOURCE ROUTING
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done
# LOG MARTINAS
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null;done
# BOOTP-RELAYING ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done
# PROXY ARP AUSSCHALTEN
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done
#ALLES FLUSHEN (auf null setzen!)
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -X
#defekte pakete verwerfen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#Mein DROPCHAIN :)
iptables -N DROPER
iptables -A DROPER -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP"
iptables -A DROPER -j DROP
#STEALTH SCANS DROPEN
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROPER
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROPER
#SYN UND FIN gesetz (DROPEN!)
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROPER
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROPER
#SYN und RST zusammen gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROPER
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROPER
#FIN und RST zusammen gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROPER
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROPER
#FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROPER
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROPER
#PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROPER
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROPER
#URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROPER
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROPER
#Packete die aus dem Internet kommen und sich als lockale ausgeben Löschen
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
#PORTS für sub7 und backo. netbus STOPEN
iptables -A INPUT -p tcp --dport 6670 -j DROP
iptables -A INPUT -p tcp --dport 6711:6713 -j DROP
iptables -A INPUT -p tcp --dport 12345:12346 -j DROP
iptables -A INPUT -p tcp --dport 20034 -j DROP
iptables -A INPUT -p tcp --dport 31337 -j DROP
#Dienste STOPEN wenn es über eth1 kommt :)
iptables -A INPUT -p tcp -i eth1 --dport 80 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 6000 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 137:139 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 25 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 443 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 11111 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 110 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 111 -j DROP
iptables -A INPUT -p udp -i eth1 --dport 111 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 2049 -j DROP
iptables -A INPUT -p udp -i eth1 --dport 2049 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 8080 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 2219 -j DROP
iptables -A INPUT -p udp -i eth1 --dport 2219 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 1024 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 885 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 631 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 2234:2239 -j DROP
iptables -A INPUT -p tcp -i eth1 --dport 4661:4662 -j DROP
iptables -A INPUT -p udp -i eth1 --dport 4672 -j DROP
#microsoft spione dropen
#alexa
iptables -A INPUT -p tcp -i eth1 -s 209.247.255.131 -j DROP
iptables -A OUTPUT -p tcp -o eth1 -d 209.247.255.131 -j DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -d 209.247.255.131 -j DROP
#msn
iptables -A INPUT -p tcp -i eth1 -s 207.68.172.246 -j DROP
iptables -A OUTPUT -p tcp -o eth1 -d 207.68.172.246 -j DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -d 207.68.172.246 -j DROP
#microsoft
iptables -A INPUT -p tcp -i eth1 -s 207.46.0/24 -j DROP
iptables -A OUTPUT -p tcp -o eth1 -d 207.46.0/24 -j DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -d 207.46.0/24 -j DROP
#bestehende Verbindungen zulassen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ftp
modprobe ip_nat_ftp
iptables -A FORWARD -p tcp -s 192.168.0.0/24 --sport 20 --dport 1024: -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --sport 1024: --dport 20 -o eth1 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.0/24 --sport 1024: --dport 21 -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --sport 21 --dport 1024: -o eth0 -m state --state ESTABLISHED -j ACCEPT
#lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#www
iptables -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT
#https
iptables -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT
#dhcp
iptables -A INPUT -p udp -i eth0 --dport 67 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#ssh
iptables -A OUTPUT -p tcp -o eth1 -s 192.168.10.88 --dport 22 -d 192.168.10.8 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.3 --dport 22 -d 192.168.0.0/24 -j ACCEPT
#PROXY 192.168.10.8
iptables -A OUTPUT -p tcp -o eth1 -s 192.168.10.88 --dport 3128 -d 192.168.10.8 -j ACCEPT
# DER EIGENE SERVER
#ssh
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 -d 192.168.0.3 --sport 1024: --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -s 192.168.0.3 -d 192.168.0.0/24 --sport 22 -j ACCEPT
#webserver
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 -d 192.168.0.3 --sport 1024: --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -s 192.168.0.3 -d 192.168.0.0/24 --sport 80 -j ACCEPT
#WEBMIN
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 -d 192.168.0.1 --sport 1024: --dport 10000 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -s 192.168.0.1 -d 192.168.0.0/24 --sport 10000 -j ACCEPT
#DNS
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 53 -j ACCEPT
#PROXY
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 -d 192.168.0.3 --sport 1024: --dport 3128 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3128 -j ACCEPT
#smtp
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 25 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -j ACCEPT
#POP3
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 110 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -j ACCEPT
file:///usr/share/doc/mozilla-browser/localstart.htm #cups
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --sport 1024: --dport 631 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p udp --sport 1024: --dport 631 -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.3 -d 192.168.0.0/24 -p tcp --sport 631 -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.0.3 -d 192.168.0.0/24 -p udp --sport 631 -j ACCEPT
#DNS
iptables -A OUTPUT -o eth1 -s 192.168.10.88 -p udp --sport 1024: --dport 53 -d 192.168.10.8 -j ACCEPT
iptables -A OUTPUT -o eth1 -s 192.168.10.88 -p tcp --sport 1024: --dport 53 -d 192.168.10.8 -j ACCEPT
#icmp (selber pingen)
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#icmp (anpingbar)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
#icmp
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
#ROUTING
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#Lockale Windowsresorcen nutzen
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --sport 1024: --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s 192.168.0.0/24 --sport 1024: --dport 137:139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -d 192.168.0.3 --dport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -d 192.168.0.3 --dport 137:139 -m state --state ESTABLISHED,RELATED -j ACCEPT
#UNERWÜNSCHTE WINDOWS PACKETE LÖSCHEN AUF eth1
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -p udp --dport netbios-ns -j DROP
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -p udp --dport netbios-dgm -j DROP
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -p tcp --dport netbios-ssn -j DROP
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -j LOG
iptables -A OUTPUT -o eth1 -d 192.168.10.0/24 -j LOG
#ANGREIFER
iptables -A INPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A INPUT -j DROP
#info
iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p udp -j REJECT
iptables -A OUTPUT -j DROP
#Nessus IDS STOPEN
#killall -9 nessusd
#NESSUS IDS STARTEN
#nessusd -D -c /etc/nessus/nessusd.conf
#Ports für Nessus Freischalten
#iptables -A INPUT -i eth0 -p tcp --dport 1241 -j ACCEPT
#iptables -A OUTPUT -o eth0 -p tcp --sport 1241 -j ACCEPT
else if [ "$1" = stop ]
then
echo "stope firewall"
iptables -F
iptables -X
fi
fi
Das wars ...
Viel erfolg beim Testen, bei Fragen wenden sie sich bitte an admin@openpipe.de
Christian Waldner http://openpipe.de
|
|