µ±Ç°Î»ÖãºLinux½Ì³Ì - Linux - ipfilter ʵÏÖ͸Ã÷´úÀí

ipfilter ʵÏÖ͸Ã÷´úÀí



        

    Using ipfilter as transprant proxy, by Charley Sense







    

    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������, ��Щ���������ڷ���ǽ��Ҫ��, �������������.


    ���ñ�������, �������κ���ʧ, ���߸Ų�����.


    Reference:


    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


    ϵͳ����


    Gateway:


    ϵͳ��װFreeBSD 4.5. PENTIUM-S 100, 80M�ڴ�, 4GӲ��. ��װ˫����.



    1. Dlink DFE5000TXһ����ϵ�����, �ϵ�Windows 98����Ҫ���ҵ�����, Windows 2000���Ҷ����ṩ������, ����BSD/Linux����֧���������, FreeBSD��Ϊdc0. �����������ڲ�����.

    2. Dlink DFE530TX, FreeBSD��Ϊvr0. ���������� ADSL Modem.

    ���ڿͻ���


    ��������ʱ��Ϊ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�Ѿ���������, �й��ⷽ��Ľ���, �������������.


    Gateway����


    �����ں�



    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)



    �޸������ļ�


    /etc/rc.conf


    ɾ�����ļ����й�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"


    /etc/ipf.conf


    ���ļ�Ϊ����ǽ�����ļ�, ������Ҫ����ʵ��͸������, ������ĽǶȽ��Ǵ���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



    /etc/ipnat.conf


    ���ļ�Ϊ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



    /etc/sysctl.conf



    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



    DNS


    �޸��ļ� /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Ҫ����.


    ��������



    1. ����internet, ����ppp -dedicated <XXXXX >
    2. ͬ������ǽ. ���������ù����ʱ�򲢲�֪�������ַ, ֻ�����ӳɹ����֪��ȷ�еĵ�ַ, ����ipf
      -y����ʹipfilter���µ�ַ, ֮��ipfilter�ͻ�ʹ��tun0�ľ����ַ. ÿ����������pppoe��, ����Ҫ����ͬ��.

    Gatewat����



    1. ��������, ping 192.168.0.4���Ƿ�����.
    2. ����internet. ����ifconfig -a
      �쿴tun0�ĵ�ַ�����Ӧ��gateway/router�ĵ�ַ, ����Ϊa.b.c.d.  ping a.b.c.d���Ƿ�����.
    3. ����DNS�Ƿ�����, ����nslookup yahoo.com.cn, ���Ƿ�����.
    4. ��������, ����traceroute yahoo.com.cn, ���Ƿ�����. �ҵĻ���ûװXwindow,  ����޷�ʹ����������в���.
    5. �������õIJ�������,
      ipfstat -hio ��ʾ���򱻡����С������.
      ipfstat -t ��ʾ����ǽ������״̬.

      ipnat -l ��ʾNAT��״̬.
      netstat -r ��ʾ·�ɱ�.
      netstat -i
      ��ʾ��������, ����д�����д����ij�ͻ��, Ӧ���跨���.
      vmstat ��ʾϵͳ�ڴ��״̬, �����Դ����, Ӧ������Դ�����һЩ����.

    �ͻ�������



    1. ping 192.168.0.1���Ƿ�����.
    2. tracert a.b.c.d���Ƿ�����. BSD/Linux��traceroute����, ��������, �Ƿ���ǽ��NAT������.
    3. nslookup yahoo.com.cn���Ƿ�����. ��������, ��DNS���õ�����.
    4. ping yahoo.com.cn���Ƿ�����.
    5. ���������, ���Ƿ�����.(ע�⣬�������Ӧ����proxy)

    ��������, ֤��Windows XPʹ�����¹��߹�������.



    • �����: IE6, Netscape 4.72, Netscape 6
    • Email: Outlook Express, �� hotmail �� pop3 �ʼ����շ�.
    • MSN, �����ݺ�����ͨ��.

    ��ȫ����


    �����


    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������


    ϵͳ��ɺ�, ����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 �����÷�����:



    • ����RealPlayer
    • ѡ��˵� View -> Perferences -> Transport
    • ѡ��Auto-Configure,  RealPlayer�����Զ�Ϊ������ΪTCP
      Only�ķ�ʽ. Ҳ�����ֹ�����, ȥ��UDP�ķ�ʽ, ֻ��TCP�ķ�ʽ.

    �����汾�����÷���, ����� target=_blank>http://service.real.com/firewall/adminfw.html


    QQ������


    �����й�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Э��.
    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Ӧ���ǰ�ȫ��.



    ������:charley ï¿½ï¿½ï¿½ï¿½: