iptables学习笔记
1. iptables官网及名称
iptables
全称为netfilter/iptables
,是linux
平台下自带的开源包过滤防火墙
2. iptables功能
- 包过滤(重点)
- NAT(重点)
- 协助实现策略路由和流量控制(拓展)
- 包标记(拓展)
3. iptables组成
1. 规则
iptables
是按照规则(rules
)来办事的,而规则就是运维人员所定义的条件;规则一般定义为"如果数据包头符合这样的条件,就这样处理这个数据包".
规则存储在内核空间的数据包过滤表中,这些规则分别制定了源地址、目的地址、传输协议(TCP
,UDP
,ICMP
)和服务类型(HTTP
、FTP
)等。
当数据包与规则匹配时,iptables
就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT
)、拒绝(REJECT
)、丢弃(DROP
)等
2. 链
当客户端访问服务器端的WEB
服务时,客户端发送访问请求报文至网卡,而TCP/IP
协议栈是属于内核的一部分,所以,客户端的请求报文会通过内核的TCP
协议传输到用户空间的WEB
服务,而客户端报文的目标地址为WEB
服务器所监听的套接字(IP:PORT
)上,当web
服务器响应客户端请求时,web
服务所回应的响应报文的目标地址为客户端地址,我们说过,netfilter
才是真正的防火墙,属于内核的一部分,所以,我们要想让netfilter
起到作用,我们就需要在内核中设置关口,所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准许放行,符合阻拦条件的则被阻止,于是就出现了input
和output
关口,然而在iptables
中我们把关口叫做链。
3. 五条链
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
4. 四张表
filter
: 实现对数据包的过滤nat
: 主要修改数据包的地址和端口,例如源地址或目标地址mangle
:对数据包进行修改,例如给数据包打标机MARKraw
: 主要做连接追踪
4. iptables-service安装
只要有iptables
命令就可以写规则,但是在centos7
上软件包不安装完全,是没有iptables
服务的(主要安装iptables-services
软件包)
yum -y install iptables-services
# 设置开机自启
systemctl enable iptables.service
systemctl start iptables.service
# 查看状态
systemctl status iptables
5. iptables策略管理
-A 增加一条规则,后接链名,默认是加到规则的最后面
-D 删除
-L 列出规则
-n 以数值显示
-I 在最前面插入规则
-v 显示统计数据,与-L一起用,看到的信息更多
-F 清空规则
-z 清空计数器
-x 清空自定义链
-t 后接表名
-P policy,默认策略
-p protocol,后接协议名
--dport 目标端口
--sport 源端口
-d description,目标地址
-s source,源地址
-i 接网卡接口,进入的网卡接口
-o 接网卡接口,出去的网卡接口
-j 后接动作
动作的分类:
ACCEPT 接收数据包
DROP 丢弃数据包
REJECT 拒绝数据包,和DROP的区别就是REJECT会返回错误信息,DROP不会
MASQUEREAD IP地址伪造,使用NAT转换成外网IP,可以PPP拨号(外网IP不规定情况)
SNAT 源地址转换,它与MASQUEREAD的区别是SNAP是接一个固定IP
DNAT 目标地址转换
LOG 记录日志
查看规则
注意:不指定表,默认为filter表
iptables -L
iptables -t filter -L
iptables -t nat -L
iptables -t mangle -L
iptables -t raw -L
清空默认规则
这三张表可能有默认的规则,我们先把规则清除掉
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
保存规则
service iptables save
6. iptables示例
仅允许80端口放行,其他访问都拒绝
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 80 -i ACCEPT
service iptables save