您的位置:首页 > 其它

7--企业常用防火墙iptables核心配置讲解

2016-04-26 15:42 405 查看
Iptables基本语法格式:

Iptables[-t table] command chain [critiria] –j action;

1. 1. -t 指定表名,表名就是功能名,iptables共有四种功能:raw、mangle、nat、filter。默认是filter

2. command:对链中规则进行管理:

-A:append,追加一条规则

-I:insert,插入一天规则,一般跟参数n,n代表插入到第几条

-R:replace,替换,-R CRITIRIA(CRITIRIA要替换的那条规则)

-D:delete,删除,-D CRITIRIA(CRITIRIA要删除的那条规则)

Command:对链进行管理:

-N:new,新建一条自定义链

-X:删除一条自定义链

-E:重命名一条自定义链

-F:flash,清空一条自定义链,如果不指定链,则清空整个表中的所有链

-P:policy,设定链的默认策略

-Z:zero,置零,每条规则都有两个计数器,一个是被本规则匹配到的所有数据包的个数,另一个是被本规则匹配到的所有数据包的大小之和

Command:查看规则:

-L:list,查看

-v:查看详细

-x:显示规则计数器的精确值

-n:显示数字地址而不是名称地址

在redhat上iptables被做成了一个服务器脚本。
查看该脚本:



Iptables虽然是服务脚本,但不是服务,iptables只是让自己写的一批规则同时生效。Iptables-config是/etc/rc.d/init.d/下的iptables脚本的额外配置文件,该配置文件的位置如下:



Iptables的规则保存位置如下:

/etc/sysconfig/iptables

使用iptables起的规则,一旦关机了,再启动,规则就没了,因为规则本身并不在内核中。因此自己写的规则一定要保存下来,保存在iptables-config中。

保存规则的方法:$serviceiptables (status|start|stop|save)

查看防火墙状态:

[root@redhat4 ~]# service iptables status


防火墙已停

要iptables必须找到/etc/sysconfig/iptables这个文件,如果没有该文件,就自己touch一个出来。

启动iptables:

[root@redhat4 ~]# touch /etc/sysconfig/iptables           #新建一个iptables规则文件

[root@redhat4 ~]# service iptables start

应用 iptables 防火墙规则:                                 [  确定  ]


查看链:

[root@redhat4 ~]# iptables -L -n

Chain INPUT (policy ACCEPT)           #policy是默认策略的意思

target     prot optsource               destination   #

Chain FORWARD (policy ACCEPT)

target     prot optsource               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination


匹配条件:

1. 通用匹配:核心功能。

-s:指定源地址

-d:指定目标地址

-p:指定协议(icmp、TCP、UDP)

-i:in_interface,指定数据包的流入接口(网卡)

-o:out_interface,指定数据包出去的接口(网卡)

2. 扩展匹配:

2.1 隐式扩展

-p TCP(指定端口协议为TCP)

--sportPORT[-PORT2](指定一片源端口)

--dportPORT[-PORT2](指定一片目标端口)

--tcp-flags:检查TCP标志位,共六个:URG、ACK、SYN、PSH、RST、FIN(ALL,表示所有标志位;NONE,表示没有标志位)

-p udp(指定端口协议为UDP)

--sportPORT[-PORT2](指定一片源端口)

--dportPORT[-PORT2](指定一片目标端口)

-p icmp

--icmp-type:ping请求的报文type是8,ping响应的报文标志是0

2.2 显式扩展

Netfilter扩展模块引入的扩展,用于扩展匹配条件,通常需要指定专用选项来定义。显示扩展的模块放在/lib/iptables目录下。

2.3 处理方法

-j ACCEPT

DROP

REJECT

REDIRECT

DNAT

SNAT

MASQUERADE #地址伪装

LOG #记录日志

RETURN #如果是自定义链,当数据包到达主链时,主链调用自定义链,对数据包进行检查,如果数据包通过了自定义链的检查,则RETURN,从自定义链回到主链。

例1:

设置来自172.16.0.0/16的ping请求都无效

[root@redhat4 ~]# iptables -t filter -A INPUT-s 172.16.0.0/16 -p icmp --icmp-type 8 -j DROP


#-t:filter指定要设置filter功能

#-A:INPUT 指定把规则挂在INPUT链上

#-s :指定源IP

#-p:指定协议为icmp

#--icmp-type 8:指定icmp协议中type为8的数据包

#-j DROP:设置数据包为DROP,也就是无法通过

查看规则:

[root@redhat4 ~]# iptables -t filter -L –n

Chain INPUT (policy ACCEPT)

target    prot opt source              destination

DROP      icmp --  172.16.0.0/16        0.0.0.0/0           icmp type 8

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination


查看规则编号:

[root@redhat4 ~]# iptables -t filter -L -n--line-numbers

Chain INPUT (policy ACCEPT)

num target     prot opt source               destination

1   DROP       icmp --  172.16.0.0/16        0.0.0.0/0           icmp type 8

Chain FORWARD (policy ACCEPT)

num target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

num target     prot opt source               destination


删除该规则:

[root@redhat4 ~]# iptables -t filter -D INPUT1


#1:要删除的规则编号

#-D INPUT:规则所在的链,以及对该链的操作

#-t filter:规则所在的表(功能)

例2:

除了172.16.0.0/16以外的主机不能访问172.16.100.1主机的80端口,也即不能使用172.16.100.1主机的web服务。

[root@redhat4 ~]# iptables -A INPUT -s !172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 80 -j DROP


#! 172.16.100.1:除了172.16.100.1以外的IP

#-d:目标主机的IP

#-p:采用的协议

#--dport:指定端口号

[root@redhat4 ~]# iptables -t filter -F INPUT


#强制删除filter表的INPUT链上的所有规则

例3:

设置任何主机都能通过ssh访问172.16.100.1主机

[root@redhat4 ~]# iptables -t filter -A INPUT-s 0.0.0.0/0 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT


#-s 0.0.0.0/0:任何主机

# -j ACCEPT:接受
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: