项目背景:

为了我们主机的安全,我们需要对于软件防火墙iptables有较深的理解!



实验环境:

vmware workstation 11

服务器A:ip:192.168.0.19

服务器B:ip:192.168.0.25  

SecureCRT (ssh远程连接软件)

iptables-ipv6-1.4.7-11.el6.x86_64

iptables-1.4.7-11.el6.x86_64



软件简单图解介绍:

相信大家对于iptables冗长的概念会跟我一样很烦,所以我尽量简单来介绍!


iptables介绍和简单的应用!!!_软件iptables介绍和简单的应用!!!_软件_02iptables介绍和简单的应用!!!_软件_03


因为我们的linux主机默认已经安装了iptables软件,所以我们可以直接使用它。

软件的使用:

一、查看本机分防火墙规则

1:iptables -t 表格名  -L  (表格名可选项:filter、nat、mangle)

2:iptables-save (查看完整的防火墙规则)

iptables介绍和简单的应用!!!_iptables_04

目的:通过查看我们的防火墙股则可以对我们的主机有详细的了解

二、清除防火墙规则

iptables -F  #清除所有的已经制定的规则

iptables -X  #清除用户自定义的链

ipatbales -Z  #将所有的链的计数和流量归零

目的:一般我们在写我们的规则的时候,为了让自己对于规则更了解,通常会把已有的防火墙规则清空。

三、定义默认策略

什么是默认策略呢,就是你把防火墙规则都清除以后,它依然存在的一些规则。

1、首先看一下linux主机的默认策略

iptables介绍和简单的应用!!!_iptables_05可以看到所有的链都是允许,这样子的话,假如我们主机清空以后短时间没有制定一些规则的话,我们的主机就处于危险之中。

2、定义默认策略

iptables -t 表名  -P 链名 [ACCEPT,DROP]  #不同的表格使用它拥有的链名

应用:定义默认策略来把自己挡在家门外

因为我用的是ssh远程连接软件连到我的linux主机的,所以我可以定义filter表格的INPUT链的数据包都丢弃,那么的话我的ssh连接就被限制了

[root@nagios-plugin ~]# iptables -t filter -P INPUT DROP

添加这条规则以后我们,为了正常使用ssh远程连接,这个时候需要登录到主机里面把这条默认策略修改了

首先查看我们现在的默认策略

iptables介绍和简单的应用!!!_防火墙_06

进行下面的操作

[root@nagios-plugin Desktop]# iptables -t filter -P INPUT ACCEPT

进行完以后我们就又可以用ssh远程连接工具了

iptables介绍和简单的应用!!!_软件_07

四、数据包的基础比对:IP、网络和接口设备

貌似现在才进入正餐!!!

iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j 动作

补充:动作有 ACCEPT 、DROP、REJECT(拒绝)、LOG(记录)

应用:让ip是192.168.0.25的主机不能访问主机192.168.0.19

iptables介绍和简单的应用!!!_防火墙_08

可以看到可以正常访问

在主机192.168.0.19上面执行下面的命令


[root@nagios-plugin ~]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.25 -j REJECT


测试:刷新一下发现不能访问了!

iptables介绍和简单的应用!!!_iptables_09


五、TCP、UDP的规则对比:针对端口设置

因为不同的服务会开启不同的端口,所以我们很多时候不是针对某种协议来制定规则的,毕竟端口的话更灵活,不会像协议一样一杀一大片!!!!

iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [--sport 端口范围] \

[-d 目标IP/网络] [--dport 端口范围]  -j 动作

补充:动作有 ACCEPT 、DROP、REJECT(拒绝)

应用:把filter表格的INPUT链DROP后,让我们可以在本机上使用ssh连接软件!

首先看下本机的ip

iptables介绍和简单的应用!!!_防火墙_10

添加下面的规则

[root@nagios-plugin Desktop]# iptables -A INPUT -p tcp -s 192.168.0.31 --dport 22 -j ACCEPT

注释:这条命令是 增加一条INPUT链的 协议是tcp的 源地址是192.168.0.31的 目标端口是22的可以连接。

六、iptables连接状态设置

有时候我们需要根据数据包的状态来进行一些规则的设置

iptables -A INPUT  [-m state]  [--state 状态]

状态:INVALID(无效的数据包) ESTABLISHED(连接成功的数据包) NEW(想要新建连接的数据包)

RELATED(表示这个数据包与主机发出去的数据包有关)

应用:只要已经建立连接或者已发出请求的数据包就通过,不合法数据包就丢弃

[root@nagios-plugin ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT



总结:iptables是一款优秀的防火墙软件,在我们的生产环境中对于我们的一些服务的安全有大的帮助,希望大家都有所得!谢谢大家