计算机网络/计算机科学与应用/系统/运维/开发

iptables 防火墙

一、什么是防火墙

通过制定有顺序的规则、管理检查过滤主机接收和发送数据包的一种机制


二、防火墙的分类

一般分为硬件防火墙和软件防火墙(Linux系统中,内核集成Netfilter防火墙)

Centos7 使用 firewalld 代替了 iptables


三、iptables防火墙

Netfilter 是Linux内核中的一个拥有管理网络数据包的框架,可实现网络地址转换(nat)

数据包内容修改,过滤等

Iptables是用来配置、管理Netfilter命令行工具


iptables中,表、链、规则概念


表Tables: 由链组成 (主要5张表 raw filter nat mangle security )

filter表用于过滤,nat表用于网络地址转换NAT


链Chains: 链由顺序排列的规则列表组成 默认的filter表包括3条内建链

INPUT 入

OUTPUT 出

FORWARD 转发


nat表包括3条内建链:

PREROUTING 修改目标地址 DNAT

POSTROUTING 修改源地址 SNAT

OUTPUT 出


规则(Rules)

数据包匹配后需要执行的动作,一个或多个匹配,主要包括

ACCEPT允许

DORP丢弃

DNAT目标地址转换

SNAT源地址转换

MASQUERADE地址伪装

QUEUE对列

RETURN返回调用链

REJECT拒绝

LOG写入日志


语法规则:

iptables [-t 要操作的表(filter|nat)] <操作指令(-A|l|D|R|P|F)> [要操作的链][规则号码][匹配条件][-j 匹配后的动作]


参数:

-t table 指定需要操作的表 默认filter

-A chain 在链的最后位置追加一条规则

-I chain 向链的指定位置插入一条规则 默认在第一条规则之前插入

-D chain 删除链中匹配到的或指定序号的规则

-R chain 替换链中指定序号的规则

-P chain 设置某个链的默认规则

-F [chain] 删除所有链或指定链中的规则

-Z

-L 

-p proto 匹配协议类型

-s address 匹配源地址

-d address 匹配目标地址

-i input name[+] 匹配数据进入的网络接口

-o output name[+] 匹配数据流出的网络接口

--sport port[,port|,port:port]  匹配源端口 个别或者端口范围 必须配合 -p参数

--dropt port ... 匹配目的端口,个别或端口范围 必须配合 -p参数

-j target 指定匹配规则后的执行动作


实例:

为普通web服务器进行基本防护,允许服务器进行ping检测及只开放22、80端口

1、停止firewalld,安装iptables服务并启用

systemctl stop firewalld.service
systemctl disable firewalld.service
yum install -y iptables-services
systemctl enable iptables.service
systemctl start iptables.service


2、检查当前防火墙规则 确定是否有必须要清空规则

iptables -L -n


3、清空防火墙规则 (需要谨慎操作,可能会丢失链接无法再次远程登录服务器)

iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -L -n


4、 添加新的防火墙规则

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -L -n


5、保存自定义规则

保存自定义规则,需要将当前运行中的规则保存到其他文件中,使用

iptables-save > iptables.rules 命令

恢复时使用 iptables-restore iptables.rules

service iptables save
cat /etc/sysconfig/iptables


世上最好的保鲜就是不断进步,让自己成为一个更好和更值得爱的人。

评论

^