1iptables
Linux内核防火墙Netfilter提供了iptables指令来作为防火墙封包过滤的指令。与规则的顺序强相关。默认情况下,iptables有三张表格,包括管理本机进出的filter、管理后端主机的NAT、管理特殊标志的mangle。
显示:iptables [-t tables] [-L] [-nv]
清除:iptables [-t tables] [-FXZ],F:清除所有;X:所有自定义;Z:将所有chain的计数与流量清零;
定义默认规则(当规则都不匹配时按默认规则处理):iptables –P [INPUT, OUTPUT, FORWARD] [ACCEPT, DROP]
插入规则:iptables [-AI链名] [-io网络接口] [-p协议] [-s源IP] [--sport源端口] [-d目标IP] [--dport目的端口] –j [ACCEPT|DROP|REJEDCT|LOG]
参数说明:A:在后面新增;I:在前面新增;LOG将包信息写入/var/log/messages,然后接着比对后续的规则。
iptables –A INPUT [-m state] [--state状态]
m:iptables的外挂模块,如state、mac;--state:封包的状态,INVALID|ESTABLISHED|NEW|RELATED
这个命令减少规则的个数,让iptables去分析包的状态。
/etc/init.d/iptables save保存设定的规则
自定义链:-J链名这样,匹配的数据包会进入自定义链中,如果有匹配规则,则结束;如果没有,则接着在父链匹配。
SNAT主要是应付内部LAN连接到Internet的使用方式,至于DNAT则主要用在内部主机想要架设可以让Internet存取的服务器。
2数据包流向策略
若内部LAN有任何一部主机想要传送封包出去时,那么这个封包要如何透过Linux主机而传送出去?它是这样的:
1.先经过NAT table的PREROUTING链;
2.经由路由判断确定这个封包是要进入本机与否,若不进入本机,则下一步,若进入本机就是进入INPUT链;
3.再经过Filter table的FORWARD链;
4.通过NAT table的POSTROUTING链,最后传送出去(如果是来自本机进程的数据包,则会检查OUTPUT以及POSTROUTING)。
这里,POSTROUTING在修改源IP(SNAT),PREROUTING则修改目标IP(DNAT)。
处理动作除了ACCEPT、REJECT、DROP、REDIRECT和MASQUERADE以外,还多出LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则链的过滤,并依照前述流程继续进行下一个规则链的过滤。
3TCP wrappers
TCP wrappers通过应用程序的名称和相应的规则来判断包的拒绝与否,通过/etc/hosts.allow, /etc/hosts.deny来管理一个类似于防火墙的机制,前者优先级较高。并非所有的软件都可以控管,只有:
§由super daemon(xinetd)所管理的服务(即配置文件在/etc/xinetd.d/,查看命令:chkconfig xinetd on; chkconfig --list);
§有支持libwrap.so模块的服务;
示例:
ALL: 127.0.0.1 <==这就是本机全部的服务都接受!
rsync: 192.168.1.0/255.255.255.0 10.0.0.100