防火墙相关概念
防火墙分类
从逻辑上讲,防火墙分为主机防火墙和网络防火墙:
- 主机防火墙:针对单个主机进行防护
- 网络防火墙:一般位于网络的边缘,对区域内的主机进行防护
主机防火墙和网络防火墙并不冲突,一个主内,一个主外
从物理上讲,防火墙分为硬件防火墙和软件防火墙:
- 硬件防火墙:通过硬件实现防火墙的功能。
- 优点:性能高
- 缺点:价格贵
- 软件防火墙:通过软件处理逻辑实现防火墙的功能。
- 优点:价格低
- 缺点:性能低
规则:匹配条件+动作
匹配条件:基本匹配条件和扩展匹配条件
- 基本匹配条件:
- 源目IP
- 扩展匹配条件:除了基本匹配条件还有扩展匹配条件,它也是netfilter中的一部分,只是以模块的形式存在。如果需要使用这些扩展条件,则需要依赖对应的扩展模块。
- 源目端口
动作:处理动作在iptables中被称为target,动作也分为基本动作和扩展动作,下面仅列出常用的动作:
- ACCEPT
- DROP
- REJECT
- SNAT
- MASQUERADE
- DNAT
- REDIRECT
- LOG
查看规则命令
iptables -Liptables -t filter -Liptables -t filter -L INPUTiptables -L INPUTiptables -vL INPUTiptables -nvL INPUTiptables --line-number -nvL INPUT
默认规则在如何查看
配置规则:CRUD
添加规则
注意:添加规则时,规则的顺序很重要
在指定表的指定链的尾部添加
语法:iptables -t 表名 -A 链名 匹配动作 -j 动作
iptables -t filter -A INPUT -s 172.16.126.13 -j DROP
在指定表的指定链的首部添加
语法:iptables -t 表名 -I 链名 匹配动作 -j 动作
iptables -t filter -I INPUT -s 172.16.126.13 -j DROP
在指定表的指定链的任意位置添加
语法:iptables -t 表名 -I 链名 规则序号 匹配动作 -j 动作
iptables -t filter -I INPUT -s 172.16.126.13 -j DROP
设置指定表的指定链的默认动作
语法:iptables -t 表名 -P 链名 动作
iptables -t filter -P FORWARD DROP
删除规则
注意如果没有保存规则,删除规则慎重使用
根据规则序号删除规则
语法:iptables -t filter -D 链名 规则序号
iptables -t filter -D INPUT 1
表示删除filter表中INPUT链中序号为1的规则
根据规则的匹配条件与处理动作进行删除规则
语法:iptables -t filter -D INPUT 匹配条件 -j 处理动作
iptables -t filter -D INPUT -s 172.16.126.13 -j DROP
表示删除filter表中INPUT链中源地址为172.16.126.13并且处理动作为DROP的规则
删除指定表的指定链的所有规则
语法 :iptables -t 表名 -F 链名
iptables -t filter -F INPUT
表示删除filter表中的INPUT链中的所有规则
删除指定表中的所有规则
语法:iptables -t 表名 -F
iptables -t filter -F
表示删除filter表中所有链中的所有规则
修改规则
主要有2种方式:
-R选项只能修改动作,而且使用-R时需要同时指定规则中的链和及规则对应的序号,且规则中原匹配条件不能省略。否则修改后规则的匹配条件可能会变成0.0.0.0/0.
语法:iptables -t 表名 -R 链名 规则序号 匹配条件 -j 动作
iptables -t filter -R INPUT 3 -s 172.16.126.13 -j DROP
表示:修改filter表中INPUT链的第3条规则,将动作修改为DROP,修改动作时,-s 172.16.126.13这条原匹配规则不能省略。
先通过序号删除指定规则,再在原序号处添加指定规则
注意如果要修改规则
保存规则
将iptables规则保存到/etc/sysconfig/iptables文件中:
service iptables save
#配置好yum源以后安装iptables-service
yum install -y iptables-services
#停止firewalld
systemctl stop firewalld
#禁止firewalld自动启动
systemctl disable firewalld
#启动iptables
systemctl start iptables
#将iptables设置为开机自动启动,以后即可通过iptables-service控制iptables服务
systemctl enable iptables