iptables是linux系统内部集成的防火墙软件。

iptables  有下面几种状态:

NEW :如果你的主机向远程机器发出一个连接请求,这个数据包的状态是NEW.

ESTABLISHED:在连接建立之后,远程主机和你的主机通信数据的状态为ESTABLISHED

RELATED:和鲜有联机相关的新联机封包。像FTP这样的服务,用21端口来传送命令,可用20端口来传送数据。这样的状态就是RELATED

INVALID:无效的数据包,不能被识别属于哪个连接或者没有任何状态,通常这种状态的数据包会被丢弃。


有了以上的只是,接下来可以进行一个简单的实验:

首先还是来设置下默认规则如下所示:

iptables -P INPUT DROP

这句规则的意思是,你的机器会将所有进入你主机的数据丢掉。

如果有一台只应用在个人桌面的情况下,没有对外提供任何服务,就可以禁止其他的机器向你的机器发送任何连接请求,命令如下:

iptables -A INPUT -m state --state NEW -j DROP

这个规则将所有发送到你机器的数据包丢弃,也就是不允许其他的机器主动发起对你机器的连接,但是你却可以主动第连接其他机器,不过仅仅是连接而已。

连接之后的数据就是ESTABLISHED状态的了。那再加上下面这条语句,作用是允许所有已经建立连接或者与之相关的数据通过,如下所示:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

通过以上的 几个规则,来写一个简单的iptables脚本,作为个人桌面主机的防火墙。

#/bin/bash

iptables -F -t nat

iptables -X

iptables -Z

iptables -P INPUT DROP

iptables -A INPUT -m state --state NEW -j DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

给这个脚本加行可执行权限  chmod +x iptables.sh  脚本的名称自定义就可以,

注意:这个脚本运行后 就能让你介入internet网的主机足够安全,而且你可以随意访问internet,但是外部却不能主动发起对你机器的连接。

这个脚本在实验环境或者个人桌面应用下尝试下即可,切勿应用于生产服务器的环境之中,因为会拒绝一切连接。