1. 防火墙种类及使用说明
(1)硬件
三层路由:华为、H3C(华三)
深信服
(2)软件
iptables(默认规则为拒绝)
firewalld(默认规则为拒绝)
(3)云防火墙
阿里云:安全组(默认的是白名单、防火墙默认规则是拒绝)
2. 必须熟悉的名词
容器: 瓶子 罐子 存放东西
表(table): 存放链的容器
链(chain): 存放规则的容器
规则(policy): 准许或拒绝规则 ACCPT DROP
Netfilter(iptalbes) | 表(tables) | 链(chains) | 规则(Policy) |
---|---|---|---|
一栋楼 | 楼里的房子 | 房子里的柜子 | 柜子里衣服,摆放规则 |
3. iptables 执行过程(重点)
(1) 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
(2) 如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则 。
(3) 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,继续向下进行匹配,直到匹配默认规则得到明
确的阻止还是通过,在工作中,默认规则一般为拒绝。
(4) 防火墙的默认规则是所有规则执行完才执行的。
4. 表与链
防火墙的4表伍链
表:
filter表(默认,实现防火墙功能是准许或是拒绝)
nat表,如下:
- 内网服务器上外网(共享上网)
- 端口映射
mangle表
raw表
4.1 filter表
4.2 nat表
4.3 表五链流程
5. iptabes环境准备
(1)安装iptables-services
[root@m01 ~]# yum -y install iptables-services
(2)相关文件介绍
[root@m01 ~]# rpm -ql iptables
/usr/sbin/iptables #iptables管理命令,添加规则,删除规则等。
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #防火墙的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service #防火墙服务配置文件(命令)
(3)防火墙相关模块 加载到内核中
加载防火墙的内核模块
临时生效:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
永久生效:
[root@m01 ~]# vim /etc/rc.local
……省略部分内容
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
检查配置情况:
[root@m01 ~]# lsmod |egrep 'filter|nat|ipt'
nf_nat_ftp 12770 0
nf_conntrack_ftp 18638 1 nf_nat_ftp
iptable_nat 12875 0
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26787 2 nf_nat_ftp,nf_nat_ipv4
nf_conntrack 133053 6
nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
iptable_filter 12810 0
ip_tables 27126 2 iptable_filter,iptable_nat
libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
(4)关闭原来的firewalld
[root@m01 ~]# systemctl stop firewalld
[root@m01 ~]# systemctl disable firewalld
[root@m01 ~]# systemctl is-enabled firewalld.service
disabled
[root@m01 ~]# systemctl is-active firewalld.service
unknown
(5)启动iptables
[root@m01 ~]# systemctl start iptables
[root@m01 ~]# systemctl enable iptables
6. iptables命令使用
[root@m01 ~]# iptables -nL 参数顺序不能反,只能是nL
-n:以ip形式显示默认的域名
-L:列表
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
7. iptables命令参数
8. 配置filter表规则
[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
9. 案例练习
添加规则,禁止访问22端口
[root@m01 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
恢复22端口访问,删除规则