1.课程内容
- 常见防火墙选用
硬件
开源软件:iptables (默认规则改为 INPUT DROP)
云服务器:安全组(阿里云 白名单[默认是拒绝])
- Iptables使用 执行过程
- Iptables 4表5链
filter nat mangle raw
filter : INPUT
nat : PREROUTING POSTROUTING
pre prefix xxx之前
routing route
post xxx之后
-
准备Iptables环境
-
Iptables功能之防火墙-filter
封IP 封端口
准许某个ip访问 网段访问
-
实际生产iptables配置
-
Iptables功能之内网服务器上外网(共享上网)
-
Iptables功能之端口转发
2.常见防火墙选用
1.公司网站入口使用的硬件防火墙、三层路由带有防火墙功能
2.Iptables访问量小 C5 C6 默认,CentOS 7 Firewalld(关闭 安装iptables)
3.SELinux
3. 名词(关系)与单词
名词 含义 对比
容器 存放内容/存放东西
Netfilter/iptables Netfilter/iptables是表的容器 国家
表 (table) 表是用来存放链的容器 省
链 (chain) 链存放 规则容器 市
规则 ( policy ) 准许/拒绝访问 区县具体地点
4.防火墙执行过程
1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2. 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4. 防火墙的默认规则是所有规则执行完才执行的。
5. 四表五链
- 5.1 整体说明 4表及作用
表 功能
Filter 过滤,默认的表,防火墙功能
NAT 实现NAT转化:1.共享上网 2.端口转发
mangle 熟悉名字即可
raw 熟悉名字即可
参考查询帮助: man iptables
-
5.2 4表中的5链
image.png
- 5.2.1 filter表
filter表 企业工作场景:主机防火墙
INPUT 就是过滤进入主机的数据包
FORWARD 负责转发流经主机的数据包。
OUTPUT 就是处理从主机发出去的数据包
- 5.2.2 nat表
PREROUTING 处理用户请求中的目的地址 目的端口 端口转发 ip映射
POSTROUTING 处理离开服务器的请求 源端口 源ip :共享上网
OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的目的地址。
- 5.2.3 Mangle表
主要负责修改数据包中特殊的路由标记,如TTL,TOS,MARK等,这个表定义了5个链
(chains):
6. 防火墙之filter表
- 6.1 环境准备
m01 iptables
db01
yum install iptables iptables-services
[root@m01 ~]# rpm -qa iptables-services
iptables-services-1.4.21-28.el7.x86_64
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #iptables 配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service #iptables服务管理配置
启动防火墙:
1 systemctl start iptables.service
2 systemctl enable iptables.service
检查防火墙内核模块是否加载成功:
[root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
ipt_REJECT 12541 2
nf_reject_ipv4 13373 1 ipt_REJECT
iptable_filter 12810 1
xt_nat 12681 1
iptable_nat 12875 1
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26787 2 nf_nat_ipv4,xt_nat
nf_conntrack 133095 4
nf_nat,nf_nat_ipv4,xt_conntrack,nf_conntrack_ipv4
ip_tables 27126 2 iptable_filter,iptable_nat
libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
手动加载内核模块:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
- 6.2 配置规则-禁止访问22端口
[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
[root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
配置防火墙规则注意事项:
1. 去机房重启系统或者登陆服务器删除刚才的禁止规则。
2. 让机房人员重启服务器或者让机房人员拿用户密码登录进去
3. 通过服务器的远程管理卡管理(推荐)
4. 先写一个定时任务,每5分钟就停止防火墙
5. 测试环境测试好,写成脚本,批量执行
- 6.3 iptables 命令及参数
iptables
-t 指定表 filter(默认) nat
-A append 把规则追加到末尾
-I (大写字母I) insert 把规则插入到规则的第1条 (添加拒绝类规则的时候)
-p protocal 指定协议:tcp /udp/icmp
--dport destination port 目标端口
--sport source port 源端口
-d dest ip address 目标ip地址
-s source ip address 源ip地址
-i input数据进来的时候通过的网卡
-j jump 方法 DROP(拒绝) ACCEPT(准许) REJECT(拒绝)的
iptables查看 删除
-F 清除链中所有的规则
-X 清空自定义链的规则
-Z 清空计数器
-n 不要把端口解析服务名字
-L 显示表中的规则
--line-number 给每个链中的规则加上行号
-D 删除规则 根据规则的号码进行删除 -D INPUT 2
image.png
- 6.4 filter表其他规则配置
6.4.1 只让10.0.0.0/24网段进行访问
只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT
此例子主要限制:网段或ip地址
[root@m01 ~]# iptables -I INPUT -p tcp ! -s 10.0.0.0/24 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
- 6.4.2 准许或禁止端口
多个端口:表示范围 1-1024范围
[root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp
dpts:!1:1024
DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
nc用法:
nc -l 指定监听端口
nc/telnet 连接
nc 服务端:
[root@m01 ~]# nc -l 99 >/tmp/new.txt
[root@m01 ~]# cat /tmp/new.txt
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
nc客户端
[root@m01 ~]# cat /etc/hostname |nc 10.0.0.61 99
多个端口 不连续 80,433,52113,22
-m multiport 指定多个端口
[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -
j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport
dports !80,443,22
DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
网友评论