Clan [+35] Forum
Clan [+35] Forum
[+35] Hovedkvarter | Profil | Tilmeld | Aktive emner | Forummedlemmer | Søgning | FAQ
Brugernavn:
Kodeord:
Husk kodeord
Glemt dit kodeord?

 Alle fora
 Computere
 [+35] Linux
 Firewall med iptables.
 Nyt emne  Svar på emnet
 Vis printervenlig version
Forfatter  Emne Næste emne  

[+35]ungamed
[+35] Soldier

Denmark
188 indlæg

Skrevet - 15 Jun 2010 :  22:10:56  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
Hej

Som i måske er blevet informeret om er jeg blevet sat til at lave servere.
Jeg har nogle års erfaring i programmering på linux vha php, c/c++ og lidt shell scripting (sry. hverken pyton eller perl).

Er ved at få styr på de forskellige apps. til en god opsætning af en server.

Men mangler den vigtigste (imho) firewallen.

Min sidste boss brugte iptables men jeg nåede aldrig at komme ind i den, når jeg privat brugte linux var det med KDE, Gnome eller xfce

og der var altid en dejlig grafisk løsning til mine problemer.

however jeg vil gerne have sat iptables op uden at komme til at blokere for ssh, web, ftp, steam, srcds etc...

Jeg skal bruge en opsætning af flg.

indkomne forbindelser (alle til eth0):

FTP: Port 21 - TCP (ikke 100% sikker på om ssl kræver andre porte eller udp).
SSH: Port 22 - TCP (tror jeg).
WEB: Port 80 - TCP & UDP.
Steam fælleskab: 1200 - UDP.
WebMin: Port 10000 - TCP & UDP.
SRCDS: 27015, 27035, 27055 - TCP (Rcon) & UDP (Spildata).

Tror det er det hele.
Men ellers faldt jeg over denne liste:
* Steam Main - UDP 27000 - 27015
* Steam Main - TCP 27020 - 27039
* Steam CyberCafe - TCP 27040 - 27041
* Steam Friends - UDP 1200
* Steam Dedicated Server - UDP 27015 - 27050
* Steam HLTV - UDP 27020
* Rcon - TCP - Same port that your SRCDS game server is using

Og disse chains der hører til i /etc/sysconfig/iptables
under RH-Firewall-1-INPUT sectionen

-A RH-Firewall-1-INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp -dport 27000:27020 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp -dport 1200 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -dport 27000:27050 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp -dport 27000:27050 -j ACCEPT

Men der stod også:
The example below is a very broad allow rule, it allows all required ports inbound that you'll need but it's allowing for a broad range of ports that you may not need. If you want your server to be as secure as possible only allow the ports you need.

Jeg vil ikke gøre noget forkert så det skal være rigtigt (ihvertfald med ssh) i første forsøg. :)

Hjælp, om ikke andet med at gøre mig mere sikker på at jeg gør det rigtigt.

Mvh,
Thomas 'ungamed' Hartvig.

Rettet af - [+35]ungamed @ 16 Jun 2010 08:21:13

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 15 Jun 2010 :  22:56:49  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Ok lige et par design spørgsmål for det lyder lidt som om du også er datamatiker. (Lad os for en gangs skyld ikke springe direkte til implementering for bagefter at konstatere vi taler om noget vidt forskelligt )

Først og fremmest en stribe spørgsmål:
  • Er opgaven at sætte FW på en maskine der skal køre 3 dedikerede sourceDS instanser?
  • Jeg formoder du installerer den som en rigtig server = uden Xorg/GUI crap?
  • Udover srcds, ssh, ftp er det så en fuld LAMP server eller en LAP? (LAMP = Linux, Apache, MySQL, PHP.)
  • Hvorfor vil du åbne port 1200? Er steam friends netværket blevet en distribueret tjeneste de enkelte servere skal supportere?
  • Kører iptables som insmodded eller har du selv kompileret en kernel hvor iptables er kompileret med? (Hvis du ikke aner hvad jeg snakker om, så glem det - Du vinder lidt ydelse ved at lave din egen optimerede kernel, men af erfaring ved jeg hvor surt det er når maskinen ikke kommer op efter remote reboot

Endelig: Hvilken distro taler vi om? De få linier du har pastet skriger Fedora/CentOS medmindre du har en rødhætte licens.
Det er ok, hvis du har det bedst med en af dem selvom jeg ikke synes det er optimale distroer. Bl.a. pga. af deres temmelig anderledes håndtering af netop firewalling.
Jeg smider en af samme version på en virtuel maskine så jeg lige kan opdatere mig på hvor meget de har "struktureret" (læs: voldtaget simpliciteten i) deres iptables config.

Edit: Stavepladen som sædvanlig

Rettet af - [+35]Lazy @ 15 Jun 2010 22:59:26
Gå til toppen af siden

[+35]ungamed
[+35] Soldier

Denmark
188 Posts

Skrevet - 16 Jun 2010 :  08:16:59  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
quote:
Er opgaven at sætte FW på en maskine der skal køre 3 dedikerede sourceDS instanser?


Jeps.

quote:
Jeg formoder du installerer den som en rigtig server = uden Xorg/GUI crap?


Jeps.

quote:
Udover srcds, ssh, ftp er det så en fuld LAMP server eller en LAP? (LAMP = Linux, Apache, MySQL, PHP.)


Jeps LAMP, havde glemt mysql 3306 - TCP :)

quote:
Hvorfor vil du åbne port 1200? Er steam friends netværket blevet en distribueret tjeneste de enkelte servere skal supportere?


Så vidt jeg har forstået er det så du kan se om dine venner er inde og spille på den server, men er ikke 100% på det.
Kan altid eksperimentere lidt.

quote:
Kører iptables som insmodded eller har du selv kompileret en kernel hvor iptables er kompileret med? (Hvis du ikke aner hvad jeg snakker om, så glem det - Du vinder lidt ydelse ved at lave din egen optimerede kernel, men af erfaring ved jeg hvor surt det er når maskinen ikke kommer op efter remote reboot


Det kører insmoddet går jeg stærkt ud fra eftersom det bare aktiveres og hentes med apt-get og med det kommer vi jo så til distroen og som du nok har gættet er det ikke nogen af dem som passer til /etc/sysconfig stien men debian (med kernel 2.6.26-2-amd64).

Jeg gik bare ud fra at iptables config fil stadig fandtes og så kopierede jeg hvad jeg fandt vha. google.
Uden at søge på specific debian eller ubuntu løsning.

Noget andet er, jeg er ikke datamatiker men kun it-supporter, jeg har bare aldrig arbejdet med andet end programmering.

PS. Tak for det hurtige svar :)

EDIT:
Noget helt andet er at jeg gerne ville have det ind i kernen, på sigt, da den alligevel meget gerne må blive konfigureret til at køre 1k hz, ticks eller hvad du nu foretrækker.
Men jeg har også frygtet remote remote ville faile.

Edit2:
Forresten, kan man bruge "make oldconfig", og stadig banke iptables med ind? så er der vel mindre chance for at det failer, ved compile af ny kernel?
Sidste gang jeg byggede en kernel var da der fandtes mandrake og red hat som de største distroer.
Og der var det en computer jeg kunne røre :)

Rettet af - [+35]ungamed @ 16 Jun 2010 22:47:16
Gå til toppen af siden

[+35]Terabyte
[+35] Soldier

Denmark
2730 Posts

Skrevet - 16 Jun 2010 :  10:56:04  Vis profil  Besøg [+35]Terabyte's hjemmeside  Klik for at se [+35]Terabyte's MSN Messenger adresse  Svar med Quote
I love it when nerd's talk dirty
Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 16 Jun 2010 :  17:13:24  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
yaaa me to, hope is about our new Linux 3 server




Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 16 Jun 2010 :  23:55:56  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Heh det med kernen skal du ikke være så nervøs for

Slet ikke hvis du har fysisk adgang til maskinen. For at undgå de værste faldgruber, så ville jeg nok starte med en kernel souce du kan hente med apt-get, altså en der er supporteret af Debian.

make oldconfig... ehhh jo det vil virke men du skulle jo optimere din kerne

I stedet for at genopfinde den dybe tallerken, så vil jeg hellere bede dig kigge på debians egen kernel håndbog
Det eneste du behøver at koncentrere dig om er afsnit 4.5
Ja, det er så simpelt, men et par råd med på vejen:
1. Læs om din bootloader... Start med at boote med den nye kernel som en valgmulighed.
2. Laver du det remote så er pkt. 1 ligegyldigt. Du kan evt. lave et sh script der efter boot opdaterer din bootloader til den originale version og rebooter maskinen. Kør scriptet via cron med xx min. forsinkelse - Kan du connecte til maskinen så kan du også myrde cronjobbet. (Redder dig primært hvis du har lavet ged i din netkortdriver)
3. Brug menuconfig - det er langt mere overskueligt end config.
4. Det sværeste er at finde ud af hvad du vil vælge fra... Det der som regel går galt er man får fjernet diskcontrollere eller anden hw der er nødvendig for at boote.
5. Husk dit hovedformål og kig evt. her.

Jeg får nok lige strikket en iptables config sammen til dig i morgen eller overmorgen.
Skal lige opdatere mig med debian for den har nogle irritationsmomenter i forhold til Unix (sys v) som jeg helst ikke vil overse. (Jeg plejer at lave iptables scriptet så det kører så snart ethx er init'et)
Gå til toppen af siden

[+35]ungamed
[+35] Soldier

Denmark
188 Posts

Skrevet - 17 Jun 2010 :  18:02:24  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
quote:
Slet ikke hvis du har fysisk adgang til maskinen.

Det har jeg heller ikke, det var sidste gang.

quote:
make oldconfig... ehhh jo det vil virke men du skulle jo optimere din kerne

Jeg troede også bare at den tog udgangspunkt i den nuværende konfiguration, så man stadig kunne optimere den.

quote:
Jeg får nok lige strikket en iptables config sammen til dig

Lyder bra :D
Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 18 Jun 2010 :  22:52:21  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Sorry røg sgu' lige ind i en seriøs grill session og rødvin på magnumflasker mikser ikke så godt med gode råd...

quote:
Oprindeligt skrevet af ungamed


Jeg troede også bare at den tog udgangspunkt i den nuværende konfiguration, så man stadig kunne optimere den.

Det kan egentlig sagtens være tilfældet. Jeg er bare så håbløst gammeldags at jeg altid: vi /usr/src/whateverstupiddirthisdistrouses/.config'er den gamle i en TTY mens jeg laver den nye i en anden TTY (som regel med menuconfig).

quote:
Jeg får nok lige strikket en iptables config sammen til dig


Øhh, men skal nok lige af med hovedpinen i morgen først

Bortset fra det, så gælder reglen med et 30-60 min cronjob reboot 100% når du fedter med iptables/netfilter stadig. Jeg ER færdig med at spille hovmodig når det gælder 4 timers transport + 2 timers ventetid på en person for at blive lukket ind til den fysiske host fordi man liiiiiige rettede en lille ting i sit fw-script og ./'ede inden hjernen var synkroniseret.
Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 20 Jun 2010 :  21:19:50  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Ok har faktisk dit script (inkl. beskrivelse) klar.

Det var den nemme del... Debian (og den gode Dr.Zeepra er mit vidne her) har altid været min arkilleshæl: Det er en F*CKING ANNOYING voldtaget distro der prøver at holde folk i hænderne og derfor gør alting 10* mere bøvlet end det bør være )

Sjovt nok er alle mine besøg i debians (og den afledte ubuntu) verden endt med at jeg bare sætter endnu mere pris OS'er der er mere "oldschool" sysV. (SCO, Solaris og i Linux verdenen: Slackware).
Skal lige resten af alle symlinks i /etc/rcn.d igennem, men har nok det hele klar i morgen.

Fik du lavet en optimeret kernel?
Har du styr på hvordan du hærder ssh (før, og uafhængigt af iptables, netfilter osv.)?
Samme med httpd, apache2 whatever?

"apt-get install mc" --- Ahh det spasser-OS kan gøre noget rigtigt...
Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 22 Jun 2010 :  02:04:24  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Ok har ikke lige haft tid til at kigge på at installere scriptet med debians pendant til chkconfig.

Det burde virke uden problemer, men for en sikkerheds skyld:

Check at du ikke har behov for at forwarde og jeg har gået ud fra at du ikke har en dynamisk IP!
Jeg går også ud fra du IKKE benytter IPv6.

1. su til root.
2. Gem scriptet som /etc/init.d/rc.firewall
3. chmod 755 /etc/init.d/rc.firewall
4. Gå indholdet af scriptet igennem en ekstra gang.
5. crontab -e
6. opret en linie i roots crontab: 15 * * * * /etc/init.d/rc.firewall stop
7. Gem din nye root crontab
8. start firewall scriptet

Hvis noget fejler, så fik du forhåbentligt lavet dit crontab entry korrekt - Det slår firewallen fra hvert 15. minut.
Hvis alt virker så slet crontab entryet

Selve scriptet er her:
#!/bin/sh

# Filename: /etc/init.d/rc.firewall
# Beskrivelse: Simpel iptables firewall script til ungamed.
# Version 1.0.0
# Senest redigeret: 20100620 21:00UTC

# ---------------------------------------------------
# Placering af iptables, modprobe og sysctl
# ---------------------------------------------------

IPT="/sbin/iptables"
MOP="/sbin/modprobe"
SCTL="/sbin/sysctl -w"

# ---------------------------------------------------
# Interfaces
# ---------------------------------------------------

INET_IFACE="eth0"
#INET_ADDRESS="99.99.99.99"

LO_IFACE="lo"
LO_IP="127.0.0.1"

# ---------------------------------------------------
# Load moduler
# ---------------------------------------------------
# OBS: Du behøver IKKE disse linier hvis du har compilet modulerne til kernel

$MOP ip_tables
$MOP ip_conntrack
$MOP iptable_filter
$MOP iptable_mangle
$MOP iptable_nat
$MOP ipt_state
$MOP ipt_LOG

# Du bør som udgangspunkt ikke behøve disse moduler

# $MOP ipt_MASQUERADE
# $MOP ipt_owner
# $MOP ipt_limit
# $MOP ipt_REJECT
# $MOP multiport
# $MOP ip_conntrack_ftp
# $MOP ip_nat_ftp

# ---------------------------------------------------
# Sæt firewall indstillinger i /proc med sysctl (kernelparms)
# ---------------------------------------------------
# Brug kun ip_dynaddr="1" på maskine der kører med en dynamisk DHCP addresse
# ip_forward="1" kun hvis du har flere netkort aktive/kører en vpnserver el. lign.
# bemærk at slår du forwarding til så SKAL den være først og kun med forward giver rp_filter mening.

# $SCTL net.ipv4.ip_forward="1"
# $SCTL net.ipv4.conf.all.rp_filter="1"
# $SCTL net.ipv4.ip_dynaddr="1"

$SCTL net.ipv4.tcp_syncookies="1"
$SCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
$SCTL net.ipv4.conf.all.accept_source_route="0"


# ---------------------------------------------------
# Ryd alle Chains - (Stop firewallen)
# ---------------------------------------------------
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT

# Flush alt
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

# Slet andre kæder
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
	echo "Firewall inaktiv - Alle policies = accept"
	exit 0
fi

# ---------------------------------------------------
# Opret selve firewallen (chains m.m.)
# ---------------------------------------------------
#
# Sæt standard policies
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Opret user chains
# Bad chains = hurtig drop
$IPT -N bad_packets
$IPT -N bad_tcp_packets

# Inbound chains
$IPT -N udp_inbound
$IPT -N tcp_inbound

# Outbound chains
$IPT -N udp_outbound
$IPT -N tcp_outbound

# Andre chains
$IPT -N icmp_packets

# Regler for chains vi lige har oprettet
# Vi starter med at droppe invalide pakker (linierne herunder er en meget anvendt copy/paste version)
# OBS: Jeg har remmet alle log entrys for hastighed - aktiver hvis du vil

# ---------------------------------------------------
# Bad packets
# ---------------------------------------------------

# $IPT -A bad_packets -p ALL -m state --state INVALID -j LOG --log-prefix "Invalid packet: "
$IPT -A bad_packets -p ALL -m state --state INVALID -j DROP

# Then check the tcp packets for additional problems
$IPT -A bad_packets -p tcp -j bad_tcp_packets

# All good, so return
$IPT -A bad_packets -p ALL -j RETURN

# bad_tcp_packets chain
#
# All tcp packets will traverse this chain.
# Every new connection attempt should begin with
# a syn packet.  If it doesn't, it is likely a
# port scan.  This drops packets in state
# NEW that are not flagged as syn packets.

# $IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn: "
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# All good, so return
$IPT -A bad_tcp_packets -p tcp -j RETURN

# ---------------------------------------------------
# ICMP
# ---------------------------------------------------

# Fragmenterede ICMP pakker = DoS - vi dropper på stedet

# $IPT -A icmp_packets --fragment -p ICMP -j LOG --log-prefix "ICMP Fragment: "
$IPT -A icmp_packets --fragment -p ICMP -j DROP

# ICMP type 8 = ping - fjern comment for at tillade
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j LOG --log-prefix "Ping detected: "
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

# Time Exceeded = 11 - Betragtes som ufarlig så vi tillader
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPT -A icmp_packets -p ICMP -j RETURN


# ---------------------------------------------------
# UDP INBOUND
# ---------------------------------------------------

# Drop støj (netbios) fra windows maskiner
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 138 -j DROP

# Tillad UDP til CSS servere
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 27015 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 27035 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 27055 -j ACCEPT

$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 27020 -j ACCEPT

$IPT -A udp_inbound -p UDP -j RETURN

# ---------------------------------------------------
# TCP INBOUND
# ---------------------------------------------------

# Webserver (http og https)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 80 -j ACCEPT
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 443 -j ACCEPT

# FTP Server 
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 21 -j ACCEPT

# FTP Client (aktive transfers)
$IPT -A tcp_inbound -p TCP -s 0/0 --source-port 20 -j ACCEPT

# SSH
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 22 -j ACCEPT

# TCP til CSS - RCON
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 27015 -j ACCEPT
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 27035 -j ACCEPT
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 27055 -j ACCEPT

# Webmin
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 10000 -j ACCEPT

$IPT -A tcp_inbound -p TCP -j RETURN


# ---------------------------------------------------
# UDP OUTBOUND
# ---------------------------------------------------

# Vi tillader al udgående UDP

$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT


# ---------------------------------------------------
# TCP OUTBOUND
# ---------------------------------------------------

# Vi tillader al udgående TCP
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT


# ---------------------------------------------------
# Overordnet INPUT chain
# ---------------------------------------------------

# tillad alt til localhost
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

# Drop skodpakker
$IPT -A INPUT -p ALL -j bad_packets

# Drop IGMP bcasts
$IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP

# Accepter forbindelser vi allerede har accepted
$IPT -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Send andre inputs til vore userchains
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Drop bcasts der har overlevet hertil
$IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP

# Log evt. (uncomment) pakker der havner her. (døde pakker og fejl)
# $IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-prefix "FW:INPUT dead packet: "


# ---------------------------------------------------
# Overordnet OUTPUT chain
# ---------------------------------------------------

# Det eneste vi ikke tillader er inval icmp
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP

$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

# Hvis en OUTPUT havner her så er der noget helt galt!
$IPT -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-prefix "FW:OUTPUT dead packet: "


# ---------------------------------------------------
# Overordnet FORWARD chain, NAT og MANGLE
# ---------------------------------------------------

# Bruger vi ikke i dette setup


echo "Firewall aktiv..."



Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 22 Jun 2010 :  11:21:09  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
Sort total sort men bare i 2 kan finde ud af det så følger vi andre bare med :-)




Gå til toppen af siden

[+35]ungamed
[+35] Soldier

Denmark
188 Posts

Skrevet - 24 Jun 2010 :  16:10:36  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
Lazy, det er fanme iorden musiksmag.. eller noget... du har glemt mysql (så vidt jeg kan se) :p men nvm.

Overhovederne har besluttet sig for ikke at bruge den her server alligevel.
Så er ked af at jeg nok ikke får brug for det i denne omgang..
Men uanset har det en kanon læringsværdi for mig, så jeg vil gerne sige tusind tak på egne vejne, for al din tid.

Thomas.

Rettet af - [+35]ungamed @ 24 Jun 2010 16:14:27
Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 24 Jun 2010 :  18:02:40  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
Den opdatering du er ved at kører på ffa serveren har det noget med det Lazy har lavet til dig her i forum?

Hvis det har, hvad hjælper eller gør disse iptables?

Jeg er bare nysgerrig :-)




Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 24 Jun 2010 :  20:09:48  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
Hehe det er helt i orden.

Forresten havde jeg ikke glemt MySQL - Jeg regnede med at du kørte den som localhost. LO_IFACE er ikke begrænset på nogen chains så den kører ret igennem.
Skulle du have webserver og andre ting på en helt anden fysisk maskine der skulle tilgå MySQL serveren ville jeg nok tilføje en

MYS_ACC1="99.99.99.99"
...
...
$IPT -A tcp_inbound -p TCP -s $MYS_ACC1 --destination-port 3306 -j ACCEPT


Med mindre jeg ikke kender source maskinerne der skal tilgå MySQL ville jeg aldrig åbne for alle IP'er (-s 0/0)
Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 25 Jun 2010 :  00:26:08  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
quote:
Oprindeligt skrevet af [+35]Jumpman

Den opdatering du er ved at kører på ffa serveren har det noget med det Lazy har lavet til dig her i forum?

Hvis det har, hvad hjælper eller gør disse iptables?

Jeg er bare nysgerrig :-)

Jeg tror det er den update Valve har sendt ud der er tale om. (Mine unger har brokket sig gevaldig over den men har ikke selv checket.)

Den har intet med iptables at gøre.

Iptables er en firewall til *nix operativsystemer. MEGET anvendt fordi den er ekstremt fleksibel, lige fra det (meget simple) script jeg smed lidt højere oppe - rettet mod en enkelt maskine/server til kæmpemæssige carrierclass routerclusters.
(Den er også populær pga. af nørd-faktoren men det skal du ikke sige til nogen )

Selv et simpelt script kan virke overvældende hvis man ikke lige kan se logikken i syntaxen, men det er slet ikke så besværligt.

For en maskine med fast IP og kun et enkelt netkort (som ovenfor) koncentrerer man sig i princippet blot om 2 overliggende "chains": INPUT og OUTPUT.

Al trafik som andre prøver at sende til dit netkorts IP bliver så betragtet som INPUT og al den trafik din PC prøver at sende ud på samme netkort er OUTPUT før det rammer resten af verdenen.

Du opretter så nogle generelle regler (policies) for hver chain og derefter tilføjer du mere specifikke regler til hver chain.

Typisk er policy for en input chain: DROP.

Det betyder: Hvis der ankommer en data-pakke med en HTTP request til port 80, så bliver denne pakke "droppet" (den kommer aldrig fra netkortet og ind på selve PC'en.
Det er selvf. ikke så smart hvis vi har en webserver, så der tilføjer vi en regel til serverens INPUT chain med f.eks:
iptables -A tcp_inbound -p TCP -s 0/0 --destination-port 80 -j ACCEPT

Her får vi iptables til at tilføje så en regel til "tcp_inbound" og fortæller at vi gerne vil lytte (ACCEPT) til HTTP trafik (-dport 80) fra alle kilder/sources (-s 0/0)

Nu er det så sådan, at en webserver "lytter" på port 80. Ligeså snart den modtager et opkald på port 80 så svarer den klienten (den maskine der skrev adressen på webserveren). Når serveren sender svaret (datapakken) til klienten, så rammer datapakken OUTPUT chain for netkortet før den ryger ud på f.eks. internettet.
Som standard policy sætter man som regel ACCEPT for OUTBOUND - Ellers skal man lave regler for al den trafik man vil tillade sin server at sende ud.

OK, det bliver lidt mere indviklet, selv i dette simple eksempel, for en webserver kan kun håndtere EN kunde ad gangen på port 80.
Derfor er webserveren programmeret til at svare klienten med noget lignende: Tak mester - Jeg har modtaget din bestilling og forresten så snakker vi videre på port 17265, så jeg kan holde port 80 åben for nye kunder...

Iptables er en "stateful" firewall, så det er heldigvis ret enkelt at håndtere kommunikationen mellem vores server og klienten når vi en gang har accepteret opkaldet på port 80.
Resten af samtalen (som vores server flyttede til en anden port) opfatter firewallen som godkendt og "etableret" på lovlig vis fordi vi laver en regel der håndterer portskift for etableret kommunikation, eksempel:
$IPT -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

Kodeordene her er vores overordnede INPUT chain, tilstanden ESTABLISHED,RELATED og handlingen ACCEPT.

Argh pis - Nu har jeg igen svaret på 10 gange mere end det jeg blev spurgt om. Beklager, det er sygeligt, men jeg har planer om at lære lidt om netværk
Gå til toppen af siden

[+35]ungamed
[+35] Soldier

Denmark
188 Posts

Skrevet - 25 Jun 2010 :  06:10:56  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
quote:
jeg har planer om at lære lidt om netværk

arrrrhaaahahahahahahhahahahahahahahahahahahhahaha in your face..
Der redede du sq hele min dag :D

kan man bruge mask's til -s? går ud fra at det er derfor den hedder 0/0 til alt? den er måske omvendt, hvis man gør?
altså som 192.168.1.0/24 for hele det c net?
Hvis det er muligt, kan man så yderligere bruge "halve" net fx. hvis jeg har dhcp der uddeler de først x.x.x.0-127 til alm. lan og resten til wifi og gerne vil droppe outbound fra wifi. kan man så bare skrive:
-A tcp_outbound -p TCP -s x.x.x.127/28 -j DROP
Hvis man kan det, hvordan skulle man så gøre med den første del?
-A tcp_outbound -p TCP -s x.x.x.0/28 -j ACCEPT
ville vel ikke være ok, eller?
man er vel tvunget til at lukke op for hele nettet først og derefter lukke den bagerste del?
Hvis ikke du forstår linjen over skal du bare droppe at tænke over det så har jeg bare morgen hjerne (yes, det er det).

Har forøvrigt et offtopic spørgsmål du måske kender svaret på: hvorfor er hele 127.0.0.0/8 dedikeret til loopback? virker lidt som spild imho.

Det var kun til administrering jeg ville have mysql åben, er lidt vandt til navicat (suk, mere gui crap).
Gå til toppen af siden

[+35]Lazy
[+35] Soldier

Denmark
2470 Posts

Skrevet - 25 Jun 2010 :  10:03:25  Vis profil  Besøg [+35]Lazy's hjemmeside  Klik for at se [+35]Lazy's MSN Messenger adresse  Svar med Quote
quote:
Oprindeligt skrevet af ungamed


Hvis det er muligt, kan man så yderligere bruge "halve" net fx. hvis jeg har dhcp der uddeler de først x.x.x.0-127 til alm. lan og resten til wifi og gerne vil droppe outbound fra wifi. kan man så bare skrive:
-A tcp_outbound -p TCP -s x.x.x.127/28 -j DROP
Hvis man kan det, hvordan skulle man så gøre med den første del?
-A tcp_outbound -p TCP -s x.x.x.0/28 -j ACCEPT
ville vel ikke være ok, eller?
man er vel tvunget til at lukke op for hele nettet først og derefter lukke den bagerste del?
Hvis ikke du forstår linjen over skal du bare droppe at tænke over det så har jeg bare morgen hjerne (yes, det er det).

Har forøvrigt et offtopic spørgsmål du måske kender svaret på: hvorfor er hele 127.0.0.0/8 dedikeret til loopback? virker lidt som spild imho.

Det var kun til administrering jeg ville have mysql åben, er lidt vandt til navicat (suk, mere gui crap).


Du kan godt gøre det du skriver, men det er ikke nødvendigt
Uden at "pladre det hele til" fordi vi i virkeligheden er ovre i NAT og MANGLE delen, så vil jeg nøjes med at sige:
Hvis din default policy er DROP, så behøver du IKKE droppe noget med mindre det er for ydelsens skyld (ramme en pakke tidligt i en chain).
I dette tilfælde er det ligegyldigt om dine wireless pakker droppes i løbet af 0.00001 sek. eller 0.000005.
Du kan derfor nøjes med din ACCEPT linie for det du vil have ud/ind.
Din linie er helt ok lovlig

MEN: Du kan meget mere hvis du loader "iprange" modulet.
(iptables -m iprange ...)
Du kan så ramme "skæve" net, med --src-range og --dst-range f.eks:
iptables -A INPUT -p udp -m iprange --src-range 192.168.1.117-192.168.2.141

En anden fordel er, at nogle synes det er lettere at læse på denne måde.

Angående 127.0.0.0/8, så kan det virke lidt voldsomt og for normale mennesker og situationer giver det ingen mening, men:
I forbindelse med socket programmering og i routing setups hvor man enten ønsker meget finmasket logging eller at route dele af trafikken gennem særlige processer der kan det være rart at kunne svine med et helt klasse a net.
I øvrigt er vi jo på indersiden så du har 254 andre klasse a net til alt det andet

Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 27 Feb 2014 :  13:48:06  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
Nu forstår jeg lidt mere af dette emne efter vi har fået vores egen Linux maskine, nu står ungamed jo for opsætning af hele systemet og master har hjulpet med nogen andre ting, håber sku i læser dette emne ikke at jeg overhovedet tvivler på jeres arbejde men udvekslinger af viden kan man jo aldrig få nok af for mig ser det ud til vi godt kunne bruge noget af Lazy kode men hvad ved jeg det jo jer 2 der er experter, he he så mangler vi bare at få Lazy med ind over igen så kunne jeg får ham til at udvikle +35 egen plugins, jeg må sku sige vi er kommet rigtig langt og 2 eller 3 er altid bedre end 1 for jeg kan jo se ungamed blev lidt klogere på Lazy svar derfor jeg syntes det måske var en ide lige at kigge igemmen igen for at se om vi evt har overset noget der kan fjerne det sidste lag folk har ?
Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 27 Feb 2014 :  14:03:09  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
Skulle i nu en dag sidde og kede jer rigtig meget, så bruger vi jo det her high ping kicker plugin det endligt kicker efter latenzy men ikke efter ping sådan et plugin der virkede rigtigt kunne vi godt bruge som virkede sammen med et teambalance plugin eller phyton kode det sidste virkede perfekt inden en af valves opdateringer for lang tid siden, siden har det været mig umuligt at finde et plugin/script der bare kom lidt i nærheden af det vi brugte før skal lige siges jeg stadig har koden
Gå til toppen af siden

[+35]Rekop
[+35] Soldier

Denmark
1172 Posts

Skrevet - 27 Feb 2014 :  19:11:58  Vis profil  Svar med Quote
kender i det når man læser noget og hurtigt springer hen over det? Det er her med gjort fatter absolut ingen ting..:/
Gå til toppen af siden

[+35]Robian[Wa]
[+35] Soldier

Denmark
50 Posts

Skrevet - 27 Feb 2014 :  23:53:15  Vis profil  Klik for at se [+35]Robian[Wa]'s MSN Messenger adresse  Svar med Quote
haha me to :) læste ned til ( i love when nerds talk dirty) og så scrollede jeg til bunds :) fatter brille af alt det der
Gå til toppen af siden

[+35]TudeFjæs[WA]
[+35] miniCOW - G5

Denmark
1180 Posts

Skrevet - 28 Feb 2014 :  13:28:16  Vis profil  Svar med Quote
en anden gang, så som det aller første, så kig lige hvornår indlægget er lavet istedet ;)
som man jo nemt kan se, så er det jo en gammel gammel tråd, han har hevet frem igen =)
så bare scroll ned til der hvor i kan se at det er nyt :D
Gå til toppen af siden

[+35]Robian[Wa]
[+35] Soldier

Denmark
50 Posts

Skrevet - 28 Feb 2014 :  23:58:53  Vis profil  Klik for at se [+35]Robian[Wa]'s MSN Messenger adresse  Svar med Quote
Ja det havde jeg sku ikke fanget hehe godt set :)
Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 01 Mar 2014 :  10:11:08  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
He he i behøver sku da ikke læse noget i ikke forstår sådan har jeg det feks. tit når Gummi skriver noget så læser man lige sidste linje og så var det overstået he he

Nej rolig Gummi jeg læser det hele
Gå til toppen af siden

[+35]ungamed
[+35] Soldier

Denmark
188 Posts

Skrevet - 01 Mar 2014 :  11:04:55  Vis profil  Besøg [+35]ungamed's hjemmeside  Klik for at se [+35]ungamed's MSN Messenger adresse  Svar med Quote
Jeg har snakket med Master Glock om det og han fremhævede lige for mig at det kun er nogle bestemte porte der er kørt ind mod serveren derfor har en egentlig firewall som dette script er ingen effekt og vil bare give maskinen mere (unødigt arbejde) at lave.
Men der bliver også lagt op til noget der måske kan forbedre perfomance en smule...hvis det overhovedet er nødvendigt altså...

Mulighed 1: Compilere iptables med i kernen, vil gøre det en anelse hurtigere.
Mulighed 2: Hente en preemptive realtime kernel.. ved ikke om det overhovedet vil give noget i praksis, men det er let i debian, da man bare apt-get install'er den og derefter vælger den i grub(2)..
Mulighed 3: Vi kan hæve prioriteten på serverne, det vil nok ikke give noget og vil kræve at de bliver startet af superuser, men hvad siger i?

Især dig den stille, Master Dual Elite?? :D
Du har måske også nogen bud?

--Edit
BTW.. måske er det her ikke den korrekte tråd for det her? :)

Rettet af - [+35]ungamed @ 01 Mar 2014 11:07:05
Gå til toppen af siden

[+35]Jumpman
[+35] Server Admin, [+35] Member of COW - G5

Denmark
6728 Posts

Skrevet - 10 Jan 2016 :  20:42:19  Vis profil  Besøg [+35]Jumpman's hjemmeside  Svar med Quote
Hej Lazy

Vi har jo lejet en ny server og vi bruger derfor din firewall som du skrev til ungamed men du skriver i dette setup at du går ud fra vi ikke bruger IPv6 hvilket vi desværre gør vi bruger både IPv4 og IPv6 kan jeg få dig til at rette dit script ind i forum til dette så vi kan komme igang med serverne ?

På forhånd tak
Jumpman

Scriptet ser nu sådan her ud
#!/bin/sh

# Filename: /etc/init.d/rc.firewall
# Beskrivelse: Simpel iptables firewall script.
# Version 2.0.0
# Senest redigeret: 09-01-2016

# ---------------------------------------------------
# Placering af iptables, modprobe og sysctl
# ---------------------------------------------------

IPT="/sbin/iptables"
MOP="/sbin/modprobe"
SCTL="/sbin/sysctl -w"

# ---------------------------------------------------
# Interfaces
# ---------------------------------------------------

INET_IFACE="eth0"
#INET_ADDRESS="99.99.99.99"

LO_IFACE="lo"
LO_IP="127.0.0.1"

# ---------------------------------------------------
# Load moduler
# ---------------------------------------------------
# OBS: Du behøver IKKE disse linier hvis du har compilet modulerne til kernel

$MOP ip_tables
$MOP ip_conntrack
$MOP iptable_filter
$MOP iptable_mangle
$MOP iptable_nat
$MOP ipt_state
$MOP ipt_LOG

# Du bør som udgangspunkt ikke behøve disse moduler

# $MOP ipt_MASQUERADE
# $MOP ipt_owner
# $MOP ipt_limit
# $MOP ipt_REJECT
# $MOP multiport
# $MOP ip_conntrack_ftp
# $MOP ip_nat_ftp

# ---------------------------------------------------
# Sæt firewall indstillinger i /proc med sysctl (kernelparms)
# ---------------------------------------------------
# Brug kun ip_dynaddr="1" på maskine der kører med en dynamisk DHCP addresse
# ip_forward="1" kun hvis du har flere netkort aktive/kører en vpnserver el. lign.
# bemærk at slår du forwarding til så SKAL den være først og kun med forward giver rp_filter mening.

# $SCTL net.ipv4.ip_forward="1"
# $SCTL net.ipv4.conf.all.rp_filter="1"
# $SCTL net.ipv4.ip_dynaddr="1"

$SCTL net.ipv4.tcp_syncookies="1"
$SCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
$SCTL net.ipv4.conf.all.accept_source_route="0"


# ---------------------------------------------------
# Ryd alle Chains - (Stop firewallen)
# ---------------------------------------------------
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT

# Flush alt
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

# Slet andre kæder
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
echo "Firewall inaktiv - Alle policies = accept"
exit 0
fi

# ---------------------------------------------------
# Opret selve firewallen (chains m.m.)
# ---------------------------------------------------
# Source dedicated server (SRCDS) game ports
SRCDS_PORTS="27020,27021,27022,27023,27024,27025,27027,27035,27036,27037,27038,27039,27040,27041"
#
# Sæt standard policies
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Opret user chains
# Bad chains = hurtig drop
$IPT -N bad_packets
$IPT -N bad_tcp_packets

# Inbound chains
$IPT -N udp_inbound
$IPT -N tcp_inbound

# Outbound chains
$IPT -N udp_outbound
$IPT -N tcp_outbound

# Andre chains
$IPT -N icmp_packets

# Regler for chains vi lige har oprettet
# Vi starter med at droppe invalide pakker (linierne herunder er en meget anvendt copy/paste version)
# OBS: Jeg har remmet alle log entrys for hastighed - aktiver hvis du vil

# ---------------------------------------------------
# Bad packets
# ---------------------------------------------------

# $IPT -A bad_packets -p ALL -m state --state INVALID -j LOG --log-prefix "Invalid packet: "
$IPT -A bad_packets -p ALL -m state --state INVALID -j DROP

# Then check the tcp packets for additional problems
$IPT -A bad_packets -p tcp -j bad_tcp_packets

# All good, so return
$IPT -A bad_packets -p ALL -j RETURN

# bad_tcp_packets chain
#
# All tcp packets will traverse this chain.
# Every new connection attempt should begin with
# a syn packet. If it doesn't, it is likely a
# port scan. This drops packets in state
# NEW that are not flagged as syn packets.

# $IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn: "
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# All good, so return
$IPT -A bad_tcp_packets -p tcp -j RETURN

# ---------------------------------------------------
# ICMP
# ---------------------------------------------------

# Fragmenterede ICMP pakker = DoS - vi dropper på stedet

# $IPT -A icmp_packets --fragment -p ICMP -j LOG --log-prefix "ICMP Fragment: "
$IPT -A icmp_packets --fragment -p ICMP -j DROP

# ICMP type 8 = ping - fjern comment for at tillade
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j LOG --log-prefix "Ping detected: "
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

# Time Exceeded = 11 - Betragtes som ufarlig så vi tillader
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPT -A icmp_packets -p ICMP -j RETURN


# ---------------------------------------------------
# UDP INBOUND
# ---------------------------------------------------

# Drop støj (netbios) fra windows maskiner
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 138 -j DROP

# Tillad UDP til CSS servere
$IPT -A udp_inbound -p UDP -s 0/0 -m multiport --dports $SRCDS_PORTS -j ACCEPT
$IPT -A udp_inbound -p UDP -j RETURN

# ---------------------------------------------------
# TCP INBOUND
# ---------------------------------------------------

# Webserver (http og https)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 80 -j ACCEPT
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 443 -j ACCEPT

# FTP Server
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 21 -j ACCEPT

# FTP Client (aktive transfers)
$IPT -A tcp_inbound -p TCP -s 0/0 --source-port 20 -j ACCEPT

# SSH
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 22 -j ACCEPT

# TCP til CSS - RCON
$IPT -A tcp_inbound -p TCP -s 0/0 -m multiport --dports $SRCDS_PORTS -j ACCEPT


# Webmin
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 10000 -j ACCEPT

$IPT -A tcp_inbound -p TCP -j RETURN


# ---------------------------------------------------
# UDP OUTBOUND
# ---------------------------------------------------

# Vi tillader al udgående UDP

$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT


# ---------------------------------------------------
# TCP OUTBOUND
# ---------------------------------------------------

# Vi tillader al udgående TCP
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT


# ---------------------------------------------------
# Overordnet INPUT chain
# ---------------------------------------------------

# tillad alt til localhost
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

# Drop skodpakker
$IPT -A INPUT -p ALL -j bad_packets

# Drop IGMP bcasts
$IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP

# Accepter forbindelser vi allerede har accepted
$IPT -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Send andre inputs til vore userchains
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Drop bcasts der har overlevet hertil
$IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP

# Log evt. (uncomment) pakker der havner her. (døde pakker og fejl)
# $IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-prefix "FW:INPUT dead packet: "


# ---------------------------------------------------
# Overordnet OUTPUT chain
# ---------------------------------------------------

# Det eneste vi ikke tillader er inval icmp
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP

$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

# Hvis en OUTPUT havner her så er der noget helt galt!
$IPT -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-prefix "FW:OUTPUT dead packet: "

# ------------------------------------------------
# Fra anden FW
# ------------------------------------------------
# Set up UDP flood attack log-n-drop rule
iptables -N log_flood_attack
iptables -A log_flood_attack -j LOG --log-prefix "SRCDS:ATTACK:UDP_FLOOD: " --log-ip-options -m limit --limit 2/sec
iptables -A log_flood_attack -j DROP

# Set up malformed packet warning log rule
iptables -N log_malformed_packet
iptables -A log_malformed_packet -j LOG --log-prefix "SRCDS:WARNING:MALFORMED_PKT: " --log-ip-options -m limit --limit 2/sec
iptables -A log_malformed_packet -j ACCEPT

# set up outgoing DDoS attack detection, log and drop
iptables -N log_outgoing_ddos
iptables -A log_outgoing_ddos -j LOG --log-prefix "WARNING:OUTGOING_DDOS: " --log-ip-options -m limit --limit 2/s
iptables -A log_outgoing_ddos -j DROP
iptables -A OUTPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j log_outgoing_ddos

# Log incoming small/malformed packet UDP attacks (typical CS DoS attack)
#iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m length --length 0:32 -j log_malformed_packet
# Note: Disabled for now because it catches the traffic from HLSW (packet of length 9)
iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m length --length 0:8 -j log_malformed_packet
iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m length --length 10:28 -j log_malformed_packet
iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m length --length 30:32 -j log_malformed_packet

# Prevent UDP flooding from a single source IP (assuming cl_cmdrate=66-128 packets/s per client)
UDP_LIMIT=180 # max 180 packets/s
iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m state --state NEW -m recent --update --seconds 1 --hitcount $UDP_LIMIT --name DEFAULT --rsource -j log_flood_attack
iptables -A INPUT -p udp -m udp -m multiport --dports $SRCDS_PORTS -m state --state NEW -m recent --set --name DEFAULT --rsource

# Log RCON access
#iptables -N log_rcon
#iptables -A log_rcon -j LOG --log-prefix "SRCDS:RCON: " --log-ip-options
#iptables -A log_rcon -j ACCEPT
#iptables -A INPUT -p tcp -m tcp -m multiport --dports $SRCDS_PORTS -j log_rcon


# ---------------------------------------------------
# Overordnet FORWARD chain, NAT og MANGLE
# ---------------------------------------------------

# Bruger vi ikke i dette setup


echo "Firewall aktiv..."


Ps. Jeg lejer muligvis stats hos gameme ved ikke hvordan dette virker endnu andet end vores stats vi stå på deres hjemmeside, så hvordan de fanger hvad vi lave af headshots knife kills osv. ved jeg ikke hvordan fungere andet end vi skal ligge deres plugin ind i vores /addons/sourcemod/plugins og tilføje host, login, port og password oplysninger i vores /addons/sourcemod/configs/database.cfg fil på selve serveren




Gå til toppen af siden
   Emne Næste emne  
 Nyt emne  Svar på emnet
 Vis printervenlig version
Hop til:
Clan [+35] Forum © 2000-2002 Snitz Communications Go To Top Of Page
Tilpasset ældre læsere - vist på [:)] 0.52 sek. Snitz Forums 2000