Skip to main content
路由器设置 > 新闻资讯 >

Firewall之iptables

2012-07-09 21:44

Firewall 防火墙,工作在网络或主机的边缘,对进出本网络或主机的数据包根据事先设置好的规则进行检查并且能够在数据包匹配到之后由预置的动作进行处理的组件的组合,有规则(符合条件,就有规则指定的动作进行处理);

  主机防火墙:管理本主机;

  网络防火墙:管理整个网络;

  防火墙的分类:

  1、包过滤型防火墙:工作在TCP/IP层,根据tcp首部或ip首部数据进行判断,安全性较

  低,效率较高;

  1、简单包过滤;

  2、带状态检测的包过滤;

  1)NEW状态;-建立连接;

  2)ESTABLISHED状态;-建立连接并传输数据;

  3)INVALID状态(无法识别的状态);

  4)RELATED(相关联的状态);

  2、应用层网关防火墙:工作在应用层,根据数据包传输的实际数据进行判断,安全性较高,效率较低;

  防火墙工作在内核空间,需要在内核空间开口子去定义规则(只有管理员可以定义规则,命令是否正确等),在内核上开的口子称为Netfilter(网络过滤器);

  地址转换功能:NAT 网络地址转换;

  1)SNAT 源网络地址转换;在POSTROUTING上做转换;

  连接跟踪;

  2)DNAT目标地址转换;在PREROUTING上做转换;

  mangle 数据包每经过一次路由减1然后将ip首部打开修改TTL值加1,让访问用户不知

  道有防火墙;

  raw----没多做解释;

  filter过滤在INPUT,OUTPUT和FORWARD接口上;

  nat地址转换在PREROUTING,POSTROUTING,OUTPUT接口上;

  mangle撕裂在PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING接口上;

  raw在PREOUTING和OUTPUT接口上;

  优先级排序:raw--->mangle--->nat--->filter

  iptables命令用法:

  iptables [-t TABLE] COMMAND CHAIN [creteria] -j ACTION

  -t {raw|mangle|nat|filter},默认filter

  COMMAND的分类:

  规则管理类:

  -A 追加到最后一条(append);

  -I # 插入第几条(insert);

  -D # 表示删除第几条(delete);

  -R # 表示替换某条规则;

  链接管理类:

  -F 清空(flush)链中规则,加链表示清空某条链;

  -N 新建链(new),可以用-j跳转到这个链上;

  -X 删除自己定义的空链;

  -E 重命名(rename);

  默认策略:

  -P (policy);

  清空计数器:

  -Z (zero);

  每条规则(包括默认策略)都有两个计算器;

  1)被此规则匹配到的所有数据包的个数;

  2)被此规则匹配到的所有数据包的大小之和;

  查看类:

  -L (list)列表的格式显示;

  -L的子选项:-n (以纯数字的格式显示numeric);

  -v 详细的信息(verbose),-vv或-vvv更详细;

  -x 显示精确信息不做单位换算(exactly);

  --line-numbers 规则显示行号;

  匹配条件creteria:

  基本匹配:

  -s SOURCE:(IP,NETWORK)或加!表示取反(例:! -s NETWORK);(可以省略表示多有主机)

  -d DESTIONIP(目标地址);

  -p {tcp|udp|icmp};

  -i INTERFACE 表示从哪个网卡流进来;(仅用于INPUT,FORWARD,POSTROUTING)

  -o INTERFACE 表示从哪个网卡流出去;(仅用于OUTPUT,FORWARD,PRETROUTING)

  扩展匹配:指的是调用iptables的模块,以便扩展iptables的匹配功能;

  隐含扩展

  -p tcp

  --sport PORT

  --dport PORT

  --tcp-flags 检查tcp的标志位;

  只检查ACK,SYN,RST,FIN

  SYN的简写--syn

  -p udp

  --sport PORT

  --dport PORT

  -p icmp

  --icmp-type

  ping命令的TYPE:

  echo-request请求用8代替;

  echo-reply 回应用0代替;

  3----自己查看TCP/IP详解书;

  显示扩展(必须用-m指定检测状态);

  -m state --state 检测状态

  -m multiport这个模块匹配一组源或目标端口,可以指定多达15个端口; 

  --source-ports 22,53,80

  --destination-ports 22,53,80

  --ports 22,53,80

  -m iprange(指定ip范围)

  --src-range ip-ip

  --dst-range ip-ip

  -m connlimit(并发连接限定)

  --connlimit-above # (超过#个)

  -m limit

  --limit rate 限定速率;

  --limit-burst number 限定峰值;

  -m string 字符串匹配;

  --algo bm|kmp(算法);

  --string “STRING”

  -m time 时间限制;

  --timestart value(10:00);

  --timestop value

  --days lsitofday

  --datestart date

  --datestop date

  -j ACTION(ACTION的选项);

  ACCEPT 允许;

  DROP 拒绝(悄悄的丢弃);

  REJECT 拒绝(直接拒绝);

  SNAT 源地址转换;

  DNAT 目标地址转换;

  REDIRECT 重定向端口;

  RETURN 返回INPUT链;

  如何开放FTP服务:

  主动模式下:

  tcp 20(数据),21(命令);

  被动模式下:

  tcp 21,>1023的端口;

  上述需要将RELATED(相关联的状态)打开;