°Ñ¦Ò:iptables tutorial
²³æªº¤Jªù,Ãøªº§Ú¤]¤£·|....

¥Øªº:¤F¸Ñiptablesªº­ì²z ¤Î³]©w
¥H¤U§Ú­Ì°w¹ïiptables tutorial¤å³¹¤¤ªº¸ê®Æ´N©Ò­nªº³¡¥÷¥[¥H»¡©ú

iptables¬O§Ú­Ì¨Ó·í¨¾¤õÀ𪺤@­Ó¨Ï¥ÎªÌºÝªº³nÅé,­n¨Ï¥Î¥¦¤§«e§Aªº§@·~¨t²Î®Ö¤ß¥²¶·¤w½s¤Jnetfilter,
iptables¤Îipchains¥u¯à¾Ü¤@¥Î¤§¤£¥i¥H¦P®É¨Ï¥Î,¦]¦¹¦pªG§A­n°õ¦æipchains§A¥²¶·°±¥Î,¥Ø«eª©¥»ªºlinux¤j³£¤º«Ø¤F,§A¥i¥H ¬d¸ß§Alinuxªº®Ö¤ßª©¥»¸ê°T,¥H½T©w¬O§_±Ò¥Î
¦Ü©ó¤@¯ëªºªA°Èªº¤â°Ê±Ò°Ê¤Î°±¤î¾Þ§@¦p¤U
service iptables start
service iptables stop
service iptables restart
§Ú­Ì¦b°õ¦æsetup®É¥i¥H¦bservice¤¤¬Ý¨ì¤@¨Ç¤w¸g¦s¦bªA°È,¦ý¬O¦p¦ó¥[¤J§Ú­Ì­nªº·sªA°È©O?
¦pªG§A¬O¨Ï¥Îrpm¦w¸Ëªº§A¥i¥H¤£¥Î³]©w,¦]¦¹¥¦·|À°§A³]©w¦n,¨Ï¥Îtar.gz©Îtgzªºµ{¦¡¦w¸Ë«h­n¦Û¤v³]©w

©R¥O
run level

ªA°È¦WºÙ
on©Îoff
chkconfig
 --level
235
iptables
on

run level
2 ¦h¤H¨Ï¥Î,¦pªG¨S¦³ºô¸ô«h¨S¦³NFS
3 ¥¿±`¦øªA¾¹¶}¾÷ªºª¬ªp
5 x11ªºÀô¹Ò

¨¾¤õÀð
¥¦±M´Nºô¸ô«Ê¥]ªº¨Ó§@³B²z,¦]¦¹¥u¦³¥¦¨Ã¤£¹³¨ä¥¦¨¾¤õÀ𪺳nÅé¬O°w¹ï²Ä¤C¼hªºÀ³¥Î¼h,¦pªG§A·Q°w¹ïÀ³¥Î¼hªº¨¾¤õÀð,¥i¥H¨Ï¥Î¥t¤@­ÓIDS(¤J«I°»´ú³nÅé) snort,¥¦¬O¦P¨¾¬r³nÅé¨Ï¥Î¯S¼x±½´y


²{¦b¶i¤J¥DÃD(RedHat):
ºô¸ô­ì²z
§Ú­Ì¥ý´N¹êÅé³]³Æ"ºô¸ô¥d"¨Ó»¡©ú,
¤@­Óºô¸ô¥d,³Ì°ò¥»ªº³s½uªºÃѧO¬Omac(³o­Ó¸¹½X¬O¥@¬É¤W°ß¤@ªºÃѧO½X,¥¦¬O¸òµÛºô¸ô¥dµwÅé¶]ªº),
§A¥i¨Ï¥Îarp ¨Ó¬d¸ß°Ï°ìºô¸ô¤W©Ò¨Ï¥Îªººô¸ô¥dªºmac¸¹½X,

¨ä¤¤HWaddress´N¬Omac
ºô¸ôªº³]©w
¤@¯ë³]©wÀɩҦb
/etc
HOSTNAME
hosts
resolv.conf
sysctl.conf
¥D¾÷¦WºÙ(¥þ°ì¦WºÙ)
ip ¤Î ¦WºÙ¹ïÀ³
¤Ï¸Ñ¤Î¦WºÙ¦øªA¾¹

/etc/sysconfig
network


/etc/sysconfig/network-scripts
¥þ³¡³£¬O
ifcfg-lo
ifcfg-eth0
ifcfg-eth0:1
ifdown
ifup


127.0.0.1ªº³]©w
ºô¸ô¥d³]©w
ºô¸ô¥d³]©w(ip§O¦W)
ºô¸ô¥d°±¤îªº°Ê§@
ºô¸ô¥d±Ò°Êªº°Ê§@
¦pªG¤W­zÀɧó§ï«á¦p¦ó­«·s®M¥Îºô¸ô³]©w(³o­Ó°Ê§@¥i¯à¤£¬O¦w¥þªº)
service network restart


iptables°ò¥»µ²ºc
¤T­Óµ{¦¡
/sbin/iptables ³o¬O¥D­nµ{¦¡,¥¦¬O©Ò¦³iptablesªº©R¥O©Ò¦b
/sbin/iptables-save ¦b³]©wiptables®É,§Ú­Ì¥i¯à¬O¤@Ãä¤U­×§ï,·s¼W,©Î§R°£©R¥O, ¤Î¤@Ãä´ú¸Õ,¤@¥¹¦X¥G§Ú­Ì­n¨D®É,¥i¯à§A¤w¸g§Ñ¤F¤U¹L¨º¨Ç³W«h,³o­Ó©R¥O¥idump§Aªº³]©w¦Ü¿Ã¹õ,§A¥i¥HÂনÀÉ®×,iptables-save >  ÀɦW
/sbin/iptables-restore ¦P¤W¬O§@¬Û¤Ïªº°Ê§@,±Nstdinªº¸ê®ÆÂà¨ìiptablesªº³]©w¤º
¨ç¦¡¼Ò²Õ
/lib/iptables/libipt_xxxxxxx
¤Î¤â¥UÀÉ
¦Ü©óiptablesªº³]©wÀɦb¨ºùØ©O?
§Ú¨Ï¥Îredhat¬O¦b/etc/sysconfig/iptables
¥u­n±N³]©w³]¦b³o­ÓÀÉ®×,iptablesªºªA°È±Ò¨Ó®É´N·|ª½±µ®M¥Î

±Ò°Êiptables
³o¤U­±Àɮתº¤º®e¤@©w­n¬O1
/proc/sys/net/ipv4/ip_forward
¨ä­È¬°1,¦pªG¨S¦³ªº¸Ü­n°õ¦æ
echo '1' > /proc/sys/net/ipvr/ip_forward
iptables ªº¤º©wªº³]©wÀɦb
/etc/sysconfig/iptables
§A¥i¥Hª½±µ¤â°Ê§ó§ï,¦Ó³]©w¦b­«·s¶}©l©Îservice­«·s±Ò°Ê¨Ó®É·|®M¥Î
§A¤]¥i¥H¨Ï¥Îiptables ©R¥Oª½±µ³]©w,¦ý­«·s±Ò°Ê®É·|¤£¨£
¶}©l±Ò°Êiptables
service iptables start

°lÂܥثeªº³s½u?
¤@¯ëªºÀ³¥Îµ{¦¡¦bÂà«Ê¥]®É,§Ú­Ì¥i¥H¨Ï¥Înetstat ¨Ó¬d¸ß¥Ø«eªº³s½u,¥]§tÂà°e,¦ý¬O¤@¥¹¨Ï¥Îiptables,¨ÃµLªk¨Ï¥Înetstat¨Ó¬d¸ß³z¹L¥»¾÷Âà°eªº³s½u(¨Ï¥ÎnatÂà°e,¨Ó·½¤Î¥Øªº§¡«D¥» ¾÷),§Ú­Ì¥i¥H¬d¸ß¤@­ÓÀÉ®× /proc/net/ip_conntrack
§A¥i¥H¥Ñ¤w¬d¥X§A¥D¾÷ªº§¹¾ã³s½u¸ê®Æ,¤U­±¬O¨ä¤¤¤@­Ó³s½u

§A¤]¥i¥H¤U¸ü¤@­Óµ{¦¡netstat-nat ¨Ó¬d¸ß
¦p§A©Òª¾«Ê¥]¤º³¡¥i¥H¦³³\¦h¤£¦Pªºª¬ºA(ºX¼Ð),µM¦Ó¦b/prc/net/ip_conntrack¤¤¤]¦³¥|ºØª¬ºA
ª¬ºA
»¡©ú
NEW
²Ä¤@­Ó«Ê¥],·í§Ú­Ì¬Ý¨ì¤@­ÓSYN«Ê¥]®É,µM¦Ó¦pªG²Ä¤@­Ó«Ê¥]¤£¬O SYN«h¤]·|³Q·í¦¨²Ä¤@­Ó«Ê¥],¦]¬°¦³³\¦h¤£¦Pªº±¡ªp
ESTABLISHED
¥i¥H¬Ý¨ìÂù¦Vªº«Ê¥]
RELATED
·í³s½u«Ø¥ß¤§«á©Ò­l¥Íªº¤l³s½u,³o­Ó¤l³s½u´N¬ORELATED
INVALID
«Ê¥]µLªk³Q¿ëÃÑ,³Ì¦n¬ODROP³oÃþªº«Ê¥]

¦p¦ó¬d¸ß§A¨Ï¥Îªºipµ¥?
ifconfig ¬O³Ì±`¨Ï¥Î
ip addr 
ip route

¦p¦ó¬d¸ß§A¶}±ÒºÊÅ¥ (listing)ªºport?
netstat -l
¬d¸ßºÊÅ¥port©Ò°õ¦æªºµ{¦¡(program)?
netstat -lp

§Ú­Ì¥i¥H¬Ý¥Xport:10000¬Oµ{¦¡perl,¦æµ{id¬°6475
§A¤]¥i¥H¨Ï¥Înmap¨Ó±½´y¦p¤U:
nmap 192.168.0.3

¦Ü©óºô¥dªºip©O(ip aliases)?
¤@­Óºô¥d¥i¥H¦³¼Æ­Óip,¦]¬°¥¦¬OÀHµÛ§Aªº³]©w§ïÅܪº,¥i¥H¬O¤@­Ó(¤@©w)¤]¥i¥H¦h­Ó-§Ú­ÌºÙ¬°ip aliases(§O¦W)
¤â°Ê·s¼W§O¦W
ifconfig  eth0:0  192.168.1.119
ifconfig  eth0:1  192.168.1.139
¦Û°Ê¸ü¤J,½s¿è¤G­ÓÀÉ®×
/etc/sysconfig/network-scripts/ifcfg-eth0:0
/etc/sysconfig/network-scripts/ifcfg-eth1:1
¨ä¤º®e¥i¥H°Ñ·Ó
/etc/sysconfig/network-scripts/ifcfg-eth0
¦pªG§Aıªº³Â·Ðªº¸Ü¥i¥H¨Ï¥Îwebmin¨Ó³]©w
¦³­Ó°ÝÃD
¦bwebmin³]©w®É¦³¨â­Ó¶µ¥Ø:
  1. ¥Ø«e¹B§@¤¤ªººô¸ô¤¶­±
  2. ¶}¾÷®É±Ò°Êªººô¸ô¤¶­±
­n§ï2ªº¶µ¥Ø¤§«á­«·s¶}¾÷¤~·|±Ò°Ê,(§Ú¦]¬°¨S¦³ª`·N¬Ý,§ï¨ì1,¦Ó¤@­«·s¶}¾÷,³]©w´N¤£¨£¤F,¥H¬°¥X¤F¤°»ò°ÝÃD)

iptables¤º©wªºªí®æ
mangle:¥D­n¬O¥Î¦b"Åܧó«Ê ¥]"ªº¬Y¨Ç¤º®e,¦b³o­Óªí®æ¤º½Ð¤£­n¨Ï¥Î¹LÂo©Î°°¸Ë,§Ú­Ì¥i¥H§ó§ï¤U¦C¤TºØºX¼Ð­È
TOS:iptablesªº¥\¯à©|¥¼§¹¥þ,³o­Ó¥\¯à¹ïipv4µL®Ä,¥u¥Î©óipv6
TTL:¦bºô¸ô«Ê¥]¤º,¦³¤@­Ó8bitªººX¼Ð(³Ì¤j­È255)¬O¥Î¨Ó©w¸qtime to live,¨ä¬O¨C¸g¤@¦¸Âà°e,·|´î1,¦pªGÅܦ¨0,·|³Q·í¦¨§£©U«Ê¥]¥á±ó
MARK:³o­Ó°Ñ¼Æ¦bipv4µL®Ä,³o­Ó¥\¯à¬O¨Ï¥Î¦b°ÊºArouting,¦b¤@¥x¹q¸£Åܧó·smark­È,¦Ó¥t¤@¥x¹q¸£¥i¥H§Q¥Î³o­Ó­È¨Ó§P§O

nat:³oùجO§@ip©Îport°°¸Ë
DNAT:¥Øªº°°¸Ë,¬OÂù¦Vªº¦pªG§A³]©wa->firewall->b,«hb->firewall->a·|¦Û²£¥Í,¦ýbªº getway­n³]firewall
SNAT:¨Ó·½°°¸Ë
MAQUERADE:¦PSNAT¦ý¤Ö¤F--to-source³]©w
filter:¥D­n¬O¹LÂo«Ê¥]ACCEPT/DROP
¤W­zªí®æ¤@¯ëÁÙ¥]¬A¤F¤U­±chains
mangle(PREROUTING,OUTPUT)
nat (PREROUTING,POSTROUTING,OUTPUT)
filter (INPUT,FOREARD,OUTPUT)
PREROUTING->INPUT->OUTPUT->POSTROUTING


¤£¦Pªí®æ©Mchinas¶¡ªºÂಾ¹L µ{(­«­n)
¤À¤T­Ó³¡¥÷
1.Âà°e«Ê¥]:mangle(PREROUTING)->nat(PREROUTING)->filter(FORWARD)-> nat(POSTROUTING)
2.¥Ø¼Ð¥»¾÷:mangle(PREROUTING)->nat(PREROUTING)->filter(INPUT)
3.¨Ó·½¬O¥»¾÷(¥»¾÷¦V¥~):mangle(OUTPUT)->nat(OUTPUT)->filter(OUTPUT)->nat (POSTROUTING)
¥Ñ©ómangleªí®æªº¥\¯à¬O¦b­×§ï«Ê¥],«Ü¤Ö¥Î¨ì,¦]¦¹§Ú­Ì¥i¥H§â¤W­z²¤Æ¦p¤U:
1.Âà°e«Ê¥]:nat(PREROUTING)->filter(FORWARD)->nat(POSTROUTING)
2.¥Ø¼Ð¥»¾÷:nat(PREROUTING)->filter(INPUT)
3.¨Ó·½¬O¥»¾÷(¥»¾÷¦V¥~):nat(OUTPUT)->filter(OUTPUT)->nat(POSTROUTING)
µ²½×:
¤W­zªºªí®æ¦b³]©w®É­n¦Ò¼{¨ì¤£¶È¬O³æ¤@ªº,¦pªG§A³]©w¨â­Ó¥H¤W¥²¶·,·Ó¶¶§Ç¨Ó±Àºâ,³Ì²×ªºµ²ªG,¦pªG¯à¥H¤@­Óªí®æ³B²z¾¨¶q¨Ï¥Î¤@­Óªí®æ¨Ó³B²z


µêÀÀ¥D¾÷
¥H¤U¬O§Ú¹Á¸Õ­n°µªº(ºô»Úºô¸ô->http_internet_ip->fireware->http_prive_ip)
¦bºô¸ô¤W­±¶Ç¼½ªº³Ì¤p³æ¦ì¬°«Ê¥],¨ä¹êºô¥d¾Þ§@­ì²z¬O¤@ºØ¼s¼½ªº°Ê§@,¦pªG¥¦­n¶Ç°e¸ê®Æ¥X¥h,¥¦·|µ¥ºô¸ô¤W¨S¦³¶Ç¼½ªº«Ê¥]®É,°e¥X¦Û¤vªº«Ê¥],¨äµ²ªG¥i¯à ¦³¨â­Óºô¥d¦P®É°e¥X,§Ú­ÌºÙ¬°¸I¼²,¦b¸I¼²²£¥Í®É,§A¥i¥H¦b§AªºHUB¤W¬Ý¨ìcollision¿O¦b°{,¦¹®É¨â­Óºô¥d·|¦Aµ¥«Ý¤£¦Pªº®É¶¡®t¤Îºô¥d¤W¨S¦³¦¬ ¨ì«Ê¥]®É,¦A°e¤@¹M,
¦Ü©ó±µ¦¬«h¥u·|±µ¦¬µ¹¦Û¤vªº«Ê¥],¨ä¥¦ªº«Ê¥]·|¥á±ó,§Ú¦b³oùةҴ£ªº­«ÂI¬O¦b¥¿±`ªºª¬ºA¤Uºô¥d¥u·|±µ¦¬¨ì¦Û¤vªºipªº«Ê¥](ÁÙ­n¦Ò¼{ip¤Îmask³] ©w),¨ä¥¦ªº·|¥[¥H¥á±ó,¦]¦¹¦b·í¦p¤Uªºª¬ºA®É,§A¥²¶·¥[¤J¦bfireware¥[¤Jip§O¦W
#¦pªG§A±Ò°Ê¤FPromiscuous mode,«h¥¦·|ºÊÅ¥ºô¸ô¥d½u¸ô¤Wªº©Ò¦³«Ê¥]
#§A¥i¥H¨Ï¥Îifconfig¨Ó±Ò°Ê,§Úª¾¹Dtcpdump¤Î snort·|±Ò°Ê¦ý¬O¤£ª¾¹ï®Ä¯à¥i§_¼vÅT.....

internet->http(123.456.789.1)->firewall(123.456.789.2)->http_intra(192.168.0.1)
¤W­zªº³]©w¦pªG§A¨S¦³±Ò°ÊPromiscuous§A·|¸I¨ì¤T­Ó°ÝÃD,¦]¬°123.45.789.1¨Ã¤£¦s¦b,¦Ófirewall¨Ã¤£·|±µ¦¬¨ä«Ê¥],¦pªG§A ³]¦n¤F¦p¤U:
iptables -t nat -A PREROUTING -p tcp -d 123.456.789.1 --dport 80 -j DNAT --to-destination 192.168.0.1:80
°ÝÃD:
  1. ¦]¬°¨ì123.456.789.1ªº«Ê¥]®Ú¥»ÁÙ¨S¦³°e¨ì¥»firewallªºnetfilter¨Ó³B²z,©Ò¥H¨Ã¤£·|¦³¥ô¦óªº§@¥Î(¦]¬°«Ê¥]³Q ¥á±ó)
  2. ¦A¦Ò¼{gateway¦b192.168.0.1  ¾÷¾¹¤W¦pªG³]©wªº¹h¹D¤£¬Ofirewall,«h192.168.0.1ªº¦^À³¨Ã¤£·|¦^¨ìfirewall,¦]¬°firewall­n¤Ï§ï¼g¨äDNAT(¥»³] ©w¬OÂù¦Vªº)
  3. ¦pªG¬O¦bfirewall ¤W°õ¦æ,«h·|µLªk°õ¦æ,­ì¦]¬O¥»¨­­n³s¤W¬O¨Ï¥ÎOUTPUT³W«h,¦ý§Ú­Ì¨Ã¨S¦³³]©w,¦]¦¹¥¦·|³s½u¨ì¥»¨­ªº80ªºport
¤èªk:
¥[¤J¤U­±³]©w:
iptables -t nat -A OUTPUT -t tcp -d 123.456.789.1 --dport 80 -j DNAT --to-destination 192.168.0.1:80
¦pªG§AÁÙ¤£ª¾¹D¬°¤°»ò½Ð°Ñ¦Ò¤W¤@­Ó¥DÃDªº²Ä3¶µ,¦b²Ä3¶µ¤¤¥i¥Îªº³]©w¦³¤T­Óªí®æ,¦ý²Ä¤@­Ó¸û²Å¦X¼Ð·Ç

Åý¤º³¡¾÷¾¹¥i¥H³z¹L firewall¦s¨ú¥~³¡
§Ú­Ì¥ý¬Ý¤@¤Uipchainsªº°µªk:
ipchains -A forward -s 192.168.0.0/24 -j MASQ

§Ú­ÌÅý©Ò¦³¤º³¡ªºip§Q¥Î¥»¾÷°°¸Ë¥X¥h,µM«á¦A¥Ñ¥»¾÷Âà¨ì¤º³¡
Åý§Ú¦A¦Ò¼{IPTABLESªº§@ªk
nat¦biptables¬O¦³¤TºØ°°¸Ë,DNAT,SNAT,¤ÎMASQUERADE
DNAT ¥Øªº°°¸Ë,
SNAT ¨Ó·½°°¸Ë,
MASQUERADE ¦P¨Ó·½°°¸Ë,¥u¬O§Ú§A¨Ã¤£»Ý­n--to-source,À³¥Î­«ÂI¬O¥»¾÷ªºip¬O¯B°Êªº¨ú±o,¦b¤å¥ó¤¤»¡³Ì¦n¬O­n¨Ï¥ÎMASQUERADE¨Ó¨ú¥NSNAT, ¬Æ¦Ü§A¬O¨Ï¥Î©T©wIP,ÁöµM·|¦h¤F¤@¨ÇÃB¥~ªº°Ê§@¨Ó¬d¸ßip
iptables -t nat -A POSTROUTING -p TCP -s 192.168.0.0/24 -j SNAT --to-source 123.456.789.2
iptables -t nat -A POSTROUTING -p TCP -s 192.168.0.0/24 -J MASQUERADE
²Ä¤@­Ó¬O¨¾¤õÀ𥻨­ªºip¥X¥h
²Ä¤G­Ó¬OMASQUARDE¦Û°Ê¨ú±o(¦pªG§A­n¨â­Óip(¤º³¡/¥~³¡))¥¦·|¦Û°Ê§PÂ_

³]¦n¤W­z¤§«á
­n³z¹L¦¹firewall¹q¸£­n¥[¤J
route add 0 mask 0 192.168.0.254
©Î¬Oºô¸ôÀô¹Ò³]©w¬°¹h¹D
±µµÛ­n´ú¸Õºô¸ô¦³¨S¦³³q
¤£­n¥Îping¤Îtraceroute¥¦·|µLªk·¾³q
¦]¤W­z§Ú³]©w¤F-p ¬°TCP,¦Óping¤Îtraceroute³£¬O¨Ï¥Î¨ìICMP(¥¦®ö¶O¤F§Ú¦n´X¤Ñªº®É¶¡,¥H¬°µL³s½u)
¦pªG§A­nÅý«DTCPªº¯à¶Ç°e ,¥i¥H±N-p tcp§R°£
§Ú­Ì³]©w©Ò¦³ªºtcp³£¥i¥H³z¹L¨¾¤õÀð¥X¥h
³o¬O§Úªº¿Ë¨­¸g¾ú,¦³¤@¤Ñ¥D¾÷±¾¤FµLªk¶}¾÷,¶}©l­«Äé,³]©w¦n¤§«á,¨Ï ¥Îwebmin¤£¤p¤ß§ï¤F¤@­Ó­È¤§«á´N§¹¤F,¤£ª¾¹D¦p¦óªº¥»¾÷ªºgateway¥\¯à´N¦¹±¾¤F,¤@ª½¥H¬°¬Oiptables³]©w°ÝÃD,³Ì«á¤@¤Ñ¹L¥h¤F,²×©ó §ä¨ì¦bwebmin->ºô¸ô->ºô¸ô²ÕºA->¸ô¥Ñ¤Î¹h¹D¾¹->¬O§_¹³¸ô¥Ñ¾¹ªº¤ÏÀ³ ­n³]¬O,§Ú¸ÕµÛ¥h§ä¨ä³]©wÀÉ,¦ý¨S¦³§ä¨ì,¦ý¾Ç¨ì¤F


¨S¦³¶}±ÒºÊÅ¥ªA°Èªºport¦w¥þ?
³o¬O§Ú¥H«eªºÆ[©À,¨S¦³¶}±ÒºÊÅ¥ªA°Èport´N¤£·|³Q§ðÀ»,¦ý¬O³o¬O¿ùªº!¥ô¦ó­n³s½u¨ì§Aªº¹q¸£³s½u,¦pªG§Aªº¹q¸£¤£´£¨ÑªA°È,§Aªº¹q¸£³£·|¦^À³¤@­Ó connection refused(©Úµ´³s½u)°T®§.
²{¦b§Ú­Ì±N¬Y¤@¥xªºport:21,©Ò¦³¶i¨Óªº³s½u§¡drop±¼
iptables -A INPUT -p tcp --dport 21 -j DROP
¦p¦¹»·ºÝ³s½u«h·|¤@µ¥«Ý¤U¥h,¤£·|¥X²{©Úµ´³s½uªº°T®§(ª`·N,¦b¥»¾÷¨S¦³°µ¥Î,¥»¾÷ªº²£¥Íªº«Ê¥]¤£·|¸g¹LINPUT)
iptables -A INPUT -p tcp --dport 1:21 -j DROP
©Úµ´¥~³¡³s½u¥»¾÷(1-21³s±µ°ð)

³s½u¦³¨ó©w
³s½uªº°ò¥»¨ó©w¦³¤TºØTCP,UDP,ICMP
TCP³s½u
¦³3ºØhandshake¤èªk¨Ó«Ø¥ß,¦b¸ê®Æ¶Ç°e«e·|¥ý½T©w³s½u¤w¸g«Ø¥ß,¾ã­Ó³s½u,·|¥ý¶}©l¦bSYN«Ê¥],µM«á¬OSYN/ACK«Ê¥],³Ì«á¬OACK«Ê ¥],syn¤Îack³£¬O«Ê¥]¤¤ªººX¼Ð,³o¨ÇºX¼Ð¬O¿W¥ßªº,syn/ackªí¥Ü¨¥¨â­ÓºX¼Ð³£¬O¬°1.

½ÆÂøªº³q°T¨ó©w
¬Y¤@¨Ç³q°T¬O¤ñ¨ä¥¦ªº­n½ÆÂø,¨Ò¦pICQ/IRC/FTP
¥D°Ê¼Ò¦¡ftp·|¨Ï¥Î¨ì¨â­Óport 21¤Î 20,¦pªG¬Opassiveªº¼Ò¦¡«hport¬O21¤Î¤@­Ó¥¼©wport


°ò¥»©R¥O
iptables -h ·|¦C¥X¨D§U°T®§,±`¥Îªº«ü¥O
¬d¸ß©R¥O
iptables -L   (¬d¸ß filter ªºªí®æ¤ºchains)
iptables -t nat -L (¬d¸ß nat ªí®æ¤ºchains)
iptables -L -n (¬d¸ß filterªºªí®æ¤ºªºchains,¹w³]·|±Nip©ÎportÂର¦WºÙ¤ÎªA°È,-n¬O¤£Âà´«)


ª`·N:¤U­±ªº¥O©R¦³¥Î¨ìtables©Î¬Ochains¬O¤£¦Pªº
©R¥O
¨Ò¤l
»¡©ú
-A,--append
iptables -A INPUT...
·s¼W¤@­Ó³W«h¨ìINPUT
-D,--delete
iptables -D INPUT -dport 80 -j DROP,
iptables -D INPUT 1
§R°£,¤@¯ë§Ú¬O¨Ï¥Î¤U­±¨º¤@¦æ,
§A¥i¥H¨Ï¥Î,iptables -L¨Ó¬d¸ß¤§
«á¦Aºâ¥X¥¦±Æ¦b²Ä´X­ÓµM«á§R°£
-R,--replace
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
¨ú¥N(¦X¨Ö¨â­Ó°Ê§@,§R°£Âªº¤Î·s¼W·sªº)
-I,--insert
iptables -I
´¡¤J¤@­Ó³W«h
-L,--list

¬d¸ß¨Ï¥Îªº³W«h
-F,--flush


-Z,-zero

±N©Ò¦³ªº­p¼Æ¾¹¸m0
-N,--new-chain

·s¼W¤@­Ó¦WºÙ
-X,--delete-chain

§R°£chains
-P,--policy

*§Ú­Ì¥i¥H¦b¤@¯ëªº½d¦C¬Ý¨ì,
¨ä·N¸q¬O·í©Ò¦³ªº«Ê¥]ªº³W«h³£¤£¦X¥G«h·|®Ú¾Ú¥»­ì«h¨Ó§@°Ê§@,´N¬O¹w³]ªº°Ê§@,¤@¯ë¨ÓÁ¿¤£¥~¥G¬OACCEPT©ÎREJECT©ÎDROP,§Ú©ÒÅ¥¨ì³£¬O¥ý©Ú µ´¦A¨ä¥¦³W«h¦A¶}©ñ

-E,--rename-chain

§ó§ïchainsªº¦WºÙ
§Ú±`¸I¨ì--dport©Î--sportªº¿ù»~°T®§
Unknown arg '--dport--'
¸g¬d¬O­n¥[¤J-t tcp ,¦³¤@¨Ç¨ó©w¬O¨S¦³port©Ò¥HµLªk«ü©w--dport--

¿ï¶µ
¿ï¶µ
¥i¥Îªº¬ÛÃö©R¥O
½d¨Ò
»¡©ú
-v,--verbose
--list,--append,--insert,--delete, --replace


-x,--exact
--list


-n,--numeric
--list


-line_numbers
--list

ip¤£¤Ï¸Ñ¬°¦WºÙ
-c--set-counters
--insert,--append,--replace


--modprobe
ALL



TCP matchs
©R¥O
½d¨Ò
»¡©ú
-p,--protocol
iptables -A INPUT -p tcp
«ü©w³q°T¨ó©w
-s,--src,--source
iptables -A INPUT -s 192.168.0.1
«ü©w¨Ó·½ip
-d,--dst,--destination
iptables -A INPUT -d 192.168.0.1
«ü©w¥Øªºip
-i,-in-interface
iptables -A INPUT -i eth0
«ü©w¨Ó·½ºô¸ô¤¶­±¥d
-o, --out-interface
iptables -A FORWARD -o eth0
«ü©w¥Øªººô¸ô¤¶­±¥d
-f,--fragment
iptables -A INPUT -f

UDP matches -¥H¤U¬O¦³Ãö©ó¦WºÙ¦øªA¾¹ªº³]©w
iptables -A INPUT -p udp --sport 53
iptables -A INPUT -p udp --dport 53
ICMP matches
iptables -A IMPUT -p icmp --icmp-type 8

½ÆÂømatches
¥H¤Uªºmatch³£¬O©µ¦ù,§Ú­Ì¦b¨Ï¥Î®É¥²¶·¥ý¥[ -m  type
MAC match -ºô¸ôªº¸¹½X,¥¦¬O¨Ï¥Î¦b¨Ó·½(--mac-source)
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01

Limit match -®É¶¡ªº­­¨î,/¤§«á¥i¤À¬°second¡Bminute¡B hour¡B day,¤ÏÂà±ø¥ó¨Ï¥Î!,-m !limit
iptables -A INPUT -m limit 3/hour
iptables -A INPUT -m limit --limit-burst 5
Multiport match -¬O¥i¥H¤@¦¸«ü©w¦h­Óport,¥i¥H´î¤Ö³]©w,­n¤p¤ß¨Ï¥Î§_«h·|µL®Ä
iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
Mark match
iptables -t mangle -A INPUT -m mark --mark 1
Owner match -¶È¯à§@¥Î¦bOUTPUT,¤]´N¬O¥»¾÷¥~°e®É²£¥Íªº¦æµ{,¦p¤U­±,¶È±µ¨ü
iptables -A OUTPUT -m owner --uid-owner 500 ­­©wuid¬O 500
iptables -A OUTPUT -m owner --gid-owner 0 ­­©wgid¬O0
iptables -A OUTPUT -m owner --pid-owner 78 ­­©wpid¬O78
iptables -A OUTPUT -m owner --sid-owner 100 ­­©wsid¬O100

State match -Àˬd¦X¥G³s½uªºª¬ºA
iptables -A INPUT -m stat --state RELATED,ESTABLISHED
TOS match  -ipv4¬O¥Î¤£¨ìªº,°£«D§A·|¥Î¨ìipv6,Å¥»¡ipv6¬O«D±`¦w¥þªº¤ñ(nat...)?
iptables -A INPUT -p tcp -m tos --tos 0x16
TTL match  -Àˬdttl¬O60,¦ý¬O³o­Ó­ÈªºÀ³¥Î«Ü¤Ö,°£«D§A¬O¬°¤F°£¿ùºô¸ô°ÝÃD,¤p¤ß¤£¦nªºTTL­È·|²£¥Í°ÝÃD
iptables -A OUTPUT -m -ttl --ttl 60
Target/Jumps
«e­±½Ðªº¬O¦X¥Gªº±ø¥ó,³oùØ«h¬O½Í¨ì­n°µªº°Ê§@(«Ê¥]ªº¥Øªº)
 
-j ACCEPT
±µ¨ü
-j DROP
ª½±µ±N«Ê¥]¥á±ó,«ØÄ³¤£­n¨Ï¥Î³o­Ó¥\¯à,³Ì¦n¦Ó§ï¥ÎREJECT
-j QUEUE
±N«Ê¥]Âà¦V¨Ï¥ÎªÌ¦Û©wªºµ{¦¡
-j RETURN
¨Ï±o¨Ó·½«Ê¥]°±¤î°e¨ì¤U­Óchain
-j LOG
²£¥Í°O¿ý¦b®Ú¾Úsyslogdªº³]©w
-j MARK
³]©wMARK­È
-j REJECT
©Úµ´³s½u
-j TOS
³]©wTOS­È
-j MIRROR
¹êÅç®i¥Ü¥Î,¥Ø«e¤£­n¨Ï¥Î¥¦
-j SNAT
¨Ó·½°°¸Ë
-j DNAT
¥Øªº°°¸Ë
-j MASQUERADE
¦P¨Ó·½°°¸Ë,¦ý¤Ö¤F--to-source
-j REDIRECT
Âàport(¥»¾÷)
-j TTL
iptables -t managle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
-j ULOG
²£¥Í°O¿ý



passive ftpªº³]©w

¥Ø«eiptables¤äÂZ³Q°Ê¦¡FTP³s½u, ¦ý¬O¤£¤©³\DCC¶Ç°e¥\¯à¨Ï¥Î·sªºstate matching code. ³]©w¥u¬O½sĶ ip_conntrack_irc, ip_nat_irc, ip_conntrack_ftp ©M ip_nat_ftp µ{¦¡½X ³o¨Ç¼Ò²Õ¬O¤ä´©³s½u°lÂܾ÷¨î©MNAT¾÷¨î,¦p¦¹¥i¥H°Ï¤À©M­×§ï³Q°Ê FTP ³s½u©Î¬O¤@­Ó DCC ¶Ç°e³s½u. ¨S¦³³o¨Ç¼Ò²Õ¥¦­ÌµLªk°Ï¤À¬O¨ººØ³s½u.

¦pªG§A­n¤©³\³Q°ÊFTP, ¦ý¬O¤£¤ä´© DCC¶Ç°e,§A¥²»Ý­n¸ü¤Jip_conntrack_ftp ©M ip_nat_ftp ¼Ò²Õ,§_«h­n¥[¤Jip_conntrack_irc©Mip_nat_irc ¼Ò²ÕµM«á°õ¦æ¤U­±ªº©R¥O:

/usr/local/sbin/iptables -A INPUT -p TCP -m state --state RELATED -j ACCEPT

ª`·Nip_nat_* ¼Ò²Õ¥u¦³§A¥²¶·À³¥ÎNAT³s½u¤~¦³¥Î,¤]´N¬O»¡,¦pªG§A­n¤H­Ì°õ¦æIRC ¥Ñ¥»¦aºô¸ô³s½u¸g¥ÑNAT°°¸Ë¨ìºô»Úºô¸ô.

¦p¦ó¸ü¤J
1.¤â°Ê insmod ip_nat_ftp
2.¦Û°Ê¦b/etc/modules.conf ¤¤³]©w