一、什么是防火墙
通过制定有顺序的规则、管理检查过滤主机接收和发送数据包的一种机制
二、防火墙的分类
一般分为硬件防火墙和软件防火墙(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