掌握linux系统防火墙有它就够了
一.前言介绍
企业中的防火墙安全配置原则:
- 尽可能不给服务器配置外网IP,可以通过代理转发或者通过防火墙进行映射。
- 并发不是特别大情况有外网IP,可以开启防火墙服务。
- 一般大并发的情况下不能开iptables,影响性能,利用硬件防火墙提升架构安全。
二.Iptables防火墙概念介绍
- Netfilter(内核)/Iptables(软件)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包顾虑的防火墙工具
- 他的功能十分强大,使用灵活可以对流入和流出服务器的数据包进行很精细的控制。
- iptables是linux2.4及2.6内核中集成的服务,注意:其他内核并没有集成iptables服务
- 另外iptables主要工作在OSI七层的二三四层,也就是(mac,ip,端口)层,如果要重新编译内核,iptables也可以支持七层控制
三.iptables防火墙使用时名词概念解释
容器的概念:即为装东西的器皿,docker容器技术,将镜像装在一个系统上,这个系统就称为容器
- iptables称为一个容器:装着防火墙的表
- 防火墙的表又是一个容器:装着防火墙的链
- 防火墙的链也是一个容器:装着防火墙的规则
规则即为:防火墙一条一条的安全策略
防火墙匹配规则流程图:
具体流程为:
(1).防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的
(2).如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则
(3).如果未匹配上就一直向下进行匹配,直到匹配上为止
(4).防火墙的默认规则是所有规则执行完才执行的
防火墙四表五链说明:
四.防火墙操作实践
1.防火墙配置初试化:
/etc/init.d/iptables start/status/stop -----启动停止防火墙
chkconfig iptables on -----加入开机自启
iptables -F -----清除防火墙默认规则
iptables -X -----清除防火墙自定义链
iptables -Z -----清除防火墙技术信息
2.iptables防火墙信息查看方法:
service iptables status ------查看防火墙的状态信息
iptables -L ------ -L 以列表形式展示所有规则信息
iptables -L -n ------ -n 以数字形式显示IP地址或端口信息,不要转换为字符串显示
iptables -t nat -L -n ------ -t 表示指定查看或者配置相应的表
iptables -L -n -v ------ -v 表示显示详细规则信息,包含匹配计数器数值信息
iptables -L -n --line-number ------ --line-number 显示规则序号信息
\
3.iptables防火墙端口规则配置:
(1).阻止用户访问服务器的22端口:
首先需要清除原有的防火墙的规则:iptables -F
之后:iptables -t filter -A INPUT -p tcp --dport 22 -j DROP ---- -A表示添加规则到相应链,默认加到结尾
也可以直接:iptables -t filter -I INPUT -p tcp --dport 22 -j DROP ---- -I 表示插入规则到相应链上,默认加到首部
iptables -t filter -I INPUT 3 -p tcp --dport 22 -j DROP --- 指定规则插入位置
iptables -t filter -R INPUT 6 -p tcp --dport 8080 -j DROP --- -R 指定将配置好的规则信息进行替换
iptables -t filter -D INPUT 规则序号
总结防火墙参数信息:
- -A --- 表示将规则添加到指定链上
- -I --- 表示将规则插入到指定链上
- -D --- 表示将规则从指定链上删除
- -R --- 表示将规则信息进行修改
- -p --- 指定相应服务协议信息(tcp udp icmp all)
- --dport --- 表示指定目标端口信息
- --sport --- 表示指定源端口号信息
- -j --- 指定对相应匹配规则执行什么操作(ACCEPT DROP* REJECT)
注:这里的DROP表示静默拒绝,对方找不到原因,REJECT表示告诉对方我拒绝了你,推荐用DROP
(2).阻止相应网段主机访问服务器指定端口服务
192.168.1.0/24 -- 22端口(阻止)
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT -s 192.168.1.175 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT -i eth0 -s 10.0.0.9 -p tcp --dport 22 -j DROP
总结参数信息:
- -s --- 指定匹配的源地址网段信息,或者匹配的主机信息
- -d --- 指定匹配的目标地址网段信息,或者匹配的主机信息
- -i --- 指定匹配的进入流量接口信息 只能配置在INPUT链上
- -o --- 指定匹配的发出流量接口信息 只能配置在OUTPUT链上
(3).除了某个地址可以访问22端口之外,其余地址都不能访问
只允许192.168.1.5访问22端口,其余都不可以访问
iptables -t filter -A INPUT -s 192.168.1.5 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -t filter -A INPUT ! -s 192.168.1.5 -p tcp --dport 22 -j ACCEPT(通过利用 !进行规则取反,进行策略控制)
(4).指定阻止访问多个端口服务:
22-80,22,24,25
iptables -A INPUT -s 192.168.1.175 -p tcp --dport 22:80 -j DROP
iptables -A INPUT -s 192.168.1.175 -m multiport -p tcp --dport 22,24,25 -j DROP
总结参数信息:
-m --指定应用扩展模块参数 multiport ---可以匹配多个不连续端口信息
(5).通过防火墙实现禁ping功能
实现ping功能测试链路是否正常,基于icmp协议实现的,
icmp协议有多种类型:icmp-type 8:请求类型 icmp-type 0:回复类型
情景一:实现禁止主机访问防火墙服务器(禁ping)
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP
情景二:实现禁止防火墙访问主机服务器(禁ping)
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP
默认情况:所有icmp类型都禁止
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -m icmp --icmp-type any -j DROP
(6).实现防火墙状态机制控制
NEW: 发送数据包里面控制字段为syn=1,发送第一次握手的数据包
ESTABLISHED: 请求数据包发出之后,响应回来的数据包称为回复的包
RELATED: 基于一个连接,然后建立新的连接
INVALID: 无效的的数据包,数据包结构不符合正常要求的
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
五.企业中应用防火墙的方法
部署一个最安全的企业级防火墙案例:默认规则是不允许的状态最安全
1)保存防火墙配置文件信息
cp /etc/sysconfig/iptables{,.bak}
2)清除配置规则
iptables -F <- 清空iptables所有规则信息(清除filter)
iptables -X <- 清空iptables自定义链配置(清除filter)
iptables -Z <- 清空iptables计数器信息(清除filter)
3)别把自己踢出到门外
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT
4)配置防火墙filter上各个链的默认规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
-P ---指定相应链的默认规则策略,是允许还是阻止
5)允许iptables服务端ping自己的网卡地址
iptables -A INPUT -i lo -j ACCEPT --- 让自己可以ping自己
6)指定外网可以访问的端口信息
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
7)企业中内网之间不要配置防火墙策略
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT --- 允许架构内部服务进行访问
8)企业之间有合作关系的,不要将友商的网络禁止(主要经常改动)
iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT --- 允许一些合作企业的外网服务器进行访问
iptables -A INPUT -s 10.0.2.0/24 -j ACCEPT
9)如果防火墙上配置了FTP服务,需要配置网络状态机制
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --- 允许web服务与ftp服务器建立连接
10)实现iptables策略配置永久保存
①. 利用防火墙启动脚本命令参数,实现永久保存
/etc/init.d/iptables save
②. 利用防火墙配置信息保存命令,实现永久保存
iptables-save >/etc/sysconfig/iptables