Linux防火墙规则

防火墙是一个由软件和硬件设备组合而成在内网和外网之间,专用网与公共网之间的保护屏障.
防火墙总体分为3种:包过滤防火墙,应用级网关和状态检测防火墙.

包过滤防火墙

:会检查所有通过信息的IP地址,并按照系统管理员所给定的包过滤规则进行过滤,包过滤是一种基于内置Linux内核在路由功能之上的防火墙类型,其防火墙工作在网络层

应用级网关

:代理服务器有一个高速缓存,存储用户经常访问的网站内容,当另一个用户访问同样一个网站时,代理服务器会在自己的缓存中把信息传递给用户,提高了访问速度.代理服务器像一堵墙一样挡在用户和外界之间,从外部只能看到代理服务器,而无法获知内部资源,更有效的保护了内网用户.

状态检测防火墙

:这种防火墙采用抽取相关数据的方法对网络通信的各层实施监测,抽取状态信息并动态的保护起来作为以后执行安全策略的参考.

netfilter/iptables

在高于Linux2.4的内核中,netfilter是新的用来实现防火墙的过滤器,iptables是用来指定netfilter规则的用户工具.
netfilter组件也成为内核空间,是内核的一部分,由一些表组成,每个表由若干链组成,而每条链中可能有一条或数条规则
iptables用户空间,它使插入,修改和删除信息过滤表中的规则变的容易.
可以这样理解,netfilter包含表,表包含链,链包含规则.

处理入站信息包的规则被添加到INPUT链中
处理出站信息包的规则被添加到OUTPUT链中
处理正在转发的信息报的规则被添加到FORWARD链中

这3个链是系统默认表(filter)中内置的3个默认主链,每个链都有一个策略,他定义默认目标,也就是要执行的默认操作,当信息包与链中的任何规则都不匹配时,执行此操作.
路由:当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地,我们将这个过程称为路由
根据情况将数据包送往包过滤表(filter)的不同的链
1.如果信息包源自外界并且数据包的目的地址是本机,而且防火墙是打开的,那么内核将他传递到内核空间信息包过滤表的INPUT链
2.如果信息包源自系统本机,并且此信息包要前往另一个系统,那么信息报被传递到OUTPUT链
3.信息包源自广域网前往局域网或相反方向的信息包被传递到FORWARD链
如果信息报与某条规则匹配,那么内核就对该信息包执行由该项规则的目标在指定的操作
如果目标为ACCEPT,则允许该项信息包通过,并且该包发送给相应的本地进程
如果目标为DROP或REJECT,则不允许该信息包通过,并将该包阻塞并杀死

典型的防火墙设置有两个网卡,一个流入,一个流出.iptables读取流入和流出数据包的报头,将他们与规则相比较,将可接收得数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义得方式来处理

表是包含仅处理特定类型信息包的规则和链的信息包过滤表,它有3个可用的表选项,filter,nat和mangle.该选项不是必须的,如果未制定,则filter作为默认表
filter用于一般的信息包过滤,包含INPUT,OUTPUT和FORWARD链
nat用于要转发的信息包,包含PREROUTING,OUTPUT和PSTROUTING链
mangle包含一些规则来标记用于高级路由的信息包,包含PREROUTING和OUTPUT链,如果信息包及其头内进行了任何更改,则使用该表

-A 加入一条或多条规则到链的尾部
iptables -A OUTPUT -d 192.168.0.0/24 -j DROP
上述命令意思为将一条规则追加到OUTPUT链中,从OUTPUT链出去的包凡是访问192.168.0.0/24网络的全部拒绝

-D 通过使用-D指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该项规则
iptables -D OUTPUT -d 192.168.0.0/24 -j DROP
从OUTPUT链中删除规则,指定DROP到达192.168.0.0/24 -j DROP
iptables -D OUTPUT 1
删除OUTPUT链中的第一个规则

-R 表示替换某一个链中的一个规则
iptables -R OUTPUT 1 -d 192.168.0.0/24 -j ACCEPT
该命令将OUTPUT链中的第一个规则替换成匹配的目的地址是192.168.0.0/24的数据包通过

-P 指定链的默认规则,即DROP或ACCEPT允许或拒绝
iptables -p INPUT DROP
该命令将INPUT链默认规则指定为DROP,将所有通过INPUT链的数据包丢弃

-N 创建一个新的用户自定义链,名称成不能和已有的链的名称冲突
iptables -N allow-chain
创建一个名为allow-chain的用户链

-X 删除用户自定义链,保证链中的规则不再使用时才能删除,如果不指定自定义链的名称,则表示删除所有用户自定义链
例如iptables -X allow-chain

-F 清除链中所有规则,如果不指定链名称,则表示清除所有链的规则
iptables -F INPUT
该命令清除INPUT链中的所有规则

-I 在选定的链中给定规则号前面插入一条规则,如规则号时2,那么插入的规则变成2,原有的规则向下推1
在使用插入命令之前查看iptables规则(加上一个参数–line-number显示规则号),使用如下命令
iptables -I OUTPUT 2 -p udp --dport 53 -j ACCEPT
该命令在规则2的前面插入一个规则,允许目的端口为53(DNS端口)的数据包通过

-E 根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响
iptables -E old-chain-name new-chain-name

匹配规则

iptables命令中的match为可选部分,即如果不加上匹配规则是对整个链,或全部ACCEPT或全部DROP

iptables -A INPUT -j DROP
如果添加上规则匹配可以通过匹配协议,源地址,目的地址,源端口号,目的端口号及网卡接口等.

-p 匹配协议,可以使udp,tcp,icmp中的某一个,或是all全部协议,若协议名前面加"!",则表示除该协议的所有协议
iptables -A INPUT -p tcp -j ACCEPT
该命令允许tcp协议通过INPUT链
iptables -A INPUT -p ! UDP -j ACCEPT
该命令允许除udp协议的所有协议通过INPUT链

-s 用于匹配源地址(可以是一个ip地址,也可以是一个网段)的数据包是否通过或丢弃,也可以使用"!"
iptables -A INPUT -s 192.168.0.0/24 -j DROP
该命令拒绝来自192.168.0.0/24网络的数据包通过INPUT链

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值