iptables 防火墙

1、iptables简介
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好
Iptables是linux2.4及2.6内核中继承的服务,其功能与安全性比其老一辈ipfwadm,ipchains强大的多(长江后浪推前浪),Iptables主要工作早OSI七层的二、三、四层,如果重新编译内核Iptables也可以支持7层控制(squid代理+iptables)

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。

2、iptables使用场景
(1)    生产中看情况,只有内网IP一般关闭防火墙,当服务器上有外网IP的 时候才打开防火墙。
a.    linux场景能够被外网访问到的服务器尽量开外网防火墙。
b.    后台数据库服务器、存储服务器等有出网访问需求也可以不开。
(2)    大并发(10000-15000)的情况,不能开iptables,影响性能,硬件防火墙。

3、基于安全基本优化:
1)    尽可能不给服务器配置外网IP可以通过代理转发或者通过防火墙映射。
2)    并发不是特别大情况再外网IP的环境,要开启iptables防火墙。

4、iptables工作流程
(1)防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
(2)如果匹配上了规则即明确标明是组织还是通过,此时数据包就不在向下匹配新规则了。
(3)如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
(4)防火墙的默认规则是对应链的所有的规则执行完才会执行(最后执行的规则)

5、管理控制选项

# -A 在指定链的末尾添加(append)一条新的规则 
# -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除 
# -I 在指定链中插入(insert)一条新的规则,默认在第一行添加 
# -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换 
# -L 列出(list)指定链中所有的规则进行查看 
# -E 重命名用户定义的链,不改变链本身 
# -F 清空(flush) 
# -N 新建(new-chain)一条用户自己定义的规则链 
# -X 删除指定表中用户自定义的规则链(delete-chain) 
# -P 设置指定链的默认策略(policy) 
# -Z 将所有表的所有链的字节和数据包计数器清零 
# -n 使用数字形式(numeric)显示输出结果 
# -v 查看规则表详细信息(verbose)的信息 
# -V 查看版本(version) 
# -h 获取帮助(help)

6、表名

# raw   :高级功能,如:网址过滤。
# mangle:数据包修改(QOS),用于实现服务质量。
# net   :地址转换,用于网关路由器。
# filter:包过滤,用于防火墙规则。

7、规则链名

# INPUT链     :处理输入数据包
# OUTPUT链    :处理输出数据包
# PORWARD链   :处理转发数据包
# PREROUTING链:用于目标地址转换(DNAT)
# POSTOUTING链:用于源地址转换(SNAT)
# FOEROURING链:转发数据包时应用此规则链中的策略

8、动作

# ACCEPT    :接收数据包
# DROP      :丢弃数据包
# REDIRECT  :重定向、映射、透明代理(拒绝数据包通过,必要时会给数据发送端一个响应的信息。)
# SNAT      :源地址转换。
# DNAT      :目标地址转换。
# MASQUERADE:IP伪装(NAT),用于ADSL
# LOG       :日志记录(在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则)

9、命令选项使用语法

# iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。

10、命令示例

# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT  #允许本地回环接口(即运行本机访问本机)
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
# iptables -A OUTPUT -j ACCEPT                     #允许所有本机向外的访问
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #允许访问22端口
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #允许访问80端口
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #允许ftp服务的21端口
# iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #允许FTP服务的20端口
# iptables -A INPUT -j reject                      #禁止其他未允许的规则访问
# iptables -A FORWARD -j REJECT                    #禁止其他未允许的规则访问
# iptables -A INPUT -p tcp -j  ACCEPT              #在末尾追加一条新的规则
# iptables -I INPUT 3 -p tcp  -j  ACCEPT           #插入一条规则到第三行

11、查看规则

# iptables -nL

12、删除规则

列出规则行号
# iptables -nL  --line-numbers
根据行号删除对应规则
# iptables -D INPUT 1  #删除INPUT链第一条规则(根据行号自行修改)
posted @ 2021-05-15 00:02  -小-白-  阅读(176)  评论(0编辑  收藏  举报