Lo primero que se debe tener en cuenta para optar por un cortafuegos es lo siguiente:
* dejas abierto todos los puertos y cierras los puertos que no utilizáras, * cierras todos los puertos y abres nada más que los que utilizarás, recomiendo esta segunda por ser más segura.
En este caso, eth0 es WAN y el resto de las eth que aparescan son lan
aptitude install firehol
Editar el fichero /etc/default/firehol y escribir esto:
START_FIREHOL=YES FIREHOL_LOG_MODE="ULOG" #If you want to have firehol wait for an iface to be up add it here WAIT_FOR_IFACE=""
Estas líneas son para que el cortafuegos inicie con el sistema, no muestre los logs en pantalla y para que escuche por cualquier eth. Puedes definirle que solo lo haga por una determinada eth, pero eso se vve hasta poco lógico.
Editar el fichero de configuracion del firehol /etc/firehol/firehol.conf y escribir
esto:
version 5 # Accept all client traffic on any interface interface any world policy drop server dns accept #para dns todo el mundo server ssh accept #para ssh todo el mundo server ssh accept src 192.168.X.Y/28 #para ssh solo desde ese IP server http accept # para web todo el mundo server squid accept src 172.16.X.Y/24 # para squid solo esta red server ftp accept # para ftp todo el mundo server jabberd accept #para el jabber todo el mundo server custom adminejabberd tcp/5280 default accept # ejemplo de puertos perzonalizados client all accept #Para hacer un NAT simple router maqpepe inface eth0 outface eth1 src 172.16.X.Z masquerade route all accept
Para lenny se necesita instalar el paquete less
aptitude install less
luego da un warning
WARNING File '/etc/firehol/RESERVED_IPS' is more than 90 days old. You should update it to ensure proper operation of your firewall. Run the supplied get-iana script to generate this file
para solucionarlo ejecute lo siguiente
touch -m /etc/firehol/RESERVED_IPS
Esto lo que hace es tocar el fichero y le pone la fecha actual.
Para hacer NAT específicamente a un ip y un puerto
router censoe inface eth2 outface eth0 src "172.16.20.15 172.16.20.16" dst 200.55.X.Y server ftp accept inface eth2 outface eth0 server http accept inface eth2 outface eth0 masquerade route all drop
Y para terminar, dejo el listado de palabras asociadas a un puerto con que firehol puede trabajar:
Ejemplo:
Con la F está ftp y hace referencia al puerto 21, con la H está http y hace referencia al puerto 80.
A
AH, all, amanda, any, anystateless, apcupsd, apcupsdnis, aptproxy, asterisk
C
cups, custom, cvspserver
D
darkstat, daytime, dcc, dcpp, dhcp, dhcprelay, dict, distcc, dns
E
echo, emule, eserver, ESP
F
finger, ftp
G
gift, giftui, gkrellmd, GRE
H
h323, heartbeat, http, https, hylafax
I
iax, iax2, icmp, ICMP, icp, ident, imap, imaps, irc, isakmp
J
jabber, jabberd
L
ldap, ldaps, lpd
M
microsoft_ds, mms, ms_ds, msn, multicast, mysql
N
netbackup, netbios_dgm, netbios_ns, netbios_ssn, nfs, nis, nntp, nntps, ntp, nut, nxserver
O
oracle, OSPF
P
p2p, ping, pop3, pop3s, portmap, postgres, pptp, privoxy
R
radius, radiusold, radiusoldproxy, radiusproxy, rdp, rndc, rsync, rtp
S
samba, sip, smtp, smtps, snmp, snmptrap, socks, squid, ssh, stun, submission, sunrpc, swat, syslog
T
telnet, tftp, time, timestamp
U
upnp, uucp
V
vmware, vmwareauth, vmwareweb, vnc
W
webcache, webmin, whois
X
xdmcp