防火墙iptables

iptables由两部分组成

1.工具     iptables 面对用户 用户态

2.防火墙模块  netfilter 内核模块 内核态  

linux的防火墙现在有两种

1.iptables

2.firewalld  

这两个关系非常微妙,以前用的都是iptables,红帽7出来之后,红帽搞得新的防火墙用来替代iptables,在iptabels的基础上包了一次,更靠上层了,让操作更简单点,实际底层还是调用的iptables。看起来firewalld用的简单,实际上要记得东西更多。还不如直接用ipatables。这两个通用,用其中任意一个工具写的都规则用另外一个工具都能看,是互通的。在实现一些功能,用firewalld不如iptables方便。

安装iptables管理工具

 yum search iptables     有一个services,把它装上

# yum install iptables-services -y

启动防火墙

# systemctl start iptables

只要开了防火墙,所有被系统处理的数据包都会经过防火墙处理,除非没开防火墙。

查看防火墙规则

#iptables -nL    

-n不做解析,以数字形式显示协议和地址

-L list列出

#iptables -nl --line-numbers  给每一条规则加一个序列号(显示规则号)

可以用防火墙看服务器的流量

#iptables -nL --line-numbers -v     -v 显示详细信息,查看流量

# iptables -S      -S 以另外一种形式查看规则

四表五链

对应防火墙来讲表的查看顺序是从上到下查看

说明
raw     数据包追踪
mangle 数据包标记
nat    地址转换
filter  

数据包过滤

同一个链里的规则是从上到下按顺序访问,只要匹配到一条规则,就停止其他匹配

说明
PREROUTING路由之前
INPUT数据包进入
FORWARD路过  经过
OUTPUT数据包出去
POSTROUTING路由之后

 opt就是额外的选项,source原地址  destination目标地址

防火墙语法

#iptables -t表名 动作 链名 匹配条件 -j 目标动作

清空规则 -F

#iptables -F

追加规则  -A 追加一条规则  

#iptables -t filter -A INPUT -p tcp --dport 80 -j REJECT

 测一下规则生效吗  直接被拒绝

删除规则 -D

#iptables -t filter -D INPUT -p tcp --dport 80 -j REJECT (不介意用这种)

#iptables -t filter -D INPUT 1   删除INPUT列里的第几条规则,这种比较简单,不用知道条件

清空计数-Z

#iptables -Z

插入规则  -I

#iptables -t filter -I INPUT 1 -p tcp --dport 80 -j REJECT  放到第一条

修改规则(替换规则)  -R

#iptables -t filter -R INPUT 1 -p tcp --dport 80 -j DROP

修改默认规则 

#iptables -P INPUT DROP

  默认规则是ACCEPT,要把修改哪个列里的默认规则,要把它修改成什么规则,这里只能写两个,ACCEPT,DROP没有第三个选项,到了公司里面,如果对安全比较高,会把所有的默认规则全部都改成DROP,所有需要放行包,再单独写规则给它ACCEPT。

自定义链  -N    自定义链大小写自己定义

#iptables -N k    创建自定义链k

自定义链和系统链不一样,每一个系统链都有自己的功能,代表的不同的数据包的位置点。放在自定义链里的东西默认不会生效,就是用来保存规则的。

添加规则到自定义链

#iptables -t filter -R -A k -p tcp --dport 80 -j DROP

 

还是能访问

 这个链里的规则是不生效的,就是用来保存规则的,保存规则有什么用?哪天想用的时候,就直接可以调用链。iptables -A INPUT -j k我的目标直接变成自定义的名字,再去查看,这就是在系统链里调用自定义链,最终的结果就访问不了

 有什么好处?

可以写一堆规则,去完成你想的一个目标,一个功能,但这些规则可能哪一天不想要了,就把它删掉,过了两天又需要规则了,还得重新再写一遍,向这种东西一套规则可以先放在一个自定义链里边,想用直接调用这个链,不想用直接把自己定义的删掉就行了,没必要去删除所有的规则。就是用来保存规则。

使用自定义链  -A

#iptables -A INPUT -j k

改名自定义链 -E 系统链不可以改,自定义链可以改

#iptables -E wing K

删除自定义链  -X

自定义链不能被调用,并且是清空状态

#iptables -X K

 删除失败?设备资源忙,是被用着

iptables -D INPUT 1  把INPUT的第一条规则删掉,再删还忙,是因为没有把它清空,删除k链里的规则,iptables -D K 1

iptables -X K  

这些动作基本就是在 iptables --help 前面


版权声明:本文为weixin_53150440原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。