netfilter
位于Linux内核中的包过滤功能体系,基于内核控制,实现防火墙的相关策略
iptables
位于/sbin/iptables,用来管理防火墙规则的工具
iptables默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
iptables默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪 (kernel 2.6)
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口(网络地址转换)
filter表:确定是否放行该数据包(过滤)
表与链的关联:
raw:prerouting链 output链
mangle:prerouting链 input链 forward链 output链 postrouting链
nat:prerouting链 output链 postrouting链
filter:input链 forward链 output链
语法构成
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
iptables -L --line-number
iptables -I INPUT 2 -p udp -j ACCEPT
几个注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
启用iptables的方法
首先需要安装iptables的服务包
yum install iptables-services
因为RHEL7默认使用防火墙工具为firewalld,所以需要关闭firewalld才能开启iptables
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭firewalld后打开iptables
systemctl start iptables.service
systemctl enable iptables.service
systemctl start ip6tables.service
systemctl enable ip6tables.service
查看iptables状态
systemctl status iptables.service
确认firewalld关闭
systemctl status firewalld.service
iptables规则管理
添加新的规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
查看规则列表
-L:列出所有的规则条目
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号
删除、清空规则
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
-X:清空缓存信息
iptables -t filter -X
iptables管理
-P:为指定的链设置默认规则(ACCEPT/DROP)
iptables设置规则增加或删除时,测试会生效
永久配置生效的方法需要通过
service iptables save
将防火墙的规则保存到配置文件 /etc/sysconfig/iptables(重启或开机默认加载的防火墙规则文件)
加载防火墙配置文件默认规则的方法:
systemctl restart iptables.service
虚拟机的克隆:
带链接的克隆:占用空间比较小,但是开启的时需保证被克隆的主机是运行状态
完整克隆:跟被克隆虚拟机完全一致,需要开机后修改MAC地址,IP地址
安装好之后,常用软件为
yum -y install vim net-tools wget lrzsz curl telnet tcpdump tree
yum groupinstall -y "Development Tools"