用iptables轻松建立自己的防火墙

简介:
本文旨在给读者一个iptables的快速入门,不会深入谈论iptables,争取让读者在读完之后能在自己的linux上使用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的规则就可以了。









本文转自 justiceplus 51CTO博客,原文链接:http://blog.51cto.com/johnwang/126388,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
467 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
7月前
|
安全 Linux 网络安全
在Linux中,如何列出和删除 Iptables 防火墙规则?
在Linux中,如何列出和删除 Iptables 防火墙规则?
440 0
|
6月前
|
网络协议 Linux 网络安全
小白也能看懂的 iptables 防火墙
iptables是Linux中功能最为强大的防火墙软件之一 是一个在 Linux 系统上常用的防火墙工具,用于配置和管理网络数据包过滤规则。它可以通过定义规则集来控制进出系统的网络流量,实现网络安全策略
250 5
|
8月前
|
SQL 网络协议 Oracle
Linux iptables 防火墙软件命令详解
Linux iptables 防火墙软件命令详解
253 0
|
8月前
|
网络协议 Linux 网络安全
Linux系列——关于防火墙iptables的常用命令
Linux系列——关于防火墙iptables的常用命令
|
7月前
|
安全 Linux 网络安全
百度搜索:蓝易云【服务器安全设置Centos7 防火墙firewall与iptables】
CentOS 7使用的默认防火墙是firewall,它是一种基于Netfilter的用户空间工具,用于管理Linux内核中的iptables规则。为了加强服务器的安全性,可以通过配置CentOS 7防火墙和iptables规则来保护服务器。
108 0
|
4月前
|
网络协议 Linux 网络安全
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
|
4月前
|
存储 网络协议 Linux
Linux加强篇008-使用Iptables与Firewalld防火墙
山重水复疑无路,柳暗花明又一村
313 0
Linux加强篇008-使用Iptables与Firewalld防火墙
|
4月前
|
Linux 网络安全
CentOS7下操作iptables防火墙和firewalld防火墙
CentOS7下操作iptables防火墙和firewalld防火墙
93 3
|
5月前
|
网络协议 网络安全 开发工具
iptables和防火墙1
iptables和防火墙1
27 0