¡¡·ÀÊØÔÚÍøÂ簲ȫÖеÄÖØÒªÐÔ²»±Ø¶à˵¡£±£»¤ÍøÂç×î³£¼ûµÄ·½·¨¾ÍÊÇʹÓ÷À»ðǽ¡£·À»ðǽ×÷ÎªÍøÂçµÄµÚÒ»µÀ·ÀÏߣ¬Í¨³£·ÅÖÃÔÚÍâÍøºÍÐèÒª±£»¤µÄÍøÂçÖ®¼ä¡£×î¼òµ¥µÄÇé¿öÊÇÖ±½Ó½«·À»ðǽ·ÅÖÃÔÚÍâÍøºÍÆóÒµÍøÂçÖ®¼ä£¬ËùÓÐÁ÷ÈëÆóÒµÍøÂçµÄÊý¾ÝÁ÷Á¿¶¼½«Í¨¹ý·À»ðǽ£¬Ê¹ÆóÒµµÄËùÓпͻ§»ú¼°·þÎñÆ÷¶¼´¦ÓÚ·À»ðǽµÄ±£»¤Ï¡£Õâ¶ÔÓÚһЩÖÐСÆóÒµÀ´ËµÊǼòµ¥Ò×Ðе쬶øÇÒÕâÖÖ½â¾ö·½·¨ÔÚijЩÇé¿öÏÂÒ²±íÏÖ²»´í¡£È»¶øÕâÖֽṹ±Ï¾¹±È½Ï¼òµ¥¡£ÆóÒµÖÐÓÐÐí¶à·þÎñÆ÷¡¢¿Í»§»úµÈ×ÊÔ´ÐèÒª±£»¤£¬²»Í¬µÄ×ÊÔ´¶Ô°²È«Ç¿¶ÈµÄÒªÇóÒ²²»Í¬¡£²»ÄÜÓöԴý¿Í»§»úµÄ°²È«¼¶±ðÀ´¶Ô´ý·þÎñÆ÷£¬ÕâÑù·þÎñÆ÷½«»áºÜΣÏÕ£»Í¬Ñù£¬Ò²²»ÄÜÓöԴý·þÎñÆ÷µÄ°²È«¼¶±ðÀ´¶Ô´ý¿Í»§»ú£¬ÕâÑùÓû§»á¸Ð¾õºÜ²»·½±ã¡£
¡¡¡¡
¡¡¡¡Õë¶Ô²»Í¬×ÊÔ´Ìṩ²»Í¬°²È«¼¶±ðµÄ±£»¤£¬¿ÉÒÔ¿¼Âǹ¹½¨Ò»¸ö½Ð×ö¡°Demilitarized Zone¡±£¨DMZ£©µÄÇøÓò¡£DMZ¿ÉÒÔÀí½âΪһ¸ö²»Í¬ÓÚÍâÍø»òÄÚÍøµÄÌØÊâÍøÂçÇøÓò¡£DMZÄÚͨ³£·ÅÖÃһЩ²»º¬»úÃÜÐÅÏ¢µÄ¹«Ó÷þÎñÆ÷£¬±ÈÈçWeb¡¢Mail¡¢FTPµÈ¡£ÕâÑùÀ´×ÔÍâÍøµÄ·ÃÎÊÕß¿ÉÒÔ·ÃÎÊDMZÖеķþÎñ£¬µ«²»¿ÉÄܽӴ¥µ½´æ·ÅÔÚÄÚÍøÖеĹ«Ë¾»úÃÜ»ò˽ÈËÐÅÏ¢µÈ¡£¼´Ê¹DMZÖзþÎñÆ÷Êܵ½ÆÆ»µ£¬Ò²²»»á¶ÔÄÚÍøÖеĻúÃÜÐÅÏ¢Ôì³ÉÓ°Ïì¡£
¡¡¡¡
¡¡¡¡Ðí¶à·À»ðǽ²úÆ·¶¼ÌṩÁËDMZµÄ½Ó¿Ú¡£Ó²¼þ·À»ðǽÓÉÓÚʹÓÃרÃŵÄÓ²¼þоƬ£¬ËùÒÔÔÚÐÔÄܺÍÁ÷Á¿ÉÏÓоø¶ÔµÄÓÅÊÆ¡£Èí¼þ·À»ðǽµÄÐԼ۱ȷdz£ºÃ£¬Ò»°ãÆóҵʹÓÃÆðÀ´Ð§¹û²»´í¡£Èç¹ûʹÓÃLinux·À»ðǽ£¬Æä³É±¾½«¸üµÍ¡£Òò´ËÕâÀォҪ½éÉܵÄÊÇÔÚLinux·À»ðǽÉÏ»®·ÖDMZÇøÓòµÄ·½·¨¡£
¡¡¡¡
¡¡¡¡
¹¹½¨DMZµÄ²ßÂÔ¡¡¡¡Linux´Ó2.4Äں˿ªÊ¼,ÕýʽʹÓÃiptablesÀ´´úÌæÒÔǰµÄipfwadmºÍipchains£¬ÊµÏÖ¹ÜÀíLinuxµÄ°ü¹ýÂ˹¦ÄÜ¡£LinuxµÄ°ü¹ýÂËͨ¹ýÒ»¸ö½ÐnetfilterµÄÄں˲¿¼þÀ´ÊµÏÖ¡£netfilterÄÚ½¨ÁËÈý¸ö±í£¬ÆäÖÐĬÈϱíFilterÖÐÓÖ°üÀ¨3¸ö¹æÔòÁ´£¬·Ö±ðÊǸºÔðÍâ½çÁ÷ÈëÍøÂç½Ó¿ÚµÄÊý¾Ý¹ýÂ˵ÄINPUTÁ´¡¢¸ºÔð¶ÔÍøÂç½Ó¿ÚÊä³öµÄÊý¾Ý½øÐйýÂ˵ÄOUTPUTÁ´£¬ÒÔ¼°¸ºÔðÔÚÍøÂç½Ó¿ÚÖ®¼äת·¢Êý¾Ý¹ýÂ˵ÄFORWARDÁ´¡£Òª¹¹½¨Ò»¸ö´øDMZµÄ·À»ðǽ£¬ÐèÒªÀûÓöÔÕâЩÁ´µÄÉ趨Íê³É¡£Ê×ÏÈÒª¶Ô´ÓÁ¬½ÓÍâ²¿ÍøÂçµÄÍø¿¨(eth0)ÉÏÁ÷ÈëµÄÊý¾Ý½øÐÐÅжϣ¬ÕâÊÇÔÚINPUTÁ´ÉÏÍê³É¡£Èç¹ûÊý¾ÝµÄÄ¿±êµØÖ·ÊôÓÚDMZÍø¶Î£¬¾ÍÒª½«Êý¾Ýת·¢µ½Á¬½ÓDMZÍøÂçµÄÍø¿¨£¨eth1£©ÉÏ£»Èç¹ûÊÇÄÚ²¿ÍøÂçµÄµØÖ·£¬¾ÍÒª½«Êý¾Ýת·¢µ½Á¬½ÓÄÚ²¿ÍøÂçµÄÍø¿¨£¨eth2£©ÉÏ¡£±í1ÏÔʾÁ˸÷¸öÍøÂçÖ®¼äµÄ·ÃÎʹØÏµ¡£
¡¡¡¡
¡¡¡¡
±í1 ÍøÂç¼ä·ÃÎʹØÏµ±í¡¡¡¡
¡¡
¡¡¡¡¸ù¾Ý±í1£¬¿ÉÒÔÃ÷È·ÒÔÏÂÁùÌõ·ÃÎÊ¿ØÖƲßÂÔ¡£
¡¡¡¡
¡¡¡¡1.ÄÚÍø¿ÉÒÔ·ÃÎÊÍâÍø
¡¡¡¡ÄÚÍøµÄÓû§ÏÔÈ»ÐèÒª×ÔÓɵطÃÎÊÍâÍø¡£ÔÚÕâÒ»²ßÂÔÖУ¬·À»ðǽÐèÒª½øÐÐÔ´µØÖ·×ª»»¡£
¡¡¡¡
¡¡¡¡2.ÄÚÍø¿ÉÒÔ·ÃÎÊDMZ
¡¡¡¡´Ë²ßÂÔÊÇΪÁË·½±ãÄÚÍøÓû§Ê¹Óú͹ÜÀíDMZÖеķþÎñÆ÷¡£
¡¡¡¡
¡¡¡¡3.ÍâÍø²»ÄÜ·ÃÎÊÄÚÍø
¡¡¡¡ºÜÏÔÈ»£¬ÄÚÍøÖдæ·ÅµÄÊǹ«Ë¾ÄÚ²¿Êý¾Ý£¬ÕâЩÊý¾Ý²»ÔÊÐíÍâÍøµÄÓû§½øÐзÃÎÊ¡£
¡¡¡¡
¡¡¡¡4.ÍâÍø¿ÉÒÔ·ÃÎÊDMZ
¡¡¡¡DMZÖеķþÎñÆ÷±¾Éí¾ÍÊÇÒª¸øÍâ½çÌṩ·þÎñµÄ£¬ËùÒÔÍâÍø±ØÐë¿ÉÒÔ·ÃÎÊDMZ¡£Í¬Ê±£¬ÍâÍø·ÃÎÊDMZÐèÒªÓÉ·À»ðǽÍê³É¶ÔÍâµØÖ·µ½·þÎñÆ÷ʵ¼ÊµØÖ·µÄת»»¡£
¡¡¡¡
¡¡¡¡5.DMZ²»ÄÜ·ÃÎÊÄÚÍø
¡¡¡¡ºÜÃ÷ÏÔ£¬Èç¹ûÎ¥±³´Ë²ßÂÔ£¬Ôòµ±ÈëÇÖÕß¹¥ÏÝDMZʱ£¬¾Í¿ÉÒÔ½øÒ»²½½ø¹¥µ½ÄÚÍøµÄÖØÒªÊý¾Ý¡£
¡¡¡¡
¡¡¡¡6.DMZ²»ÄÜ·ÃÎÊÍâÍø
¡¡¡¡´ËÌõ²ßÂÔÒ²ÓÐÀýÍ⣬±ÈÈçDMZÖзÅÖÃÓʼþ·þÎñÆ÷ʱ£¬¾ÍÐèÒª·ÃÎÊÍâÍø£¬·ñÔò½«²»ÄÜÕý³£¹¤×÷¡£
¡¡¡¡
¡¡¡¡
DMZµÄʵÏÖ¡¡¡¡¸ù¾ÝÒÔÉÏ·ÃÎÊ¿ØÖƲßÂÔ¿ÉÒÔÉ趨Linux·À»ðǽµÄ¹ýÂ˹æÔò¡£ÏÂÃæ½«ÔÚÒ»¸öÐé¹¹µÄÍøÂç»·¾³ÖУ¬Ì½ÌÖÈçºÎ¸ù¾ÝÒÔÉÏÁùÌõ·ÃÎÊ¿ØÖƲßÂÔ½¨Á¢ÏàÓ¦µÄ·À»ðǽ¹ýÂ˹æÔò¡£ÕâÀïµÄÌÖÂۺ;ßÌåÓ¦ÓûáÓÐËùÇø±ð£¬²»¹ýÕâÖÖÌÖÂÛ½«ÓÐÖúÓÚʵ¼ÊÓ¦Óá£Óû§ÔÚʵ¼ÊÓ¦ÓÃʱ¿É¸ù¾Ý¾ßÌåµÄÇé¿ö½øÐÐÉèÖ᣸ÃÐéÄâ»·¾³µÄÍøÂçÍØÆËÈçͼ1¡£
¡¡¡¡

¡¡¡¡
ͼ1 DMZÍøÂçÍØÆËͼ¡¡¡¡Èçͼ1Ëùʾ£¬Â·ÓÉÆ÷Á¬½ÓInternetºÍ·À»ðǽ¡£×÷Ϊ·À»ðǽµÄLinux·þÎñÆ÷ʹÓÃÈý¿éÍø¿¨£ºÍø¿¨eth0Óë·ÓÉÆ÷ÏàÁ¬£¬Íø¿¨eth1ÓëDMZÇøµÄHubÏàÁ¬£¬Íø¿¨eth2ÓëÄÚÍøHubÏàÁ¬¡£×÷Ϊһ¸ö³éÏóµÄÀý×Ó£¬ÎÒÃÇÓá°[ÄÚÍøµØÖ·]¡±À´´ú±í¡°192.168.1.0/24¡±Ö®ÀàµÄ¾ßÌåÊýÖµ¡£Í¬Àí»¹ÓС°[ÍâÍøµØÖ·]¡±ºÍ¡°[DMZµØÖ·]¡±¡£
¡¡¡¡
¡¡¡¡¶ÔÓÚ·À»ðǽ£¬ÔÔòÖ®Ò»¾ÍÊÇĬÈϽûÖ¹ËùÓÐÊý¾ÝͨÐÅ£¬È»ºóÔÙ´ò¿ª±ØÒªµÄͨÐÅ¡£ËùÒÔÔÚ·À»ðǽ½Å±¾µÄ×î³õ£¬ÐèÒªÇå¿ÕϵͳÔÓеĹæÔò£¬È»ºó½«INPUT¡¢OUTPUT¡¢FORWARDµÄĬÈϹæÔòÉèÖÃΪ¶ªÆúËùÓÐÊý¾Ý°ü¡£
¡¡¡¡
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡
¡¡¡¡# Flush out the tables and delete all user-defined chains
¡¡¡¡/sbin/iptables -F
¡¡¡¡/sbin/iptables -X
¡¡¡¡/sbin/iptables -t nat -F
¡¡¡¡/sbin/iptables -t nat -X
¡¡¡¡
¡¡¡¡# Drop every packet
¡¡¡¡/sbin/iptables -P INPUT DROP
¡¡¡¡/sbin/iptables -P OUTPUT DROP
¡¡¡¡/sbin/iptables -P FORWARD DROP
¡¡¡¡
¡¡¡¡½ÓÏÂÀ´£¬ÖðÒ»½âÊÍÁùÖÖ²ßÂÔµÄʵÏÖ¡£
¡¡¡¡
¡¡¡¡1.ÄÚÍø¿ÉÒÔ·ÃÎÊÍâÍø
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -t nat -A POSTROUTING -s [ÄÚÍøµØÖ·] -d [ÍâÍøµØÖ·] -o eth0 -j SNAT --to [NATµÄÕæÊµIP]
¡¡¡¡
¡¡¡¡µ±Êý¾Ý´ÓÁ¬½ÓÍâÍøµÄeth0Á÷³öʱ£¬Òª½«À´×ÔÄÚÍøµÄÊý¾Ý°üµÄÔ´µØÖ·¸Ä³ÉInternetÉϵÄÕæÊµIP£¬ÕâÑù²ÅÄܺÍÍâÍøµÄÖ÷»ú½øÐÐͨÐÅ¡£¡°[NATµÄÕæÊµIP]¡±±íʾ·ÖÅ䏸NATÓû§µÄÕæÊµIP£¬Óм¸¸ö¾Íд¼¸¸ö£¬ÒÔ¿Õ¸ñ·Ö¿ª£¬µ«ÖÁÉÙҪдһ¸ö¡£
¡¡¡¡
¡¡¡¡2.ÄÚÍø¿ÉÒÔ·ÃÎÊDMZ
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -A FORWARD -s [ÄÚÍøµØÖ·] -d [DMZµØÖ·] -i eth2 -j ACCEPT
¡¡¡¡ÒÔÉÏÃüÁîÔÊÐíËùÓÐÀ´×ÔÄÚÍø¡¢Ä¿µÄµØÎªDMZµÄÊý¾Ý°üͨ¹ý¡£
¡¡¡¡
¡¡¡¡3.ÍâÍø²»ÄÜ·ÃÎÊÄÚÍø
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -t nat -A PREROUTING -s [ÍâÍøµØÖ·] -d [ÄÚÍøµØÖ·] -i eth0 -j DROP
¡¡¡¡ÒÔÉÏÃüÁÀ´×ÔÍâÍø¡¢È¥ÍùÄÚÍøµÄÊý¾Ý°üÈ«²¿¶ªÆú¡£
¡¡¡¡
¡¡¡¡4.ÍâÍø¿ÉÒÔ·ÃÎÊDMZ
¡¡¡¡ÎªÁ˱£»¤DMZÖеķþÎñÆ÷£¬ÍâÍø¶ÔDMZµÄ·ÃÎÊÒ²Òª¼ÓÒÔÏÞÖÆ¡£Í¨³£µÄ˼·ÊÇ£¬Ö»ÔÊÐíÍâÍø·ÃÎÊDMZÖзþÎñÆ÷ËùÌṩµÄÌØ¶¨·þÎñ£¬±ÈÈçHTTP¡£
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -d [·ÖÅ䏸HTTP·þÎñÆ÷µÄInternetÉϵÄÕæÊµIP] -s [ÍâÍøµØÖ·] -i eth0 -j DNAT --to [HTTP·þÎñÆ÷µÄʵ¼ÊIP]
¡¡¡¡/sbin/iptables -A FORWARD -p tcp -s [ÍâÍøµØÖ·] -d [HTTP·þÎñÆ÷µÄʵ¼ÊIP] -i eth0 --dport 80 -j ACCEPT
¡¡¡¡/sbin/iptables -A FORWARD -p tcp -d [ÍâÍøµØÖ·] -s [HTTP·þÎñÆ÷µÄʵ¼ÊIP] -i eth1 --sport 80 ! --syn -j ACCEPT
¡¡¡¡/sbin/iptables -t nat -A PREROUTING -s [ÍâÍøµØÖ·] -d [DMZµØÖ·] -i eth0 -j DROP
¡¡¡¡
¡¡¡¡¸Ã·À»ðǽ½Å±¾Æ¬¶Î½«¿ª·ÅHTTP·þÎñ£¬Ê¹µÃÖ»ÓзÃÎÊDMZÖÐHTTP·þÎñµÄÊý¾Ý°ü²ÅÄÜͨ¹ý·À»ðǽ¡£
¡¡¡¡
¡¡¡¡5.DMZ²»ÄÜ·ÃÎÊÄÚÍø
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -A FORWARD -s [DMZµØÖ·] -d [ÄÚÍøµØÖ·] -i eth1 -j DROP
¡¡¡¡ÒÔÉÏÃüÁ¶ªÆúËùÓдÓDMZµ½ÄÚÍøµÄÊý¾Ý°ü¡£
¡¡¡¡
¡¡¡¡6.DMZ²»ÄÜ·ÃÎÊÍâÍø
¡¡¡¡¶ÔÓ¦µÄ·À»ðǽ½Å±¾Æ¬¶ÎÈçÏ£º
¡¡¡¡/sbin/iptables -t nat -A POSTROUTING -p tcp --dport 25 -d [ÍâÍøµØÖ·] -s [Óʼþ·þÎñÆ÷µÄIP] -o eth0 -j SNAT --to [·ÖÅ䏸SMTP·þÎñÆ÷µÄInternetÉϵÄÕæÊµIP]
¡¡¡¡/sbin/iptables -A FORWARD -p tcp -s [Óʼþ·þÎñÆ÷µÄIP] -d [ÍâÍøµØÖ·] -i eth1 --dport 25 -j ACCEPT
¡¡¡¡/sbin/iptables -A FORWARD -p tcp -d [Óʼþ·þÎñÆ÷µÄIP] -s [ÍâÍøµØÖ·] -i eth0--sport 25 ! --syn -j ACCEPT
¡¡¡¡
¡¡¡¡ÒÔÉÏÃüÁîÏÈÔÊÐíDMZÖÐÓʼþ·þÎñÆ÷Á¬½ÓÍâÍøµÄSMTP·þÎñ¶Ë¿Ú(25)£¬È»ºó½ûÖ¹ÆäËü´ÓDMZ·¢ÍùÍâÍøµÄÊý¾Ý°ü¡£
¡¡¡¡
¡¡¡¡Õë¶ÔÒÔÉÏ»ù±¾²ßÂÔÀý¾ÙÁËʵÏÖËüÃǵĻù±¾¹æÔò¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÐèÒª¸ù¾Ý¾ßÌåÇé¿ö½øÐÐÉèÖá£Ö»ÒªÉèÖõõ±£¬LinuxÒ²ÄܳÉΪºÜºÃµÄ·À»ðǽ¡£ÐèÒª²¹³äµÄÊÇ£¬ÎÞÂÛºÎÖÖ·À»ðǽ¶¼Ö»ÄÜÌṩÓÐÏ޵ı£»¤¡£ÉèÖú÷À»ðǽ²»µÈÓÚÍøÂç¾ÍÊǰ²È«µÄ£¬¹Ø¼üÔÚÓÚ×ÛºÏÔËÓø÷ÖÖ°²È«ÊֶΡ£