[linux] IPtables op een simpele manier

Pagina: 1
Acties:
  • 630 views sinds 30-01-2008
  • Reageer

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Aangezien de gedachte als je een service niet draait hij ook niet aangevallen kan worden gaat redelijk op. Maar ik wil toch wat zaken dicht gaan zetten.

Ik ben dus me maar eens in gaan lezen in het verhaal IPtables. Overal gelezen, ook de wel bekende howto die hier wel vaker rond zwerft.

Aangezien ik het idee heb dat je opzich best met een generator moet kunnen werken om een simpele firewall op te zetten die je later met de hand uit kan bouwen wil ik jullie mening hier eens over.

De basis van een goede firewall is natuurlijk het beste, uitbouwen is dan vele malen makkelijker.

De server is puur een server dus geen forwarding verhaal en Masq in dit geval.

Graag zou ik eens van jullie willen weten hoe jullie de basis zouden willen zien. Je kunt natuurlijk met een basisscript werken waarbij je bovenin een aan tal variabelen gebruikt en uiteindelijk daar alleen hoeft te wijzigen maar dat zijn variaties op manieren zoals mensen willen werken.

De reden van dit topic is meer om het feit dat het wellicht handig is om een basis script neer te zetten voor mensen die IPtables willen testen. Dus bijvoorbeeld:

-Server geinstalleerd
-Portscan om te testen
-IPtables activeren
-Weer een portscan om te testen
-Het zien van het verschil in beide configs.

Ik heb zelf even een simpel scriptje gemaakt met de volgende generator, maar de vraag is of dit wel wijzelijk is en mensen die hiermee gaan testen ook wel op de goede manier tewerk gaan. Ik vind het in dit geval namelijk ook wel handig om even een houvast te hebben, een ander denk ik ook wel.

http://www.citadec.com/FirewallGenerator.html

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/sh
# This is a sample Firewall script made with Citadec Solutions
# sample firewall generator at http://www.citadec.com
# Remember that this is meant to help you to make your own
# firewall. Allways read this script through before using it!

IPT=/sbin/iptables
LSMOD=/sbin/lsmod
# Flushing old rules
$IPT -F
$IPT -t nat -F

# Next is your IP
NET=192.168.1.10


# DROP IF NO FLAGS SET OR ALL FLAGS SET (Some scanning methods uses these)
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --tcp-flags ALL NONE -j DROP
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --tcp-flags ALL ALL -j DROP

# We dont need ipchains
$LSMOD | grep ipchains -q -s && rmmod ipchains

# Allow everything on the loopback interface
$IPT -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT

# This is done to enable source verification
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
  for f in /proc/sys/net/ipv4/conf/*/rp_filter
  do
   echo 2 > $f
  done
fi

# This one is for syncookies protection
if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
  echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi

# We dont want ICMP Dead Errors
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then
  echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
fi

# We want to Ignore ICMP Broadcasts
if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then
  echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
fi

# We dont want anyone to play with dynamic TCP/IP
if [ -e /proc/sys/net/ipv4/ip_dynaddr ]; then
  echo 0 > /proc/sys/net/ipv4/ip_dynaddr
fi

# These IP addresses are blocked, because they are not "routable"
$IPT -t filter -A INPUT -s 1.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 2.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 7.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 23.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 27.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 31.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 41.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 45.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 60.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 68.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 69.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 70.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 71.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 80.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 88.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 90.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 91.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 92.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 100.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 111.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 112.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 127.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 127.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 128.66.0.0/16 -d $NET -j DROP
$IPT -t filter -A INPUT -s 172.16.0.0/12 -d $NET -j DROP
$IPT -t filter -A INPUT -s 197.0.0.0/16 -d $NET -j DROP
$IPT -t filter -A INPUT -s 201.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 220.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 222.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 240.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 242.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 244.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 251.0.0.0/8 -d $NET -j DROP
$IPT -t filter -A INPUT -s 254.0.0.0/8 -d $NET -j DROP

# In this Firewall we dont want Multicast allowed
$IPT -t filter -A INPUT -s 224.0.0.0/8 -d 0/0 -j DROP
$IPT -t filter -A INPUT -s 0/0 -d 224.0.0.0/8 -j DROP
$IPT -t filter -A OUTPUT -s 224.0.0.0/8 -d 0/0 -j DROP
$IPT -t filter -A OUTPUT -s 0/0 -d 224.0.0.0/8 -j DROP

# Block Packets with Stuffed Routing
$IPT -t filter -A INPUT -s 255.255.255.255 -j DROP
$IPT -t filter -A INPUT -d 0.0.0.0 -j DROP
$IPT -t filter -A OUTPUT -s 255.255.255.255 -j DROP
$IPT -t filter -A OUTPUT -d 0.0.0.0 -j DROP

# ICMP Should be allowed out
$IPT -A OUTPUT -p icmp -s $NET -d 0/0 -j ACCEPT

# Open inbound established connections (ssh)
$IPT  -A INPUT -p tcp --sport 22 --destination-port 513:65535 ! --syn -m state --state RELATED -j ACCEPT

# FTP Data fix
$IPT  -A INPUT -p tcp --sport 20 --destination-port 1023:65535 ! --syn -m state --state RELATED -j ACCEPT
$IPT  -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
$IPT  -A INPUT -p udp -s 0/0 -d $NET --destination-port 1023:65535 -j ACCEPT

# Open ports for outbound established connections
$IPT -A OUTPUT -p tcp -s $NET -d 0/0 --destination-port 1:65535 -j ACCEPT
$IPT -A OUTPUT -p udp -s $NET -d 0/0 --destination-port 1:65535 -j ACCEPT
# FTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 20  ! --syn -j ACCEPT
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 21 -j ACCEPT
# SSH allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 22 -j ACCEPT
# SMTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 25 -j ACCEPT
# DNS allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 53 -j ACCEPT
# POP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 110 -j ACCEPT
# IMAP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 143 -j ACCEPT
# HTTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 80 -j ACCEPT
# HTTPS allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 443 -j ACCEPT
# MYSQL server allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --destination-port 3306 -j ACCEPT


# RESTART KLOGD (So we dont get flooded by iptables to tty)
killall -9 klogd
/sbin/klogd -x -c 4

# Deny everything not let through earlier
$IPT -A INPUT -j DROP



Zo even gecopied omdat mijn IE wat brak is op het moment.

Is dit nu een goede basis ? Het is simpel klikken en het ding genereerd een basis naar mijn idee. NU wil je op den duur bijvoorbeeld rules tussen verschillende machines toevoegen,maar kan dit goed in dit script of heb je dan echt een verkeerd begin gemaakt ?

[ Voor 68% gewijzigd door BacardiBreezer op 16-02-2005 19:49 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

hm, als ik hoor IPTables en "geen verstand van IPTables" roep ik meestal Shorewall.

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Verwijderd schreef op woensdag 16 februari 2005 @ 19:51:
hm, als ik hoor IPTables en "geen verstand van IPTables" roep ik meestal Shorewall.
Dat is wat kort door de bocht denk ik. Niemand weet alles en je moet ergens aan de gang toch ?

Hulpmiddelen zijn handig, ik wil niet belangrijk gaan lopen doen over zaken die allang geautomatiseerd zijn enzovoorts maar iets meer grip erop dan alles "uit besteden" vind ik toch wel fijn !

Jij bent toch ook ergens begonnen ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

BacardiBreezer schreef op woensdag 16 februari 2005 @ 19:54:
[...]


Dat is wat kort door de bocht denk ik. Niemand weet alles en je moet ergens aan de gang toch ?

Hulpmiddelen zijn handig, ik wil niet belangrijk gaan lopen doen over zaken die allang geautomatiseerd zijn enzovoorts maar iets meer grip erop dan alles "uit besteden" vind ik toch wel fijn !
Jij bent toch ook ergens begonnen ?
Ik bedoelde het niet denigrerend ofzo hoor.
Ik ben ook ergens begonnen en gestopt bij Shorewall, lijkt mij de beste oplossing om IPTables op de simpele manier te doen, zonder diep in de materie te duiken.

Shorewall voorziet mijninziens in voldoende mogelijkheden om op een makkelijke intuiïtive manier zaken als firewall, portforwarding etc. te doen met iptables.

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Verwijderd schreef op woensdag 16 februari 2005 @ 20:04:
[...]


Ik bedoelde het niet denigrerend ofzo hoor.
Ik ben ook ergens begonnen en gestopt bij Shorewall, lijkt mij de beste oplossing om IPTables op de simpele manier te doen, zonder diep in de materie te duiken.

Shorewall voorziet mijninziens in voldoende mogelijkheden om op een makkelijke intuiïtive manier zaken als firewall, portforwarding etc. te doen met iptables.
Ik las je berichtje nog even 10x en zag dat je het niet direct denigrerend bedoelt maar begreep al wel dat je redelijk achter Shorewall stond.

In hoeverre is deze manier professioneel te noemen ? NIet dat je voor thuis professioneel zou moeten werken maar je wil toch kijken wat de meeste flexibele manier is die ook erg degelijk is. Ik ben al even op de site van shorewall aan het lezen gegaan.

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
De enige vraag die ik mij eigenlijk al enige tijd stel is de volgende:

Hoe basic mag een script zijn om gewoon goed te zijn voor een direct connectie op internet.

Dit is een voorbeeld van een standaard firewall van een Fedora install. Deze is uiteraard goed omdat de portscan precies aangeeft welke poorten er open staan. Maar wil je het zo complex maken dat je ook rules toevoegt tussen verschillende machines stel je zou zo ver willen gaan ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/sh

EXTIF=eth0
LOIF=lo

ANY=0/0
LOOPBACK=127.0.0.0/8

echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter
modprobe ipt_REJECT
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_LOG
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Turn on IP forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward

# default rules
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P POSTROUTING ACCEPT -t nat

# flush rules
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING  -t nat

# loopback
iptables -A INPUT -i eth+ -p tcp -d $LOOPBACK -j DROPiptables -A INPUT -i eth+ -p udp -d $LOOPBACK -j DROP
iptables -A INPUT -i $LOIF -j ACCEPT

# Allow SSH connections
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT

# Allow DNS connections
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

# Allow Web connections
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT

# Allow SSL connections
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
# Allow SMTP connections
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -j ACCEPT

# Allow POP3 connections
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --sport 110 -j ACCEPT

# Allow AUTH/IDENT connections
iptables -A INPUT -p tcp --dport 113 -j ACCEPT
iptables -A INPUT -p tcp --sport 113 -j ACCEPT
iptables -A INPUT -p udp --dport 113 -j ACCEPT
iptables -A INPUT -p udp --sport 113 -j ACCEPT

# Allow FTP connections
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT

# Allow PostgreSQL connections
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
iptables -A INPUT -p tcp --sport 5432 -j ACCEPT

# Allow Netwizd connections
iptables -A INPUT -p tcp --dport 1010 -j ACCEPT
iptables -A INPUT -p tcp --sport 1010 -j ACCEPT

# Allow MySQL connections
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --sport 3306 -j ACCEPT

iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT

# Save rules
iptables-save >/etc/sysconfig/iptables

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

BacardiBreezer schreef op donderdag 17 februari 2005 @ 14:22:
De enige vraag die ik mij eigenlijk al enige tijd stel is de volgende:

Hoe basic mag een script zijn om gewoon goed te zijn voor een direct connectie op internet.

Dit is een voorbeeld van een standaard firewall van een Fedora install. Deze is uiteraard goed omdat de portscan precies aangeeft welke poorten er open staan. Maar wil je het zo complex maken dat je ook rules toevoegt tussen verschillende machines stel je zou zo ver willen gaan ?

code:
1
[..snip..]
Vaag script. Er is helemaal geen input regel voor icmp pakketjes. Hoe kan je nu error messages terug krijgen (bv type 3 Destination Unreachable).

Als je gebruik maakt van connection tracking kan je het script rules set heel simpel houden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# kernel switches

# Turn on forwarding (moet eigenlijk eerst uit en aan het einde van 
# het script pas aan)
if [ -e /proc/sys/net/ipv4/ip_forward ]; then
       echo 1 > /proc/sys/net/ipv4/ip_forward
else
       echo "Uh oh: /proc/sys/net/ipv4/ip_forward does not exist"
       echo "(That may be a problem)"
       echo
fi;


# Turn on syn cookies protection in kernel
if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
       echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi;


# Turn on source address verification in kernel
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
        for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
                echo 1 > $interface;
        done
fi;

# Disable ICMP Redirect acceptance
if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then
        for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
                echo 0 > $interface;
        done
fi;

# Disable ICMP send_redirect
if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then
        for interface in /proc/sys/net/ipv4/conf/*/send_redirects; do
                echo 0 > $interface;
        done
fi;

# Don't accept source routed packets
if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then
        for interface in /proc/sys/net/ipv4/conf/*/accept_source_route; do
                echo 0 > $interface;
        done
fi;

# Log spoofed packets, source routed packets, redirect packets
if [ -e /proc/sys/net/ipv4/conf/all/log_martians ]; then
        for interface in /proc/sys/net/ipv4/conf/*/log_martians; do
                echo 1 > $interface;
        done
fi;

# ICMP Broadcasting protection
if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then
        echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
fi;

# ICMP Dead Error Messages protection
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then
        echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
fi;

# Enable automatic IP defragmenting
if [ -e /proc/sys/net/ipv4/ip_always_defrag ]; then
        echo 1 > /proc/sys/net/ipv4/ip_always_defrag
fi;

# Turn on dynamic TCP/IP address hacking ... turn of with echo 0 > ...
if [ -e /proc/sys/net/ipv4/ip_dynaddr ]; then
        echo 1 > /proc/sys/net/ipv4/ip_dynaddr
fi;

# Set the maximum number of connections to track. (Kernel Default: 2048)
if [ -e /proc/sys/net/ipv4/ip_conntrack_max ]; then
        echo 4096 > /proc/sys/net/ipv4/ip_conntrack_max
fi;

# Enable the LooseUDP patch which some Internet-based games require
#
#  If you are trying to get an Internet game to work through your IP MASQ box,
#  and you have set it up to the best of your ability without it working, try
#  enabling this option.  This option is disabled
#  by default due to possible internal machine UDP port scanning
#  vunerabilities.
#  Turned off by default ... turn on with echo 1 > ...
if [ -e /proc/sys/net/ipv4/ip_masq_udp_dloose ]; then
        echo 0 > /proc/sys/net/ipv4/ip_masq_udp_dloose
fi;


# default policies

iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT

# flush rules

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F
iptables -X

iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t nat -F OUTPUT
iptables -t nat -F
iptables -t nat -X

iptables -t mangle -F PREROUTING
iptables -t mangle -F OUTPUT
iptables -t mangle -F
iptables -t mangle -X


# Allow loopback interface connections
iptables -A INPUT -i lo -j ACCEPT

# Allow existing and related (icmp, ftp-data ect) connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# Open server ports (for port numbers see /etc/services)

server_tcp_ports="ssh www dns https smtp pop3 ident postgresql 1010 mysql"
server_udp_ports="ident dns"

iptables -N server
iptables -F server

iptables -A INPUT -m state --state NEW -j server

if [ -n "$server_tcp_ports" ]; then
    for i in $server_tcp_ports; do
        iptables -A server -p tcp --dport $i -j ACCEPT
    done;
fi;

if [ -n "$server_udp_ports" ]; then
    for i in $server_udp_ports; do
        iptables -A server -p udp --dport $i -j ACCEPT
    done;
fi;


Naar wens uitbreidbaar met spoof checking, tcp-flags checking en het vullen van logbestanden.
Denk eraan dat bij iptables geforwarde pakketjes niet door de INPUT chain gaan. Dus als je een gateway-firewall bouwt zonder NAT je ook de FORWARD chain moet filteren op de input interface.


PS: Het bovenstande script is even snel bij elkaar geknipt en geplakt. Kan dus best zijn dat het niet werkt of als bonus je raid-array vernaggelt :)


-EDIT-
Voor ftp en irc moet er ook nog modprobe's bij voor ip_conntrack_ftp en ip_conntrack_irc (en ip_nat_ftp, ip_nat_irc bij gebruik van NAT) bij als die als module zijn gecompileerd. Anders herkent de connection tracking niet de RELATED connections van bestandsoverdachten.

[ Voor 4% gewijzigd door Buffy op 17-02-2005 15:53 ]

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
OK, Thnx zo zie je de opbouw van verschillende personen en hoe men er zelf mee omgaat. Ik probeer te vergelijken en hier een goede oplossing uit te krijgen.

Het zou leuk zijn als meerdere mensen hun "versie" zouden plaatsen om de verschillen eens op een rijtje te zetten.

Dit is er bijvoorbeeld weer een uit een Generator, redelijk uitgebreid lijkt me.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
#!/bin/sh
#
# Generated iptables firewall script for the Linux 2.4 kernel
# Script generated by Easy Firewall Generator for IPTables
# copyright 2002 Timothy Scott Morizot
#
# Redhat chkconfig comments - firewall applied early,
#                             removed late
# chkconfig: 2345 08 92
# description: This script applies or removes iptables firewall rules
#
# This generator is primarily designed for RedHat installations,
# although it should be adaptable for others.
#
# It can be executed with the typical start and stop arguments.
# If used with stop, it will stop after flushing the firewall.
# The save and restore arguments will save or restore the rules
# from the /etc/sysconfig/iptables file.

# Redhat installation instructions
#
# 1. Ensure that ipchains will not automatically start.
#    chkconfig --level 0123456 ipchains off
#    This will make sure that the ipchains init.d script
#    is not linked to an S file in any of the rc directories.
#
# 2. Stop ipchains if it's running.
#    service ipchains stop
#
# 3. Execute lsmod to see if the ipchains kernel module is still loaded.
#    If it is, use rmmod to unload it. -- rmmod ipchains
#
# 4. Have the system link the iptables init.d startup script into run states
#    2, 3, and 5.
#    chkconfig --level 235 iptables on
#
# 5. Save this script and execute it to load the ruleset from this file.
#    You may need to run the dos2unix command on it to remove carraige returns.
#
# 6. Save the ruleset to /etc/sysconfig/iptables.  This can be done two ways.
#    service iptables save
#    iptables-save > /etc/sysconfig/iptables
#
# 7. The ruleset will be restored by the /etc/init.d/iptables script on boot.
#
# 8. Alternatively, save the /etc/init.d/iptables script and copy this script
#    to /etc/init.d/iptables.  It accepts stop, start, save, and restore
#    arguments.
#
# NOTE: The /etc/init.d/iptables script can be modified to run this script
# instead.  If you do so, save a copy so you can reapply your modifications
# after upgrading the iptables package.  The advantage of using this script for
# the ongoing operation of the firewall is it gives you greater control over
# the modules and rulesets used.  The above is simpler, however.

###############################################################################
#
# Local Settings
#

# sysctl location.  If set, it will use sysctl to adjust the kernel parameters.
# If this is set to the empty string (or is unset), the use of sysctl
# is disabled.

SYSCTL="/sbin/sysctl -w"

# To echo the value directly to the /proc file instead
# SYSCTL=""

# IPTables Location - adjust if needed

IPT="/sbin/iptables"
IPTS="/sbin/iptables-save"
IPTR="/sbin/iptables-restore"

# Internet Interface
INET_IFACE="eth0"
INET_ADDRESS="192.168.1.10"

# Localhost Interface

LO_IFACE="lo"
LO_IP="127.0.0.1"

# Save and Restore arguments handled here
if [ "$1" = "save" ]
then
    echo -n "Saving firewall to /etc/sysconfig/iptables ... "
    $IPTS > /etc/sysconfig/iptables
    echo "done"
    exit 0
elif [ "$1" = "restore" ]
then
    echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
    $IPTR < /etc/sysconfig/iptables
    echo "done"
    exit 0
fi

###############################################################################
#
# Load Modules
#

echo "Loading kernel modules ..."

# You should uncomment the line below and run it the first time just to
# ensure all kernel module dependencies are OK.  There is no need to run
# every time, however.

# /sbin/depmod -a

# Unless you have kernel module auto-loading disabled, you should not
# need to manually load each of these modules.  Other than ip_tables,
# ip_conntrack, and some of the optional modules, I've left these
# commented by default.  Uncomment if you have any problems or if
# you have disabled module autoload.  Note that some modules must
# be loaded by another kernel module.

# core netfilter module
/sbin/modprobe ip_tables

# the stateful connection tracking module
/sbin/modprobe ip_conntrack

# filter table module
# /sbin/modprobe iptable_filter

# mangle table module
# /sbin/modprobe iptable_mangle

# nat table module
# /sbin/modprobe iptable_nat

# LOG target module
# /sbin/modprobe ipt_LOG

# This is used to limit the number of packets per sec/min/hr
# /sbin/modprobe ipt_limit

# masquerade target module
# /sbin/modprobe ipt_MASQUERADE

# filter using owner as part of the match
# /sbin/modprobe ipt_owner

# REJECT target drops the packet and returns an ICMP response.
# The response is configurable.  By default, connection refused.
# /sbin/modprobe ipt_REJECT

# This target allows packets to be marked in the mangle table
# /sbin/modprobe ipt_mark

# This target affects the TCP MSS
# /sbin/modprobe ipt_tcpmss

# This match allows multiple ports instead of a single port or range
# /sbin/modprobe multiport

# This match checks against the TCP flags
# /sbin/modprobe ipt_state

# This match catches packets with invalid flags
# /sbin/modprobe ipt_unclean

# The ftp nat module is required for non-PASV ftp support
/sbin/modprobe ip_nat_ftp

# the module for full ftp connection tracking
/sbin/modprobe ip_conntrack_ftp

# the module for full irc connection tracking
/sbin/modprobe ip_conntrack_irc


###############################################################################
#
# Kernel Parameter Configuration
#

# Required to enable IPv4 forwarding.
# Redhat users can try setting FORWARD_IPV4 in /etc/sysconfig/network to true
#if [ "$SYSCTL" = "" ]
#then
#    echo "1" > /proc/sys/net/ipv4/ip_forward
#else
#    $SYSCTL net.ipv4.ip_forward="1"
#fi

# This enables dynamic address hacking.
# Set this if you have a dynamic IP address \(e.g. slip, ppp, dhcp\).
#if [ "$SYSCTL" = "" ]
#then
#    echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#else
#    $SYSCTL net.ipv4.ip_dynaddr="1"
#fi

# This enables source validation by reversed path according to RFC1812.
# In other words, did the response packet originate from the same interface
# through which the source packet was sent?  It's recommended for single-homed
# systems and routers on stub networks.  Since those are the configurations
# this firewall is designed to support, I turn it on by default.
# Turn it off if you use multiple NICs connected to the same network.
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
else
    $SYSCTL net.ipv4.conf.all.rp_filter="1"
fi

# This option allows a subnet to be firewalled with a single IP address.
# It's used to build a DMZ.  Since that's not a focus of this firewall
# script, it's not enabled by default, but is included for reference.
# See: http://www.sjdjweis.com/linux/proxyarp/ 
#if [ "$SYSCTL" = "" ]
#then
#    echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#else
#    $SYSCTL net.ipv4.conf.all.proxy_arp="1"
#fi

###############################################################################
#
# Flush Any Existing Rules or Chains
#

echo "Flushing Tables ..."

# Reset Default Policies
$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 all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

# Erase all non-default chains
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
    echo "Firewall completely flushed!  Now running with no firewall."
    exit 0
fi

###############################################################################
#
# Rules Configuration
#

###############################################################################
#
# Filter Table
#
###############################################################################

# Set Policies

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

###############################################################################
#
# User-Specified Chains
#
# Create user chains to reduce the number of rules each packet
# must traverse.

echo "Create and populate custom rule chains ..."

# Create a chain to filter INVALID packets

$IPT -N bad_packets

# Create another chain to filter bad tcp packets

$IPT -N bad_tcp_packets

# Create separate chains for icmp, tcp (incoming and outgoing),
# and incoming udp packets.

$IPT -N icmp_packets

# Used for UDP packets inbound from the Internet
$IPT -N udp_inbound

# Used to block outbound UDP services from internal network
# Default to allow all
$IPT -N udp_outbound

# Used to allow inbound services if desired
# Default fail except for established sessions
$IPT -N tcp_inbound

# Used to block outbound services from internal network
# Default to allow all
$IPT -N tcp_outbound

###############################################################################
#
# Populate User Chains
#

# bad_packets chain
#
# Drop INVALID packets immediately

$IPT -A bad_packets -p ALL -m state --state INVALID -j LOG \n    --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 \n    --log-prefix "New not syn:"
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

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

# icmp_packets chain
#
# This chain is for inbound (from the Internet) icmp packets only.
# Type 8 (Echo Request) is not accepted by default
# Enable it if you want remote hosts to be able to reach you.
# 11 (Time Exceeded) is the only one accepted
# that would not already be covered by the established
# connection rule.  Applied to INPUT on the external interface.
#
# See: http://www.ee.siue.edu/~rwalden/networking/icmp.html
# for more info on ICMP types.
#
# Note that the stateful settings allow replies to ICMP packets.
# These rules allow new packets of the specified types.

# Echo - uncomment to allow your system to be pinged.
# $IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

# Time Exceeded
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

# Not matched, so return so it will be logged
$IPT -A icmp_packets -p ICMP -j RETURN

# TCP & UDP
# Identify ports at:
#    http://www.chebucto.ns.ca/~rakerman/port-table.html
#    http://www.iana.org/assignments/port-numbers

# udp_inbound chain
#
# This chain describes the inbound UDP packets it will accept.
# It's applied to INPUT on the external or Internet interface.
# Note that the stateful settings allow replies.
# These rules are for new requests.
# It drops netbios packets (windows) immediately without logging.

# Drop netbios calls
# Please note that these rules do not really change the way the firewall
# treats netbios connections.  Connections from the localhost and
# internal interface (if one exists) are accepted by default.
# Responses from the Internet to requests initiated by or through
# the firewall are also accepted by default.  To get here, the
# packets would have to be part of a new request received by the
# Internet interface.  You would have to manually add rules to
# accept these.  I added these rules because some network connections,
# such as those via cable modems, tend to be filled with noise from
# unprotected Windows machines.  These rules drop those packets
# quickly and without logging them.  This prevents them from traversing
# the whole chain and keeps the log from getting cluttered with
# chatter from Windows systems.
$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

# Network Time Protocol (NTP) Server
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 123 -j ACCEPT

# DNS Server
# Configure the server to use port 53 as the source port for requests
# Note, if you run a caching-only name server that only accepts queries
# from the private network or localhost, you can comment out this line.
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 53 -j ACCEPT

# If you don't query-source the server to port 53 and you have problems,
# uncomment this rule.  It specifically allows responses to queries
# initiated to another server from a high UDP port.  The stateful
# connection rules should handle this situation, though.
# $IPT -A udp_inbound -p UDP -s 0/0 --source-port 53 -j ACCEPT


# Not matched, so return for logging
$IPT -A udp_inbound -p UDP -j RETURN

# udp_outbound chain
#
# This chain is used with a private network to prevent forwarding for
# UDP requests on specific protocols.  Applied to the FORWARD rule from
# the internal network.  Ends with an ACCEPT


# No match, so ACCEPT
$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT

# tcp_inbound chain
#
# This chain is used to allow inbound connections to the
# system/gateway.  Use with care.  It defaults to none.
# It's applied on INPUT from the external or Internet interface.

# DOCSIS compliant cable modems
# Some DOCSIS compliant cable modems send IGMP multicasts to find
# connected PCs.  The multicast packets have the destination address
# 224.0.0.1.  You can accept them.  If you choose to do so,
# Uncomment the rule to ACCEPT them and comment the rule to DROP
# them  The firewall will drop them here by default to avoid
# cluttering the log
# Drop them without logging.
$IPT -A tcp_inbound -p TCP -d 224.0.0.1 -j DROP
# The rule to accept the packets.
# $IPT -A tcp_inbound -p TCP -d 224.0.0.1 -j ACCEPT

# DNS Server - Allow TCP connections (zone transfers and large requests)
# This is disabled by default.  DNS Zone transfers occur via TCP.
# If you need to allow transfers over the net you need to uncomment this line.
# If you allow queries from the 'net, you also need to be aware that although
# DNS queries use UDP by default, a truncated UDP query can legally be
# submitted via TCP instead.  You probably will never need it, but should
# be aware of the fact.
# $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 53 -j ACCEPT

# Web Server

# HTTP
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 80 -j ACCEPT

# HTTPS (Secure Web Server)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 443 -j ACCEPT

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

# FTP Client (Data Port for non-PASV transfers)
$IPT -A tcp_inbound -p TCP -s 0/0 --source-port 20 -j ACCEPT

# Email Server (SMTP)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 25 -j ACCEPT

# Email Server (POP3)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 110 -j ACCEPT

# Email Server (IMAP4)
$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 143 -j ACCEPT

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


# Not matched, so return so it will be logged
$IPT -A tcp_inbound -p TCP -j RETURN

# tcp_outbound chain
#
# This chain is used with a private network to prevent forwarding for
# requests on specific protocols.  Applied to the FORWARD rule from
# the internal network.  Ends with an ACCEPT


# No match, so ACCEPT
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT

###############################################################################
#
# INPUT Chain
#

echo "Process INPUT chain ..."

# Allow all on localhost interface
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

# Drop bad packets
$IPT -A INPUT -p ALL -j bad_packets


# Inbound Internet Packet Rules

# Accept Established Connections
$IPT -A INPUT -p ALL -i eth0 -m state --state ESTABLISHED,RELATED \n     -j ACCEPT

# Route the rest to the appropriate user chain
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Drop without logging broadcasts that get this far.
# Cuts down on log clutter.
# Comment this line if testing new rules that impact
# broadcast protocols.
$IPT -A INPUT -p ALL -d 255.255.255.255 -j DROP

# Log packets that still don't match
$IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \n     --log-prefix "INPUT packet died: "

###############################################################################
#
# FORWARD Chain
#

echo "Process FORWARD chain ..."

# Used if forwarding for a private network


###############################################################################
#
# OUTPUT Chain
#

echo "Process OUTPUT chain ..."

# Generally trust the firewall on output

# However, invalid icmp packets need to be dropped
# to prevent a possible exploit.
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP

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

# To internet
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

# Log packets that still don't match
$IPT -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \n     --log-prefix "OUTPUT packet died: "

###############################################################################
#
# nat table
#
###############################################################################

# The nat table is where network address translation occurs if there
# is a private network.  If the gateway is connected to the Internet
# with a static IP, snat is used.  If the gateway has a dynamic address,
# masquerade must be used instead.  There is more overhead associated
# with masquerade, so snat is better when it can be used.
# The nat table has a builtin chain, PREROUTING, for dnat and redirects.
# Another, POSTROUTING, handles snat and masquerade.

echo "Load rules for nat table ..."

###############################################################################
#
# PREROUTING chain
#

###############################################################################
#
# POSTROUTING chain
#

###############################################################################
#
# mangle table
#
###############################################################################

# The mangle table is used to alter packets.  It can alter or mangle them in
# several ways.  For the purposes of this generator, we only use its ability
# to alter the TTL in packets.  However, it can be used to set netfilter
# mark values on specific packets.  Those marks could then be used in another
# table like filter, to limit activities associated with a specific host, for
# instance.  The TOS target can be used to set the Type of Service field in
# the IP header.  Note that the TTL target might not be included in the
# distribution on your system.  If it is not and you require it, you will
# have to add it.  That may require that you build from source.

echo "Load rules for mangle table ..."

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Iemand nog een opinie over de hier bovenstaand standaard firewallscript uit een generator ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

De methode is dan misschien vrij eenvoudig, zonder dat je er overna hoeft te denken, maar het levert volgens mij een enorme berg bagger op. Zelf gebruik ik het volgende script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
!/bin/bash

INT_DEV="eth1"
EXT_DEV="eth0"

EXT_IP=$(ifconfig ${EXT_DEV} | grep "inet" | awk '{print $2}' | awk -F: '{print $2}')
#echo -e External IP ${EXT_IP} 
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#Regels om de firewall middels ssh bereikbaar te maken, is nodig om na het laden van de regels remote verbinding met de firewall te kunnen maken, en niet alles op de console te hoeven doen
iptables -A INPUT tcp --dport 22 -j ACCEPT
iptables -A OUTPUT tcp --sport 22 -j ACCEPT

#Voorbeeldregels, in dit geval regels om ftp-verkeer naar de firewall toe toe te staan
#iptables -A INPUT tcp --dport 21 -j ACCEPT
#iptables -A OUTPUT tcp --sport 21 -j ACCEPT
#iptables -A INPUT tcp --dport 20 -j ACCEPT
#iptables -A OUTPUT tcp --sport 20 -j ACCEPT

#Accepteer alles wat vanaf het interne netwerk komt, en sluis dat door naar buiten
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward

Voor een basic firewall die enkel met ssh te bereiken is (je zou ook nog een ander poortnr kunnen kiezen voor ssh - wel ssh dan op die poort opstarten ;) ). Voor de rest is alles vanaf de firewall machine zelf niet toegestaan, en hij laat enkel door wat er geantwoord wordt op een vraag van binnen.

Hier kon uw advertentie staan


  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Nitroglycerine schreef op zondag 20 februari 2005 @ 10:58:
De methode is dan misschien vrij eenvoudig, zonder dat je er overna hoeft te denken, maar het levert volgens mij een enorme berg bagger op. Zelf gebruik ik het volgende script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
!/bin/bash

INT_DEV="eth1"
EXT_DEV="eth0"

EXT_IP=$(ifconfig ${EXT_DEV} | grep "inet" | awk '{print $2}' | awk -F: '{print $2}')
#echo -e External IP ${EXT_IP} 
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#Regels om de firewall middels ssh bereikbaar te maken, is nodig om na het laden van de regels remote verbinding met de firewall te kunnen maken, en niet alles op de console te hoeven doen
iptables -A INPUT tcp --dport 22 -j ACCEPT
iptables -A OUTPUT tcp --sport 22 -j ACCEPT

#Voorbeeldregels, in dit geval regels om ftp-verkeer naar de firewall toe toe te staan
#iptables -A INPUT tcp --dport 21 -j ACCEPT
#iptables -A OUTPUT tcp --sport 21 -j ACCEPT
#iptables -A INPUT tcp --dport 20 -j ACCEPT
#iptables -A OUTPUT tcp --sport 20 -j ACCEPT

#Accepteer alles wat vanaf het interne netwerk komt, en sluis dat door naar buiten
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward

Voor een basic firewall die enkel met ssh te bereiken is (je zou ook nog een ander poortnr kunnen kiezen voor ssh - wel ssh dan op die poort opstarten ;) ). Voor de rest is alles vanaf de firewall machine zelf niet toegestaan, en hij laat enkel door wat er geantwoord wordt op een vraag van binnen.
Ik hoop dat je eth1 netwerk ip's uit de private range gebruikt (en je MASQUERADE of SNAT gebruikt) anders laat deze regel:

code:
1
iptables -A FORWARD -o eth1 -j ACCEPT

alles van buiten door naar je interne netwerk.


Deze twee regels zijn niet nodig als je alleen ssh wilt toelaten (vanafje interne netwerk eth1) aangezien je de ssh port al geopend hebt.
code:
1
2
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT


De INPUT en OUTPUT chains zijn alleen voor de firewall zelf. De rest gaat via de FORWARD chain (in tegenstelling tot ipchains)

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Dawns_sister schreef op zondag 20 februari 2005 @ 12:56:
[...]


Ik hoop dat je eth1 netwerk ip's uit de private range gebruikt (en je MASQUERADE of SNAT gebruikt) anders laat deze regel:

code:
1
iptables -A FORWARD -o eth1 -j ACCEPT

alles van buiten door naar je interne netwerk.


Deze twee regels zijn niet nodig als je alleen ssh wilt toelaten (vanafje interne netwerk eth1) aangezien je de ssh port al geopend hebt.
code:
1
2
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT


De INPUT en OUTPUT chains zijn alleen voor de firewall zelf. De rest gaat via de FORWARD chain (in tegenstelling tot ipchains)
Eth1 = 192.168.0.1, de rest zit in hetzelfde 192.168.0 segment. Het toelaten van ssh is ook enkel op de firewall zelf, als ik van buiten dingen wil controleren.

Hier kon uw advertentie staan


  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 30-01 01:49

Sprite_tm

Semi-Chinees

Nog een hint: als je remote je firewall zit aan te passen (mja, zo nu en dan is de verleiding groot) is het misschien een idee om te zorgen dat je een cron-scriptje oid hebt draaien die om de 10 minuten ofzo iig je SSH-verbinding wijdopen zet en zorgt dat evt. downgegane interfaces weer upkomen. Heeft mij een paar keer een rit naar huis gescheeld :) Als je klaar bent met prutsen moet je het scrippie natuurlijk wel weer uit je crontab verwijderen.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • El_kingo
  • Registratie: Mei 2002
  • Laatst online: 17-03-2025
Als het alleen om een server gaat gebruik ik vaak het volgende script, misschien dat je er nog iets aan hebt...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#! /bin/bash

###
#Turn off ECN (explicit congestion notification)
###
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi

###
#Spoof protection
###
for x in lo eth0
do
 echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
done

echo -n "Setting up iptables... "

#Interface to internet:
EXTERNAL="eth0"
#Configured server:
ALLOW_PORTS="21 22 80 443"

# First, flush all rules and delete all chains
iptables -F
iptables -X
#iptables -t nat -F
#iptables -t nat -X

# Then set the policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept everything on the loopback
iptables -A INPUT -i lo -j ACCEPT

# Drop fragmented ICMP (fragmented ICMP is never a good thing)
iptables -A INPUT -p ICMP -f -j DROP

# Drop spoofing attempts on external interface (Redundant since the Linux kernel already does spoof protection)
#iptables -A INPUT -i ${EXTERNAL} -s ${INT_NET} -j DROP


# Accept all ESTABLISHED and RELATED connections on external interface
iptables -A INPUT -i ${EXTERNAL} -m state --state ESTABLISHED,RELATED -j ACCEPT

# Accept pings (ICMP echo request) on external interface (with some limiting)
iptables -A INPUT -i ${EXTERNAL} -m length --length 0:160 -m limit --limit 2/s --limit-burst 5 -p icmp --icmp-type echo-request -j ACCEPT

# Accept certain ports on the external interface
for I in ${ALLOW_PORTS}; do
  iptables -A INPUT -i ${EXTERNAL} -m state --state NEW -p tcp --dport ${I} -j ACCEPT
done

# Handle rejections
iptables -A INPUT -p tcp -i ${EXTERNAL} -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -i ${EXTERNAL} -j REJECT --reject-with icmp-port-unreachable

# Reject everything else
iptables -A INPUT -i ${EXTERNAL} -j REJECT


echo "done."


Edit: commentaar is natuurlijk altijd welkom...

[ Voor 3% gewijzigd door El_kingo op 21-02-2005 11:06 ]


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
sparcky schreef op maandag 21 februari 2005 @ 11:01:
Als het alleen om een server gaat gebruik ik vaak het volgende script, misschien dat je er nog iets aan hebt...
code:
1
snip


Edit: commentaar is natuurlijk altijd welkom...
Dank je wel sparcky ! Dit is nu een script dat ik bedoel eigenlijk. Simpel en zeer doetreffend. Ik ga dit script eens stap voor stap nalopen !

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

Toevallig dat ik deze week wat public servers heb geupgrade en van een firewall voorzien heb ik mijn eigen firewall maar weer eens gepatched.

Hieronder het resulttaat;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
#! /bin/sh
#=======================================================================
. /etc/rc.status

base=${0##*/}
link=${base#*[SK][0-9][0-9]}

#
# Config
#-----------------------------------------------------------------------

#
# Program locations
#------------------------------------------------------------------------
iptables="/usr/sbin/iptables"
modprobe="/sbin/modprobe"
rmmod="/sbin/rmmod"
echo="/bin/echo"

#
# Interface settings
#------------------------------------------------------------------------
int="eth1"    # inside interface // use loopback if none
ext="ppp0"  # outside interface
lo="lo"     # loopback interface

#
# Open server ports (ssh is always open)
#------------------------------------------------------------------------
server_tcp_ports="ftp smtp http"
server_udp_ports=""

#
# Sources
#------------------------------------------------------------------------
lan="10.1.0.0/24"
blaa="123.456.789"

#
# Port and other settings
#------------------------------------------------------------------------
unprv="1024:65535"
nb="137:139"
all="0/0"

#
# Log settings
#------------------------------------------------------------------------
loglevel="warn"
log="--log-level $loglevel --log-ip-options --log-tcp-options --log-tcp-sequence --log-prefix FIREWALL"
# Log sertain drops
loglist="telnet domain imap pop3 mysql nfs rpcbind cvspserver"

# ipadresses which should be drop at all
blocklist=""

# Check programs
test -x $iptables || exit 5
test -x $modprobe || exit 5
test -x $rmmod || exit 5
test -x $echo || exit 5

# Clean out status
rc_reset

case "$1" in
      start)

       echo -n "Installing firewall"

       # Turn on IP forwarding
       echo 1 >/proc/sys/net/ipv4/ip_forward || rc_failed

       # Turn off ECN (explicit congestion notification)
       if [ -e /proc/sys/net/ipv4/tcp_ecn ]
       then
       echo 0 > /proc/sys/net/ipv4/tcp_ecn
       fi

       # Spoof protection
       for x in $lo $int $ext
       do
         echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
       done

       # This is done to enable source verification
       if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
         for f in /proc/sys/net/ipv4/conf/*/rp_filter
         do
          echo 2 > $f
         done
       fi

       # This one is for syncookies protection
       if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
       fi

       # We dont want ICMP Dead Errors
       if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then
         echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
       fi

       # We want to Ignore ICMP Broadcasts
       if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then
         echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
       fi

       # We dont want anyone to play with dynamic TCP/IP
       if [ -e /proc/sys/net/ipv4/ip_dynaddr ]; then
         echo 0 > /proc/sys/net/ipv4/ip_dynaddr
       fi

       # flush rules
       $iptables -F INPUT
       $iptables -F FORWARD
       $iptables -F OUTPUT
       $iptables -t nat -F PREROUTING
       $iptables -t nat -F POSTROUTING
       $iptables -t nat -F OUTPUT
       $iptables -t nat -F
       $iptables -t nat -X
       $iptables -t mangle -F PREROUTING
       $iptables -t mangle -F OUTPUT
       $iptables -t mangle -F
       $iptables -t mangle -X

       # Default rules
       $iptables -P INPUT DROP
       $iptables -P FORWARD ACCEPT
       $iptables -P OUTPUT ACCEPT
       $iptables -P POSTROUTING ACCEPT -t nat

       # Insert module
       $modprobe ip_tables
       $modprobe iptable_nat
       $modprobe ipt_MASQUERADE
       $modprobe iptable_mangle
       $modprobe iptable_filter
       $modprobe ipt_REJECT
       $modprobe ipt_limit
       $modprobe ipt_state
       $modprobe ipt_LOG
       $modprobe ip_conntrack_ftp
       $modprobe ip_nat_ftp

       # Create new outside chain
       $iptables -N outside || rc_failed

       # Forward traffic
       $iptables -t nat -A POSTROUTING -o $ext -j MASQUERADE || rc_failed

       # Allow traffic from local interfaces
       $iptables -A outside -i $int -j ACCEPT || rc_failed
       $iptables -A outside -i $lo -j ACCEPT || rc_failed

       # Allow reactions
       $iptables -A outside -m state --state ESTABLISHED,RELATED -j ACCEPT || rc_failed

       # Accept pings (ICMP echo request) on external interface (with some limiting)
       $iptables -A outside -i $ext -m length --length 0:160 -m limit --limit 2/s --limit-burst 5 -p icmp --icmp-type echo-request -j ACCEPT

       # Allow SSH connections from anywhere
       $iptables -A outside -p tcp -m state --state NEW,ESTABLISHED,RELATED --sport $unprv --dport ssh -j ACCEPT || rc_failed

       # Allow any connection from predefind
       $iptables -A outside -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $blaa  -j ACCEPT || rc_failed
       $iptables -A outside -p udp -m state --state NEW,ESTABLISHED,RELATED -s $blaa  -j ACCEPT || rc_failed

       # Allow port(s) for certain sources
       #$iptables -A outside -i $ext -p tcp -m state --state NEW -s $blaa --dport pop3 -j ACCEPT || rc_failed

       # Open server ports (for port numbers see /etc/services)
        if [ -n "$server_tcp_ports" ]; then
            for i in $server_tcp_ports; do
                $iptables -A outside -i $ext -p tcp -m state --state NEW --sport $unprv --dport $i -j ACCEPT || rc_failed
                #iptables -A outside -p tcp --dport $i -j ACCEPT
            done;
        fi;

        if [ -n "$server_udp_ports" ]; then
            for i in $server_udp_ports; do
                $iptables -A outside -i $ext -p udp -m state --state NEW --sport $unprv --dport $i -j ACCEPT || rc_failed
                #iptables -A outside -p udp --dport $i -j ACCEPT
            done;
        fi;

       # Drop fragmented ICMP (fragmented ICMP is never a good thing)
       $iptables -A outside -p ICMP -f -j DROP

       # Drop netbios related shit
       $iptables -A outside -o $ext -p udp --dport $nb -j DROP || rc_failed
       $iptables -A outside -i $ext -p udp --dport $nb -j DROP || rc_failed

       # Drop all from some fucking assholes...
       if [ -n "$blocklist" ]; then
            for i in $blocklist; do
                $iptables -I INPUT -s $i -j DROP || rc_failed
            done;
       fi;

       # log to fast packaged
       # $iptables -A outside -i $ext -m limit -j LOG ${log}"-TOFAST " || rc_failed
       $iptables -A outside -i $int -m limit -j LOG ${log}"-TOFAST " || rc_failed
       $iptables -A outside -i $lo -m limit -j LOG ${log}"-TOFAST " || rc_failed

       # Log sertain drop's one predifind ports
       # Drop all from some fucking assholes...
       if [ -n "$loglist" ]; then
            for i in $loglist; do
                $iptables -A outside -j LOG ${log}"-DROP $i " -p tcp --dport $i  || rc_failed
                $iptables -A outside -j LOG ${log}"-DROP $i " -p udp --dport $i  || rc_failed
            done;
       fi;

       # log all drops (OFF)
       # $iptables -A outside -j LOG ${log}"-DROP " || rc_failed

       # drop all others
       $iptables -A outside -j DROP  || rc_failed

       # Handle rejections OFF
       #$iptables -A outside -p tcp -i $ext -j REJECT --reject-with tcp-reset
       #$iptables -A outside -p udp -i $ext -j REJECT --reject-with icmp-port-unreachable

       # Reject everything else (OFF) using drop takes longer on portscans
       #$iptables -A outside -i ${ext} -j REJECT

       # Defense for DOS attacks..
       $iptables -A FORWARD -p tcp --syn -m limit -j ACCEPT || rc_failed
       $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit || rc_failed
       $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit || rc_failed

       # Add
       $iptables -A INPUT -j outside || rc_failed
       $iptables -A FORWARD -j outside || rc_failed

       rc_check
       rc_status -v
       ;;
      stop)
       echo -n "Stopping firewall "

       # Turn off packet forwarding
       $echo 0 > /proc/sys/net/ipv4/ip_forward || rc_failed

       # flush rules
       $iptables -F INPUT
       $iptables -F FORWARD
       $iptables -F OUTPUT
       $iptables -F POSTROUTING -t nat
       $iptables -F PREROUTING  -t nat
       $iptables -F outside
       $iptables -X outside
       $iptables -t nat -F PREROUTING
       $iptables -t nat -F POSTROUTING
       $iptables -t nat -F OUTPUT
       $iptables -t nat -F
       $iptables -t nat -X
       $iptables -t mangle -F PREROUTING
       $iptables -t mangle -F OUTPUT
       $iptables -t mangle -F
       $iptables -t mangle -X

       # Default rules
       $iptables -P INPUT DROP
       $iptables -P FORWARD ACCEPT
       $iptables -P OUTPUT ACCEPT
       $iptables -P POSTROUTING ACCEPT -t nat

       # Unload modules
       $rmmod ip_nat_ftp
       $rmmod ip_conntrack_ftp
       $rmmod ipt_MASQUERADE
       $rmmod iptable_nat
       $rmmod iptable_mangle
       $rmmod iptable_filter
       $rmmod ipt_REJECT
       $rmmod ipt_limit
       $rmmod ipt_state
       $rmmod ipt_LOG
       #$rmmod ip_tables
       rc_check
       rc_status -v
       ;;
      reload|restart)
       # Do a reload/restart..
       $0 stop && $0 start || rc_failed
       ;;
      status)
       # Display firewall rules
       echo "NAT table:"
       $iptables -t nat -L -n -v
       echo
       echo "standard table:"
       $iptables -L -n -v
       rc_status -v
       ;;
      *)
      echo "Usage: $0 {start|stop|reload|restart|status}"
      exit 1
esac

exit 0

Opend default ssh voor de wereld, user defind; ftp,http,smtp en alles (tcp/upd) voor een bepaalde source ($blaa), teven kun je ook bepaalde poorten voor enkel en alleen een source open geven. Logt drops op user defind poorten en drop de rest silent. Tevens de mogelijkheid om alles van bepaalde sources te droppen ($blocklist)

Commentaar is welkom, beetje discussieren kan leiden tot de ultime vuurmuur ;-)

[ Voor 8% gewijzigd door Verwijderd op 27-02-2005 17:20 . Reden: code update ]


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik denk dat dit toch een leuk en informatief topic is en verder kan worden zoals AudiPower ook al zegt.

Ik gebruik op dit moment het script van sparky omdat die van AudiPower bij mij een error geeft omdat hij /etc/rc.status niet heeft. Ik heb gezocht via google wat ikhier mee kan doen maar vind er te weinig over. Wel mensen die het bestand missen icm DHCP enzovoorts.

Overigens gebruik ik het script van AudiPower op de volgende manier:

Ik maak het bestand /ect/init.d/iptables aan. IPtables is geinstalleerd maar dit bestand staat er gewoon niet.

Hierna heb ik de volgende commando's gebruikt:

/etc/init.d/iptables save active

update-rc.d iptables defaults (in de init.d map)

Hierna zijn alle links voor de firewall wel netjes aangemaakt !

Dit werk dus helaas net omdat rc.status in de /etc map niet aanwezig is. Ik kom er niet direct uit wat hier fout gaat maar het script lijkt me opzich er goed. Eerst laten werken en daarna wat aanpassen enz.

Het script van Sparky gebruik ik door deze gewoon op te slaan in /etc/init.d/firewall en deze hierna te starten met ./firewall start.

Wanneer ik een "iptables -L " doe krijg ik netjes een output maar wanneer ik een poortscan op deze server los laat komen er een aantal andere poorten uit die open staan dan in de firewall aangegeven staat.

Dit staat er volgens de scan open: 21,25,22,110

En dit volgens de firewall-settings: 21,22,80,443

Dit is iets waar ik al een paar keer tegenaan gelopen ben en net geheel zie waarom dit gebeurd.

Overigens wordt ik redelijke desperate van al die foute logins waardoor ik zelf niet meer met SSH in kan loggen als "root" of "user" omdat er al te vaak geprobeerd is in te loggen met een verkeerd wachtwoord. De IP's waar het vandaan komt lijken me 100% zeker gespoofd want ripe kan me er weinig over vertellen.

Nou verder maar met het topic.... hoe timmeren wij onze linux-bak het beste dicht ;)

[ Voor 3% gewijzigd door BacardiBreezer op 14-03-2005 18:57 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 13:40

thunder7

houten vaas/schaal nodig?

voor een simpele generator is firehol wellicht een goed idee. Mijn belangrijkste voordeel is dat er debian packages voor zijn, zodat ik automatisch updates krijg. Verder is het zo dat je met een korte file erg uitgebreide iptables rules krijgt, en dat je die ook nog handmatig kan aanpassen.

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
thunder7 schreef op maandag 14 maart 2005 @ 21:04:
voor een simpele generator is firehol wellicht een goed idee. Mijn belangrijkste voordeel is dat er debian packages voor zijn, zodat ik automatisch updates krijg. Verder is het zo dat je met een korte file erg uitgebreide iptables rules krijgt, en dat je die ook nog handmatig kan aanpassen.
Goed idee !! Ik ga er zeker even naar kijken !

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 12-02 07:34

Kaastosti

Vrolijkheid alom!

Zelf ben ik sinds een week of 2 bezig met het goed dicht krijgen van een systeem. Daarvoor gebruik ook ik firehol, aangezien het met een sort en voornamelijk begrijpelijk script alles voor je genereert in iptables. Bij een paar problemen kon ik goed terecht op sourceforge, waarbij ik nu contact heb met de maker van het hele programma omdat er iets niet klopt. Ook die wil best helpen als er iets helemaal lekker zit wat je niet begrijpt :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Is firehol alleen niet meer geschikt voor routers ?

Ik ben toch ook nog een beetje aan het testen met scripts omdat me dat ook nog wel wat lijkt.

Ik loop alleen steeds tegen het feit aan dat een poortscan aangeeft dat er andere poorten open staan dan in de firewall gedefinieerd zijn.

In het bovenste script test ik nu. Wat gebeurd er.

Gisteren tijdens een scan staan er 3 poorten open. SSH moet mogelijk zijn volgens het script maar helaas..... ik kan er niet bij (geen probleem overigens want met een reboot is het script op dit moment niet meer aktief).

Ik doe nu net weer een scan en er staan ineens 11 poorten open including telnet :? SSH staat ook open volgens de scan maar is niet bereikbaar.

Ligt dit nu aan de scan of doe ik iets kompleet fout ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • x-force
  • Registratie: Maart 2001
  • Laatst online: 05-01-2024
beetje offtopic misschien maar kijk eens naar webmin. Deze heeft een mooie firewall module. Via deze tool kun je dan webbased een firewall in elkaar klikken. Dan hoef je niet van de ingewikkelde rules te maken.

Probeer het eens zou ik zeggen !

VangenopBetaalwater.nl Het platform om ervaringen over betaalwater in Frankrijk te delen met andere karpervissers zodat iedereen kan vangen op betaalwater!


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
x-force schreef op dinsdag 15 maart 2005 @ 10:01:
beetje offtopic misschien maar kijk eens naar webmin. Deze heeft een mooie firewall module. Via deze tool kun je dan webbased een firewall in elkaar klikken. Dan hoef je niet van de ingewikkelde rules te maken.

Probeer het eens zou ik zeggen !
Is een optie uiteraard maar ikwil eigenlijk weten waarom deze rules niet goed zouden zijn. Hetzelfde ervaarde ik namelijk bij het script van Sparkey.... Behalve dat SSH daar wel werkte :D

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 13:40

thunder7

houten vaas/schaal nodig?

[quote]BacardiBreezer schreef op dinsdag 15 maart 2005 @ 09:31:
Is firehol alleen niet meer geschikt voor routers ?

Ik ben toch ook nog een beetje aan het testen met scripts omdat me dat ook nog wel wat lijkt.

quote]
Firehol (in ieder geval het debian package) heeft voorbeelden van configuratiebestanden voor diverse 'types' systeem. Voor mijn systeem (servertje dat achter een adsl-router hangt, en dat van buiten bereikbaar is met ssh, en met een apart gigabit-netwerk voor backups) is de 'kale' configuratiefile zo'n 20 regels.

En dan heb je dus een statefull inspection firewall, die bovendien actief bijgehouden wordt en door veel mensen gebruikt wordt. Met een vriendelijke auteur bovendien, die inderdaad actief reageert op de sourceforge site.

firehol is trouwens ook een script, in bash.

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Even met FireHol aan de gang gegaan :) Ziet er goed uit en ik denk dat dit een goede optie is voor een goede firewall ! (hoewel ik nog steeds wil weten waarom het nu mis loopt met die iptables)

Nu ik een firehol config opgezet heb en deze geladen heb (hij is dus echt aktief) ben ik weer een poortscan gaan doen en zie dat er volgende de scan bepaalde poorten niet open staan en poorten wel open staan die niet inde configfile staan.

Is er toevallig ergens een goede firewallscan online waarbij je een IP in kunt vullen ? Ik heb er ooit eens een paar (lees 1 of 2) gezien maar kan ze helaas niet meer vinden. De meest bekende versies zijn voor de thuisnetwerkjes of netwerken waarin je zelf zit :)

edit:


Thunder; wil jij eens je script online gooien om wat te vergelijken ?

[ Voor 7% gewijzigd door BacardiBreezer op 15-03-2005 14:14 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik ben toch met Easy Firewall aan de gang gegaan. Lijkt me een goed script en zoals ik het start lijkt er niets mis te gaan.

Ik bedoel dus [rml]BacardiBreezer in "[ linux] IPtables op een simpele manier"[/rml] script.

Misschien zijn er wat mensen die commentaar willen geven op dit script ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Ik gebruik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/sh
EXTIF=eth1
INTIF=eth0

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -t mangle -F

iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $INTIF -j ACCEPT
iptables -A FORWARD -i $EXTIF -o $EXTIF -j REJECT

#icmp
iptables -A INPUT -p ICMP -i $EXTIF -j ACCEPT

#ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


Alleen vraag ik me nu af of ik niet beter de FORWARD policy op BLOCK kan zetten. Maar hoe zorg ik dan voor het routen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Kaassoevlee schreef op dinsdag 15 maart 2005 @ 20:38:
Ik gebruik dit:
code:
1
snip


Alleen vraag ik me nu af of ik niet beter de FORWARD policy op BLOCK kan zetten. Maar hoe zorg ik dan voor het routen?
Blocken en daarna doorzetten per poort ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik krijg trouwens met geen mogelijkheid SMTP, POP3 en FTP dicht op een doos waar het script op draait. HTTP en de andere poorten lijken geen probleem.

Er draait btw niet eens mail en ftp op de bak :S

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

BacardiBreezer schreef op dinsdag 15 maart 2005 @ 21:02:
[...]


Blocken en daarna doorzetten per poort ?
Maar ik wil dat van binnen naar buiten alles mogelijk is, maar andersom natuurlijk niet.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Kaassoevlee schreef op dinsdag 15 maart 2005 @ 21:45:
[...]

Maar ik wil dat van binnen naar buiten alles mogelijk is, maar andersom natuurlijk niet.
Maar je scheidt inbound en outbound toch ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 13:40

thunder7

houten vaas/schaal nodig?

quote]BacardiBreezer schreef op dinsdag 15 maart 2005 @ 14:13:
Even met FireHol aan de gang gegaan :) Ziet er goed uit en ik denk dat dit een goede optie is voor een goede firewall!

Thunder; wil jij eens je script online gooien om wat te vergelijken ?

[/edit][/quote]

Hier is mijn configuratie.

Situatie:

gateway met 10.0.0.150 interface naar een zyxel router en een 192.168.0.32 interface naar het netwerk. De gateway ontvangt mail en draait een rsync-server voor backups. Verder heeft de gateway een aparte gigabit-interface om die rsync backups een beetje snel te maken. Omdat ik graag wil weten wanneer kpn eindelijk die adsl-snelheid eens verhoogd, moet de gateway ook een beetje gemakkelijk met de zyxel kunnen communiceren. Het was even lastig om uit te vogelen dat je op 1 interface (adsl) wel 2x een interface regel mag gebruiken in firehol. De network-interfaces hebben trouwens begrijpelijke namen, te weten 'adsl' naar de router, 'switch' naar het netwerk en 'fast' voor de gigabit interface. Dat verklaart de afwezigheid van ethX :-)

# home ip-addresses:
lan_ips="192.168.0.1/28"
# the ip-address of adsl-router
router_ip="10.0.0.138"
# the ip-address that may talk to the router
access_ip="10.0.0.150"
# the ip-address of the gigabit-interface for backups
gigabit_ip="192.168.3.2"

# some personal settings:
# add default route
/sbin/route add default gw $router_ip
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# don't accept source routed packets
for interface in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $interface
done
# log martians
for interface in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 0 > $interface
done
# prevent spoofed packages from inside (1) | outside (2)
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 3 > $interface
done

# network users may access ssh, rsync, icmp, pop3 and smtp servers on the gateway machine
# the gateway-machine may access icmp, ssh, rsync and ftp servers on the network
interface switch network src "${lan_ips}"
policy reject
server "ssh rsync icmp pop3 smtp" accept
client "ssh rsync icmp ftp" accept
server any nolog drop
client any nolog drop

# a special interface, which handles access to the zyxel router for telnet, ftp and http only
interface adsl router src "${router_ip}" dst "${access_ip}"
protection strong 10/sec 10
client "icmp telnet ftp http" accept
server any nolog drop
client any nolog drop

# the internet: the only allowed connection from the outside is to the ssh server
interface adsl internet src not "${lan_ips} ${UNROUTABLE_IPS}"
protection strong 10/sec 10
# allow ssh from the outside, but only with a valid ip
server ssh accept
server ident reject with tcp-reset
client all accept
server any nolog drop
client any nolog drop

# route access from the clients to the internet
router internet2network inface adsl outface switch
masquerade reverse
client all accept
server ident reject with tcp-reset

interface fast gigabit src "${gigabit_ip}"
policy reject
server "ssh rsync icmp" accept
client "ssh rsync ftp icmp" accept

# no router for the gigabit-network, there's nothing to route with a cross-cable.

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


  • Martkrui
  • Registratie: Februari 2002
  • Laatst online: 11-02 21:20
Ik ben van mening dat een generator niet alleen maar hoeft te dienen om de basis te genereren.

Ik gebruik fwbuilder (http://www.fwbuilder.org/) om mijn firewall rules bij te houden. Op deze manier blijft het lekker overzichtelijk. En de gegenereerde ruleset kan je altijd nog met de hand nakijken voordat deze uitgevoerd word.

I haven't lost my mind! It's backed up on tape somewhere!


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
OK, ik ben er redelijk wat betreft de firewall. Ik ben er achter gekomen dat SMTP/POP/FTP gewoon niet dicht te zetten zijn op een server met softwarematige firewall. Er draait altijd wel een locale Mailserver en wanneer je de SMTP-poort en POP3-poort beide op DROP zet heeft dat ook geen zin.

Na wat scans op DNS-en (Ja NS1, NS2 zal wel op de mail draaien namelijk) als xs4all zie ik dat daar ook smtp/pop3/ftp altijd naar voren komen in een scan.

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Gondor
  • Registratie: September 2003
  • Laatst online: 11:07
BacardiBreezer schreef op woensdag 16 maart 2005 @ 19:58:
OK, ik ben er redelijk wat betreft de firewall. Ik ben er achter gekomen dat SMTP/POP/FTP gewoon niet dicht te zetten zijn op een server met softwarematige firewall. Er draait altijd wel een locale Mailserver en wanneer je de SMTP-poort en POP3-poort beide op DROP zet heeft dat ook geen zin.

Na wat scans op DNS-en (Ja NS1, NS2 zal wel op de mail draaien namelijk) als xs4all zie ik dat daar ook smtp/pop3/ftp altijd naar voren komen in een scan.
Alle poorten zijn dicht te zetten. Alleen moet je dat wel doen.

In al je scripts wat je hier hebt gepost staan smtp/pop3/ftp gewoon open:
code:
1
2
3
4
5
6
7
# FTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 20  ! --syn -j ACCEPT
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 21 -j ACCEPT
# SMTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 25 -j ACCEPT
# POP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 110 -j ACCEPT

Dat er een service draait heeft geen enkel effect op het dicht doen van een poort.

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • _fm
  • Registratie: September 2003
  • Niet online

_fm

als reactie op de lijst met 'unroutable' netwerken in de startpost: doe dit alleen als je je firewall actief bijhoudt, die lijst verandert nogal eens en dan zit jij je eerst 2 dagen af te vragen waarom een site bij jou niet werkt, en bij je buurman wel.

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Gondor schreef op woensdag 16 maart 2005 @ 20:33:
[...]

Alle poorten zijn dicht te zetten. Alleen moet je dat wel doen.

In al je scripts wat je hier hebt gepost staan smtp/pop3/ftp gewoon open:
code:
1
2
3
4
5
6
7
# FTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 20  ! --syn -j ACCEPT
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 21 -j ACCEPT
# SMTP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 25 -j ACCEPT
# POP allowed
$IPT -t filter -A INPUT -p tcp -s 0/0 -d $NET --dport 110 -j ACCEPT

Dat er een service draait heeft geen enkel effect op het dicht doen van een poort.
Denk je dat ik die niet op DROP gezet had dan ;) Ga niet alles posten natuurlijk :D

edit:


Als je even goed leest zie je dat in mijn post hierboven ook staan btw ;)

[ Voor 7% gewijzigd door BacardiBreezer op 16-03-2005 21:03 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
_fm schreef op woensdag 16 maart 2005 @ 20:50:
als reactie op de lijst met 'unroutable' netwerken in de startpost: doe dit alleen als je je firewall actief bijhoudt, die lijst verandert nogal eens en dan zit jij je eerst 2 dagen af te vragen waarom een site bij jou niet werkt, en bij je buurman wel.
Het eerste script heb ik getest op een locale bak hier...... stond meteen helemaal potdicht...... SSH ook niet meer te benaderen :)

Valt dus een beetje af :D

[ Voor 5% gewijzigd door BacardiBreezer op 16-03-2005 21:02 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • thestiffmeister
  • Registratie: December 2003
  • Laatst online: 01-02 22:46
Ik kan maar 1 ding zeggen :)

Kijk n's op de volgende site:

_/-\o_ www.linuxhomenetworking.com _/-\o_

Klik op Linux --> Linux Networking -> Chapter 14 (IPTables) (helemaal naar beneden scrollen)

Daar staat een retegoede tutorial en heel wat uitleg bij de scripts. Stuk over IPTables zeer goed bruikbaar voor alle Linuxvarianten.

Tis trouwens heel handig voor mensen die veel op servergebied in Linux willen leren en dit stap voor stap willen opzetten en leren. IPTables, FTP, Samba, Apache, VPN, monitor achtige toepassingen en ga maar door. Helaas alleen toepasbaar voor Fedora wat duidelijk niet mijn favoriet is. Voor andere distro's moet je dan maar equivalente conf. files vinden en in elkaar sjeffen.

Voor mensen die een snelle opstap willen maken met IPTables en geen Linux Goeroe zijn is dit dus wel een aanrader. Je kan natuurlijk ook alle man-pages nastruinen en de normale howto's lezen (wat natuurlijk weer leuker is en ik dus prefereer :-) )

Suc6 :Y)

[ Voor 5% gewijzigd door thestiffmeister op 16-03-2005 21:20 ]


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik ben al een paar stappen verder en heb een redelijk goed eigen script. Ik lees alles wat ik tegenkom maar test ookveel standaard dingen omdat een goeroe zelfs nog wel eens rare zaken tegenkomt met de meest simpele dingen :)

Maar het valt me op dat gewoon op de meeste servers hoe dan ook, mits geen hardwarematige firewall offcourse, smtp/pop3/ftp open staat ookal is het puur een DNS met niets anders erop.

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Gondor
  • Registratie: September 2003
  • Laatst online: 11:07
BacardiBreezer schreef op woensdag 16 maart 2005 @ 21:00:
[...]

Denk je dat ik die niet op DROP gezet had dan ;) Ga niet alles posten natuurlijk :D

edit:


Als je even goed leest zie je dat in mijn post hierboven ook staan btw ;)

Hmm, ok. Maar het blijft op deze manier natuurlijk gok werk. En toch doe je dan iets anders fout, zeg ik dan.

Je post een basis gedeelte van je fw script niet en vraagt of het goed is :? Vind je dat niet zelf ook raar?

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Gondor schreef op woensdag 16 maart 2005 @ 21:39:
[...]
Hmm, ok. Maar het blijft op deze manier natuurlijk gok werk. En toch doe je dan iets anders fout, zeg ik dan.

Je post een basis gedeelte van je fw script niet en vraagt of het goed is :? Vind je dat niet zelf ook raar?
Niet als ik van zaken uit ga die hier ook gebruikt worden :)

Maar waarom gok-werk ? Als je hem DROP/REJECT, andere poorten ook DROP die niet meer open staan en FTP en dergelijk wel valt dat toch wel op...... ben ik nog even aan het uitzoeken.

Ik kijk gewoon op dit moment wat je met een basis-script kan doen en verbouw dat/bouw dat uit. Zint het me niet doe ik wat anders :)

Meten is weten en testen is het beste(n) ;)

[ Voor 3% gewijzigd door BacardiBreezer op 16-03-2005 22:03 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Gondor
  • Registratie: September 2003
  • Laatst online: 11:07
BacardiBreezer schreef op woensdag 16 maart 2005 @ 21:50:
[...]
Maar waarom gok-werk ? Als je hem dropt, andere poorten ook dropt die niet meer open staan en FTP en dergelijk wel valt dat toch wel op...... ben ik nog even aan het uitzoeken. ...
als je dit hebt gedaan dan kan dat het zijn, of als je iets anders hebt gedaan kijk dan daar, of als dit het geval is kan dat het zijn.

Maargoed.
Ik ben er achter gekomen dat SMTP/POP/FTP gewoon niet dicht te zetten zijn op een server met softwarematige firewall
Mijn conclusie hierop is:

1) Je script is niet goed.
2) Je test het niet goed.
3) Iets anders is niet goed.

Minstens 1 van de boven staande is correct.

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Gondor schreef op woensdag 16 maart 2005 @ 22:14:
Maargoed.
[...]
Mijn conclusie hierop is:

1) Je script is niet goed.
2) Je test het niet goed.
3) Iets anders is niet goed.

Minstens 1 van de boven staande is correct.
Ja daar ga ik natuurlijk ook van uit maar de vraag is waar het 'm zit..... Als je ze gewoon al niet kan droppen....... Kwam hetzelfde probleem ergens op een ander techforum tegen...... die kwamen er ook niet uit volgens mij.

Maar is het je conclusie of heb je het zelf getest ?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

BacardiBreezer schreef op woensdag 16 maart 2005 @ 22:23:
[...]
Ja daar ga ik natuurlijk ook van uit maar de vraag is waar het 'm zit..... Als je ze gewoon al niet kan droppen....... Kwam hetzelfde probleem ergens op een ander techforum tegen...... die kwamen er ook niet uit volgens mij.

Maar is het je conclusie of heb je het zelf getest ?
Nee, de vraag waar het zit heeft Gondor al beantwoord:
1) Je script is niet goed.
2) Je test het niet goed.

zo moeilijk is het toch niet?
1) kijk met iptables -L of er regels zijn die smtp/ftp/pop openzetten terwijl je policy DROP is. Zo ja is je script niet goed of draait er iets anders wat die poorten openzet.
2)Als er geen regels zijn test je niet goed. Installeer even een smtp server en connect vanaf een andere machine met telnet naar je eigen machine, poort 25. Als je op je eigen machine terecht komt -> stap 1, en anders weet je dat er iets zit tussen de machine waarvandaan je test en je eigen machine.

Je had denk ik beter naar maui71 kunnen luisteren:
Verwijderd schreef op woensdag 16 februari 2005 @ 19:51:
hm, als ik hoor IPTables en "geen verstand van IPTables" roep ik meestal Shorewall.

Whenever you find that you are on the side of the majority, it is time to reform.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Of je router /modem heeft gewoon die poorten openstaan waardoor je het wel leuk na de router dicht kan gooien, maar router blijft openstaan...

Maar mijn firewallscript zijn in de basis altijd heel simpel : Drop alles wat ik niet accepteer, dus gewoon een paar accept regels, dan een paar drop-regels voor bekende poortscans etc. dan een log-regel en daarna alles droppen voor die interface, werkt er iets niet. dan hoef ik alleen maar in de logs te kijken over welke poorten er geprobeerd wordt te connecten en die te accepten ( hierom dus ook mijn losse drop-regels, verkeer op poort tcp/21 vind ik niet interessant. Zijn toch alleen maar scriptkiddies die lopen te scannen ) Met een tooltje als logcheck is dit goed te beheren.

Let op, ik doe dit ook voor uitgaand verkeer en forward verkeer. Al mijn verkeer met internet verkeer moet een accept regel hebben staan, anders gaat het er niet uit / komt het niet binnen. Werkt naar mijn ervaring het beste. Heb het al bij enkele bedrijfjes toegepast, en de mensen zijn in 1e instantie heel verdrietig dat ze geen rare apps meer kunnen opstarten, maar als je dan vraagt wat ze met die app moeten dan blijven ze heel erg stil. En als er een nieuw telebankier pakket bij komt, dan is het alleen maar even vragen om verbinding te proberen te maken en de logs nalopen. Die poorten openzetten en het werkt weer perfect...

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Ik zal eens verder kijken...... maar verklaar de scans die ik naar andere bijvoorbeeld DNS-en heb gedaan van providers eens dan ? Je gaat me niet vertellen dat een provider op zijn NS1 andere zaken gaat hosten dan alleen DNS.

Verder heb ik iptables -L uiteraard allang gebruikt. Iedereen roept hier wel hard op dit moment dat iemand niets van IPtables af weet maar komen zelf ook niet met echt concrete zaken als een drop all met ssh open en kijken wat er dan gebeurd bijvoorbeeld....... alleen de persoon hierboven :)
pinball schreef op woensdag 16 maart 2005 @ 22:59:
[...]

Je had denk ik beter naar maui71 kunnen luisteren:

[...]
Ik wil niet weten wat jij fout hebt gedaan in je leven/stages/werk....... vertel me nou niet dat je alles direct al wist en met deze wijze opmerking al eens uitgelachen bent ;) |:( Ben je altijd zo sceptisch ?

[ Voor 29% gewijzigd door BacardiBreezer op 16-03-2005 23:11 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

Kleine tip

APF Firewall

Zoek maar even via google. De moeite is het echt waard. Werkt prachtig op alle Linux systemen (NIET FreeBSD zover ik weet)

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Verwijderd schreef op woensdag 16 maart 2005 @ 23:08:
Kleine tip

APF Firewall

Zoek maar even via google. De moeite is het echt waard. Werkt prachtig op alle Linux systemen (NIET FreeBSD zover ik weet)
Ben ik ook al even mee bezig geweest. Thnx voor advise ! Firehol is ook een goede optie om te gebruiken maar toch wilde ik de normale iptables met eigen script eens proberen :)

Overigens...... een Firehol liet ftp/pop3/smtp ook open en de rest was NP om dicht te zetten :)

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Mooi moment om mijn firewall's ook eens onder de loep te nemen.

Ik wilde beginnen met uitschakelen onnodige services. Als jullie dit teveel topic-kaping vinden open ik wel een nieuw draadje, maar het is ook voor de TS belangrijk:

- Printserver. Op m'n debain machine luisters die op poort 515 geloof ik... Hoe heet dat package, dan haal ik hem maar beter weg denk ik?
- Ident daemon. Op 1 server maak ik gebruik van oidentd als ident daemon, op de rest staat standaard de systeem-ident. Wordt iemand hier nu vrolijk van? Op dit moment staat de poort wel netjes geblokkeerd, maar waarom installeren ze ident standaard op een systeem?
- Port 32768 TCP+UDP & 32769TCP. De eerste wordt vaak gebruikt voor hack tools las ik, maar bij mij luistert rpc.statd erop. Ik gebruik NFS, en ga ervanuit dat dit juist is. (Er wordt geluisterd op tcp en udp overigens). De laatste kent lsof in mijn systeem niet...?
- Port 37TCP - Timeserver volgens google? Zijn "kale" Debian 3.0 systemen standaard al tijdserver?
- Port 9 TCP+UDP - Ik lees dat op google dat dit een soort /dev/null voor TCP is. Waarom luisterd er dan een service op op mijn machine?

Bij nader inzien ga ik misschien toch een topic openen. Morgen weer een dag, nu eerst even wat nachtrust :z

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
pierre-oord schreef op woensdag 16 maart 2005 @ 23:32:
Als jullie dit teveel topic-kaping vinden open ik wel een nieuw draadje, maar het is ook voor de TS belangrijk:
Lekker posten hoor !! ;) NP !

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Nog even een reply op dat het script niet goed zou zijn dat ik gebruik (gewoon een vanuit dit topic)

Dit klopt dus niet. Ik heb postfix even geinstalleerd en met poort 25 op DROP geprobeerd te connecten via telnet. Dit lukte niet omdat deze gewoon dicht stond. Een poortscan gaf aan dat poort 25 open stond.

Hierna de poort 25 op ACCEPT gezet en uiteraard was er een telnet-sessie mogelijk !

Ik heb als voorbeeld nog even wat NS1's hier en daar gescannend en hieruit bleek ook dat FTP/SMTP/POP3 altijd als open aangegeven stonden.

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
BacardiBreezer schreef op donderdag 17 maart 2005 @ 15:13:
Nog even een reply op dat het script niet goed zou zijn dat ik gebruik (gewoon een vanuit dit topic)

Dit klopt dus niet. Ik heb postfix even geinstalleerd en met poort 25 op DROP geprobeerd te connecten via telnet. Dit lukte niet omdat deze gewoon dicht stond. Een poortscan gaf aan dat poort 25 open stond.

Hierna de poort 25 op ACCEPT gezet en uiteraard was er een telnet-sessie mogelijk !

Ik heb als voorbeeld nog even wat NS1's hier en daar gescannend en hieruit bleek ook dat FTP/SMTP/POP3 altijd als open aangegeven stonden.
Als je durft, geef dan een IP adres, dan laat ik er ook een portscanner op los voor je :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
pierre-oord schreef op donderdag 17 maart 2005 @ 16:25:
[...]


Als je durft, geef dan een IP adres, dan laat ik er ook een portscanner op los voor je :)
Test gewoon het Easy Firewall script.... :)

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

BacardiBreezer schreef op donderdag 17 maart 2005 @ 15:13:
Nog even een reply op dat het script niet goed zou zijn dat ik gebruik (gewoon een vanuit dit topic)

Dit klopt dus niet. Ik heb postfix even geinstalleerd en met poort 25 op DROP geprobeerd te connecten via telnet. Dit lukte niet omdat deze gewoon dicht stond. Een poortscan gaf aan dat poort 25 open stond.

Hierna de poort 25 op ACCEPT gezet en uiteraard was er een telnet-sessie mogelijk !

Ik heb als voorbeeld nog even wat NS1's hier en daar gescannend en hieruit bleek ook dat FTP/SMTP/POP3 altijd als open aangegeven stonden.
Betreft het een UPD of TCP port?
UPD is namelijk stateless dus als de portscanner geen reject reply krijgt dan geldt de port als "open".

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Topicstarter
Dawns_sister schreef op donderdag 17 maart 2005 @ 18:37:
[...]


Betreft het een UPD of TCP port?
UPD is namelijk stateless dus als de portscanner geen reject reply krijgt dan geldt de port als "open".
TCP.

UDP moet ik nog even doen, maar ik gebruik alleen DNS op UDP-niveau op dit moment.

Jij bent misschien belangrijk, maar ik ben aardig ;)


Verwijderd

Ik heb er hier eentje MET forwarding, dus ook als router.

Situatie: Je hebt een eth0 op de buitenlijn, eth1 op de interne interface, al is dat trouwens alleen van belang voor het open/dichtzetten van poorten.

Het is een knip/plak werkje, met gedeeltelijk eigen inbreng. Waar de basis vandaan komt -> geen idee, iemand anders heeft dat voor me geregeld.

Zeg er eens wat van :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/sh
#  
###########################################################################

set -x
DEBUG_LEVEL=INFO

EXTIF="eth0"
EXTIP=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`
EXTBROAD=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $3) ; print $3 }'`
EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'`

echo External IP: $EXTIP
echo External broadcast: $EXTBROAD
echo Default GW: $EXTGW
echo " --- "

INTIF="eth1"
INTIP=`ifconfig $INTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`
INT_MASK="`ifconfig $INTIF |grep Mask |cut -d: -f4`"
INTLAN="192.168.0.0/255.255.255.0"

echo Internal Interface: $INTIF
echo Internal IP: $INTIP
echo Internal LAN: $INTLAN
echo " --- "

LOIF="lo"
LOIP="127.0.0.1"

BROADCAST="255.255.255.255"

IPTABLES="`which iptables`"

# /sbin/depmod -a

# /sbin/modprobe ip_tables
# /sbin/modprobe ip_conntrack
# /sbin/modprobe iptable_filter
# /sbin/modprobe iptable_mangle
# /sbin/modprobe iptable_nat
# /sbin/modprobe ipt_LOG
# /sbin/modprobe ipt_limit
# /sbin/modprobe ipt_state

#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

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

echo "echo 1 > /proc/sys/net/ipv4/ip_forward" && echo 1 > /proc/sys/net/ipv4/ip_forward
echo "echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter" && echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo "echo 1 > /proc/sys/net/ipv4/ip_dynaddr" && echo 1 > /proc/sys/net/ipv4/ip_dynaddr

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

$IPTABLES -t filter -P INPUT DROP
$IPTABLES -t filter -P OUTPUT DROP
$IPTABLES -t filter -P FORWARD DROP

$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X


$IPTABLES -A INPUT -p ALL -i $INTIF -s $INTLAN -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $LOIP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $INTIP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $EXTIP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $INTIF -s 0.0.0.0 -d 255.255.255.255 -j ACCEPT


$IPTABLES -A INPUT -p ALL -d $EXTIP -m state --state ESTABLISHED,RELATED \
    -j ACCEPT

$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport ftp -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport ssh -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport http -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 65500:65535 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 110 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 631 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 5050 -j ACCEPT

$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type echo-reply -j ACCEPT
$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -d 224.0.0.0/8 -j DROP


$IPTABLES -A INPUT -d $EXTBROAD -j DROP 
$IPTABLES -A INPUT -d $BROADCAST -j DROP 

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3

$IPTABLES -A FORWARD -i $INTIF -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3


$IPTABLES -A OUTPUT -p ALL -s $LOIP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INTIP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $EXTIP -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $EXTIP

# eMule

$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 4662 -j DNAT --to 192.168.0.33:4662
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 4661 -j DNAT --to 192.168.0.33:4661
$IPTABLES -t nat -A PREROUTING -p UDP -i $EXTIF -d $EXTIP --dport 4665 -j DNAT --to 192.168.0.33:4665
$IPTABLES -t nat -A PREROUTING -p UDP -i $EXTIF -d $EXTIP --dport 4672 -j DNAT --to 192.168.0.33:4672 
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 4711 -j DNAT --to 192.168.0.33:4711
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 3389 -j DNAT --to 192.168.0.33:3389
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 6891:6900 -j DNAT --to 192.168.0.33:6891:6900

$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.33 --dport 4662 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.33 --dport 4661 -j ACCEPT
$IPTABLES -A FORWARD -p UDP -i $EXTIF -d 192.168.0.33 --dport 4665 -j ACCEPT
$IPTABLES -A FORWARD -p UDP -i $EXTIF -d 192.168.0.33 --dport 4672 -j ACCEPT 
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.33 --dport 4711 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.33 --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.33 --dport 6891:6900 -j ACCEPT

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Yo! Zit te googlen en kwam zo op dit topic! Heb toevallig vandaag FireHOL draaiend gekregen zonder dat'ie /var/log/syslog helemaal volschrijft.

Nu heb ik nog een dingetje en denk dat jullie wel kunnen helpen. Ik gebruik de (raar genoeg ongedocumenteerde) optie nolog om alle broadcasts te droppen. Samba wil ik alleen toegankelijk maken voor bepaalde hosts, de rest droppen zonder log. Daarvoor heb ik deze rule:
code:
1
server samba accept src "jayvee hahn washok" nolog


Helaas wordt er nog wel steeds gelogd:
code:
1
[...] PROTO=UDP SPT=50364 DPT=137 LEN=58

Destination Port 127 is toch samba? Waarom wordt het dan niet zonder log gedropt?

ASCII stupid question, get a stupid ANSI!

Pagina: 1