Odziedziczyłem serwer na Debianie 6.0 oraz działający na nim firewall zbudowany w oparciu o iptables, pełniący w firmie rolę bramy internetowej. W związku z tym, że moja wiedza o iptables jest podstawowa nie zmieniałem pliku z regułami. Mam problem z połączeniem się z zewnątrz poprzez ssh na porcie 7000 na jedną z maszyn wewnątrz sieci pomimo następującego wpisu w firewallu:
Kod: Zaznacz cały
iptables -t nat -A PREROUTING -p tcp -d 178.76.9.2 --dport 7000 -j DNAT --to 192.168.10.101:22
iptables -A FORWARD -p tcp -d 192.168.10.101 --dport 22 -j ACCEPT
Kod: Zaznacz cały
#!/bin/sh
IPTABLES=/sbin/iptables
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ipt_recent
modprobe ipt_mac
modprobe ip_conntrack
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
modprobe iptable_mangle
modprobe ipt_MASQUERADE
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#Czyszczenie wszelkich [B]reguł[/B]
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
iptables -F PREROUTING -t nat
iptables -F POSTROUTING -t nat
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
# ustawienie polityki działania
iptables -P INPUT DROP
iptables -A INPUT -p igmp -j DROP
iptables -P FORWARD DROP
iptables -A FORWARD -p igmp -j DROP
iptables -P OUTPUT DROP
iptables -A OUTPUT -p igmp -j DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P INPUT DROP
# zezwolenie na ruch dla interfejsów pętli zwrotnej
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
iptables -I INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -I OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -I INPUT -i lo -m state --state ESTABLISHED,RELATED -j ACCEPT
## Zezwolenie na ruch juz nawiazany
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
################ DNS ##################################
iptables -A INPUT -i eth0 -s 212.74.32.1 -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.32.1 -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.33.1 -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.33.1 -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.34.50 -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.34.50 -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.34.49 -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 212.74.34.49 -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --sport 1024: --source 192.168.10.0/24 --dport 53 --destination 192.168.10.3 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --sport 1024: --source 192.168.10.0/24 --dport 53 --destination 192.168.10.3 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --sport 1024: --source 172.17.0.0/24 --dport 53 --destination 172.17.0.1 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --sport 1024: --source 172.17.0.0/24 --dport 53 --destination 172.17.0.1 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --sport 1024: --source 172.17.1.0/24 --dport 53 --destination 172.17.1.1 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --sport 1024: --source 172.17.1.0/24 --dport 53 --destination 172.17.1.1 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --sport 1024: --source 172.17.100.0/24 --dport 53 --destination 172.17.100.1 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --sport 1024: --source 172.17.100.0/24 --dport 53 --destination 172.17.100.1 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 53 -j ACCEPT
# blokowanie pakietów INVALID
$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
# blokowanie pakietów z błędnie ustawionymi flagami
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
# połączenie FTP Pasive
# dobry # iptables -A FORWARD -p tcp --sport 1024:60000 --dport 40000:60000 -m state --state NEW -j ACCEPT
#
iptables -A FORWARD -o eth0 -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport ftp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport ftp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport ftp-data -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport ftp-data -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 1024:60000 --dport 40000:60000 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 1024:60000 --dport 40000:60000 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Fragments : Don't trust the little buggers. Send 'em to hell.
iptables -A INPUT -i eth0 -f -j LOG --log-level debug --log-prefix "IPTABLES FRAGMENTS: "
iptables -A INPUT -i eth0 -f -j DROP
iptables -A FORWARD -i eth0 -f -j LOG --log-level debug --log-prefix "IPTABLES FRAGMENTS: "
iptables -A FORWARD -i eth0 -f -j DROP
# Refuse spoofed packets claiming to be the loopback
iptables -A INPUT -i eth0 -d 127.0.0.0/8 -j DROP
iptables -A OUTPUT -o eth0 -s 127.0.0.0/8 -j DROP
iptables -A FORWARD -i eth0 -d 127.0.0.0/8 -j DROP
iptables -A FORWARD -o eth0 -s 127.0.0.0/8 -j DROP
# Odrzucanie odpowiedzi na zapytania auth - przyspieszanie połączeń ftp
iptables -A OUTPUT -p TCP -s 0/0 --destination-port 113 -j REJECT
iptables -A INPUT -p TCP -s 0/0 --destination-port 113 -j REJECT
iptables -A FORWARD -p TCP -s 0/0 --destination-port 113 -j REJECT
# Blokowanie Lan-menagera
iptables -I INPUT -p tcp --dport 135:139 -j DROP
iptables -I INPUT -p udp --dport 135:139 -j DROP
iptables -I INPUT -p tcp --dport 445 -j DROP
iptables -I INPUT -p udp --dport 445 -j DROP
iptables -A INPUT -p tcp --dport 5060 -j DROP
iptables -A INPUT -p udp --dport 5060 -j DROP
iptables -I OUTPUT -p tcp --dport 135:139 -j DROP
iptables -I OUTPUT -p udp --dport 135:139 -j DROP
iptables -I FORWARD -p tcp --dport 135:139 -j DROP
iptables -I FORWARD -p udp --dport 135:139 -j DROP
iptables -I FORWARD -p tcp --dport 445 -j DROP
iptables -I FORWARD -p udp --dport 445 -j DROP
iptables -I FORWARD -p tcp --dport 1433 -j DROP
iptables -I FORWARD -p udp --dport 1433 -j DROP
iptables -I FORWARD -p tcp --dport 1434 -j DROP
iptables -I FORWARD -p udp --dport 1434 -j DROP
iptables -A FORWARD -p tcp --dport 5060 -j DROP
iptables -A FORWARD -p udp --dport 5060 -j DROP
iptables -A FORWARD -p tcp --dport 6968 -j DROP
iptables -A FORWARD -p udp --dport 6968 -j DROP
iptables -A FORWARD -p tcp --dport 1080 -j DROP
iptables -A FORWARD -p udp --dport 1080 -j DROP
iptables -A FORWARD -p tcp --dport 515 -j DROP
iptables -A FORWARD -p udp --dport 515 -j DROP
iptables -t filter -A FORWARD -p udp --dport 135:139 -j DROP
iptables -t filter -A FORWARD -p udp --dport 135:139 -j DROP
# obsługa icmp
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 3 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -m pkttype --pkt-type broadcast -j DROP
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP
$IPTABLES -A FORWARD -s 0/0 -p udp -m pkttype --pkt-type broadcast -j DROP
$IPTABLES -A FORWARD -s 0/0 -p icmp -f -j DROP
$IPTABLES -A FORWARD -p icmp -j DROP
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j DROP
# zezwolenie na wyjscie z bramy do Internetu
$IPTABLES -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
# Utworzenie dostepu do wymaganych uslug
##############################################################################################
[B]# przekierowanie - dostep zdalny po ssh do serwera wewnetrznego
iptables -t nat -A PREROUTING -p tcp -d 178.76.9.2 --dport 7000 -j DNAT --to 192.168.10.101:22
iptables -A FORWARD -p tcp -d 192.168.10.101 --dport 22 -j ACCEPT
# przekierowanie polaczen z internetu na serwer WWW
iptables -t nat -A PREROUTING -p tcp -d 178.76.9.26 --dport 80 -j DNAT --to 192.168.10.101:80
iptables -A FORWARD -p tcp -d 192.168.10.101 --dport 80 -j ACCEPT[/B]
# wlaczenie maskarady
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.17.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.17.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.17.100.0/24 -j MASQUERADE
# pozwolenie na nawiazanie polaczenia do WWW na bramie od strony sieci wewentrznej
iptables -A INPUT -p tcp -m state --state NEW --source 192.168.10.0/24 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --source 172.17.1.0/24 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --source 172.17.0.0/24 --dport 80 -j ACCEPT
## Logowanie pakietow
iptables -t nat -A PREROUTING -i eth1 -p tcp -j LOG -m state --state NEW --log-level 7 --log-prefix "Logowanie userow pre tcp "
iptables -t nat -A PREROUTING -i eth1 -p udp -j LOG -m state --state New --log-level 7 --log-prefix "Logowanie userow pre udp "
iptables -t nat -A PREROUTING -i eth1 -p icmp -j LOG -m state --state New --log-level 7 --log-prefix "Logowanie userow pre icmp "
iptables -t nat -A POSTROUTING -o eth0 -p tcp -j LOG -m state --state NEW --log-level 7 --log-prefix "Logowanie userow post tcp "
iptables -t nat -A POSTROUTING -o eth0 -p udp -j LOG -m state --state New --log-level 7 --log-prefix "Logowanie userow post udp "
iptables -t nat -A POSTROUTING -o eth0 -p icmp -j LOG -m state --state New --log-level 7 --log-prefix "Logowanie userow post icmp "
iptables -t filter -A FORWARD -o eth0 -p tcp -j LOG -m state --state NEW --log-level 7 --log-prefix "Logowanie userow forw tcp "
iptables -t filter -A FORWARD -o eth0 -p tcp -j LOG -m state --state NEW --log-level 7 --log-prefix "Logowanie userow forw tcp "
iptables -t filter -A FORWARD -o eth0 -p udp -j LOG -m state --state New --log-level 7 --log-prefix "Logowanie userow forw udp "
#UWAGA, wylaczylem, ale nie dziala - do poprawki
#iptables -I FORWARD -p tcp --dport 25 -syn-mlimit --limit 1/s --limit-burst 5 -j LOG --log-level 7 --log-prefix "Trojan "
echo 1 > /proc/sys/net/ipv4/ip_forward
# i wszystko co ponadto -- KILL
$IPTABLES -A FORWARD -j DROP
$IPTABLES -t filter -A FORWARD -j DROP
$IPTABLES -A INPUT -j DROP
$IPTABLES -A OUTPUT -j DROP
iptables -A FORWARD -p udp -j DROP
iptables -A INPUT -p udp -i eth1 -d 255.255.255.255 --destination-port 67:68 -j DROP
iptables -A INPUT -p udp -i eth0 -d 255.255.255.255 --destination-port 67:68 -j DROP
route add -net 224.0.0.0 netmask 255.0.0.0 reject