学习啦 > 学习电脑 > 电脑安全 > 防火墙知识 > IPtables防火墙如何制作

IPtables防火墙如何制作

时间: 林辉766 分享

IPtables防火墙如何制作

  想自己动手制作一个IPtables防火墙,该怎么办呢?下面由学习啦小编给你做出详细的IPtables防火墙制作方法介绍!希望对你有帮助!

  IPtables防火墙制作方法一:

  iptables防火墙。安装可以使用RPM安装或者在Debian中使用apt-get install

  iptables,编译安装也不难,下载最新的版本,然后./configure --prifix=/some/path/ &&

  make && make install 就可以了。本文重点在如何step by step

  简历一个自己的iptables防火墙。

  首先在使用iptables之前敲入一下两条命令

  > iptables -F #这句话的意思是清空所有的链

  > iptables -X #这句话的意思是清空所有自定义的链

  以上两条的含义你可以简单的认为是iptables的初始化命令,无需深入。

  下面我们将要开始建立一个iptables防火墙了。我们的做法是,默认所有的数据都丢弃,除非我认为满足条件的我才接受

  有针对的打开我们需要的端口,无疑是很安全的一种做法。下面两句话可以定义默认全部丢弃数据包:

  > iptables -P INPUT DROP

  > iptables -P OUTPUT DROP

  -P参数的意思是policy,翻译成策略~那么这两句话就好理解了。

  第一句的意思是:

  输入(INPUT)的数据包默认的策略(-P)是丢弃(DROP)的

  第二句的意思是:

  输出(OUTPUT)的数据包默认的策略(-P)是丢弃(DROP)的

  其实到这里已经是一个有用的防火墙了,只不过,没有什么意义,和拔掉网线的概念没有什么不同。

  首先写下这6句话:

  iptables -A INPUT -p icmp --icmp-type any -j ACCEPT

  允许icmp包进入

  iptables -A INPUT -s localhost -d localhost -j ACCEPT

  允许本地的数据包

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

  允许已经建立和相关的数据包进入

  iptables -A OUTPUT -p icmp --icmp any -j ACCEPT

  允许icmp包出去

  iptables -A OUTPUT -s localhost -d localhost -j ACCEPT

  允许本地数据包

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

  允许已经建立和相关的数据包出去

  说明一下,这6句基本上都是要的。

  如果我的电脑是一台web服务器的话,别人也没有办法访问,怎样才能让别人能访问我的web呢?很简单,打开80端口。

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

  但是这样的话,别人还是没有办法访问我,问什么呢?因为OUTPUT是关闭的,没有数据包能出去,那么就需要下面的一句话:

  > iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  这样别人就能访问你的web了。

  但是如果你想访问别人的web怎么办呢?打开出去的80端口吧!

  > iptables -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT

  同样的这样的一句话还是不能起作用,我们需要打开别人进来的数据包

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

  可以了么?试试看~还是不可以???为什么呢???对了,你可能想到了DNS端口没有打开怎么访问域名服务器呢?下面我们打开DNS端口吧!

  > iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

  OK,这样就能访问别人的web站点了,不过如果你要访问https的站点,打开443端口吧,这里我就不写了,你可以自己试一下,提示一下,在OUTPUT中写。

  为了方便管理,我们可能还要经常ssh到这台服务器上去,那么打开22号端口吧!

  > iptables -A IPUT -p tcp -dport 22 -j ACCEPT

  或者我们还可能需要用这台电脑ssh到别的电脑上去

  > iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

  但是我只允许一个固定的ip能ssh到我的服务器上来怎么办呢?上句改成:

  > iptables -A INPUT -p tcp --dport 22 -s 192.168.1.10 -j ACCEPT

  上句话的意思是,只允许192.168.1.1的用户通过ssh进到服务器。不过这样还是不安全,我们可以同时绑定访问者的mac,这样就安全多了!

  > iptables -A INPUT -p tcp --dport 22 -m mac --mac 00:18:de:a5:83:c7 -s 192.168.1.10 -j ACCEPT

  最后脚本话一下:

  #!/bin/bash

  #DEFINE VARIABLES

  HTTP_PORT=80

  SECURE_HTTP_PORT=443

  ALLOWED_MAC=00:18:de:a5:83:c7

  SSH_PORT=22

  DNS_PORT=53

  ALLOWED_IP=192.168.1.10

  #FLUSH IPTABLES

  iptables -F

  iptables -X

  #DEFINE DEFAULT ACTION

  iptables -P INPUT DROP

  iptables -P OUTPUT DROP

  #DEFINE INPUT CHAINS

  iptables -A INPUT -p icmp --icmp-type any -j ACCEPT

  iptables -A INPUT -s localhost -d localhost -j ACCEPT

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

  iptables -A INPUT -p tcp --dport $SSH_PORT -j ACCEPT

  diptables -A INPUT -p tcp --dport 22 -m mac --mac $ALLOWED_MAC -s $ALLOWED_IP -j ACCEPT

  #DEFINE OUTPUT CHAINS

  iptables -A OUTPUT -p icmp --icmp any -j ACCEPT

  iptables -A OUTPUT -s localhost -d localhost -j ACCEPT

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

  iptables -A OUTPUT -p tcp -m state --state NEW --dport $HTTP_PORT -j ACCEPT

  iptables -A OUTPUT -p tcp --dport $SECURE_HTTP_PORT -j ACCEPT

  iptables -A OUTPUT -p udp --dport $DNS_PORT -j ACCEPT

  iptables -A OUTPUT -p tcp --dport $SSH_PORT -j ACCEPT

  到这里一个简单的iptables就可以使用了,写的很简单,只是大家可以领悟一下iptables的基本实现,写iptables就是要知道你要什么样的需求,什么程序不重要,重要的是需要用什么端口,对端口写相应的写出INPUT和OUTPUT的规则就可以了。

  IPtables防火墙制作方法二:

  构筑防火墙之IPtables搭建防火墙的规则 一般情况下,iptables已经包含在了Linux发行版中,可以运行iptables --version来查看...并且大部分发行版都会有一个已经预先配置好的防火墙。不同的发行版的配置文件位置不尽相同,我们可以使用命令locate

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

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

2.怎么知道Linux系统中毒

3.CentOS6.5怎么样设置

4.Linux系统常用命令合集

781332