iptables被称为数据包过滤器,只能检查数据链路层,IP层以及传输层的协议
iptables有五个内置链:
PREROUTING:路由钱(不能做过滤)
INPUT:报文转发到本机
FORWARD:报文转发输出到其它机器
OUTPUT:经由本机进程转发
POSTROUTING:路由决策发生以后
iptables的功能:
filter:过滤,防火墙
nat:用于修改源IP或目标IP,也可以修改端口;
mangle:拆解报文,作出修改后,并重新封装起来;
raw:关闭nat表上启用的连接追踪机制
功能<-->链的对应关系:
功能只能应用到那些链上面
raw:PREROUTING,OUTPUT
mangle:PREOUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,{Centos 7 INPUT}OUTPUT,POSTROUTING
filter:INPUT,FORWARD,OUTPUT
报文流向:
流入本机:PREROUTING-->INPUT
由本机流出:OUTPUT-->POSTROUTING
转发:PREROUTING-->FORWARD-->POSTROUTING
iptables(管理工具,命令行配置)/netfilter(内核模块,具体功能它来实现)
组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就有规则定义的处理动作做出处理;
匹配条件:
基本匹配条件
扩展匹配条件
处理动作:
基本处理动作
扩展处理动作
自定义处理动作
添加过则的考量点:
(1)要实现那种功能:判断添加到哪个表上;
(2)报文流经的路径:判断添加到哪个链上;
链:链上 的规则次序,即为检查的次序;因此,隐含一定的应用法则;
(1)同类规则(访问同一应用),匹配范围小的放上面;
(2)不同类的规则(访问不同应用),匹配到报文频率较大的放上面;
(3)将那些可由一条规则描述的多个规则合并起来;
(4)设置默认策略;
iptables规则格式:
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname[per-target-options]
-t table: 不加-t选项的默认为filter
raw,mangle,nat,filter
COMMAND:
链管理:
-N:new,自定义一条新的规则链;
-X:delete,删除自定义的规则链;
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有;
ACCEPT:接受
DROP:丢弃
REJECt:拒绝
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;
规则管理:
-A:append,追加;
-I:Insert,插入,要指明位置,省略时表示第一条;
-D:delete,删除;
(1)指明规则序号;
(2)指明规则本身;
-R:replace,替换指定的规则链;
-F:flush,清空指定的规则链;
-Z:zero,置零;
iptables的每条规则都有两个计数器;
(1)匹配到的报文的个数;
(2)匹配到的所有报文的大小之和;
查看:
-L:list,列出指定链上的所有规则;
-n --line-numbers,以数字格式显示地址和端口号;
-v:verbose,详细信息
-x:exactly,显示计数器结果的精确值;
chain:
PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
匹配条件:
基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;
[!]-s,--source address[/mask][,...]:检查报文中的源IP地址是否符合此处理的地址或范围
[!]-d,--destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址范围;
[!]-p,--protocol protocol
protocol:tcp,udp,icmp
[!]-i,--in-interface name:数据报文流入的接口;只能应用于数据报文流入的缓解,只能应用于PREROUTING,INPUT和FORWARD链;
[!]-o,--out-Interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能
扩展匹配条件:需要加载扩展模块,方可生效;
隐式扩展:不需要手动加载扩展模块;因为他们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明的要扩展的模块;
tcp:
[!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;
[!]--destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;
[!]--tcp-flage mask comp
例如:“--tcp-flagsSYN,ACK,FIN,RST SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;
[!]--syn:用于第一次握手,相当于“--tcp-flagsSYN,ACK,FIN,RST SYN”;
udp:
[!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;
[!]--destination-port --dport port[:port]:匹配报文的目标端口;可以是端口范围;
icmp:
[!]--icmp-type {type[/code]|typename}
echo-requesr:8 请求
echo-reply:0:响应
显示扩展:必须要手动加载扩展模块,[-m matchname [per-match-options]];
显示扩展将在下一小结用具体示例详解
处理动作:
-j targetname
ACCEPT
DROP
REJECT
防火墙(服务)
Centos 6:
sevice iptables {start|stop|restart|status}
start:读取事先保存的规则,并应用到netfilter上;
stop:清空netfilter上的规则,以及还原默认策略等;
status:显示生效的规则
restart:清空netfilter上的规则,再读取事先保存的规则,并应用到netfilter上;
Centos 7:
systemctl start|stop|restart|status firewalld.service
systemctl disabled firewalld.server
systemctl stop firewalld.service
防火墙基本配置命令:
查看iptables规则链命令
iptables -t filter -L -n --line-numbers -v
清空规则链
iptables -t filter -F
清空自定义规则链
iptables -t filter -X
现在我们设置192.168.32.144(本机)拒绝192.168.32.145主机所有的访问
iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -j DROP
删除这一条规则则
iptables -t filter -D INPUT 1
修改上述规则链只限制192.168.32.145对本机的icmp协议
iptables -t filter -R INPUT 1 -s 192.168.32.145 -d 192.169.32.144 -p icmp -j REJECT
iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -j REJECT
在本机流入接口做限制192.168.32.145的icmp协议访问
iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -o eno16777736 -j DROP
限制192.168.32.145主机使用ssh访问192.168.32.144
iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p tcp --dport 22 -j DROP
限制其它主机ping本主机,但是不限制本主机ping其它主机
iptables -A INPUT -d 192.168.32.144 -p icmp --icmp-type 8 -j DROP
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。