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 mske 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 opstning af en server.

Men mangler den vigtigste (imho) firewallen.

Min sidste boss brugte iptables men jeg nede aldrig at komme ind i den, nr jeg privat brugte linux var det med KDE, Gnome eller xfce

og der var altid en dejlig grafisk lsning 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 opstning af flg.

indkomne forbindelser (alle til eth0):

FTP: Port 21 - TCP (ikke 100% sikker p om ssl krver andre porte eller udp).
SSH: Port 22 - TCP (tror jeg).
WEB: Port 80 - TCP & UDP.
Steam flleskab: 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 hrer 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 gre noget forkert s det skal vre rigtigt (ihvertfald med ssh) i frste forsg. :)

Hjlp, om ikke andet med at gre mig mere sikker p at jeg gr 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 sprgsml 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 )

Frst og fremmest en stribe sprgsml:
  • Er opgaven at stte FW p en maskine der skal kre 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 netvrket blevet en distribueret tjeneste de enkelte servere skal supportere?
  • Krer 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 nr 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 rdhtte 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 hndtering 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" (ls: voldtaget simpliciteten i) deres iptables config.

Edit: Stavepladen som sdvanlig

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 stte FW p en maskine der skal kre 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 netvrket blevet en distribueret tjeneste de enkelte servere skal supportere?


S vidt jeg har forstet 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:
Krer 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 nr maskinen ikke kommer op efter remote reboot


Det krer insmoddet gr jeg strkt 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 gttet 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 sge p specific debian eller ubuntu lsning.

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 kre 1k hz, ticks eller hvad du nu foretrkker.
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 strste distroer.
Og der var det en computer jeg kunne rre :)

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 vre s nervs for

Slet ikke hvis du har fysisk adgang til maskinen. For at undg de vrste 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 hndbog
Det eneste du behver at koncentrere dig om er afsnit 4.5
Ja, det er s simpelt, men et par rd med p vejen:
1. Ls 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. Kr scriptet via cron med xx min. forsinkelse - Kan du connecte til maskinen s kan du ogs myrde cronjobbet. (Redder dig primrt hvis du har lavet ged i din netkortdriver)
3. Brug menuconfig - det er langt mere overskueligt end config.
4. Det svreste er at finde ud af hvad du vil vlge fra... Det der som regel gr galt er man fr fjernet diskcontrollere eller anden hw der er ndvendig for at boote.
5. Husk dit hovedforml og kig evt. her.

Jeg fr 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 krer 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 nuvrende konfiguration, s man stadig kunne optimere den.

quote:
Jeg fr 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 rg sgu' lige ind i en seris grill session og rdvin p magnumflasker mikser ikke s godt med gode rd...

quote:
Oprindeligt skrevet af ungamed


Jeg troede ogs bare at den tog udgangspunkt i den nuvrende konfiguration, s man stadig kunne optimere den.

Det kan egentlig sagtens vre tilfldet. Jeg er bare s hblst 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 fr nok lige strikket en iptables config sammen til dig


hh, men skal nok lige af med hovedpinen i morgen frst

Bortset fra det, s glder reglen med et 30-60 min cronjob reboot 100% nr du fedter med iptables/netfilter stadig. Jeg ER frdig med at spille hovmodig nr det glder 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 vret min arkilleshl: Det er en F*CKING ANNOYING voldtaget distro der prver at holde folk i hnderne og derfor gr alting 10* mere bvlet end det br vre )

Sjovt nok er alle mine besg i debians (og den afledte ubuntu) verden endt med at jeg bare stter 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 hrder ssh (fr, og uafhngigt af iptables, netfilter osv.)?
Samme med httpd, apache2 whatever?

"apt-get install mc" --- Ahh det spasser-OS kan gre 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 get ud fra at du ikke har en dynamisk IP!
Jeg gr 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 forhbentligt lavet dit crontab entry korrekt - Det slr 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 behver 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 br som udgangspunkt ikke behve disse moduler

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

# ---------------------------------------------------
# St firewall indstillinger i /proc med sysctl (kernelparms)
# ---------------------------------------------------
# Brug kun ip_dynaddr="1" p maskine der krer med en dynamisk DHCP addresse
# ip_forward="1" kun hvis du har flere netkort aktive/krer en vpnserver el. lign.
# bemrk at slr du forwarding til s SKAL den vre frst 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 kder
$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.)
# ---------------------------------------------------
#
# St 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 stj (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 udgende UDP

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


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

# Vi tillader al udgende 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. (dde 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 flger 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 fr brug for det i denne omgang..
Men uanset har det en kanon lringsvrdi 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 krer p ffa serveren har det noget med det Lazy har lavet til dig her i forum?

Hvis det har, hvad hjlper eller gr 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 krte den som localhost. LO_IFACE er ikke begrnset p nogen chains s den krer ret igennem.
Skulle du have webserver og andre ting p en helt anden fysisk maskine der skulle tilg MySQL serveren ville jeg nok tilfje 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 krer p ffa serveren har det noget med det Lazy har lavet til dig her i forum?

Hvis det har, hvad hjlper eller gr 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 gre.

Iptables er en firewall til *nix operativsystemer. MEGET anvendt fordi den er ekstremt fleksibel, lige fra det (meget simple) script jeg smed lidt hjere oppe - rettet mod en enkelt maskine/server til kmpemssige carrierclass routerclusters.
(Den er ogs populr pga. af nrd-faktoren men det skal du ikke sige til nogen )

Selv et simpelt script kan virke overvldende hvis man ikke lige kan se logikken i syntaxen, men det er slet ikke s besvrligt.

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 prver at sende til dit netkorts IP bliver s betragtet som INPUT og al den trafik din PC prver at sende ud p samme netkort er OUTPUT fr det rammer resten af verdenen.

Du opretter s nogle generelle regler (policies) for hver chain og derefter tilfjer 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 tilfjer 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 fr vi iptables til at tilfje s en regel til "tcp_inbound" og fortller at vi gerne vil lytte (ACCEPT) til HTTP trafik (-dport 80) fra alle kilder/sources (-s 0/0)

Nu er det s sdan, 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). Nr serveren sender svaret (datapakken) til klienten, s rammer datapakken OUTPUT chain for netkortet fr den ryger ud p f.eks. internettet.
Som standard policy stter 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 hndtere 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 hndtere kommunikationen mellem vores server og klienten nr 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 hndterer 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 lre lidt om netvrk
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 lre lidt om netvrk

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

kan man bruge mask's til -s? gr ud fra at det er derfor den hedder 0/0 til alt? den er mske omvendt, hvis man gr?
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 frst 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 gre med den frste del?
-A tcp_outbound -p TCP -s x.x.x.0/28 -j ACCEPT
ville vel ikke vre ok, eller?
man er vel tvunget til at lukke op for hele nettet frst og derefter lukke den bagerste del?
Hvis ikke du forstr linjen over skal du bare droppe at tnke over det s har jeg bare morgen hjerne (yes, det er det).

Har forvrigt et offtopic sprgsml du mske 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 frst 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 gre med den frste del?
-A tcp_outbound -p TCP -s x.x.x.0/28 -j ACCEPT
ville vel ikke vre ok, eller?
man er vel tvunget til at lukke op for hele nettet frst og derefter lukke den bagerste del?
Hvis ikke du forstr linjen over skal du bare droppe at tnke over det s har jeg bare morgen hjerne (yes, det er det).

Har forvrigt et offtopic sprgsml du mske 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 gre det du skriver, men det er ikke ndvendigt
Uden at "pladre det hele til" fordi vi i virkeligheden er ovre i NAT og MANGLE delen, s vil jeg njes med at sige:
Hvis din default policy er DROP, s behver du IKKE droppe noget med mindre det er for ydelsens skyld (ramme en pakke tidligt i en chain).
I dette tilflde er det ligegyldigt om dine wireless pakker droppes i lbet af 0.00001 sek. eller 0.000005.
Du kan derfor njes 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 "skve" 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 lse p denne mde.

Angende 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 srlige processer der kan det vre 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 forstr jeg lidt mere af dette emne efter vi har fet vores egen Linux maskine, nu str ungamed jo for opstning af hele systemet og master har hjulpet med nogen andre ting, hber sku i lser 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 fr 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 mske 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 sdan 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 vret mig umuligt at finde et plugin/script der bare kom lidt i nrheden af det vi brugte fr 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 nr man lser 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 :) lste 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]TudeFjs[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 frste, s kig lige hvornr indlgget er lavet istedet ;)
som man jo nemt kan se, s er det jo en gammel gammel trd, 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 behver sku da ikke lse noget i ikke forstr sdan har jeg det feks. tit nr Gummi skriver noget s lser man lige sidste linje og s var det overstet he he

Nej rolig Gummi jeg lser 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 fremhvede lige for mig at det kun er nogle bestemte porte der er krt ind mod serveren derfor har en egentlig firewall som dette script er ingen effekt og vil bare give maskinen mere (undigt arbejde) at lave.
Men der bliver ogs lagt op til noget der mske kan forbedre perfomance en smule...hvis det overhovedet er ndvendigt alts...

Mulighed 1: Compilere iptables med i kernen, vil gre 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 vlger den i grub(2)..
Mulighed 3: Vi kan hve prioriteten p serverne, det vil nok ikke give noget og vil krve at de bliver startet af superuser, men hvad siger i?

Isr dig den stille, Master Dual Elite?? :D
Du har mske ogs nogen bud?

--Edit
BTW.. mske er det her ikke den korrekte trd 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 gr ud fra vi ikke bruger IPv6 hvilket vi desvrre gr vi bruger bde 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 forhnd tak
Jumpman

Scriptet ser nu sdan 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 behver 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 br som udgangspunkt ikke behve disse moduler

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

# ---------------------------------------------------
# St firewall indstillinger i /proc med sysctl (kernelparms)
# ---------------------------------------------------
# Brug kun ip_dynaddr="1" p maskine der krer med en dynamisk DHCP addresse
# ip_forward="1" kun hvis du har flere netkort aktive/krer en vpnserver el. lign.
# bemrk at slr du forwarding til s SKAL den vre frst 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 kder
$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"
#
# St 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 stj (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 udgende UDP

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


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

# Vi tillader al udgende 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. (dde 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 tilfje 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 lsere - vist p [:)] 0.23 sek. Snitz Forums 2000