设为首页 收藏本站
查看: 1291|回复: 0

[经验分享] centos6.5下iptables基础知识详解与配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-2-13 14:45:00 | 显示全部楼层 |阅读模式
一、ipables防火墙
netfilter/iptables框架可以实现数据包过滤、网络地址转换、以及数据包管理功能
linux中的防火墙系统包括两部分:netfilter和iptables。netfilter位于系统内核空间
,是linux内核的组成部分。具体的说netfilter是linux内核的一系列钩子,这些钩子允
许数据表过滤函数挂载至系统内核中。而iptables是用户工具,因netfilter在内核空间
中,用户无法直接接触内核和修改内核,就需要iptables这样的命令行工具添加、删除具
体的过滤规则。


二、iptables规则表、链结构、表之间的优先级、规则链的优先级
2.1、规则表
iptables管理4个不同的规则表,其功能由独立的内核模块实现
   filter表(过滤规则表):                        包含3个链INPUT OUTPUT FORWARD
   nat表(地址转换规则表):                PREROUTING POSTROUTING OUTPUT
(1)DNAT:改变数据包的目的地址使包能重路由到某台机器(使公网能够访问局域网的服务器)
(2)SNAT: 改变数据包的源地址(使局域网能访问公网)
(3)NASQUERADE:和SNAT一样使局域网能访问公网,无固定IP使用PPP.PPPoE等拨号上入Internet
   mangle表(修改数据标记位规则表):PREROUTING POSTROUTING INPUT OUTPUT FORWARD
   mangle表修改数据包,改变包头中的内容(TTL、TOS、MARK)
   
(1)TOS :设置改变数据包的服务类型,不要使用TOS设置发往Internet的包除非打算依赖TOS来路由,不  能在表中配置任何过滤。SNAT、DNAT
(2)TTL:改变数据包的生存时间,可以让数据包只有一个特殊的TTL,欺骗ISP,有些ISP并不希望多台计算  机共享一个连接访问Internet,ISP通过检查一台计算机所发出的数据包是否含有不同的TTL来判断。
(3)MaRk:给数据包设置特殊的标记,通过标记配置带宽限制和基于请求分类。
raw表(跟踪数据表规则表):             OUTPUT PREROUTING
2.2、规则链
   INPUT链:             当收到访问防火墙本机的数据包(入站)时,应用此链的规则
   OUTPUT链:          当防火墙本机向外发送数据包(出站)时,应用此链中的规则
   FORWARD链:       收到需要通过防火墙发送给其他地址的数据包时、应用此链
   PREROUTING链:   做路由选择之前,应用此链
   POSTROUTING链: 对数据包做路由选择之后,应用此链


2.3、规则表优先级
   raw mangel nat filter
   
QQ截图20170213144322.jpg

2.4   规则链优先级
   
QQ截图20170213144331.jpg

三、防火墙的语法格式
  3.1、用法:iptables [-t 表名] {命令-A|-D|-I|-F|-L|-Z|-P} 链名  [条件匹配] [-j 触发动作]
  3.2、命令参数详解:
-A        在指定链的末尾添加(--append)一条新规则
[iyunv@server136 ~]# iptables -A INPUT -p tcp -s 192.168.8.8 -j DROP(追加一条规则,禁止
192.168.8.8访问本机)

-D        删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则
[iyunv@server136 ~]# iptables -D INPUT -p tcp -s 192.168.8.8 -j DROP(删除这条规则)

-I         在指定链中插入一条新规则,若未指定插入位置,则默认在链的开头插入
[iyunv@server136 ~]# iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT(在INPUT
第二行插入一条规则,允许443端口进入)

-R        修改、替换指定链中的一条规则,按按规则序号或内容确定要替换的规则
[iyunv@server136 ~]# iptables -R INPUT 2 -s 192.168.8.9 -j REJECT (替换第二条规则,拒绝此ip访问本机)

-L        列出指定链中所有的规则进行查看,若未指定链名,则列出表中所有链的内容
[iyunv@server136 ~]# iptables -L -n(查看filter表中的规则)

-F        清空指定链中的所有规则,若未指定链名,则清空表中所有链的内容
[iyunv@server136 ~]# iptables -F(清除filter表中的所有规则)

-N       新建一条用户自定义的规则链
[iyunv@server136 ~]# iptables -t nat -N tarace (nat表新建一条规则)


-X        删除表中用户自定义的规则链
[iyunv@server136 ~]# iptables -t nat -X tarace (删除新建的tarace规则链)

-P        设置指定链的默认策略(大p)
[iyunv@server136 ~]# iptables -P INPUT DROP (定义INPUT规则链的策略为丢弃,慎用,远程会全部断开)
用之前需添加22端口的策略
[iyunv@server136 ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT
[iyunv@server136 ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[iyunv@server136 ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: nat filter      [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

-n        使用数字形式显示输出结果,如显示主机的IP地址而不是主机名
[iyunv@server136 ~]# iptables -n -L (需配合-L参数使用)

-v        查看规则列表时显示详细的信息
[iyunv@server136 ~]# iptables -n -L -v
Chain INPUT (policy DROP 13 packets, 2753 bytes)
pkts bytes target     prot opt in     out     source               destination         
   81  7629 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 75 packets, 9341 bytes)
pkts bytes target     prot opt in     out     source               destination  

-V        查看iptables命令工具的版本信息
[iyunv@server136 ~]# iptables -V
iptables v1.4.7


-h        查看命令帮助信息
[iyunv@server136 ~]# iptables -h

--line-numbers    查看规则列表时,同时显示规则在链中的顺序号、地方
[iyunv@server136 ~]# iptables -n -L --line-numbers

3.3、规则链的匹配条件类型
3.3.1通用匹配:可以直接使用,不依赖其他条件或扩展,包括网络协议、IP地址、网络接口等
1、协议匹配:-p 协议名
[iyunv@server136 ~]# iptables -A FORWARD ! -p icmp -j ACCEPT (除了icmp协议的
数据包,其他协议的包都能转发)

2、地址匹配:-s 源地址、-d 目标地址
3、接口匹配:-i 入站网卡、-o 出站网卡
[iyunv@server136 ~]# iptables -I FORWARD -s 192.168.8.10 -p tcp -o eht1 --sport 80 -j ACCEPT
(源地址192.168.8.10的80端口可以回应Eth1网卡的请求)

3.3.2、隐含匹配:要求以特定的协议匹配为前提,包括端口、tcp标记、icmp类型等
1、端口匹配:--sport 源端口、--dport 目标端口
[iyunv@server136 ~]# iptables -A FORWARD -s 192.168.8.0/24 -p udp --dport 53 -j ACCEPT
(192.168.8.0网络的之计可以访问其他网络的53号端口)


[iyunv@server136 ~]# iptables -A FORWARD -d 192.168.9.0/24 -p udp --sport 53 -j ACCEPT
(来自53号端口的数据包可以访问192.168.9.0网段的主机)

2、TCP标记匹配 --tcp-flags [检查范围] [被设置的标记]
[iyunv@server136 ~]# iptables -IINPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP
(检测到入站的syn数据包就丢弃)

3、ICMP类型:--icmp-type    icmp类型(8请求、0返回、3请求但主机不可达)
[iyunv@server136 ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
(别人请求ping我的主机,丢弃)

[iyunv@server136 ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT(我ping别人时,允许返回)

3.3.3、显示条件匹配
1、多端口匹配:-m multiport --sports 源端口列表
                          -m multiport --dport  目标端口列表
[iyunv@server136 ~]# iptables -A INPUT -p tcp -m multiport --dport 80,110,443 -j ACCEPT

2、ip范围匹配:-m iprange --src-range 源IP范围
                          -m iprange --dst-range目标IP范围
[iyunv@server136 ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.7.10-192.168.7.123 -j ACCEPT(允许以上ip地址范围数据包通过)
[iyunv@server136 ~]# iptables -A FORWARD -p tcp -m iprange --dst-range 192.168.8.10-192.168.8.123 -j ACCEPT
3、MAC地址匹配:-m mac --mac-source 源mac地址
[iyunv@server136 ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:b1:f6:c4 -j ACCEPT

4、状态匹配:-m state --state 连接状态
                     NEW: 与任何连接无关
                      ESTABLISHED: 响应请求或已经建立连接的
                      RELATED:与已有连接有相关性的
[iyunv@server136 ~]# iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT

四、触发动作
ACCEPT             允许数据库通过
DROP                丢弃数据包
REJECT              拒绝数据包通过
LOG                  将数据包信息记录syslog日志
DNAT               目标地址转换
SNAT                源地址转换
MASQUERADE 地址欺骗
REDIRECT         重定向
五、写规则注意事项:
服务端:先进后出
客户端:先出后进
先全部堵上,在发通行证     一般木马黑客可以堵截到,没发通行证给他
做放行规则时是一定要有进有出,不然放行不成功


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-341671-1-1.html 上篇帖子: ERROR 1129 (00000) Host ‘XXXXXX’ is blocked because of 下篇帖子: rsync+inotify实现实时同步案例 基础知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表