架构展望
https://www.processon.com/view/link/5d19b17be4b0beaf6b9feff8
非常详细的iptable原理
http://www.zsythink.net/archives/1199/
1.常见防火墙选用
硬件防火墙
开源软件:iptables(默认规则改为INPUT DROP)
云服务器:安全组(阿里云 白名单,默认是拒绝的)
2.iptables使用 执行过程
3.iptables 4表5链
4.准备iptables环境
5.iptables功能之一防火墙
封IP 封端口
准许某个ip访问 网段访问
6.iptables功能之内网服务器上外网(共享上网)
7.iptables功能之 端口转发
2.常见防火墙选用
- 公司网站入口使用的硬件 防火墙 、三次路由带有防火墙功能
- itpables访问量小 C5 C6自带,CentOS 7为Firewalld
SELinux
3.相关名词与单词
名词 | 含义 | 对比 |
---|---|---|
容器 | 存放内容/存放东西 | |
Netfilter/iptables | 是表的容器 | 国家 |
表(table) | 表是用来存放链的容器 | 省 |
链(chain) | 链 存放规则的容器 | 市 |
规则(policy) | 准许/拒绝访问 | 区/县 |
4.防火墙执行过程
- 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
- 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
- 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
- 防火墙的默认规则是所有规则执行完才执行的。
5.四表五链
5.1 四表及作用
表 | 功能 |
---|---|
Filter | 过滤,默认的表,防火墙功能 |
NAT | 实现NAT转化:1.共享上网 2.端口转发 |
mangle | 查询帮助man iptables 了解即可 |
raw | 查询帮助man iptables 了解即可 |
5.2 四表中的5链
五链:
PREROUTING
FORWARD
INPUT
OUPUT
POSTROUTING
5.3 filter表和nat表
5.3.1 filter表
filter表 | 企业工作场景:主机防火墙 |
---|---|
INPUT | 就是过滤进入主机的数据包 |
FORWARD | 负责转发流经主机的数据包 |
OUTPUT | 就是处理从主机发出去的数据包 |
5.3.2 nat表
nat表 | |
---|---|
PREROUTING | 处理用户请求中的目的地址 目的端口 端口转发 ip映射 |
POSTROUTING | 处理离开服务器的请求 源端口 源ip :共享上网 |
OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址 |
补充:
6.防火墙之filter表
6.1环境准备
[root@m01 ~]# rpm -qa iptables-services
iptables-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服务管理配置
[root@m01 ~]# modprobe ip_tables
[root@m01 ~]# modprobe iptable_filter
[root@m01 ~]# modprobe iptable_nat
[root@m01 ~]# modprobe ip_conntrack
[root@m01 ~]# modprobe ip_conntrack_ftp
[root@m01 ~]# modprobe ip_nat_ftp
[root@m01 ~]# modprobe ipt_state
6.2 配置规则-禁止访问22端口
Type `help' to learn how to use Xshell prompt.
[d:\~]$
Connecting to 10.0.0.61:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Tue Jul 2 17:04:55 2019
[root@m01 ~]#
6.3 filter表其他规则配置
6.3.1 只让10.0.0.0/24网段进行访问连接
[root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP #"!" 叹号表示取反
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
6.3.2准许或禁止端口
[root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:!1:1024
2 DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443,22
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
6.4 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地址 |
-j | jump 方法 DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝) |
iptables查看 删除 | ||
---|---|---|
-F | 清除链中所有规则 | |
-X | 清空自定义链的规则 | |
-Z | 清空计数器 | |
-n | 不要把端口解析服务名字 | |
-L | 显示表中的规则 | |
--line-number | 给每个链中的规则加上行号 | |
-D | 删除规则 根据规则的号码进行删除 |
7. nc命令
[root@m01 ~]# nc -l 888 #m01服务器上
爱你哦
晚上好
你也好
[root@db01 ~]# nc 10.0.0.61 888 #db01服务器上
爱你哦
晚上好
你也好
8.练习题
https://www.jianshu.com/p/2180face8381