°Ñ¦Ò: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§An°õ¦æ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¸Ë«hn¦Û¤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¤WzÀɧó§ï«á¦p¦ó«·s®M¥Îºô¸ô³]©w(³oӰʧ@¥i¯à¤£¬O¦w¥þªº)
service network restart
iptables°ò¥»µ²ºc
¤TÓµ{¦¡
| /sbin/iptables |
³o¬O¥Dnµ{¦¡,¥¦¬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
¥un±N³]©w³]¦b³oÓÀÉ®×,iptablesªºªA°È±Ò¨Ó®É´N·|ª½±µ®M¥Î
±Ò°Êiptables
³o¤U±Àɮתº¤º®e¤@©wn¬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®É¦³¨âÓ¶µ¥Ø:
- ¥Ø«e¹B§@¤¤ªººô¸ô¤¶±
- ¶}¾÷®É±Ò°Êªººô¸ô¤¶±
n§ï2ªº¶µ¥Ø¤§«á«·s¶}¾÷¤~·|±Ò°Ê,(§Ú¦]¬°¨S¦³ª`·N¬Ý,§ï¨ì1,¦Ó¤@«·s¶}¾÷,³]©w´N¤£¨£¤F,¥H¬°¥X¤F¤°»ò°ÝÃD)
iptables¤º©wªºªí®æ
mangle:¥Dn¬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ªº
getwayn³]firewall
SNAT:¨Ó·½°°¸Ë
MAQUERADE:¦PSNAT¦ý¤Ö¤F--to-source³]©w
filter:¥Dn¬O¹LÂo«Ê¥]ACCEPT/DROP
¤Wzªí®æ¤@¯ëÁÙ¥]¬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§â¤Wz²¤Æ¦p¤U:
1.Âà°e«Ê¥]:nat(PREROUTING)->filter(FORWARD)->nat(POSTROUTING)
2.¥Ø¼Ð¥»¾÷:nat(PREROUTING)->filter(INPUT)
3.¨Ó·½¬O¥»¾÷(¥»¾÷¦V¥~):nat(OUTPUT)->filter(OUTPUT)->nat(POSTROUTING)
µ²½×:
¤Wzªºªí®æ¦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)
¤Wzªº³]©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:
- ¦]¬°¨ì123.456.789.1ªº«Ê¥]®Ú¥»ÁÙ¨S¦³°e¨ì¥»firewallªºnetfilter¨Ó³B²z,©Ò¥H¨Ã¤£·|¦³¥ô¦óªº§@¥Î(¦]¬°«Ê¥]³Q
¥á±ó)
- ¦A¦Ò¼{gateway¦b192.168.0.1
¾÷¾¹¤W¦pªG³]©wªº¹h¹D¤£¬Ofirewall,«h192.168.0.1ªº¦^À³¨Ã¤£·|¦^¨ìfirewall,¦]¬°firewalln¤Ï§ï¼g¨äDNAT(¥»³]
©w¬OÂù¦Vªº)
- ¦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¬On¨Ï¥Î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§An¨âÓip(¤º³¡/¥~³¡))¥¦·|¦Û°Ê§PÂ_
³]¦n¤Wz¤§«á
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
¦]¤Wz§Ú³]©w¤F-p ¬°TCP,¦Óping¤Îtraceroute³£¬O¨Ï¥Î¨ìICMP(¥¦®ö¶O¤F§Ú¦n´X¤Ñªº®É¶¡,¥H¬°µL³s½u)
¦pªG§AnÅý«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¬On¥[¤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§An¤©³\³Q°ÊFTP, ¦ý¬O¤£¤ä´©
DCC¶Ç°e,§A¥²»Ýn¸ü¤Jip_conntrack_ftp
©M ip_nat_ftp ¼Ò²Õ,§_«hn¥[¤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§An¤H̰õ¦æIRC
¥Ñ¥»¦aºô¸ô³s½u¸g¥ÑNAT°°¸Ë¨ìºô»Úºô¸ô.
¦p¦ó¸ü¤J
1.¤â°Ê insmod ip_nat_ftp
2.¦Û°Ê¦b/etc/modules.conf ¤¤³]©w