bͧFw[Aoӳ`DnNnwyzӶi椶ФFIثeDnOH Linux Kernel 2.4 iptables DA iptables iHϥΫOӤUFA]iHzLsg shell script ӶiOXCHߺDϥ scripts Ӷi iptables WOIF iptables ~AƹWA²檺٦ TCP Wrappers oӪNALhDnOwYǪAȨӶizoIeDnNObгoӭnnFI |
[root@test
root]# lsmod
# Yo{ ipchains rˡAܨtΤp߸JF ipchains FAШϥΡG [root@test root]# rmmod ipchains # o˴N ipchains FIMJ iptables aI [root@test root]# modprobe ip_tables |
[root@test
root]# iptables [-t tables] [-L] [-n]
ѼƻG -tG᭱ iptables table AҦp nat filter ApGS -t table @@ܡAw]NO -t filter o table I -LGCXثe table Wh -nGi IP P HOSTNAME ഫAùܰTt|֫ܦhI dҡG @ [root@test root]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination @ Chain FORWARD (policy ACCEPT) target prot opt source destination @ Chain OUTPUT (policy ACCEPT) target prot opt source destination @ # JӬݨWA]S[W -t ѼơAҥHw]NO filter oӪA # boӪTAOO INPUT, OUTPUT P FORWARD AӥB] # SWhAҥHWh̭OŪIPɪ`N@UAbC chain ᭱ () # ̭A|o{ policy aINOyw]ʧ@(F)zIHWӬݡA # Mڭ̱ҰʤF iptables AOڭ̨S]wWhAMFSO ACCEPTA # ҥHyʥ]|zNI @ [root@test root]# iptables -t nat -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING
(policy ACCEPT)
Chain OUTPUT
(policy ACCEPT)
|
[root@test
root]# /sbin/iptables [-t tables] [-FXZ]
ѼƻG -F GMҦwqwWhF -X GҦϥΪ̫إߪ chain (ӻO tables ^oF -Z GNҦ chain pƻPyqέpks dҡG [root@test root]# /sbin/iptables -F [root@test root]# /sbin/iptables -X [root@test root]# /sbin/iptables -Z [root@test root]# /sbin/iptables -t nat -F # Ъ`NApGbݳsuɭԡAyoTӫOn scripts ӳszA # M֩wy|zۤvQDצb~Iz |
[root@test
root]# /sbin/iptables [-t tables] [-P] [INPUT,OUTPUT,FORWARD|
PREROUTING,OUTPUT,POSTROUTING] [ACCEPT,DROP]
ѼƻG -P @@GwqF( Policy )C`NAo P jgڡI INPUT@Gʥ]JDVF OUTPUT Gʥ]XDVF FORWARDGʥ]iJDӦV~AǿXhVF PREROUTING GbiJѤei檺u@F OUTPUT@ @Gʥ]XDVF POSTROUTINGGbiJѤi檺u@C dҡG [root@test root]# /sbin/iptables -P INPUT DROP [root@test root]# /sbin/iptables -P OUTPUT ACCEPT [root@test root]# /sbin/iptables -P FORWARD ACCEPT [root@test root]# /sbin/iptables -t nat -P PREROUTING ACCEPT [root@test root]# /sbin/iptables -t nat -P OUTPUT ACCEPT [root@test root]# /sbin/iptables -t nat -P POSTROUTING ACCEPT # F INPUT ~ALL]woIbW]wA # ڭ̪DoXʥ]iHXhAOʥ]LkiJA # ]A^ڭ̰eXʥ]^ʥ](ACK)]LkiJI ^_^ |
[root@test
root]# iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD]
\
> [-io interface] [-p tcp,udp,icmp,all] [-s IP/network] [--sport ports] \ > [-d IP/network] [--dport ports] -j [ACCEPT,DROP] ѼƻG -A @GsW[@WhAӳWhW[b̫᭱AҦp쥻wg|WhA @@ @ϥ -A NiH[WĤWhI -I@ GJ@WhApGS]wWhǡAw]OJܦĤ@WhA @@ @Ҧp쥻|WhAϥ -I hӳWhܦĤ@Aӭ쥻|ܦ 2~5 @INPUT@GWh]w filter table INPUT @OUTPUT GWh]w filter table OUTPUT @FORWARDGWh]w filter table FORWARD @ -i@@@ G]wyʥ]iJzd -o@@@@G]wyʥ]yXzd @interface GdAҦp ppp0, eth0, eth1.... @ -p @GЪ`NAoOpgIʥ]wաI @tcp Gʥ] TCP wʥ]F @upd Gʥ] UDP wʥ]F @icmpGʥ] ICMP wB @all GܬҦʥ]I @ -s Gӷʥ] IP Ϊ̬O Network ( )F --sportGӷʥ] port XA]iHϥ port1:port2 p 21:23 @@@@ PɳqL 21,22,23 N -d GؼХD IP Ϊ̬O Network ( )F --dportGؼХD port XF @ -j @@Gʧ@AiHUʧ@F @ACCEPT Gӫʥ] @DROP@ Gʥ] @LOG@@GNӫʥ]TOU (w]O /var/log/messages ɮ) @ dҡG @ dҤ@GҦӦ lo oӤʥ]AH [root@test root]# iptables -A INPUT -i lo -j ACCEPT # `N@UA] -d, --dport, -s, --sport ѼƳS]wAoܡG # ʥ]ӦۦBΥh̡AunOӦ lo oӤANHI # o[nANOyS]wWwAhܸӳWwzNI # ҦpoӮרҷA -s, -d...ѼƨSWwɡI @ dҤGGӦ 192.168.0.1 o IP ʥ]HG [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.1 -j ACCEPT # sW@WhAunOӦ۩ 192.168.0.1 ʥ]AץLnh̡A # ϥΪOӨw (port) D|HN @ dҤTGӦ 192.168.1.0 o C Class 쪺@qANHI [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 -j ACCEPT # oӬO쪺gkIyL`N@UOAbdҤGڭ̶Ȱw@ IP A # ܩoӽdҷAhOwӺӶ}oIӺ쪺gkiHOG # 192.168.1.0/24 ]iHO 192.168.1.0/255.255.255.0 I @ dҥ|GӦ 192.168.1.25 ʥ]LhI [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.25 -j DROP @ dҤGunOQiJ port 21 ʥ]NL [root@test root]# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP @ dҤGӦ 192.168.0.24 o IP ʥ]AQnڪ 137,138,139 fɡA [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.24 \ > --dport 137:139 -j ACCEPT @ dҤCGunOIJڥD port 25 NNӫʥ]O (LOG) U [root@test root]# iptables -A INPUT -p tcp --dport 25 -j LOG # ٬OЯSO`NyWhDZƦCzDI |
iptables LѼƻG
@ [!] --syn Goӳ]wȯΩ -p tcp WhA] TCP ʥ] syn XЦs @@bڡI TCP ʥ]s syn XСAܳoӳsuOyDʡzsLӪI @@Y --syn e[W ! ܸӫʥ]a syn N(nۤϤNI) @ dҤ@GNӦ 192.168.100.200 Dʳsuʥ]G [root@test root]# iptables -A INPUT -p tcp -i eth0 -s 192.168.1.235 \ > --syn -j DROP @ --icmp-typeGiHި ICMP ʥ]YIٰOoڭ̦b ¦ ̭ @@ͨ쪺 ICMP YaIաIpGzQn ping zA @@NOQγoӶذաI @ dҤGGOD ping ڭ̥DɡAڭ̥DH^ [root@test root]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP # zUFo˪OANܥӧOHzϥ ping ɭԡA # ڭ̪DN|^AҥHDN|ܧڭ̥DyLkszAI @ -m Gܫʥ]AAAUƺءG @-m mac --mac-source aa:bb:cc:dd:ee:ff @@@oӴNOڭ̤W쪺iHydd, MACz]wkoI @@@ aa:bb:cc:dd:ee:ff NOd MAC I @-m state --state <A> @@@ƺتAAAG @@@INVALIDGLĪʥ]AҦpƯ}lʥ]A @@@ESTABLISHEDGwgsu\suAF @@@NEWGQnsإ߳suʥ]AF @@@RELATEDGoӳ̱`ΡIܳoӫʥ]OPڭ̥DoeXhʥ]A @@@@iO^ʥ]Ϊ̬Osu\᪺ǰeʥ]IoӪAܱ`Q]wA @@@@]]wFLAunӥѥoeXhʥ]AYϧڭ̨S]w @@@@ʥ] INPUT WhAӦʥ]٬OiHiJڭ̥DI @@@@iH²Ƭ۷h]wWhաI @ dҤTG bb:cc:dd:aa:ee:ff dLkϥΧڭ̥D귽 [root@test root]# iptables -A INPUT -p all -m mac --mac-source \ > 01:01:01:01:02:01 -j DROP # oؤ觋iHΨӺިddINȧOHϥ IP dǤFI @ dҥ|GwgإߩΪ̬OPڭ̥D^ʥ]qLAOXkA @@@@HηQnշsإߪʥ]Qצb~I [root@test root]# iptables -A INPUT -p tcp -m state \ > --state ESTABLISHED,RELATED -j ACCEPT [root@test root]# iptables -A INPUT -p tcp -m state \ > --state INVALID,NEW -j DROP # ݭn]wIܩʥ]AhiHϥγrj}Ir䤣nŮ @ -j <ʧ@>GF` ACCEPT P DROP ~A٦ǰʧ@H @REDIRECT --to-ports <port number> @@@oӤ]`AWANOi楻W port ഫNOFI @@@LASOdNOAoӰʧ@ȯb nat table PREROUTING H @@@OUTPUT WӤwI(suy{AаѦϤK) @MASQUERADEGʥ] @@@oӴNO NAT Ḓn@ӾաIiʥ]ˡI @ dҤGNnDP 80 suʥ] 8080 o port [root@test root]# iptables -t nat -A PREROUTING -p tcp --dport 80 \ > -j REDIRECT --to-ports 8080 # oN̮ebzϥΤFDW port ӶiY well known wA # Ҧpϥ 8080 o port ӱҰ WWW AOOHH port 80 ӳsuA # ҥHAzNiHϥΤW觋ӱNzDsuǻ 8080 oI @ dҤGiʥ]ˡANӦ 192.168.0.0/24 ʥ]ӷ IP ˦ @@@@ ppp0 Ӥ IP [root@test root]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \ > -o ppp0 -j MASQUERADE |
[root@test
root]# iptables-save > filename
# Nثexs filename ɮסIɮ ASCII 榡A # ziHiJd\@UI [root@test root]# iptables-restore < filename # N filename Өɮ (`NIäO shell scripts 榡) Wh # ŪJثe Linux DҤI |
[root@test
root]# mkdir -p /usr/local/virus/iptables
[root@test root]# cd /usr/local/virus/iptables [root@test iptables]# vi iptables.rule #!/bin/bash # # ======================================================== # {G # wϥ iptables.rule o script ӫإ߱zI # o script ٻݭnzB~]wiAXzDҡI # WhwqyڵҦA}SwzҦI # # ϥλG # ХNo scripts vאּiG # chmod 755 iptables.rule # bNoӵ{mb /usr/local/virus/iptables ؿUG # mkdir -p /usr/local/virus/iptables # mv /㪺|/iptables.rule /usr/local/virus/iptables # աG # /usr/local/virus/iptables/iptables.rule # iptables -L -n (oӰʧ@bˬdWh) # NUo@[J /etc/rc.d/rc.local # /usr/local/virus/iptables/iptables.rule # G # iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # # ======================================================== # vŧiG # o{ GPL vAHҥiϥΡA # MAYϥΥ scripts oͰDɡA # Htd # VBird <vbird@tsai.adsldns.org> # ======================================================== # vG # 2002/08/20 VBird X # 2003/04/26 VBird [J寸n骺ɮסI # 2003/08/25 VBird ק INPUT Policy DROP # ======================================================== # 0.0 Please
key in your parameters
# Uo INIF
鷺dA
# 1.0 ձz֤ߪPҲ
# 2.0 JAҲ
# 3.0 MҦWh
# 4.0 \HAo]t
lo oӤj馉A
# 5.0 }lJHPڵ]wɮסA
# 6.0 UoɮYsbAhIЪ`NA
# 7.0 \ ICMP
ʥ]P\wإߪsuqLI
# 8.0 Allow
servicesSOdNUAȡANzDS}AaI
|
[root@test
iptables]# vi iptables.allow
#!/bin/bash # # This program is used to allow some IP or hosts to access your Server # # HISTORY # 2002/08/20 first release by VBird /sbin/iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT [root@test iptables]#
vi
iptables.deny
/sbin/iptables
-A INPUT -i $EXTIF -s 140.115.236.8 -j DROP
|
[root@test
/root]# vi /etc/rc.d/rc.local
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local #1. adsl connectting.
2002/04/06 VBird
|
WTɮץiHbUWoUG
http://vbird.org.cn/download/index.php#firewall_iptables
ªϥ
tcpd {yk
<AȦW> : <IP/network> : <action> # SO`NA network iHϥ 192.168.0.0/255.255.255.0 A # iϥ 192.168.0.0/24 I @ dҤ@G [root@test root]# vi /etc/hosts.allow in.telnetd: 127.0.0.1 : allow in.telnetd: 192.168.1.0/255.255.255.0 : allow in.telnetd: .ncku.edu.tw : allow in.ftpd: 127.0.0.1 : allow # \ 127.0.0.1 o IP ϥΥ telnet ftp oӪAȡI # ЯSO`NAӡyAȦW١zNOy{ɦWzI @ [root@test root]# vi /etc/hosts.deny in.telnetd: 192.168.2.3 : deny # NӦ 192.168.2.3 ϥΥ telnet vI @ # SO`NAoӻykb xinetd ̭ɡA<action> wgQFI # ҥHAثeziHϥγo˪榡G [root@test root]# vi /etc/hosts.allow in.telnetd: 127.0.0.1 in.telnetd: 192.168.1.0/255.255.255.0 in.telnetd: .ncku.edu.tw # ƹWAo]O TCP Wrappers 䴩榡AҥHijzϥΦ榡YiA # Yݭn[W allow Ϊ̬O deny ʧ@A]b hosts.allow ̭ # WhNO allow Ӧb hosts.deny ̭WhNO deny NI |
[root@test
root]# vi /etc/hosts.allow
# g telnet, ftp sshd } in.telnetd: 192.168.1.2, 192.168.1.10, 192.168.1.20 in.ftpd: 192.168.1.2, 192.168.1.10, 102.168.1.20 sshd: 192.168.1.0/255.255.255.0, xxx.yyy.zzz.qqq # C IP Ϊ̥DAiHQγrΪŮӹj}I @ [root@test root]# vi /etc/hosts.deny # NWTӪAȳաI in.telnetd: ALL in.ftpd: ALL sshd: ALL @ # SO`NAܦhBͳwb /etc/hosts.deny ̭[Jo@G ALL: ALL # өשҦAȻPҦӷILAڭӤHOӫijo˰I # ]ܦhɭԡAz[]nAoo{ѬOLk Client su\A # ܦhgiDڭ̡A̤jDNOX{b ALL : ALL o@I |
[root@test
root]# vi /etc/hosts.deny
in.telnetd : ALL : spawn (/bin/echo Security notice from host `/bin/hostname`; \ /bin/echo; /usr/sbin/safe_finger @%h ) | \ /bin/mail -s "%d -%h security" root@localhost & \ : twist ( /bin/echo -e "\n\nWARNING connectin not allowed. Your attempt has been logged. \n\n\nĵiz|\nJAzsuN|QAåB@H᪺Ѧ\n\n ". ) in.ftpd : ALL
: spawn (/bin/echo Security notice from host `/bin/hostname`; \
sshd : ALL :
spawn (/bin/echo Security notice from host `/bin/hostname`; \
|
Moˤ@ӴNyLظmnFzFIOֳD쩳o˪ĪGpHҥHAzݭnOhɶӶiթOIժBJiHOG@B@B@UӡAݬݰDXb̡AMhhhiB}IIWAWثeܦhƥiHѱzѦҤFIo@g]wgO²Aj٦bжqӤwIƱjaUIڦbѦҸƷCXXӦΪAƱjaůunhhhݬݡI|ܦUI
- ѥDV~DʳsuլݬݡF
- AѨp줺 PC V~DʳsuլݬݡF
- ̫A Internet WDADʳsuz Linux DլݬݡF
ڭ̨ӦҼ{@Ӥ쪺DANOpPϥ|pAƹWADO[]bݪIbo˪pUAڭ̭nNӦ Internet ʥ]Ag firewall ݪDWOHIڭ̥iHѦҤ@Uʥ]y{ApPWϤEA]Ӧ Internet ʥ]nᵹݪDAҥHbyѤeNݭn]wnഫzAFI]b nat table PREROUTING WӶiҿתy Destination NAT, DNAT zʧ@~աIzݭnb iptables WAb nat table WsW@Wh~IykpUG
@@
iptables LѼƻG
@
-j <ʧ@>GF` ACCEPT P DROP ~A٦ǰʧ@H
@DNAT --to IP[:port]
@@@`ΦbݪDʥ]WI
@
dҡGNӦ Internet port 80 suʥ] 192.168.10.10 oӥDW
[root@test root]# iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 \
> -j DNAT --to 192.168.10.10:80
WdҬO²檺@ӨҤlAb²ҤUOiH\zi WWW Ϊ̬O Mail AȪILApGΦb FTP WiNܳ·ФF] FTP FW 21 oөROqDf~A٦ƶǰeDʩʻPQʩʡI]wWܬOxZ㦳쪺ܡAiHѦҩUCXX iptables Io̤AFI