IPFW – Firewall

ipfw Config

/etc/ipfw.teslina

Bei der Firewall Config ist unbedingt darauf zu achten, dass man die korrekte Ethernet Schnittstelle reinschreibt. Sonst kommt niemand mehr auf den Server. Die korrekte Bezeichnung findet man mit

ifconfig

kann z.B. eine davon sein:

xl0  -  eth0  -  bge0 - em0

Hier ein Beispiel Config File:

#
# $Id: ipfw.teslina,v 1.2 2005/09/28 08:37:25 root Exp $
#
# keep-state = schreibt in dynamic table rein
# dynamic table kann man so anzeigen lassen:
# expiry time of rules ist by default 300s
# ipfw -d -e list
#
# output sieht dann etwa so aus:
# ## Dynamic rules (2983):
# 21000     9    1164 (0s) STATE tcp 220.22.143.6 2052 <-> 81.94.97.82 80
# 21000  1312   54308 (269s) STATE tcp 222.152.152.46 50732 <-> 81.94.97.82 80
# 21000   357   14896 (269s) STATE tcp 85.1.140.112 51826 <-> 81.94.97.82 80
# 21000   849   36135 (259s) STATE tcp 83.78.32.143 49293 <-> 81.94.97.82 80
# 21000  1089   44908 (254s) STATE tcp 72.220.224.34 60192 <-> 81.94.97.82 80
# rule                 rule expired in 254s
#
#
# IP RANGES
# First segment (8), First two segments (16),
# First three segments (24) or all segments (32).
# das routing kann man aber auch meistens mit
# whois 84.253.30.125 herausfinden
# route:          84.253.0.0/18
#
flush
# —————————————————
# ——— Full Access (z.B. eigene Server / Netze)
# —————————————————
table 1 flush
table 1 add 84.253.0.0/18
table 1 add 83.173.192.0/18
table 1 add 212.90.192.0/19
table 1 add 62.152.192.0/19

# —————————————————
# Bad Guys and Girls
# (Zugriffe von diesen IP Ranges werden gesperrt)
# —————————————————
table 10 flush
# scheint eine dos attacke zu sein. grast alles ab und generiert serverload von ueber 100! ist ip aus china
table 10 add 222.46.18.34/32
# search honeypot 208.80.194.29 for more information
table 10 add 208.80.192.0/21
#
# tausende login versuche während 3 tagen – immer von 19 – 24h / 29.03.10
table 10 add 193.178.147.71/32
#
#alle server mit dieser submask sind sehr böse!
table 10 add 64.29.148.0/24
# —————————————————
# this will be removed later
add 1 allow ip from any to any
#
#
# catch-all for all state-setups later
add 999 check-state
#
# don’t want no IP options
add 1000 deny ip from any to any ipoptions ssrr
add 1001 deny ip from any to any ipoptions lsrr
#
# Special Configurations
add 1050 allow         ip from me to table(1)
add 1055 allow         ip from table(1) to me
#
# things to block bad ppl out of me:
add 1090 deny ip from table(10) to me
#
# loopback is always ok
add 1092 allow         ip from any to any via lo0
add 1100 allow         ip from any to 224.0.0.0/4
#
# drop tcp and udp bootps/netbios requests
add 2010 deny tcp from any to any 67,68,137,138,139 in via bge0
add 2011 deny udp from any to any 67,68,137,138,139 in via bge0
add 2012 deny tcp from any 67,68,137,138,139 to any in via bge0
add 2013 deny udp from any 67,68,137,138,139 to any in via bge0
#
# reject reserved 0/8
add 3030 deny ip from 0.0.0.0/8 to any in via bge0
add 3031 unreach net-prohib log ip from any to 0.0.0.0/8 out via bge0
#
# reject reserved 255/8
add 3040 deny log ip from 255.0.0.0/8 to any in via bge0
add 3041 unreach net-prohib log ip from any to 255.0.0.0/8 out via bge0
#
# reject tcp ident requests
add 5000 unreach filter-prohib tcp from any to any 113 in
#
# allow icmp (really?)
add 6000 allow icmp from me to any
add 6001 allow icmp from any to me in icmptypes 0,3,8,11,14
##add 6001 allow icmp from any to me keep-state
#
# we don’t talk ospf, igmp
add 7000 deny ospf from any to any
add 7001 deny igmp from any to any
#
# ##############################################3
# # SERVER SERVICES
# ##############################################3
# ssh server
##add 20000 allow tcp from any to me 22 keep-state in setup
add 20000 allow tcp from any to me 22 in setup limit src-addr 1
#
# http/https
add 21000 allow tcp from any to me 80 in via bge0 setup
#add 21010 allow tcp from any to me 443 in via bge0 setup keep-state
add 21010 allow tcp from any to me 443 in via bge0 setup limit src-addr 15

#
# smtp
add 22000 allow tcp from any to me 25,465,587 in setup keep-state
#
# ftp
add 23000 allow tcp from any to me 20,21 in setup keep-state
# ftp passive mode added by sunci
#add 23010 allow tcp from any to me 51000-52000 in setup keep-state
#
# pop/imap incl. SSL
add 24000 allow tcp from any to me 110,143 in setup keep-state
add 24010 allow tcp from any to me 993,995 in setup keep-state
# deny sieve explizit
add 24500 deny tcp from any to me 2000
#
# ftp
add 25000 allow tcp from any to me 53
add 25020 allow udp from any to me 53
#

# allow me to traceroute outside, as well as other udp based tools like ntp
add 41000 allow udp from me to any out via bge0 keep-state

# allow antispamdb abglecih
add 42000 allow tcp from me to 193.201.84.18 3306 keep-state
# los.ch zeug
add 42001 allow tcp from 193.201.84.20 to me 3306 keep-state

add 43000 allow ip from me to any keep-state

# deny any any
add 60000 deny log      ip from any to any
#
# delete basic temporary setup and re-set counters
delete 1
zero

 /etc/rc.conf

Firewall beim Startup aktivieren:

vi /etc/rc.conf

Hinzufügen:

#-----------------------------------------------#
#       Firewall Stuff                          #
#-----------------------------------------------#
firewall_enable="YES"
firewall_type="/etc/ipfw.teslina"
firewall_quiet="YES"
firewall_logging="YES"

 

ipfw Logging aktivieren

Manchmal wäre man froh, man könnte die Firewall Logfiles debuggen. Normalerweise aktiviere ich das Logging nicht, da sonst riesengrosse Logs geschrieben werden. Teporär macht es aber sicherlich ab und zu Sinn 🙂

mkdir /var/log/ipfw && touch /var/log/ipfw/ipfw.log
vi /etc/syslog.conf

Am Ende folgende 2 Zeilen hinzufügen

!ipfw
*.*                                             /var/log/ipfw/ipfw.log
/etc/rc.d/syslogd restart

So und jetzt noch die Firewall restarten – dann Logfiles angucken.

/etc/rc.d/ipfw restart

Werden zu wenig Daten angezeigt, da das Limit erreicht wurde (z.B. ipfw: limit 512 reached on entry 60000) kann man das Limit erhöhen:

#  sysctl net.inet.ip.fw.             
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.static_count: 39
net.inet.ip.fw.dyn_max: 4096
net.inet.ip.fw.dyn_count: 86
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.verbose_limit: 512
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.debug: 1
net.inet.ip.fw.one_pass: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.enable: 1

z.b.  so:

# sysctl net.inet.ip.fw.verbose_limit=1500

Danach Firewall wieder neu starten. Weitere Infos dazu hier:

       

  • *

    Du kannst diese HTML tags verwenden: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Kommentar-Feed für diesen Beitrag
nach oben