Raspberry Pi brandvägg och Intrusion Detection System (11 / 14 steg)

Steg 11: Brandväggsinställningar



Nedan, hittar du en mycket restriktiv brandvägg skriptet. Du kan behöva ändra den för att passa dina behov som det kommer att blockera webbplatser inte på standarder portar (80/443), och mjukvaror som inte använder HTTP/HTTPS/FTP-portar (P2P, Skype, Google Talk, etc...).

Om du inte vill att säkerhetsnivå, finns det också ett enklare brandvägg skript som är i grunden "ställa in och glömma".

Du kan välja mellan firewall.advanced eller firewall.simple, och sedan anpassa den. Krediter gå till Guillaume Kaddouch

A - avancerade regeluppsättning
Detta skript i princip gör följande:
-Blockerar inkommande/utgående ogiltiga TCP flaggor (även från etablerade flöden)
-Optimerar DNS-frågor (IP TOS field)
-Identifierar trafik av flödestyp, och sedan matcha det mot en regeluppsättning
-Lägger till slumpmässighet i NAT processen
-Endast tillåta några utgående standardportar (http, https, ftp)
-Loggar exakt vad tappas och undvika log flood
-Droppar för inkommande paket med låg TTL (kan betyda en ttl utgången attack eller en traceroute)
-Identifiera och blockera utgående malware anslutningar

$ sudo touch /etc/firewall.advanced
$ sudo touch /etc/firewall.flows
$ sudo chmod u + x /etc/firewall.*

Flöden identifiering är en lista över regler styra trafiken till matchande anpassad kedjan (t.ex. FORWARD_OUT, FORWARD_IN, LAN_IN, etc...). Denna lista över regler, en gång felsökning och validerade, bör inte ändras efteråt. Också, eftersom de använder lite utrymme i skriptet och kunde vara tråkigt att läsa, det gör filterregler svårare att läsa om de är på samma manus. Det är därför jag flytta dem i en separat fil, som jag bara ringa från den huvudsakliga skriften:
$ sudo vi /etc/firewall.flows
#! / bin/bash

# "Datum augusti 2012
# "Författare: Guillaume Kaddouch
# "Version: flödar 1.0

#######################
# FLÖDE ID #
##############################################################################################
# NAT_OUT
iptables -t nat - en POSTROUTING -o $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j NAT_OUT

iptables -t nat - en POSTROUTING -o $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j NAT_OUT

iptables -t nat - en POSTROUTING -o $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j NAT_OUT

# FORWARD_OUT
iptables - en framåt -i $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j FORWARD_OUT

iptables - en framåt -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j FORWARD_OUT

iptables - en framåt -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j FORWARD_OUT

# FORWARD_IN
iptables - en framåt -i $LAN -p tcp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j FORWARD_IN

iptables - en framåt -i $LAN -p udp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j FORWARD_IN

iptables - en framåt -i $LAN -p icmp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype--pkt-typ unicast -m addrtype! --src-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j FORWARD_IN

# LAN_IN
iptables - A INPUT -i $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j LAN_IN

iptables - A INPUT -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j LAN_IN

iptables - A INPUT -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--state nya, etablerat sig, ANKNYTANDE -j LAN_IN

# LAN_BROADCAST
iptables - A INPUT -i $LAN -p tcp--ipv4 \
! -d $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\

-m state! --Ange ogiltig -j LAN_BROADCAST

iptables - A INPUT -i $LAN -p udp--ipv4 \
! -d $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\
-m state! --Ange ogiltig -j LAN_BROADCAST

iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -d $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\
-m state! --Ange ogiltig -j LAN_BROADCAST

# INTERNET_GATEWAY
iptables - A INPUT -i $LAN -p tcp--ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j INTERNET_GATEWAY

iptables - A INPUT -i $LAN -p udp--ipv4! \
-s $LAN_SUBNET -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j INTERNET_GATEWAY

iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype--pkt-typ unicast -m addrtype--dst-typ LOCAL\
-m state--ange etablerat sig, ANKNYTANDE -j INTERNET_GATEWAY

# GATEWAY_LAN
iptables - en OUTPUT -o $LAN -p tcp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_LAN

iptables - en OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_LAN

iptables - en OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_LAN

# GATEWAY_BROADCAST
iptables - en OUTPUT -o $LAN -p tcp--ipv4 \
-s $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_BROADCAST

iptables - en OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_BROADCAST

iptables - en OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS -m pkttype--pkt-typ broadcast -m addrtype--dst-typ BROADCAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_BROADCAST

# GATEWAY_INTERNET
iptables - en OUTPUT -o $LAN -p tcp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_INTERNET

iptables - en OUTPUT -o $LAN -p udp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_INTERNET

iptables - en OUTPUT -o $LAN -p icmp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype--pkt-typ unicast -m addrtype--dst-typ UNICAST\
-m state--state nya, etablerat sig, ANKNYTANDE -j GATEWAY_INTERNET

##############################################################################################

Nu skapar vi filtrering regler skriptet talade tidigare:
$ sudo vi /etc/firewall.advanced
#! / bin/bash

# "Datum augusti 2012
# "Författare: Guillaume Kaddouch
# "URL: http://networkfilter.blogspot.com
# "Version: avancerad 1.0

ECHO "Inställningen upp variabler"
# VARIABLER ATT ANPASSA ATT MATCHA DITT NÄTVERK
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 befintliga kedjor och regler..."
# FLUSHING kedjor & regler
iptables -t filtrera -F
iptables -t filtrera -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangel -F
iptables -t mangel -X

ECHO "Inrätta standardprinciperna"
# STANDARD PRINCIPER
iptables -P INPUT släppa
iptables -P utgång släppa
iptables -P släppa fram

# LOOPBACK
iptables - A INPUT -i lo -j accepterar
iptables - en mata -o lo -j accepterar

ECHO "Skapa kedjor"
# KEDJOR
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

# KEDJAN FÖR ATT KONTROLLERA, LOGGA IN OCH OPTIMERA
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 "Lastning regler"

#################################
# PROTOKOLL optimering & Kontrollera #
##############################################################################################
iptables - en framåt -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS

iptables -t mangel - en OUTPUT -o $LAN -p tcp--ipv4 -s $RSS -m pkttype--pkt-typ unicast---dport domän -m \
statligt--staten nya, etablerat sig, ANKNYTANDE -j FAST_DNS

iptables -t mangel - en OUTPUT -o $LAN -p udp--ipv4 -s $RSS -m pkttype--pkt-typ unicast---dport domän -m \
statligt--staten nya, etablerat sig, ANKNYTANDE -j FAST_DNS
##############################################################################################

###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, FIN FIN -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, URG URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor FIN, RST FIN, RST -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor SYN, FIN SYN, FIN -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor allt allt -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla NONE -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla SYN, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla SYN, RST, ACK, FIN, URG -j LOGDROP_TCP_FLAGS

iptables - en LOGDROP_TCP_FLAGS -m gräns--limit 1/s - j Stock--log-tcp-alternativ--log-prefix \
"[IPTABLES: DÅLIG TCP FLAGGOR]"

iptables - en LOGDROP_TCP_FLAGS -j tappar
##############################################################################################

############
# FAST_DNS #
##############################################################################################
iptables -t mangel - en FAST_DNS -p udp -d $DNS_SERVER1 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p udp -d $DNS_SERVER2 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS--set-tos och minimera fördröjning
##############################################################################################

# FLÖDE ID #
Källa "/ etc/firewall.flows"

############
# NAT_OUT #
##############################################################################################
iptables -t nat - en NAT_OUT -j maskerad--random
##############################################################################################

###############
# FRAM UT #
##############################################################################################
# Potentiella Malware trafik
# Om inte sjunkit här, de skulle har blockerats av standardprincipen
# Dock passa vi på att spara dem i en "bad_traffic" tabell
# Den här tabellen ger oss möjlighet att blockera LAN värdar försöker komma åt för många malware portar
# Således vara potentiellt smittade (och som kräver en antivirus analys)
#
# Så snart en LAN värd har drabbat 5 gånger reglerna nedan inom 2mn, släpp alla framåt ut från värden
iptables - en FORWARD_OUT -p tcp -m senaste--namnge bad_traffic--rcheck--rttl--hitcount 5--sekunder 120 -j \
LOGDROP_MALWARE

iptables - en FORWARD_OUT -p tcp--dport 139 - m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en FORWARD_OUT -p tcp--dport 445 - m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en FORWARD_OUT -p tcp--dport 135 - m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en FORWARD_OUT -p tcp--dport 6667 - m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en FORWARD_OUT -p tcp--dport 1433:1434 -m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en FORWARD_OUT -p udp--dport 1433:1434 -m senaste--namnge bad_traffic--ange -j LOGDROP_BADPORT
iptables - en LOGDROP_BADPORT -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: dåliga PORT]"
iptables - en LOGDROP_BADPORT -j tappar
iptables - en LOGDROP_MALWARE -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: infekterade värd]"
iptables - en LOGDROP_MALWARE -j tappar

# Tillåtna portar
iptables - en FORWARD_OUT -p tcp--sport $UNPRIV_PORTS -m multiport--dports ftp, http, https, 8080 -j accepterar

# Tillåt etablerade och relaterade anslutningar till andra hamnar, exempelvis som krävs för FTP
iptables - en FORWARD_OUT -p tcp--sport $UNPRIV_PORTS--dport $UNPRIV_PORTS -m state--state \
ETABLERADE, relaterade -j accepterar

# NTP förfrågningar (ändra variabeln i början)
iptables - en FORWARD_OUT -p udp -d $NTP_SERVER--sport ntp--dport ntp -j accepterar

# Echo request
iptables - en FORWARD_OUT -p icmp -m icmp--icmp-typ echo-request - j accepterar

# Avvisa trafik vi inte vill, många alternativ nedan (skapa motsvarande variabler)
# iptables - en FORWARD_OUT -p tcp--dport $port_of_a_host_to_block -j AVVISA--avvisa-med \
# icmp-host-förbjuden
# iptables - en FORWARD_OUT -d $subnet_to_block -j AVVISA--avvisa-med icmp-net-förbjuden

# Blockera & logga allt annat
iptables - en FORWARD_OUT -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: FORWARD_OUT]"
iptables - en FORWARD_OUT -j tappar
##############################################################################################

##############
# FORWARD_IN #
##############################################################################################
# Tillåta vidarebefordran av inkommande etablerade eller relaterade flöden, med en TTL > 10
iptables - en FORWARD_IN -m ttl--ttl-gt 10 -j accepterar

# Blockera & logga allt annat
iptables - en FORWARD_IN -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: FORWARD_IN]"
iptables - en FORWARD_IN -j tappar
##############################################################################################

##########
# LAN_IN #
##############################################################################################
# Låt DHCP-sändningar från insidan
iptables - A LAN_IN -i $LAN -p udp--sport 67:68--dport 67:68 -j accepterar

# Tillåta DNS-frågor från LAN till hallon säkerhet Systema,
iptables - A LAN_IN -i $LAN -p udp--sport $UNPRIV_PORTS--dport 53 -j accepterar
iptables - A LAN_IN -i $LAN -p tcp--sport $UNPRIV_PORTS--dport 53 -j accepterar

# SSH-anslutningar
# (du kan lägga till en kontroll till den avlägsna OS)
iptables - A LAN_IN -i $LAN -p tcp--sport $UNPRIV_PORTS--dport $SSH -j accepterar

# ICMP LAN (typ 3 = onåbar [destination|port|protocol])
iptables - en LAN_IN -p icmp -m icmp--icmp-typ echo-request - j accepterar
iptables - en LAN_IN -p icmp -m icmp--icmp-typ 3 -j accepterar

# Blockera & logga allt annat
iptables - en LAN_IN -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: LAN_IN]"
iptables - en LAN_IN -j tappar
##############################################################################################

##################
# LAN_BROADCAST #
##############################################################################################
# Låt DHCP-sändningar från insidan
iptables - A LAN_BROADCAST -i $LAN -p udp--sport 67:68--dport 67:68 -j accepterar
# Blockera allt annat (bry dig inte att logga broadcast-trafik)
iptables - en LAN_BROADCAST -j tappar
##############################################################################################

###########################
# INTERNET_GATEWAY #
##############################################################################################
# Tillåta redan etablerade anslutningar från RSS till Internet att komma tillbaka till RSS
iptables - A INTERNET_GATEWAY -p alla -j accepterar
##############################################################################################

########################
# CHAINE GATEWAY_LAN #
##############################################################################################
# Block potentiella ICMP redirect skickas från oss (kan bero på en felkonfigurerad sysctl)
iptables - en GATEWAY_LAN -p icmp -m icmp--icmp-typ omdirigera -m gräns--limit 1/s - j Stock--log-prefix \
"[IPTABLES: ICMP REDIRECT]"

iptables - en GATEWAY_LAN -p icmp -m icmp--icmp-typ omdirigera -j tappar

# Tillåta LAN etablerade anslutningar till hallon att komma tillbaka till LAN
iptables - en GATEWAY_LAN -p tcp -m state--ange etablerat sig, ANKNYTANDE -j accepterar
iptables - en GATEWAY_LAN -p udp -m state--ange etablerat sig, ANKNYTANDE -j accepterar
iptables - en GATEWAY_LAN -p icmp -m state--ange etablerat sig, ANKNYTANDE -j accepterar

# Låt DHCP med trafik
iptables - en GATEWAY_LAN -p udp--sport 67:68--dport 67:68 -j accepterar

# Låt Raspi pinga LAN
iptables - ett GATEWAY_LAN -p icmp -m icmp--icmp-typ echo-request - m tillstånd--ny stat -j accepterar

# Blockera & logga allt annat
iptables - en GATEWAY_LAN -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: GATEWAY_LAN]"
iptables - en GATEWAY_LAN -j tappar
##############################################################################################

#####################
# GATEWAY_BROADCAST #
##############################################################################################
# Tillåta broadcast DHCP-svar från RSS
iptables - en GATEWAY_BROADCAST -p udp--sport 67:68--dport 67:68 -j accepterar

# Blockera & logga allt annat
iptables - en GATEWAY_BROADCAST -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: GATEWAY_BROADCAST]"
iptables - en GATEWAY_BROADCAST -j tappar
##############################################################################################

####################
# GATEWAY_INTERNET #
##############################################################################################
# Tillåta nya anslutningar från hallon (nödvändigt för uppdateringar, installerar paket, etc...)
# Jag inte kör uppdateringar natten, därför finns det inget behov för att regeln ska vara aktiv 24/24
iptables - en GATEWAY_INTERNET -p tcp -m multiport--dports ftp, http, https -m tid--timestart 09:00--tiden \
23:00 -j accepterar

# Résolutions DNS-
iptables - en GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport domän -j accepterar
iptables - en GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport domän -j accepterar
iptables - en GATEWAY_INTERNET -p tcp--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport domän -j accepterar
iptables - en GATEWAY_INTERNET -p tcp--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport domän -j accepterar

# Händer när omlastning brandväggsregler
iptables - en GATEWAY_INTERNET -p icmp -m icmp--icmp-typ port unreachable - d $DNS_SERVER1 -j tappar
iptables - en GATEWAY_INTERNET -p icmp -m icmp--icmp-typ port unreachable - d $DNS_SERVER2 -j tappar

# Låt NTP
iptables - en GATEWAY_INTERNET -p udp--dport ntp -j accepterar

# Blockera & logga allt annat
iptables - en GATEWAY_INTERNET -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: GATEWAY_INTERNET]"
iptables - en GATEWAY_INTERNET -j tappar
##############################################################################################

## REGLER SLUTET ##
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 regler laddade."
ECHO ""

B - grundläggande regeluppsättning
Detta skript i princip gör följande:
-Blockerar inkommande/utgående ogiltiga TCP flaggor (även från etablerade flöden)
-Optimerar DNS-frågor (IP TOS field)
-Lägger till slumpmässighet i NAT processen
-Droppar för inkommande paket med låg TTL (kan betyda en ttl utgången attack eller en traceroute)

Denna regeluppsättning kan allt från nätverket vidarebefordras på Internet, vilket teoretiskt inte kräver ändras efteråt. Om du vill lägga till ett extra lager av nätverkssäkerhet för din mormor eller föräldrar till exempel, men att man inte kan förvänta sig att ändra iptables rules(!), tror jag att denna regeluppsättning är lämpligare.

$ sudo vi /etc/firewall.simple
#! / bin/bash

# Datum augusti 2012
# Författare: Guillaume Kaddouch
# URL: http://networkfilter.blogspot.com
# Version: Standard 1,0

ECHO "Inställningen upp variabler"
# VARIABLER ATT ANPASSA ATT MATCHA DITT NÄTVERK
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 befintliga kedjor och regler..."
# FLUSHING kedjor & regler
iptables -t filtrera -F
iptables -t filtrera -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangel -F
iptables -t mangel -X

ECHO "Inrätta standardprinciperna"
# STANDARD PRINCIPER
iptables -P INPUT släppa
iptables -P utgång släppa
iptables -P släppa fram

# LOOPBACK
iptables - A INPUT -i lo -j accepterar
iptables - en mata -o lo -j accepterar

ECHO "Skapa kedjor"

# KEDJAN FÖR ATT KONTROLLERA, LOGGA IN OCH OPTIMERA
iptables -N CHECK_TCP_FLAGS
iptables -N LOGDROP_TCP_FLAGS
iptables -t mangel -N FAST_DNS

ECHO "Lastning regler"
#################################
# PROTOKOLL optimering & Kontrollera #
##############################################################################################
iptables - en framåt -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS

iptables -t mangel - en OUTPUT -o $LAN -p tcp--ipv4 -s $RSS -m pkttype--pkt-typ unicast---dport domän \
-m state--state nya, etablerat sig, ANKNYTANDE -j FAST_DNS

iptables -t mangel - en OUTPUT -o $LAN -p udp--ipv4 -s $RSS -m pkttype--pkt-typ unicast---dport domän \
-m state--state nya, etablerat sig, ANKNYTANDE -j FAST_DNS
##############################################################################################

###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, FIN FIN -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor ACK, URG URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor FIN, RST FIN, RST -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor SYN, FIN SYN, FIN -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor allt allt -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla NONE -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla SYN, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - en CHECK_TCP_FLAGS -p tcp--tcp-flaggor alla SYN, RST, ACK, FIN, URG -j LOGDROP_TCP_FLAGS

iptables - en LOGDROP_TCP_FLAGS -m gräns--limit 1/s - j Stock--log-tcp-alternativ--log-prefix \
"[IPTABLES: DÅLIG TCP FLAGGOR]"

iptables - en LOGDROP_TCP_FLAGS -j tappar
##############################################################################################

############
# FAST_DNS #
##############################################################################################
iptables -t mangel - en FAST_DNS -p udp -d $DNS_SERVER1 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p udp -d $DNS_SERVER2 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS--set-tos och minimera fördröjning
iptables -t mangel - en FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS--set-tos och minimera fördröjning
##############################################################################################

#######
# NAT #
##############################################################################################
iptables -t nat - en POSTROUTING -o $LAN! -d $LAN_SUBNET -m state--state nya, etablerade, ANKNYTANDE -j MASQUERADE\
--random
##############################################################################################

###########
# FRAMÅT #
##############################################################################################
# Tillåt utgående framåtriktat av något samband
iptables - en framåt -p tcp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

iptables - en framåt -p udp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

iptables - en framåt -p icmp -i $LAN -s $LAN_SUBNET! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

# Tillåta inkommande fram av etablerade eller relaterade anslutningar med TTL större än 10
iptables - en framåt -p tcp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state--ange etablerat sig, med -m \
TTL--ttl-gt 10 -j accepterar

iptables - en framåt -p udp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state--ange etablerat sig, med -m \
TTL--ttl-gt 10 -j accepterar

iptables - en framåt -p icmp -i $LAN! -s $LAN_SUBNET -d $LAN_SUBNET -m state--ange etablerat sig, med -m \
TTL--ttl-gt 10 -j accepterar
##############################################################################################

#########
# INPUT #
##############################################################################################
# Låt DHCP-sändningar från insidan
iptables - A INPUT -i $LAN -p udp -s $LAN_SUBNET--sport 67:68--dport 67:68 -j accepterar

# Tillåta DNS-frågor från LAN till hallon
iptables - A INPUT -i $LAN -p udp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS--dport 53 -j accepterar
iptables - A INPUT -i $LAN -p tcp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS--dport 53 -j accepterar

# SSH-anslutningar
iptables - A INPUT -i $LAN -p tcp -s $LAN_SUBNET--sport $UNPRIV_PORTS -d $RSS--dport $SSH -j accepterar

# ICMP LAN (typ 3 = onåbar [destination|port|protocol])
iptables - A INPUT -p icmp -m icmp--icmp-typ echo-request - $LAN_SUBNET -d $RSS -Svensson acceptera
iptables - A INPUT -p icmp -m icmp--icmp-typ 3 -s $LAN_SUBNET -d $RSS -j accepterar

# Tillåta redan etablerade anslutningar från hallon till Internet att komma tillbaka till itl
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p tcp -m state--ange etablerat sig, ANKNYTANDE -j accepterar
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p udp -m state--ange etablerat sig, ANKNYTANDE -j accepterar
iptables - A INPUT -i $LAN! -s $LAN_SUBNET -d $RSS -p icmp -m state--ange etablerat sig, ANKNYTANDE -j accepterar
##############################################################################################

###########
# UTGÅNG #
##############################################################################################
# Block potentiella ICMP redirect skickas från oss (kan bero på en felkonfigurerad sysctl)
iptables - en OUTPUT -o $LAN -p icmp -m icmp--icmp-typ omdirigera -m gräns--gräns 1/s - j Stock--log-prefix \
"[IPTABLES: ICMP REDIRECT]"

iptables - en mata -o $LAN -p icmp -m icmp--icmp-typ omdirigera -j tappar

# Tillåta LAN etablerade anslutningar till Raspi att komma tillbaka till LAN
iptables - en OUTPUT -o $LAN -p tcp -s $RSS -d $LAN_SUBNET -m state--medlemsstat som etablerat sig, relaterade -j accepterar
iptables - en OUTPUT -o $LAN -p udp -s $RSS -d $LAN_SUBNET -m state--medlemsstat som etablerat sig, relaterade -j accepterar
iptables - en OUTPUT -o $LAN -p icmp -s $RSS -d $LAN_SUBNET -m state--medlemsstat som etablerat sig, relaterade -j accepterar

# Låt DHCP med trafik
iptables - en OUTPUT -o $LAN -p udp -s $RSS -d $LAN_SUBNET--sport 67:68--dport 67:68 -j accepterar

# Låt hallon pinga LAN
iptables - en OUTPUT -o $LAN -p icmp -m icmp--icmp-typ ekobegäran -s $RSS -d $LAN_SUBNET -m state \
--Ange nya -j accepterar

# Tillåta nya anslutningar från hallon (nödvändigt för uppdateringar, installerar paket, etc...)
iptables - en mata -o $LAN -p tcp -s $RSS! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

iptables - en mata -o $LAN -p udp -s $RSS! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

iptables - en mata -o $LAN -p icmp -s $RSS! -d $LAN_SUBNET -m state--state NEW, etablerade, besläktade med \
-j accepterar

# DNS-förfrågningar
iptables - en OUTPUT -o $LAN -p udp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport domän -j accepterar
iptables - en OUTPUT -o $LAN -p udp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport domän -j accepterar
iptables - en OUTPUT -o $LAN -p tcp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport domän -j accepterar
iptables - en OUTPUT -o $LAN -p tcp -s $RSS--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport domän -j accepterar
# Låt NTP
iptables - en mata -o $LAN -p udp--dport ntp -s $RSS -j accepterar
##############################################################################################

iptables - A INPUT -m gräns--gräns 1/s - j Stock--log-prefix "[IPTABLES: INPUT droppe]"
iptables - en mata in -j tappar
iptables - en OUTPUT -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: utdata droppe]"
iptables - en mata -j tappar
iptables - en framåt -m gräns--limit 1/s - j Stock--log-prefix "[IPTABLES: framåt droppe]"
iptables - en framåt -j tappar

## REGLER SLUTET ##
rules_number = "egrep '\-j' /etc/firewall.simple | WC -l '
ECHO ""
ECHO "$rules_number regler laddade."
ECHO ""

Dessa två regeluppsättningar är bara exempel, om du har en klar använda din egen.

För att ladda iptables regler vid start, är ett sätt att göra som följer:
$ sudo vi /etc/rc.local
ECHO "Lastning iptables regler"
etc/brandvägg. VERSION >> / dev/null

Ersätta versionen med "avancerade" eller "enkla", utan citationstecken, beroende på det skript som du använder.

Om du vill visa varningar i realtid, skriver du följande:
$ sudo tail -f /var/log/iptables.log

Se Steg
Relaterade Ämnen

Hem-Intrusion Detection System

Detta är min första instuctable. Jag var ute efter för att skapa mitt hemnätverk intrusion detection system på en VM och kunde inte hitta några instruktioner på hur man gör detta. Så jag skapade mitt eget och hoppas att det hjälper vissa av er ut. Ja...

Automatisering av låsning system och Intrusion Detection In bostäder

InternetSaker är tekniken som sakta kommer och vinner terräng inom telekombranschen. Här har vi försökt att skapa ett säkerhetssystem som kontrolleras av Internet. Syftet med projektet var att utveckla en web program/verktyg som ger användaren tillgå...

Bluetooth vatten Detection System

Någonsin finner dig själv i denna situation...Det har hänt mig. Men oroa dig inte mer med detta vatten detection system som är kul att bygga och kan rädda du några $$$ när VVS byster.Detta exempel visar hur du använder nod-röd på en RaspberryPi för a...

HACCSY - Hackerspace åtkomstkontroll och checka in System

HACCSY abreviation står för Hackerspace Access Control och checka in System och det är ganska mycket vad den gör.HACCSY app är tänkt att köra på en RaspberryPi som är ansluten till internet och elektriska strike låsa ytterdörren. Det gör jobbet enkel...

LPG / Biogas Detection System med MediaTek LinKIt en

LinKIt en utvecklingsplattform har konstruerats och lanserades av MediaTek Labs med litet footprint, som möjliggör skapandet av kläder och IoT enheter, med rika anslutningsmöjligheter. Instructables HQ har seedade cirka 250 medlemmar med LinKIt en st...

Lie Detection System

Lie detection, kallas även bedrägeri upptäckt, använder förhör tekniker tillsammans med teknik som registrerar fysiologiska funktioner för att förvissa sig om sanning och lögn i svar• En lie detection system görs med olika simulerade medicinska senso...

Enklaste ebb och flod hydroponics system någonsin! Modulära, drivs av luftpump.

Ebb och flod hydroponiska system behöver noggrann utformning och en ganska dyr pump. Detta är ett billigare enklare alternativ som använder en luftpump för att skapa ebb och flow i stället. Det är förmodligen mer justerbar och mycket mer anpassningsb...

Dagis övervakning och spårning System med Intel Edison Development Kit

Vi har byggt ett dagis övervakning och spårning system med Intel Edison styrelsen tillsammans med Bluetooth låg energi (BLE) enheter och en USB-kamera. Det är en demonstration av hur lätt Intel Edison DevKit kan användas för att bygga en lösning till...

SMART CAR och SMART parkering SYSTEM

Detta instructable är den skriftliga versionen av min "Arduino: hur till bygga en skarp bil och SMART parkering SYSTEM"Robotics är en del av dagens meddelande. I dagensvärlden robotics är en snabbväxande och intressanta området. Är det enklaste...

Nya K'nex berg-och dalbana Propulsion System

Detta är ett nytt K'nex berg-och dalbana propulsion system som använder 2 hjul istället för att använda en kedja. Mycket practicle. Dessa steg visar dig hur man bygger den huvudsakliga delen, då du lägger till din berg-och dalbana. Den använder 2 mot...

Raspberry Pi media player och arbete stationen med en integrerad högtalare

En mängd olika ramar för Raspberry Pi pekskärmen är kommersiellt tillgängliga och publicerade. De flesta av dessa lösningar är tyst, saknas en aktiv högtalare. Adafruit har nyligen släppt en utbrytning ett I2S DAC & förstärkare whichworks bra med en...

Raspberry Pi fotocell log och alert system

detta är ett enkelt instructable för att göra en RasPi-baserade photosensor-utlöst alert och loggning system som enkelt kan utökas för att visa möjliga posterna in i ett rum som en garderob eller utrustning skåp som är oftast mörkt, eller att övervak...

DIY mänskliga DETECTION SYSTEM och larm (ingen arduino)

DET HÄNDER ALLTID NÄR DU ÄR I RUMMET OCH NÅGON KOMMER IN I DITT HUS ELLER SHOPPA UTAN ATT ANMÄLAN... HAN kan vara en tjuv.. .så här är lösningen där du är graden av ett larmsystem när någon rörelse detekteras. (Mindre än 10 minuter projekt) SÅ LÅT OS...

Bygga din första IOT med en Raspberry Pi, DHT11 sensor och Thingspeak.

Sakernas Internet eller Internet of Things är ett hett ämne! Enligt experterna allt kommer att vara ansluten till internet och alla våra enheter och deras data snart kommer bara en IP-adress från oss. Så var börjar du om du vill utforska världen av S...

Raspberry Pi DMX Controller och Pure Data: en animerad lågan konst Installation

Att ha önskade att fungera med en Raspberry Pi sedan de kom ut, var det mycket spännande när en vän Jean Margret Thomas bad mig att hjälpa henne med en ljus skulptur som hon ville skapa. Jean Margret är en ljusdesigner och hennes design kallas för en...

Kompakt, Billigt, och utbyggbart Hydroponics System

jag vet det finns massor av andra instructables där ute som handlar med hydroponics men jag ville ha min att uppfylla en viss uppsättning specifikationer. När jag satte mig för att designa min nya hydroponics system för min lägenhet hade jag några må...

Ansluta Raspberry pi till MacOS och Linux med SSH

Du kan använda SSH för att ansluta till din Raspberry Pi från en Linux-dator eller Mac (eller en annan Pi) från terminalen, utan att installera ytterligare programvara.Detta är verkligen användbart om du vill köra din Pi som en "huvudlösa" maski...

Hur man räkna i binär och hexadecimala numrering system

visste du att det finns andra system för numrering än våra vanliga decimal-system?Det första systemet för numrering var bas 60.Det decimal-systemet, eller basen 10, är inom matematik och vardagen, men datorer och annan elektronik måste ha enklare (ib...

Raspberry Pi Torrent, Samba och DLNA med 3 + hårddiskar

det finns många Raspberry Pi guider där ute som hjälper dig att förvandla din Pi till en server med stöd för dataöverföring torrents och dela filer via Samba och DLNA. Men de alla har en stor brist: stödja endast en hårddisk. I detta instructables hj...