ipfilter ʵ��͸������
April 20, 2002 href="mailto:[email protected]">Charley Sense
(���Ŀ�������ת�أ���ע�����ߺͳ���)
����(����)��������·, ��ѧϰ��û����, �ո������һ̨����������, ���ڸ�������ʵ����С��һ��, ��û��ʲô����ֵ����ҫ��. Ӧ
href="http://www.linuxforum.net">�й�Linux��̳ FreeBSD�������
href="mailto:[email protected]">r00t ��Ҫ��, �����ù�������һ����¼, ������Ц��.
��������ʲô����, ��������
��ϵ. �������ؽ�������͸������, �������漰���������, ��dns, web, email������, ��Щ���������ڷ���ǽ��Ҫ��, �������������.
���ñ�������, �������κ���ʧ, ���߸Ų�����.
IP Filter Based Firewalls HOWTO [
href="http://www.obfuscation.org/ipf/ipf-howto.pdf" target=_blank>PDF
|
target=_blank>HTML ] (������ HOWTO)
target=_blank>Quick CableNet Connections with FreeBSD - By, Leon
ϵͳ��װFreeBSD 4.5. PENTIUM-S 100, 80M�ڴ�, 4GӲ��. ��װ˫����.
��������ʱ��ΪClient, ��װWindows XP
Gateway dc0�����ַ192.168.0.1/24, ͨ��HUB��������Windows XP�ͻ���
192.168.0.4/24, vr0����ADSL Modem, ͨ��pppoe��������.���ö�̬��ַ.
���ļٶ�Gateway �� pppoe��DNS�Ѿ���������, �й��ⷽ��Ľ���, �������������.
cd /usr/src/sys/i386/conf
cp GENERIC KERNEL1
vi KERNEL1
�޸ĸ��ں������ļ�, ������������
options IPFILTER
# ipfilter support
options IPFILTER_LOG
# ipmon(8) log support
options IPFILTER_DEFAULT_BLOCK
# block all packets by default
options RANDOM_IP_ID
# RANDOM_IP_ID causes the ID field in IP packets to be
randomized
# instead of incremented by 1 with each packet generated.
options BRIDGE
options ICMP_BANDLIM
# Rate limit bad replies
#options TCP_DROP_SYNFIN
# drop TCP packets with SYN+FIN
# �ò����������ϵͳ�İ�ȫ�ԣ�������web serverʱ������ʹ�ã����LINT
ȡ���ں���������IPFIREWALL�йص�����
# options IPFIREWALL
# firewall
# options IPFIREWALL_VERBOSE
# enable logging to syslogd(8)
# options IPFIREWALL_FORWARD
# enable transparent proxy support
# options IPFIREWALL_VERBOSE_LIMIT=100
# limit verbosity
# options IPFIREWALL_DEFAULT_TO_ACCEPT
# allow everything by default
# options DUMMYNET
�����������
options NMBCLUSTERS=32768
ϵͳ��װʱ�ò�����С, ��Ӱ�����������. �����ֵֻ���Ҽ򵥵�����, ������������Ҫ����. ����˵����� href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html" target=_blank>FreeBSD HandBook "http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-kernel-limits.html" target=_blank>6.10.2 Network Limits
��ʾ���ں�
ident KERNEL1
�����ں�
cd /usr/src
make buildkernel KERNCONF=KERNEL1
make installkernel KERNCONF=KERNEL1
(������������Ժϲ�Ϊ make kernel KERNCONF=KERNEL1)
ɾ�����ļ����й�ipfw������, ���߽�
firewall_enable="NO"
������������
gateway_enable="YES"
# enable gateway
named_enable=YES"
# enable naming service
ipfilter_enable="YES"
# Stateful firewall
ipfilter_program="/sbin/ipf"
ipfilter_rules="/etc/ipf.conf"
# �����ӵĹ����ļ�, ����ϰ���ļ��� .rule
ipfilter_flag=""
ipnat_enable="YES"
# Network Address Translation
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.conf"
# �����ӵĹ����ļ�, ����ϰ���ļ��� .rule
ipmon_enable="NO"
# Firewall logging, ��û�п���, �������Ҫ�ķ�����, Ӧ�ÿ���.
ipmon_program="/sbin/ipmon"
ipmon_flag="-Ds"
���ļ�Ϊ����ǽ�����ļ�, ������Ҫ����ʵ��͸������, ������ĽǶȽ��Ǵ���Client, ��˹ر���Internet�����Server
In�����ж˿�. �������, ��������dc0�����в���, ��������Internet����������, ������Internetֻ��������������Ļ�Ӧ, ������һ�ɶ���.
# Ĭ�Ϲ���, �ر���ֹ���еİ�, �ر����е�ͨ·, ��һ��һ����������ͨ��.
# ����ں������� IPFILTER_DEFAULT_BLOCK, ����ʡ��.
block in all
block out all
# ������������Ϣ����ͨ��.
pass in quick on dc0 from 192.168.0.0/24 to any
pass out quick on dc0 from any to 192.168.0.0/24
# ������������Ϣ����ͨ��.
pass in quick on lo0 all
pass out quick on lo0 all
# ��ֹ��������Ч��ַͨ��
block in quick on tun0 from 192.168.0.0/16 to any
block in quick on tun0 from 10.0.0.0/8 to any
block in quick on tun0 from 172.16.0.0/12 to any
block in quick on tun0 from 127.0.0.0/8 to any
block in quick on tun0 from 0.0.0.0/8 to any
block in quick on tun0 from 192.0.2.0/14 to any
block in quick on tun0 from 204.152.64.0/23 to any
block in quick on tun0 from 224.0.0.0/3 to any
# ��������Ϣ�Ĵ���, �������������͵�����, ����������������Щ���Ļ�Ӧ��Ϣͨ��
pass out quick on tun0 proto tcp from any to any flags S/SAFR keep state keep frags
pass out quick on tun0 proto udp from any to any keep state keep frags
pass out quick on tun0 proto icmp from any to any keep state keep frags
���ļ�ΪNAT�����ļ�.
������pppoeͨ��DHCP��ʽ��õ�ַ, ����޷��ڹ����и��������ĵ�ַ, ����0����.
# ftp proxy, Ϊ active ��ʽ��FTPʹ��, �Ժ���������. ��ע��, proxy������һ��Ҫ��portmap֮ǰ.
#map tun0 192.168.0.0/24 -> 0/32 proxy port ftp ftp/tcp
# IKE proxy, ΪESP (Encapsulating Security Protocol) ʹ��
# map tun0 192.168.0.0/24 -> 0/32 proxy port 500 ipsec/udp
# RealAudio proxy, ֻ������PNMģʽ, RealPlayer G2�Ѿ�ʹ��RTSP.
#map tun0 192.168.0.0/24 -> 0/32 proxy port 7070 raudio/tcp
# �����ڲ���UDP/TCP��ͨ��,��������������Ӧ��ͨ��
# ����������ָ����Χ�Ķ˿�
# map tun0 192.168.0.0/24 -> 0/32 portmap tcp/udp 40000:60000
# ��������ϵͳ�Զ�����˿�
map tun0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
# �����ڲ�ICMPͨ��,����������Ӧ��ͨ��
map tun0 192.168.0.0/24 -> 0/32
# ����net2phone, ������ĺ���ת��ָ������
# rdr tun0 0/0 port 6801 -> 192.168.0.4 port 6801 udp
# ����squid
# rdr dc0 0/0 port 80 -> 127.0.0.1 port 3128 tcp
net.inet.ip.forwarding=1
net.inet.ip.sourceroute=0
net.ip.accept_sourceroute=0
# To definding against sequence number attacks
# based on rfc 1948 by randomize initial sequence number
net.inet.tcp.strict_rfc1948=1
# To verisy that an incoming packet arrives on an interface
# that has an address matching the packets destination address
net.inet.ip.check_interface=1
# To Drop SYN packets destine to non-listening tcp/upd port.
# This will create a blackhole and protect against stealth port scans
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
# Increase TCP Windows size for increase in network performance
# Ref: http://www.psc.edu/networking/perf_tune.html
net.inet.tcp.recvspace=65535
net.inet.tcp.sendspace=65535
�޸��ļ� /etc/resolv.conf, ����һ��
nameserver DNS_SERVER_IP
���������DNS Server, Ӧָ��÷�����. ���gateway����ΪDNS Server, Ϊ127.0.0.1, ��������named.conf. һ����򵥵����þ���ָ��ISP��DNS Server.
���ͻ�����Gateway �� DNS Server������ΪGateway�����ĵ�ַ 192.168.0.1
Gateway�޸������ú���Ҫ����. ���� shutdown -r now
�ͻ���Windows XP��������, Windows 98Ҫ����.
��������, ֤��Windows XPʹ�����¹��߹�������.
�����
target=_blank>http://www.cert.org/security-improvement/practices/p060.html
href="http://web.ranum.com/pubs/fwtest/">http://web.ranum.com/pubs/fwtest/
ϵͳ��ɺ�, ����RealPlayer�ڷ���ǽ���޷�������, ���Dz�ͣ��buffering, ֱ��timeout.
������ΪĬ�Ϸ�ʽ��, RealPlayer8 ʹ����UDP Port 6970-7170��������, �����ݱ����ǵķ���ǽ����ĵ�ס��,
����NAT�Ĵ���, �򵥵��������������ݰ�Ҳ�޷���֤Client��������.
ipfilter �ṩ��һ��proxy������, ����Ϊ�����Ѿ��г�����, �����й�������ʾ��proxyֻ֧�ֹ��ϵ� PNM RealAudio��ʽ, RealPlayer G2�Ѿ�ʹ�� RTSP ��ʽ. ��proxy����֧��.
����RealPlayer�ṩ�����ǽ���ݵ�ģʽ, ��������Ϊֻʹ��TCP Port
7070, 7071, 554 �����˿�����Server, �����ǵķ���ǽ�����Ǻ�. �ڷ���ǽ����������, RealPlayer 8 �����÷�����:
�����汾�����÷���, ����� target=_blank>http://service.real.com/firewall/adminfw.html
�����й�QQ����̸�úܶ�, ��ʹ�õ���MSN,
��Ŷ�QQ���Ǻ��˽�, ֻ����һ�¼򵥵ķ���. �����Ͻ�, ͨ��������ת�������ⷢ��һ����û��ʲô�����, ����һ��������޷������յ��Է���UDP��ʽ���͵���Ϣ,
����Ϣ�޷�ͨ�����ǵķ���ǽ.
��������˵���Է���ǽ��������ƽ, ����һ������������UDP�İ�ͨ���dz���. ����ʵ������NAT��, ����ʹ����192.168.0.0/16�������ڲ���ַ. ��QQ�������ע��ʱ, ʵ��ʹ�õ���Gateway�ĵ�ַ, ��������ڲ��ж����ʹ��QQ,
������Ҳ�����ЩQQ�������ӵ����IP��, �����û����ݷ������ṩ�ĵ�ַ���ⲿ����UDP������Gateway,
Gateway�Ͳ�֪��Ӧ�ð���Ϣת����Ë. ����Ⲣ����һ���òµ¥µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ý°ï¿½Í¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½. �����ͬ�����⻹��netmeeting. ����ķ���, һ�������û�ȫ��ͨ��������ת��, ����ǽ�ܹ��ܺõش�������������. ������MSN��������. ������ҪQQ
service provider�ĺ���, ���Ҷ����ǵķ��������и��ߵ�Ҫ��. ��һ�ַ���������ftp client�Ľ����ʽ, ��Gateway������proxy. ��û��QQ������, �������½���.
FTP��
����һ������FTPÐ������ɵ�����, �������ȿ�һ��FTPÐ��.
FTPһ����Ҫʹ�������˿�, �˿�21ֻ��һ������˿�, �����������ݵ�ʱ��, ����Ҫ����һ�����ݶ˿�. ����ͳ����ڵڶ������ݶ˿���.
��������ݶ˿ڵ�ʱ�������ַ�ʽ, һ����passive(PASV command)��ʽ, ��FTP Server���ṩһ�����ӵ�IP/Port, FTP
Client���ӵ����IP/Port�Ͻ������ݴ���. ��һ����active(PORT command)��ʽ, ��FTP Client�ṩIP/Port,
����FTP Server�ؽ���Client�ṩ�ĵ�ַ. ���������һ�ַ�ʽ, ����FTP
Client������, Clientͨ��PASV��PORT����֪ͨServer����ʲô��ʽ. �������������ַ�ʽ, ��Server�˺�Client�˶�������鷳. �������ľ����������
target=_blank>http://www.daemonnews.org/200109/ftpnat.html
FTP Server
Server��һ�㲻ϣ��ʹ��passive��ʽ, ���ַ�ʽҪ�����ǽ��̬�ش�PASV�Ķ˿�.
��active��ʽ����Server�ķ���ǽû��ʲô�����Ҫ��. ����FTP
Server�Dz���ѡ���, ����������֧��passive��ʽ. һ��Ľ��������, �ڷ���ǽ�Ϲ̶��ش�һЩ�˿�, �� 15001-19999, ÿ��ͨ��, FTP
Server�������Դ���Щ�˿���ѡ��һ����ΪPASV�Ķ˿�֪ͨFTP Client. ������FTP
Server��֧��ָ��passive�˿ڷ�Χ, ��Ӧ�ÿ��Ǹ���FTP Server��. ���ַ�ʽ����ǽ��Ҫ���ӹ���
pass in quick on tun0 proto tcp from any to 0/32 port 15000>< 20000
flags S keep state keep frags
FTP Client
���������Ð�����, ���FTP Client����passive��ʽ, ���ڷ���ǽ����û��ʲô�����Ҫ��, ���ǿ��԰���������FTP Server.
����Ϣ�ǣ�һ���FTP Client������֧��passive��ʽ, ��ʹ�õ���������(netant), ���ʿ쳵(FlashGet)Ĭ�Ϸ�ʽ����passive,
WS_FTP�ǿ������õ�, ��������ǽ�Ͳ���Ҫ���⴦����. Unix����Ҫ����
FTP_PASSIVE_MODE=yes; export FTP_PASSIVE_MODE
����Ϣ��, �������FTPʹ�õ���active��ʽ, ���Һ��񻹲��ܸ���. ��������ֱ��ʹ�������FTP�����Ѿ��Ǻ�����
------ �Ҵ����Ͳ������������.
����, ��һЩFTPվ��, ��֧��passive��ʽ. ���������ʹ�һЩ˽�˵�FTPվ��, ���޷�ʹ��passive����, Ҳ������������Ʒ���ǽ��ʱ��û�п��ǰ�.
֧��activeģʽ����ͨ����NAT������proxy�����. Linuxͨ������ip_conntrack_ftp���, ipnat�Ѿ��������һ����, ����ֻ��Ҫ����һ������Ϳ�����.
�Ǿ�����ǰ��ipnat.conf�еĵ�һ������. ��proxy���Ի��ṩ����FTP����, ����FTP Server. ��ϧ����, �����п�����ɰ�ȫ���������
target=_blank>http://www.false.net/ipfilter/2001_11/0273.html.
������������һЩipfilter��ʹ�������۹��������, һ����Ϊ, ���gateway���������FTP Server, ��Ҫ�����ṩFTP����Ļ�, ��û��Dz�Ҫ������һproxy, �ڲ��û�ֻ����ʹ��passive��ʽ.
�����������һ������Ĵ���������, ��FTPֻ���ڲ���������, ������һproxyӦ���ǰ�ȫ��.