iptables faq文档格式.docx
- 文档编号:16855560
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:14
- 大小:45.08KB
iptables faq文档格式.docx
《iptables faq文档格式.docx》由会员分享,可在线阅读,更多相关《iptables faq文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
11.有无建议本机firewall服务只有开放对外项目,其余禁止的配置方式?
(提供NAT服务配置问题)
1.一般建议单纯化的NAT服务配置语法为何?
2.透过NAT上网的内部ip主机,ftp连结存取错误?
3.如何配置连线到NAT主机某个对外Port时,可以转送到内部某主机?
4.使用-jMASQUERADE与-jSNAT于NAT使用差异?
一般本机的firewall配置问题
iptables本身提供了iptables-save这个程序档案,执行后可以检视目前的配置。
iptables-save
若是使用iptables该主要的程序的话,可以搭配-L选项列出规则清单。
不过由于iptables过滤本身是可以针对不同table来处理,传入-t可以查阅指定的table,不指定时预设表示使用filtertable项目。
一般使用方式:
iptables-L
iptables-tnat-L
不过iptables对于规则内有ip地址项目时会进行反查解析出主机名称,这个也常导致反查时需要时间导致列出规则时卡住无法运作下去,所以实际上一般会搭配传入-n选项,表示不显示反查后主机名称结果。
iptables-L-n
iptables-tnat-L-n
当然,若是要查阅更详细的资讯,可以再搭配-v选项。
iptables-L-n-v
iptables-tnat-L-n-v
=====
各家发行版本都会提供各自的firewallscript于开机时自动带入设定规则,所以并没有一个统一的做法。
在RHEL与FedoraLinux内的开机script本身为/etc/init.d/iptables,所以关闭方式手动可以执行:
/etc/init.d/iptablesstop
设定每次开启不启动该服务项目,可以使用chkconfig来关闭。
chkconfigiptablesoff
若是SLES的话,修改/etc/sysconfig/network/config配置,里面可以找到:
#WiththisvariableyoucandetermineiftheSuSEfirewallwhenenabled
#shouldgetstartedwhennetworkinterfacesarestarte
FIREWALL="
yes|no"
这可以设定每次启动网路时是否启用firewall配置。
系统本身提供配置firewall方式,文字模式是可以执行setup程序,
于Firewall项目进入后就可以选择新增相关规则。
最后所开放允许的组态都是储存于/etc/sysconfig/iptables档案内。
使用/etc/init.d/iptablesstart或者是serviceiptablesstart时,就会依据/etc/sysconfig/iptables设定的配置启用firewall设定。
于/etc/sysconfig/iptables的格式结果,可以使用iptables-restore程序由标准输入读入后进行启用。
简单说所谓开启该服务,其实也就是:
iptables-restore<
/etc/sysconfig/iptables
执行/etc/init.d/iptablessave可以把目前系统正在运作执行配置的规则储存至/etc/sysconfig/iptables档案内,这底层其实也是呼叫
iptables-save程序来达成该结果。
简单说也就是:
iptables-save>
关于/etc/sysconfig/iptables本身只有包含给firewallrule的规则叙述,本身并没有包含任何iptables相关kernelmodule载入配置,
若是需要载入额外的module的话可以修改/etc/sysconfig/iptables-config。
/etc/sysconfig/iptables-config本身或于/etc/ini.d/iptables该脚本档案时读入使用。
依据该内容来看,提供相关变数定义可以指定载入必要的module项目:
#Loadadditionaliptablesmodules(nathelpers)
#
Default:
-none-
#Spaceseparatedlistofnathelpers(e.g.'
ip_nat_ftpip_nat_irc'
),
#whichareloadedafterthefirewallrulesareapplied.Optionsfor
#thehelpersarestoredin/etc/modprobe.conf.
IPTABLES_MODULES="
"
若是纯手动的方始清空所有规则设定,一般可以采用下列方式:
iptables-F
#若是没有加上-t指定table,预设是使用-tfilter
iptables-X
iptables-F-tnat
iptables-X-tnat
iptables-F-tmangle
iptables-X-tmangle
其中-F表示清除指定table内所有chain项目内的规则清单设定。
-X则是表示删除使用者自订的chain项目。
除了清除外,建议需要把过滤预设的政策设定为ACCEPT,也就是允许任何封包的传输不会被阻挡。
iptables-PINPUTACCEPT#没加上-t指定table,预设使用-tfilter
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
iptables-tnat-POUTPUTACCEPT
iptables-tnat-PPREROUTINGACCEPT
iptables-tnat-PPOSTROUTINGACCEPT
iptables-tmangle-PPREROUTINGACCEPT
iptables-tmangle-PPOSTROUTINGACCEPT
iptables-tmangle-PINPUTACCEPT
iptables-tmangle-POUTPUTACCEPT
iptables-tmangle-PFORWARDACCEPT
同时,后续若是手动打造iptablesfirewallrule的时候,该技巧也应该用上,也就是先清除之前规则外,包含把预设的政策都改成ACCEPT,这样配置firewall规则才不会混乱不堪。
详细部份可以参阅这张表格:
这个要区分成为几点来说明:
1)一般说法就是,firstmatch,也就是符合规则叙述后就不再往下走
比方配置:
iptables-PINPUTACCEPT
iptables-AINPUT-s192.168.1.1-jACCEPT
iptables-AINPUT-s192.168.1.0/24-jDROP
这就是192.168.1.0/24中,只有允许192.168.1.1可以存取,其余192.168.1.0/24该网段ip都禁止存取。
常见设定观念错误如下:
iptables-AINPUT-jACCEPT
为何1921.68.1.0/24还是可以存取不被禁止?
这就是比对的符合就不会继续往下走。
不过这边到是要先注明的是,-jLOG与-jMARK这类规则倒是会继续往下比对,这个与-jACCEPT与-jDROP就不相同情况。
2)当比对规则都跑完了都没有任何符合的叙述时,最后结果要看预设政策设定
iptables-AINPUT-s192.168.1.0/24-jDROP
上面规则来说,表示预设封包都允许连入存取的,只有禁止192.168.1.0/24,也就是说比对流程规则跑完后都没有任何符合叙述,最后就是允许存取。
iptables-PINPUTDROP
iptables-AINPUT-s192.168.1.0/24-jACCEPT
上面规则来说,表示预设封包都禁止连入存取的,只有允许192.168.1.0/24,也就是说比对流程规则跑完后都没有任何符合叙述,最后就是允许禁止。
把预设的政策调整为DROP基本上需要注意非常多流程,下面部份会谈到这部份要注意事项。
一般来说建议除非很清楚把预设存取设定为DROP带来的结果,要不然请勿贸然配置使用。
因为这样设定的话,虽然是说只有开放192.168.1.0/24可以连入存取,但是却会导致这台服务主机只可以联机到192.168.1.0/24网段的主机,其它的目的都被禁止了。
为了更严厉的防火墙存取限制,一般初学者会这样配配置:
iptables-PINPUTDROP
iptables-AINPUT-ptcp--dport22-jACCEPT
也就是主机只有打算开放ssh服务对外提供存取。
这样乍看之下好像非常正确,但是设定好后外面是可以连到该port22服务,但是却导致了一个后续的问题,也就是"
该主机若是要主动对外要建立联机却被禁止"
。
比方这台服务主机无法使用ssh登入到远程主机,也无法用浏览器看其它主机port80的http服务的。
引起该问题的原因呢?
TCP/IP本身是双向的,也就是有出必有进,有进必有出。
这个规则没考虑到这点问题。
当主机对外要建立连线时,对方势必也要回应封包到原主机,所以回应的封包是要被允许的。
不过该配置来看却没考虑到这点问题,所以导致回应的封包被丢弃,所以连线根本建立失败。
所以设定-PINPUTDROP时,一般正确方式应该考虑加上允许主机本身对外联机时对方回应封包项目,也就是:
iptables-AINPUT-mstate--stateESTABLISHED-jACCEPT
-mstate--stateESTABLISHED扮演很重要角色,那就是允许连线出去后对方主机回应进来的封包。
不过上面规则通常应该考虑的是,主机本身对外只有提供可以连结存取port22该ssh服务,但是若是自己主机有开port80与port25等
服务项目的话,这样配置却也导致自己存取自己的主机服务也被限制住了。
基于该问题,一般会建议加上由loopbackinterface该接口不受到该firewall组态限制而被阻挡,一般会建议改成:
iptables-AINPUT-ilo-jACCEPT
依据前面介绍方式,只有开放ftpport21服务,其它都禁止的话,一般会配置使用:
iptables-AINPUT-ptcp--dport21-jACCEPT
这样的配置,确认ftp用户端是可以连到ftp主机并且看到欢迎登入画面,不过后续要浏览档案目录清单与档案抓取时却会发生错误...
ftp协定本身于datachannnel还可以区分使用activemode与passivemode这两种传输模式,而就以passivemode来说,最后是协议让ftpclient连结到ftpserver本身指定于大于1024port的连接埠传输资料。
这样配置在ftp传输使用active可能正常,但是使用passivemode却发生错误,其中原因就是因为该主机firewall规则配置不允许让ftpclient连结到ftpserver指定的连结埠才引发这个问题。
要解决该问题方式,于iptables内个名称为ip_conntrack_ftp的helper,可以针对连入与连外目的port为21的ftp协定命令沟通进行拦截,提供给iptables设定firwewall规则的配置使用。
开放做法为:
modprobeip_conntrack_ftp
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
其中-mstate部分另外多了RELATED的项目,该项目也就是状态为主动建立的封包,不过是因为与现有ftp这类连线架构会引发另外才产生的主动建立的项目。
不过若是主机ftp服务不在port21的话,请使用下列方式进行调整:
modprobeip_conntrack_ftpports=21,30000
iptables-AINPUT-ptcp--dport30000-jACCEPT
也就是主机本身提供ftp服务分别在port21与30000上,让ip_conntrack_ftp
这个ftphelper能够正常提供ftp用户端使用passivemode存取而不会产生问题。
来看看这样配置片段叙述:
iptables-POUTPUTDROP
这样配置来看,感觉上就是主机对外完全开放没有任何限制连入,但是该主机对外本身限制预设不可以连外,但是结果却是不管外面也根本连不进来。
该问题如同上面提到使用-PINPUTDROP的配置问题一样,这样也是根本没有考虑到TCP/IP本身是双向沟通的问题。
考虑连入封包后续主机要回应的项目,也是需要搭配传入-mstate来提供允许回应封包的项目,所以整个来看片段叙述为:
iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
iptables-AOUTPUT-olo-jACCEPT
这样设定好结果,就是该主机本身可以对自己主机服务连结存取,但是对外连结存取都会被禁止。
不过拉回来看,有必要配置-POUTPUTDROP吗?
老实说个人倒是感觉通常都是多此一举,因为实际应用部份通常不会限制自己主机对外连线的功能。
不过若是坚持要设定-POUTPUTDROP的话,要考虑后续主动连外部份的开放描述可能可多了....比方这样配置项目:
iptables-AOUTPUT-ptcp--dport25-jACCEPT
iptables-AOUTPUT-pudp--dport53-jACCEPT
iptables-AOUTPUT-ptcp--dport80-jACCEPT
这样是不是有点找自己麻烦?
所以结论就是除非定真的是不想让自己主机有主动连外的需求,那才考虑把OUTPUTchain的预设政策设定为DROP,否则不要使用这种配置。
依据前面谈到流程,若是预设INPUT的存取是禁止的话,提供如下配置参考:
若是预设INPUT的存取是允许的话,提供如下配置参考:
iptables-PINPUTACCEPT
iptables-AINPUT-mstate--stateNEW,INVALID-jDROP
若是需要允许主机可以接受ping程序测试这台机器是否可以存取的话,可以搭配使用:
iptables-AINPUT-picmp--icmp-typeecho-request-jACCEPT
当然请注意,搭配先使用-F与-X先把预先存在的rule清空后,避免
rule混杂在一起而互相影响。
提供NAT服务配置问题
这边是假设对外的界面为eth0,对内界面为eth1,该对内网段的ip范围是192.168.1.0/24。
若是预设的FORWARDchain本身为ACCEPT的话,配置语法使用为:
iptables-APOSTROUTING-tnat-s192.168.1.0/24-oeth0-jMASQUERADE
echo1>
/proc/sys/net/ipv4/ip_forward
若是预设的FORWARDchain本身为DROP的话,配置语法使用为:
iptables-APOSTROUTING-tnat-s192.168.1.0/24-oeth0-jMASQUERADE
iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT
iptables-AFORWARD-s192.168.1.0/24-jACCEPT
/proc/sys/net/ip
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iptables faq