codetc - 网站开发技术 首页 后端 服务器 查看内容

linux防火墙iptables的配置与使用

2015-6-9 17:44| 发布者: CODETC| 查看: 1837| 评论: 0

iptables利用封包过滤的机制,分析封包的表头数据,根据表头数据与定义的规则来决定该封包是否可以进入主机或者被丢弃。

iptables包含表(table)和链(chain),我们最常用的表是filter(过滤器)表,默认情况下我们操作的都是这个表。

在远程服务器上操作iptables时务必要小心,一定要在本地测试熟练后再进行远程配置,否则操作失误的话就有可能导致登录不上远程服务器;这样的话后面会发生什么相信不用我说你也知道。

常用的参数:

iptables -L

列出所有规则,还有其他参数,-n 表示不进行ip与hostname的反查,速度较快,–line-numbers表示显示行号。例如iptables -L -n --line-numbers


iptables -F

清除所有的已订定的规则

iptables -X

杀掉所有使用者 “自定义” 的 chain (应该说的是 tables )

iptables -Z

将所有的 chain 的计数与流量统计都归零

iptables的规则(rule)是按照顺序解释的,碰到符合的规则就结束了,所以每次我们全部重新配置时都要先执行以上三个命令


添加规则时常用的参数:

iptables -P

注意这里P是大写,这里定义的是规则的策略,用于定义INPUT,OUTPUT,FORWARD的默认策略,在封包没有符合的规则时,会使用默认的策略。例如iptables -P INPUT ACCEPT

用于添加rule的参数

-A 表示添加到规则的结尾,-I表示在某条规则之前插入,如果没有指定具体的条目则默认插入到第一条。

-io 表示设定封包进出的接口规范,-i表示封包进入的接口,例如eth0,lo等,需与INPUT链配合。-o表示传出的网络接口,需与OUTPUT链配合。

-p 表示封包的格式,主要包含:tcp,udp,icmp及all

与-p配合的参数有:–sport表示来源的端口或者端口范围,例如:3389,或者1024:1025,–dport表示目标端口号或者端口范围,同–sport。

-s 表示来源的IP或网域。例如:IP:192.168.0.1,网域:192.168.0.0/24,在ip或网域前加!表示禁止,例如:-s ! 192.168.0.1。

-d 表示目标ip或网域。同-s。

-j 后面接动作,包括:ACCEPT,DROP,REJECT及LOG

----------------------------------------------------------------------------------------------------

另外,iptables 还有常用的插件需要了解,state:这个在我们管理状态时非常有用,比如我们进行远程管理时,可以先添加对当前已经创建的链接放行的规则。

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

-m 表示使用的插件 : state,状态模块

--state 表示封包的状态,主要包含的状态为:INVALID,无效的封包,如数据损坏的封包;ESTABLISHED,已经成功连接的链接状态;NEW,想要新建立连接的封包状态;RELATED,表示这个封包是与我们主机发送的封包有关。

例如,我们新添加一个规则表示只要是已经建立或者相关的封包就给予通过,这个规则在我们操作远程服务器时比较常用:

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

下面我们列举一些实例,比如我们要配置一个远程服务器的规则,开放80端口,只让指定的ip访问6001端口:

[root@codetc ~]# iptables -F
[root@codetc ~]# iptables -X
[root@codetc ~]# iptables -Z
[root@codetc ~]# iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
[root@codetc ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@codetc ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@codetc ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@codetc ~]# iptables -A INPUT -s 112.124.47.5/32 -p tcp -m tcp --dport 6001 -j ACCEPT
[root@codetc ~]# iptables -A INPUT -s 10.163.200.91 -p tcp -m tcp --dport 6001 -j ACCEPT
[root@codetc ~]# iptables -A INPUT -p tcp -m tcp --dport 6001 -j DROP
[root@codetc ~]# iptables -A INPUT  -j DROP
文章来源 CODETC,欢迎分享,转载请注明地址: http://www.codetc.com/article-208-1.html

最新评论

 作为游客发表评论,请输入您的昵称

返回顶部