Stap 11: Firewall-instellingen
Als u niet dat niveau van veiligheid wenst, is er ook een meer eenvoudige firewall script dat is eigenlijk "instellen en vergeten".
U kunt kiezen tussen firewall.advanced of firewall.simple, en vervolgens aanpassen. Credits gaan naar Guillaume Kaddouch
A - geavanceerde regelset
Dit script doet in feite het volgende:
-Blokken inkomende/uitgaande ongeldige TCP vlaggen (zelfs vanaf gevestigde stromen)
-Optimaliseert DNS-query's (IP TOS-veld)
-Identificeert verkeer door stroom type, en komt overeen met het op tegen een regelset
-Adds willekeur aan de NAT-proces
-Alleen toestaan paar uitgaande standaardpoorten (http, https, ftp)
-Registreert nauwkeurig wat is gedaald en log overstromingen voorkomen
-Drops binnenkomende pakketten met lage TTL (zou kunnen betekenen een ttl verstrijken aanval of een traceroute)
-Detect & malware uitgaande verbindingen worden geblokkeerd.
$ sudo touch /etc/firewall.advanced
$ sudo touch /etc/firewall.flows
$ sudo chmod u + x /etc/firewall.*
De stromen-identificatie is een lijst van regels leiden van het verkeer op de overeenkomende aangepaste keten (bijvoorbeeld FORWARD_OUT, FORWARD_IN, LAN_IN, enz...). Deze lijst van regels, eenmaal opgespoord en gevalideerd, mogen achteraf niet worden gewijzigd. Ook, als ze wat ruimte in het script gebruiken en zou saai om te lezen, maakt de filterregels moeilijker te lezen als ze op hetzelfde script zijn. Dat is waarom ik ze in een apart bestand, dat roep ik enkel van het hoofdscript verplaatsen:
$ sudo vi /etc/firewall.flows
#! / bin/bash
# "Datum augustus 2012
# "Auteur: Guillaume Kaddouch
# "Versie: 1.0 stroomt
#######################
# STROOM IDENTIFICATIE #
##############################################################################################
# NAT_OUT
iptables -t nat - A POSTROUTING -o $LAN -p tcp - ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j NAT_OUT
iptables -t nat - A POSTROUTING -o $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j NAT_OUT
iptables -t nat - A POSTROUTING -o $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j NAT_OUT
# FORWARD_OUT
iptables - A FORWARD -i $LAN -p tcp - ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j FORWARD_OUT
iptables - A FORWARD -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j FORWARD_OUT
iptables - A FORWARD -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j FORWARD_OUT
# FORWARD_IN
iptables - A FORWARD -i $LAN -p tcp - ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j FORWARD_IN
iptables - A FORWARD -i $LAN -p udp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j FORWARD_IN
iptables - A FORWARD -i $LAN -p icmp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-type unicast -m addrtype! --src-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j FORWARD_IN
# LAN_IN
iptables - A INPUT -i $LAN -p tcp - ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j LAN_IN
iptables - A INPUT -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j LAN_IN
iptables - A INPUT -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state--staat nieuwe, gevestigd zijn, RELATED -j LAN_IN
# LAN_BROADCAST
iptables - A INPUT -i $LAN -p tcp - ipv4 \
! -d $RSS -m pkttype--pkt-Cell broadcast -m addrtype--dst-type BROADCAST\
-m staat! --state ongeldig -j LAN_BROADCAST
iptables - A INPUT -i $LAN -p udp--ipv4 \
! -d $RSS -m pkttype--pkt-Cell broadcast -m addrtype--dst-type BROADCAST\
-m staat! --state ongeldig -j LAN_BROADCAST
iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -d $RSS -m pkttype--pkt-Cell broadcast -m addrtype--dst-type BROADCAST\
-m staat! --state ongeldig -j LAN_BROADCAST
# INTERNET_GATEWAY
iptables - A INPUT -i $LAN -p tcp - ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j INTERNET_GATEWAY
iptables - A INPUT -i $LAN -p udp--ipv4! \
-s $LAN_SUBNET -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j INTERNET_GATEWAY
iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype--pkt-type unicast -m addrtype--dst-type LOCAL\
-m state - staat en zijn gevestigd, verbonden -j INTERNET_GATEWAY
# GATEWAY_LAN
iptables - een OUTPUT -o $LAN -p tcp - ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_LAN
iptables - een OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_LAN
iptables - een OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_LAN
# GATEWAY_BROADCAST
iptables - een OUTPUT -o $LAN -p tcp - ipv4 \
-s $RSS -m pkttype--pkt-type uitzending -m addrtype--dst-type BROADCAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_BROADCAST
iptables - een OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS -m pkttype--pkt-type uitzending -m addrtype--dst-type BROADCAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_BROADCAST
iptables - een OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS -m pkttype--pkt-type uitzending -m addrtype--dst-type BROADCAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_BROADCAST
# GATEWAY_INTERNET
iptables - een OUTPUT -o $LAN -p tcp - ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_INTERNET
iptables - een OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_INTERNET
iptables - een OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-type unicast -m addrtype--dst-type UNICAST\
-m state--staat nieuwe, gevestigd zijn, RELATED -j GATEWAY_INTERNET
##############################################################################################
Nu maken we de filter regels script eerder sprak:
$ sudo vi /etc/firewall.advanced
#! / bin/bash
# "Datum augustus 2012
# "Auteur: Guillaume Kaddouch
# "URL: http://networkfilter.blogspot.com
# "Versie: geavanceerde 1.0
echo "Instellen van variabelen"
# VARIABELEN AAN TE PASSEN AAN UW NETWERK
LAN = "eth0"
LAN_SUBNET="192.168.1.0/24"
DHCP_RANGE = "192.168.1.10-192.168.1.20"
DNS_SERVER1 = "8.8.8.8"
DNS_SERVER2 = "208.67.222.222"
RSS = "192.168.1.3"
MODEM_ROUTER = "192.168.1.1"
UNPRIV_PORTS = "1024:65535"
SSH = "15507"
NTP_SERVER = "65.55.21.22"
echo "Flushing bestaande ketens en regels..."
# FLUSHING kettingen & regels
iptables -t filteren -F
iptables -t filteren -X
iptables -t nat -F
iptables -t nat -X
iptables -t Mangel -F
iptables -t Mangel -X
echo "Instellen standaardbeleid"
# STANDAARD BELEID
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P vooruit DROP
# LOOPBACK
iptables - A INPUT -i lo -j ACCEPT
iptables - A uitgang -o lo -j ACCEPT
echo "Maken ketens"
# KETTINGEN
iptables -N FORWARD_OUT
iptables -N FORWARD_IN
iptables -N LAN_IN
iptables -N LAN_BROADCAST
iptables -N GATEWAY_LAN
iptables -N GATEWAY_BROADCAST
iptables -N GATEWAY_INTERNET
iptables -N INTERNET_GATEWAY
iptables -t nat -N NAT_OUT
# KETEN TE CONTROLEREN, MELDT U ZICH, EN OPTIMALISEREN
iptables -N CHECK_TCP_FLAGS
iptables -N LOGDROP_TCP_FLAGS
iptables -N LOGDROP_MALWARE
iptables -N LOGDROP_BADPORT
iptables -t Mangel -N FAST_DNS
echo "Laden regels"
#################################
# PROTOCOL CHECK & optimalisatie #
##############################################################################################
iptables - A FORWARD -i $LAN -p tcp - ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp - ipv4 -j CHECK_TCP_FLAGS
iptables -t Mangel - een OUTPUT -o $LAN -p tcp - ipv4 -s $RSS -m pkttype--pkt-type unicast-dport domein -m \
State--staat nieuwe, gevestigd zijn, RELATED -j FAST_DNS
iptables -t Mangel - een OUTPUT -o $LAN -p udp--ipv4 -s $RSS -m pkttype--pkt-type unicast-dport domein -m \
State--staat nieuwe, gevestigd zijn, RELATED -j FAST_DNS
##############################################################################################
###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen ACK, FIN FIN -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp ACK--tcp-vlaggen, URG URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen FIN, RST FIN, RST -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen SYN, FIN SYN, FIN -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle alle -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle NONE -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen al FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle SYN, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle SYN, RST, ACK, FIN, URG -j LOGDROP_TCP_FLAGS
iptables - A LOGDROP_TCP_FLAGS -m limit--limiet 1/s - j LOG--log-tcp-opties--log-prefix \
"[IPTABLES: SLECHTE TCP VLAGGEN]"
iptables - A LOGDROP_TCP_FLAGS -j DROP
##############################################################################################
############
# FAST_DNS #
##############################################################################################
iptables -t Mangel - een FAST_DNS -p udp -d $DNS_SERVER1 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p udp -d $DNS_SERVER2 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS--set-tos minimaliseren-vertraging
##############################################################################################
# STROOM IDENTIFICATIE #
Bron "/ etc/firewall.flows"
############
# NAT_OUT #
##############################################################################################
iptables -t nat - A NAT_OUT -j MASQUERADE--willekeurige
##############################################################################################
###############
# TOEKOMEN UIT #
##############################################################################################
# Potentiële Malware verkeer
# Als niet liet hier, ze zou hebben geblokkeerd door het standaardbeleid
# Echter we de gelegenheid om hen te redden in een "bad_traffic"-tabel
# Deze tabel stelt ons in staat naar blok LAN's hosts wilt te veel malware poorten openen
# Aldus potentieel besmet (en vereisen een antivirus analyse)
#
# Zodra een LAN host heeft getroffen 5 keer regels hieronder binnen 2mn, DROP alle forward uit van die host
iptables - A FORWARD_OUT -p tcp -m recente--bad_traffic--rcheck--rttl--hitcount 5--seconden 120 -j naam \
LOGDROP_MALWARE
iptables - A FORWARD_OUT -p tcp-dport 139 - m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A FORWARD_OUT -p tcp-dport 445 - m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A FORWARD_OUT -p tcp-dport 135 - m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A FORWARD_OUT -p tcp-dport 6667 - m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A FORWARD_OUT -p tcp-dport 1433:1434 -m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A FORWARD_OUT -p udp-dport 1433:1434 -m recente--bad_traffic--naam instellen -j LOGDROP_BADPORT
iptables - A LOGDROP_BADPORT -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: slechte poort]"
iptables - A LOGDROP_BADPORT -j DROP
iptables - A LOGDROP_MALWARE -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: besmette gastheer]"
iptables - A LOGDROP_MALWARE -j DROP
# Toegestane poorten
iptables - A FORWARD_OUT -p tcp - sport $UNPRIV_PORTS -m multipoort--dports ftp, http, https, 8080 -j ACCEPT
# Verbindingen via gevestigd en met betrekking tot andere havens, bijvoorbeeld voor FTP nodig
iptables - A FORWARD_OUT -p tcp - sport $UNPRIV_PORTS dport $UNPRIV_PORTS -m state - state \
GEVESTIGD, RELATED -j ACCEPT
# NTP aanvragen (het wijzigen van de variabele aan het begin)
iptables - A FORWARD_OUT -p udp -d $NTP_SERVER--sport ntp dport ntp -j ACCEPT
# Echo request
iptables - A FORWARD_OUT -p icmp -m icmp--icmp-type echo-request - j ACCEPT
# Reject verkeer die wij het niet willen, vele opties hieronder (de bijbehorende variabelen maken)
# iptables - A FORWARD_OUT -p tcp-dport $port_of_a_host_to_block -j verwerpen--afwijzen-met \
# icmp-host-verboden
# iptables - A FORWARD_OUT -d $subnet_to_block -j verwerpen--afwijzen-met icmp-net-verboden
# Blokkeren & Meld u alles
iptables - A FORWARD_OUT -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: FORWARD_OUT]"
iptables - A FORWARD_OUT -j DROP
##############################################################################################
##############
# FORWARD_IN #
##############################################################################################
# Laat doorsturen van binnenkomende gevestigd of verwante stromen, met een TTL met > 10
iptables - A FORWARD_IN -m ttl--ttl-gt 10 -j ACCEPT
# Blokkeren & Meld u alles
iptables - A FORWARD_IN -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: FORWARD_IN]"
iptables - A FORWARD_IN -j DROP
##############################################################################################
##########
# LAN_IN #
##############################################################################################
# DHCP-uitzendingen van binnenuit toestaan
iptables - A LAN_IN -i $LAN -p udp--sport 67:68 dport 67:68 -j ACCEPT
# DNS-query's via een LAN toestaan aan de Raspberry veiligheid Syste,
iptables - A LAN_IN -i $LAN -p udp--sport $UNPRIV_PORTS dport 53 -j ACCEPT
iptables - A LAN_IN -i $LAN -p tcp - sport $UNPRIV_PORTS dport 53 -j ACCEPT
# SSH verbindingen
# (u kunt een selectievakje toevoegen voor de externe OS)
iptables - A LAN_IN -i $LAN -p tcp - sport $UNPRIV_PORTS dport $SSH -j ACCEPT
# ICMP LAN (Type 3 = onbereikbaar [destination|port|protocol])
iptables - A LAN_IN -p icmp -m icmp--icmp-type echo-request - j ACCEPT
iptables - A LAN_IN -p icmp -m icmp--icmp-type 3 -j ACCEPT
# Blokkeren & Meld u alles
iptables - A LAN_IN -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: LAN_IN]"
iptables - A LAN_IN -j DROP
##############################################################################################
##################
# LAN_BROADCAST #
##############################################################################################
# DHCP-uitzendingen van binnenuit toestaan
iptables - A LAN_BROADCAST -i $LAN -p udp--sport 67:68 dport 67:68 -j ACCEPT
# Blokkeren alles (niet de moeite om te melden van broadcast-verkeer)
iptables - A LAN_BROADCAST -j DROP
##############################################################################################
###########################
# INTERNET_GATEWAY #
##############################################################################################
# Reeds opgerichte verbindingen van RSS toestaan met Internet om terug te komen op RSS
iptables - A INTERNET_GATEWAY -p all -j ACCEPT
##############################################################################################
########################
# CHAINE GATEWAY_LAN #
##############################################################################################
# Blok potentiële ICMP redirect verzonden vanuit ons (kan worden veroorzaakt door een onjuist geconfigureerde sysctl)
iptables - A GATEWAY_LAN -p icmp -m icmp--icmp-type redirect -m limiet--limiet 1/s - j LOG--log-prefix \
"[IPTABLES: ICMP REDIRECT]"
iptables - A GATEWAY_LAN -p icmp -m icmp---icmp-type omleiden -j DROP
# Gevestigd LAN verbindingen met framboos terug te komen naar het LAN toestaan
iptables - A GATEWAY_LAN -p tcp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
iptables - A GATEWAY_LAN -p udp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
iptables - A GATEWAY_LAN -p icmp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
# Toestaan DHCP gerelateerde verkeer
iptables - A GATEWAY_LAN -p udp--sport 67:68 dport 67:68 -j ACCEPT
# Raspi ping de LAN toestaan
iptables - een GATEWAY_LAN -p icmp -m icmp---icmp-type echo-request - m state - state NEW -j ACCEPT
# Blokkeren & Meld u alles
iptables - A GATEWAY_LAN -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_LAN]"
iptables - A GATEWAY_LAN -j DROP
##############################################################################################
#####################
# GATEWAY_BROADCAST #
##############################################################################################
# Toestaan van de uitgezonden DHCP-antwoorden van RSS
iptables - A GATEWAY_BROADCAST -p udp--sport 67:68 dport 67:68 -j ACCEPT
# Blokkeren & Meld u alles
iptables - A GATEWAY_BROADCAST -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_BROADCAST]"
iptables - A GATEWAY_BROADCAST -j DROP
##############################################################################################
####################
# GATEWAY_INTERNET #
##############################################################################################
# Nieuwe verbindingen toestaan van framboos (nodig voor updates, installeren van pakketten, etc...)
# Ik voer geen updates de nacht, dus er is geen noodzaak voor de regel als actieve 24/24
iptables - A GATEWAY_INTERNET -p tcp -m multipoort--dports ftp, http, https -m 09:00--timestop--Tijdstart tijd \
23:00 -j ACCEPT
# Résolutions DNS
iptables - A GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER1 dport domein -j ACCEPT
iptables - A GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER2 dport domein -j ACCEPT
iptables - A GATEWAY_INTERNET -p tcp - sport $UNPRIV_PORTS -d $DNS_SERVER1 dport domein -j ACCEPT
iptables - A GATEWAY_INTERNET -p tcp - sport $UNPRIV_PORTS -d $DNS_SERVER2 dport domein -j ACCEPT
# Gebeurt wanneer het herladen van firewall-regels
iptables - A GATEWAY_INTERNET -p icmp -m icmp--icmp-type poort-onbereikbaar - d $DNS_SERVER1 -j DROP
iptables - A GATEWAY_INTERNET -p icmp -m icmp--icmp-type poort-onbereikbaar - d $DNS_SERVER2 -j DROP
# NTP toestaan
iptables - A GATEWAY_INTERNET -p udp-dport ntp -j ACCEPT
# Blokkeren & Meld u alles
iptables - A GATEWAY_INTERNET -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_INTERNET]"
iptables - A GATEWAY_INTERNET -j DROP
##############################################################################################
## REGELS EINDE ##
rules_number ='egrep '\-j' /etc/firewall.advanced | WC -l '
flows_number ='egrep '\-j' /etc/firewall.flows | WC -l '
total_rules = $((rules_number + flows_number))
echo ""
echo "$total_rules regels geladen."
echo ""
B - basic regelset
Dit script doet in feite het volgende:
-Blokken inkomende/uitgaande ongeldige TCP vlaggen (zelfs vanaf gevestigde stromen)
-Optimaliseert DNS-query's (IP TOS-veld)
-Adds willekeur aan de NAT-proces
-Drops binnenkomende pakketten met lage TTL (zou kunnen betekenen een ttl verstrijken aanval of een traceroute)
Deze regelset kunt alles van uw LAN worden doorgestuurd op Internet, dus theoretisch niet vereist achteraf worden aangepast. Als u toevoegen van een extra laag van veiligheid van het netwerk voor je grootmoeder of ouders bijvoorbeeld, wilt maar dat u niet verwachten ze dat te wijzigen van iptables rules(!), denk ik dat deze regelset geschikter is.
$ sudo vi /etc/firewall.simple
#! / bin/bash
# Datum augustus 2012
# Auteur: Guillaume Kaddouch
# URL: http://networkfilter.blogspot.com
# Version: Standaard 1.0
echo "Instellen van variabelen"
# VARIABELEN AAN TE PASSEN AAN UW NETWERK
LAN = "eth0"
LAN_SUBNET="192.168.1.0/24"
DHCP_RANGE = "192.168.1.10-192.168.1.20"
DNS_SERVER1 = "8.8.8.8"
DNS_SERVER2 = "208.67.222.222"
RSS = "192.168.1.3"
MODEM_ROUTER = "192.168.1.1"
UNPRIV_PORTS = "1024:65535"
SSH = "15507"
NTP_SERVER = "65.55.21.22"
echo "Flushing bestaande ketens en regels..."
# FLUSHING kettingen & regels
iptables -t filteren -F
iptables -t filteren -X
iptables -t nat -F
iptables -t nat -X
iptables -t Mangel -F
iptables -t Mangel -X
echo "Instellen standaardbeleid"
# STANDAARD BELEID
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P vooruit DROP
# LOOPBACK
iptables - A INPUT -i lo -j ACCEPT
iptables - A uitgang -o lo -j ACCEPT
echo "Maken ketens"
# KETEN TE CONTROLEREN, MELDT U ZICH, EN OPTIMALISEREN
iptables -N CHECK_TCP_FLAGS
iptables -N LOGDROP_TCP_FLAGS
iptables -t Mangel -N FAST_DNS
echo "Laden regels"
#################################
# PROTOCOL CHECK & optimalisatie #
##############################################################################################
iptables - A FORWARD -i $LAN -p tcp - ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp - ipv4 -j CHECK_TCP_FLAGS
iptables -t Mangel - een OUTPUT -o $LAN -p tcp - ipv4 -s $RSS -m pkttype--pkt-type unicast-dport domein \
-m state--staat nieuwe, gevestigd zijn, RELATED -j FAST_DNS
iptables -t Mangel - een OUTPUT -o $LAN -p udp--ipv4 -s $RSS -m pkttype--pkt-type unicast-dport domein \
-m state--staat nieuwe, gevestigd zijn, RELATED -j FAST_DNS
##############################################################################################
###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen ACK, FIN FIN -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp ACK--tcp-vlaggen, URG URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen FIN, RST FIN, RST -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen SYN, FIN SYN, FIN -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp--tcp-vlaggen SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle alle -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle NONE -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen al FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle SYN, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - A CHECK_TCP_FLAGS -p tcp---tcp-vlaggen alle SYN, RST, ACK, FIN, URG -j LOGDROP_TCP_FLAGS
iptables - A LOGDROP_TCP_FLAGS -m limit--limiet 1/s - j LOG--log-tcp-opties--log-prefix \
"[IPTABLES: SLECHTE TCP VLAGGEN]"
iptables - A LOGDROP_TCP_FLAGS -j DROP
##############################################################################################
############
# FAST_DNS #
##############################################################################################
iptables -t Mangel - een FAST_DNS -p udp -d $DNS_SERVER1 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p udp -d $DNS_SERVER2 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS--set-tos minimaliseren-vertraging
iptables -t Mangel - een FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS--set-tos minimaliseren-vertraging
##############################################################################################
#######
# NAT #
##############################################################################################
iptables -t nat - A POSTROUTING -o $LAN! -d $LAN_SUBNET -m state - state NEW, gevestigde, RELATED -j MASQUERADE\
--willekeurige
##############################################################################################
###########
# VOORWAARTSE #
##############################################################################################
# Toestaan uitgaande vooruit van een verbinding
iptables - A FORWARD -p tcp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
iptables - A FORWARD -p udp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
iptables - A FORWARD -p icmp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
# Toestaan binnenkomende vooruit van gevestigde of verwante verbindingen met TTL groter is dan 10
iptables - A FORWARD -p tcp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state - staat en zijn gevestigd, verbonden -m \
TTL--ttl-gt 10 -j ACCEPT
iptables - A FORWARD -p udp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state - staat en zijn gevestigd, verbonden -m \
TTL--ttl-gt 10 -j ACCEPT
iptables - A FORWARD -p icmp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state - staat en zijn gevestigd, verbonden -m \
TTL--ttl-gt 10 -j ACCEPT
##############################################################################################
#########
# INPUT #
##############################################################################################
# DHCP-uitzendingen van binnenuit toestaan
iptables - A INPUT -i $LAN -p udp -s $LAN_SUBNET--sport 67:68 dport 67:68 -j ACCEPT
# DNS-query's van het LAN toestaan om de framboos
iptables - A INPUT -i $LAN -p udp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS dport 53 -j ACCEPT
iptables - A INPUT -i $LAN -p tcp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS dport 53 -j ACCEPT
# SSH verbindingen
iptables - A INPUT -i $LAN -p tcp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS dport $SSH -j ACCEPT
# ICMP LAN (Type 3 = onbereikbaar [destination|port|protocol])
iptables - A INPUT -p icmp -m icmp--icmp-type echo-request - s $LAN_SUBNET -d $RSS -j ACCEPT
iptables - A INPUT -p icmp -m icmp--icmp-type 3 -s $LAN_SUBNET -d $RSS -j ACCEPT
# Reeds opgerichte verbindingen van framboos toestaan met Internet terugkomen naar itl
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p tcp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p udp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p icmp -m state - staat en zijn gevestigd, RELATED -j ACCEPT
##############################################################################################
###########
# OUTPUT #
##############################################################################################
# Blok potentiële ICMP redirect verzonden vanuit ons (kan worden veroorzaakt door een onjuist geconfigureerde sysctl)
iptables - een OUTPUT -o $LAN -p icmp -m icmp--icmp-type redirect -m limiet--limiet 1/s - j LOG--log-prefix \
"[IPTABLES: ICMP REDIRECT]"
iptables - A uitgang -o $LAN -p icmp -m icmp--icmp-type redirect -j DROP
# Verbindingen via LAN gevestigd aan de Raspi terugkomen naar het LAN
iptables - A OUTPUT -o $LAN -p tcp -s $RSS -d $LAN_SUBNET -m state - staat die gevestigd zijn, RELATED -j ACCEPT
iptables - A OUTPUT -o $LAN -p udp -s $RSS -d $LAN_SUBNET -m state - staat die gevestigd zijn, RELATED -j ACCEPT
iptables - A OUTPUT -o $LAN -p icmp -s $RSS -d $LAN_SUBNET -m state - staat die gevestigd zijn, RELATED -j ACCEPT
# Toestaan DHCP gerelateerde verkeer
iptables - een OUTPUT -o $LAN -p udp -s $RSS -d $LAN_SUBNET--sport 67:68 dport 67:68 -j ACCEPT
# Framboos ping de LAN toestaan
iptables - A OUTPUT -o $LAN -p icmp -m icmp--icmp-type echo-request - s $RSS -d $LAN_SUBNET -m state \
--staat NEW -j ACCEPT
# Nieuwe verbindingen toestaan van framboos (nodig voor updates, installeren van pakketten, etc...)
iptables - A uitgang -o $LAN -p tcp -s $RSS! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
iptables - A uitgang -o $LAN -p udp -s $RSS! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
iptables - A uitgang -o $LAN -p icmp -s $RSS! -d $LAN_SUBNET -m state - state NEW, gevestigd zijn, RELATED \
-j ACCEPT
# DNS-aanvragen
iptables - een OUTPUT -o $LAN -p udp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER1 dport domein -j ACCEPT
iptables - een OUTPUT -o $LAN -p udp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER2 dport domein -j ACCEPT
iptables - een OUTPUT -o $LAN -p tcp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER1 dport domein -j ACCEPT
iptables - een OUTPUT -o $LAN -p tcp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER2 dport domein -j ACCEPT
# NTP toestaan
iptables - A uitgang -o $LAN -p udp-dport ntp -s $RSS -j ACCEPT
##############################################################################################
iptables - A INPUT -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: INPUT DROP]"
iptables - A INPUT -j DROP
iptables - een OUTPUT -m limit--limiet 1/s - j LOG--log-prefix "[IPTABLES: daling van de uitvoer]"
iptables - een OUTPUT -j DROP
iptables - A FORWARD -m limiet--limiet 1/s - j LOG--log-prefix "[IPTABLES: voorwaartse DROP]"
iptables - A FORWARD -j DROP
## REGELS EINDE ##
rules_number ='egrep '\-j' /etc/firewall.simple | WC -l '
echo ""
echo "$rules_number regels geladen."
echo ""
Deze twee regelsets zijn slechts voorbeelden, hebt u één klaar gebruiken van uw eigen.
Om te laden iptables regels bij het opstarten, is een manier om te doen als volgt:
$ sudo vi /etc/rc.local
echo "Laden iptables regels"
/ etc/firewall. VERSIE >> / dev/nul
VERSIE vervangen door "advanced" of "eenvoudige", zonder aanhalingstekens, afhankelijk van het script dat u gebruikt.
Als u weergeven van de waarschuwingen in realtime wilt, typt u het volgende:
$ sudo tail -f /var/log/iptables.log