Iptables
功能:
filter:过滤,防火墙
nat:网络地址转换
mangle:拆解报文,做出修改,封装报文
raw:关闭nat表上启用的连接追踪机制
NAT发生在路由之前
链(内置)
PREROUTING数据包进入主机,在路由(选择)决策发生之前
INPUT
FORWARD
OUTPUT
POSTROUTING数据包要离开主机,在路由(选择)决策发生之后
报文的流向:
流入:进入本机内部PROROUTING-->INPUT
流出:从本机出去OUTPUT-->POSTROUTING
转发:进入本机又从本机出的:PREROUTING-->FORWARD-->POSTROUTING
各功能的分别实现:
Filter:INPUT,FORWARD,OUTPUT
NAT:PREROUTING(DNAT),OUTPUT,POSTROUTING(SNAT)
Mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
Raw:PREROUTING,OUTPUT
路由发生的时刻:
报文进入本机后:
判断目标主机:
报文发出之前:
判断经由那个接口送往下一跳
四表五链:
添加规则时的考量点:
1.实现那种功能,判断添加在那张表上
2.报文流经的路径,判断添加在那个链上
链上规则的次序,即为检查的次序,因此隐含一定的法则
1.同类规则(控制同一种应用访问),匹配范围小的放上面
2.不同类规则(访问不同应用),匹配到报文频率较大的放前面
3.将那些可由一条规则描述的多个规则合并为一个
4.设备默认策略(白名单:默认拒绝,只有允许的才让通过)
(黑名单:默认允许,只拒绝明确禁止的用户)
功能的优先级次序:RAW->MANGLE->NAT->FILTER
规则:
组成部分:报文的匹配条件,匹配到之后的处理动作
匹配条件:根据协议报文特征指定
基本匹配条件:源IP,目标IP,源端口,目标端口
扩展匹配条件:连接跟踪,状态跟踪,根据MAC跟踪,检查应用层属性
处理动作:
内建处理机制:drop,reject
自定义处理机制:转发到自定义的链上
自定义链: 数据报文不会通过自定义链
注意:报文不会经过自定义链,只能在内置链上通过规则引用后生效
iptables:规则管理工具:
添加,修改,删除,显示
规则和链有计数器:
pkgs:由规则或链所匹配到的报文的个数
bytes:由规则或链匹配到的所有报文大小之和
iptable命令:
iptables [-ttable] SUBCOMMAND CHAIN CRETERIA -j TARGET
iptables [-t table] -[AD] chainrule-specification [options]
iptables [-ttable] -I chain [rulenum] rule-specification
[options]
iptables [-t table] -R chain rulenum rule-specification
[options]
iptables [-ttable] -D chain rulenum [options]
iptables [-ttable] -[LFZ] [chain] [options]
iptables [-ttable] -N chain
iptables [-ttable] -X [chain]
iptables [-ttable] -P chain target [options]
iptables [-t table] -E old-chain-name new-chain-name
Frrewall:防火墙,隔离工具,工作于主机或网络的边缘,对于进出本主机或网络的报文根据事先定义的好的检查作匹配检测,对那些能够被规则所匹配到的报文做出相应处理的组件:
主机防火墙
网络防火墙
IPS:入侵防御系统=IDS入侵检测系统 +防火墙
IDS:
HIDS:主机入侵检测系统
NIDS:网络入侵检测系统
Honeypot:蜜罐
Iptables/netfilter
Framework:netfilter #内核空间,提供钩子函数
Hooksfunction
Ruleutils: iptables #工作在用户空间的程序
内核模块:
[root@node2 netfilter]# pwd
/lib/modules/2.6.32-696.el6.x86_64/kernel/net/netfilter
[root@node2 netfilter]# ls
ipset nfnetlink_log.ko xt_hl.ko xt_RATEEST.ko
ipvs nfnetlink_queue.ko xt_HL.ko xt_realm.ko
nf_conntrack_amanda.ko nf_tproxy_core.ko xt_iprange.ko xt_recent.ko
nf_conntrack_broadcast.ko xt_AUDIT.ko xt_LED.ko xt_sctp.ko
nf_conntrack_ftp.ko xt_CHECKSUM.ko xt_length.ko xt_SECMARK.ko
nf_conntrack_h323.ko xt_CLASSIFY.ko xt_limit.ko xt_set.ko
nf_conntrack_irc.ko xt_cluster.ko xt_mac.ko xt_socket.ko
nf_conntrack.ko xt_comment.ko xt_mark.ko xt_state.ko
nf_conntrack_netbios_ns.ko xt_connbytes.ko xt_MARK.ko xt_statistic.ko
nf_conntrack_netlink.ko xt_connlimit.ko xt_multiport.ko xt_string.ko
nf_conntrack_pptp.ko xt_connmark.ko xt_NFLOG.ko xt_tcpmss.ko
nf_conntrack_proto_dccp.ko xt_CONNMARK.ko xt_NFQUEUE.ko xt_TCPMSS.ko
nf_conntrack_proto_gre.ko xt_CONNSECMARK.ko xt_NOTRACK.ko xt_TCPOPTSTRIP.ko
nf_conntrack_proto_sctp.ko xt_conntrack.ko xt_osf.ko xt_time.ko
nf_conntrack_proto_udplite.ko xt_dccp.ko xt_owner.ko xt_TPROXY.ko
nf_conntrack_sane.ko xt_dscp.ko xt_physdev.ko xt_TRACE.ko
nf_conntrack_sip.ko xt_DSCP.ko xt_pkttype.ko xt_u32.ko
nf_conntrack_snmp.ko xt_esp.ko xt_policy.ko
nf_conntrack_tftp.ko xt_hashlimit.ko xt_quota.ko
nfnetlink.ko xt_helper.ko xt_rateest.ko
查看模块信息:
[root@node2 netfilter]# modinfo nf_conntrack_ftp.ko
filename: nf_conntrack_ftp.ko
alias: nfct-helper-ftp
alias: ip_conntrack_ftp
description: ftp connection tracking helper
author: Rusty Russell <rusty@rustcorp.com.au>
license: GPL
srcversion: C71BEA8280D7366FB6AFF35
depends: nf_conntrack
vermagic: 2.6.32-696.el6.x86_64 SMP mod_unload modversions
parm: ports:array of ushort
parm: loose:bool
如何保存及重载规则:
保存规则至指定文件:
#iptables-save> /PATH/TO/SOFTFILE
从指定文件重载规则:
#iptables-restore</PAHT/FROM/SOFTFILE
CentOS 6:
Service iptables save
Iptables-save >/etc/sysconfig/iptables
Service iptables restart
Iptables-restore< /etc/sysconfig/iptables
CentOS7:
引入了新的iptables 前端管理服务工具: firewalld
Firewalld-cmd
Firewalld-config
禁用firewalld
Systemctl disable firewalld.service
Systemctl stop firewalld.service
启动iptables服务器自动装载模块:CentOS 6.x
[root@node2~]# cat /etc/sysconfig/iptables-config
# Loadadditional iptables modules (nat helpers)
# Default: -none-
# Spaceseparated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loadedafter the firewall rules are applied. Options for the helpers are
# stored in/etc/modprobe.conf.
IPTABLES_MODULES="nf_conntrack_ftp "
[root@node2~]# service iptables start
iptables:Applying firewall rules: [ OK ]
iptables:Loading additional modules: nf_conntrack_ftp [ OK ]
关于Firewalld:
https://www.ibm.com/developerworks/cn/linux/1507_caojh/index.html