第十四周-day55-iptables防火墙(上)

day55-iptables防火墙.png


期末架构展望
https://www.processon.com/view/link/5d19b17be4b0beaf6b9feff8


iptables防火墙必会面试题:https://www.cnblogs.com/wajika/p/6382853.html

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.防火墙执行过程

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下从前到后进行过滤的。
  2. 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则是所有规则执行完才执行的。


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表

image.png

5.3.1 filter表
filter表企业工作场景:主机防火墙
INPUT就是过滤进入主机的数据包
FORWARD负责转发流经主机的数据包
OUTPUT就是处理从主机发出去的数据包
5.3.2 nat表
nat表
PREROUTING处理用户请求中的目的地址 目的端口 端口转发 ip映射
POSTROUTING处理离开服务器的请求 源端口 源ip :共享上网
OUTPUT和主机放出去的数据包有关,改变主机发出数据包的目的地址

补充:

filter表:
​​INPUT 作用:用于发送到本地套接字的数据包。
​FORWARD 作用:对于正在通过该框路由的数据包
​OUTPUT 作用:用于本地生成的数据包。

nat表:
​PREROUTING 作用:因为他们一进来就改变了包
​OUTPUT 作用:用于在路由之前更改本地划分的数据包。
​POSTROUTING 作用:改变包,因为它们即将离开

6.防火墙之filter表

6.1环境准备

m01 iptables iptables-services
db01 iptables iptables-services
[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 ~]# systemctl stop firewalld	#CentOS7关闭firewalld
[root@m01 ~]# systemctl restart iptables
[root@m01 ~]# systemctl enable 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

检查防火墙内核模块是否加载成功:

[root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
nf_nat_ftp             12770  0 
nf_conntrack_ftp       18638  1 nf_nat_ftp
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
ipt_MASQUERADE         12678  1 
nf_nat_masquerade_ipv4    13412  1 ipt_MASQUERADE
iptable_filter         12810  1 
xt_nat                 12681  2 
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26787  4 nf_nat_ftp,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4
nf_conntrack          133095  8 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
ip_tables              27126  2 iptable_filter,iptable_nat
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack

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 ~]# #添加一条规则,禁止22端口访问
[root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
[root@m01 ~]# 
Type `help' to learn how to use Xshell prompt.
[d:\~]$ 	#断开了~跑下机房
删除规则,重新连接m01
[root@m01 ~]# iptables -nL --line-number #查看防火墙规则
[root@m01 ~]# iptables -t filter -D INPUT 1	#删除第1条规则
[root@m01 ~]# iptables -nL --line-number #再次查看

image.png

重新连接 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 ~]# 
配置防火墙规则注意事项:
  1. 去机房重启系统或者登陆服务器删除刚才的禁止规则。

  2. 让机房人员重启服务器或者让机房人员拿用户密码登录进去

  3. 通过服务器的远程管理卡管理(推荐)

  4. 先写一个定时任务,每5分钟就停止防火墙**5. 测试环境测试好,写成脚本,批量执行

6.3 filter表其他规则配置

6.3.1 只让10.0.0.0/24网段进行访问连接

只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT

此例子主要限制:网段或ip地址

[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      

去另一台服务器上测试一下是否成功:

[root@db01 ~]# ssh 10.0.0.61	#连接10.0.0.61,可以连接
root@10.0.0.61's password: 
Last login: Tue Jul  2 17:41:01 2019 from 10.0.0.51
[root@m01 ~]# logout	#退出
Connection to 10.0.0.61 closed.
[root@db01 ~]# ssh 172.16.1.61	#连接172.16.1.61,不可以连接
....等到死

image.png

6.3.2准许或禁止端口

多个端口:表示范围 1-1024范围

[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  

多个端口 不连续 80,443,52113,22

[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
-Aappend 把规则追加到末尾
-I (大写字母i )insert 把规则插入到规则的第1条 (添加拒绝类规则的时候)
-pprotocal 指定协议:tcp /udp/icmp
–dportdestination port 目标端口
–sportsource port 源端口
-ddest ip address 目标ip地址
-ssource ip address 源ip地址
-jjump 方法 DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝)
iptables查看 删除
-F清除链中所有规则
-X清空自定义链的规则
-Z清空计数器
-n不要把端口解析服务名字
-L显示表中的规则
–line-number给每个链中的规则加上行号
-D删除规则 根据规则的号码进行删除

7. nc命令

nc用法:

nc -l 指定监听端口

nc/telnet 连接

[root@m01 ~]# nc -l 888	#m01服务器上
爱你哦
晚上好
你也好

[root@db01 ~]# nc 10.0.0.61 888	#db01服务器上
爱你哦
晚上好
你也好

8.练习题

https://www.jianshu.com/p/2180face8381

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值