学习啦>学习电脑>电脑安全>防火墙知识>

iptables如何制作简单防火墙

林辉分享

  想用iptables制作简单防火墙来玩玩,有什么方法呢?下面由学习啦小编给你做出详细的iptables制作简单防火墙方法介绍!希望对你有帮助!

  iptables制作简单防火墙方法一:

  在Ubuntu 14.04中配置IPTables的规则。

  IPTables基本命令

  在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。

  首先要说明的是IPTables命令必需以root权限运行,这意味着需要使用root身份登录或者能够有权限使用su或sudo -i取得root Shell。下面的内容中都使用sudo,这也是Ubuntu系统上的首选方法。

  最好的起点就是先通过“-L”参数来查看下当前系统的所有IPTables规则:

  sudo iptables -L

  可以看到Linux中都有的3个常用默认链(INPUT、OUTPUT和FORWARD),同时也可以看到每个链的缺省策略(每个链对默认策略都是接受),在此可以看到Ubuntu中并没有添加任何默认规则集。

  如果希望通过命令来查看每个链的默认规则,可以使用“-S”参数:

  sudo iptables -S

  如果看到IPTables里面已经有规则了,并希望取消这些规则后重新更配置话,可以使用“-F”参数来清空已有的规则集:

  sudo iptables -F

  虽然“-F”参数可以清空并刷新链中所有的现有规则集,但并不会对链的默认策略进行更改。因此,如果是在更改远程VPS防火墙策略的话需要在“-F”清空所有规则时先将INPUT和OUTPUT链的默认策略恢复到ACCEPT,以免规则清空后SSH连接被阻断。要做到这一点可执行如下命令:

  sudo iptables -P INPUT ACCEPT

  sudo iptables -P OUTPUT ACCEPT

  sudo iptables -F

  在配置好允许SSH连接后(下面介绍),再将INPUT和OUTPUT链的默认规则更改为DROP即可。

  创建自已的IPTables规则

  现在就要开始为的VPS创建自定义的防火墙规则啦,正如上篇文章中所说,由于INPUT链会处理所有连接到服务器的入站数据包,因此的所有操作都与INPUT链有关。现在先来配置服务器允许SSH连接。

  完整命令应该是这样的:

  sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  说明:

  -A INPUT :表明要将此规则追加到某个链的最后,由于要操作INPUT链接,所以这么写。

  -m conntrack :iptables除了自己的核心功能外还只有一些实用的扩展和模块,这个参数表明添加conntrack模块提供的能力。(conntrack模块可以根据先前的连接来确定数据包之间的关系)

  –ctstate :该参数是conntrack模块提供的,它可以确定如何用现在的数据包去匹配先前获得的数据包。ESTABLISHED值将自动允许现有连接的数据包,RELATED值将允许已建立连接的相关数据包。(这样就与SSH会话特性相匹配上了)

  -j ACCEPT :这个参数用于指定匹配的数据包的目标。用在这里表示接受和允许符合上述标准的数据包通过。

  配置好后来看一下:

  sudo iptables -L

  现在,应该已经知道IPTables的基本语法了,下面继续添加规则打怪,以期尽快升级为高手。

  接受其它必要连接

  大家的VPS上一般SSH服务的22端口,Web服务器的80端口及Mysql的3306端口都是需要打开的,不然怎么对外提供服务呢。因此也需要通过如下命令在IPTables中打开这些端口:

  sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

  sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

  为了保证的VPS能够正常运行,还需要添加一条允许规则。通常,计算机上的服务都会发送网络数据包以保持彼此之间的通信。而这种通信会利用到一个名叫loopback的伪网卡将流量引导回自己。因此,还需要为loopback网卡添加一条允许规则。

  sudo iptables -I INPUT 1 -i lo -j ACCEPT

  -I INPUT 1 :与“-A”不同,它可以指定要将规则添加到该链的位置。

  实施Drop规则

  前面讲的内容其实都是基于一个前提假设的,但事先需要先把防火墙的2种常用模式说明一下。一种是明确定义允许通过防火墙的规则,不匹配的都丢弃。另外一种是明确定义拒绝通过防火墙的规则,其余的都允许。的前提假设采用的就是第一种方式,这样配置起来相对简单,规则也较少,也更加安全。

  前面已经为INPUT链接定义了一些允许规则,但默认INPUT链是允许所有包,所以现在需要将INPUT链的默认规则更改为“Drop”即丢弃。通过如下命令完成更改:

  sudo iptables -P INPUT DROP

  查看和保存配置

  IPTables的配置是立即生效的,前面已经介绍过,在配置好之后可以直接用“-L”参数进行查看,这里再另外增加一个“–line-numbers”参数,它主要用于显示行数,对于规则较多时的查看非常方便。

  sudo iptables -L --line-numbers

  虽然IPTables的命令执行后会立即生效,但这个生效过程其实是临时的,系统在重启之后便会丢失。因此,还需要将这些配置添加到配置文件当中,以保证系统在下次重启后会自动载入的IPTables防火墙规则。

  sudo apt-get update

  sudo apt-get install iptables-persistent

  该命令脚本下载执行后会询问是否对IPTables配置进行保存,如果确定的话选择“是”即可。保存后下次重启系统也不会造成配置丢失了。

  iptables制作简单防火墙方法二:

  简单规则: iptables -p INPUT DROP iptables -p OUTPUT ACCEPT iptables -p FORWARD DROP

  1、防止外网用内网IP欺骗 iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 查看nat规则 iptables -t nat -L

  2、如果想取消上面所加的规则: iptables -F -t nat iptables -X -t nat iptables -Z -t nat 3、阻止一个IP连接本机 iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP

  4、查看本机的IPTABLES的所填规则 iptables -L -n

  5、清除filter中所有的规则连接 iptables -F 清除filter中使用者自定义连接中的规则 iptables -X

  6、保存所修改的iptables /etc/init.d/iptables save 或者 /etc/rc.d/init.d/iptables save 视linux版本而定 重新启动iptables服务 service iptables restart 或者 /etc/init.d/iptables restart 视linux版本而定

  7、关闭不安全的端口连接本机 iptables -A OUTPUT -p tcp --sport 31337 -j DROP iptables -A OUTPUT -p tcp --dport 31337 -j DROP 8、开启所需要的端口 22 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 80 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT 9、禁止一个IP或者一个IP段访问服务器端口服务 80端口 iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport http -j DROPFTP端口 iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP

 

  看了“iptables如何制作简单防火墙 ”文章的还看了:

1.C++怎样制作防火墙

2.怎么知道Linux系统中毒

3.CentOS6.5怎么样设置

    781354