包过滤防火墙——iptables静态防火墙的简单使用

防火墙就是堵和通的作用

iptables :包过滤防火墙,是内核防火墙netfilter的管理工具

核心:四表五链

规则链的分类–五链

在进行路由选择前处理的数据包:PREROUTING

处理流入的数据包:INPUT

处理流出的数据包:OUTPUT

处理转发的数据包:FORWARD

在进行路由选择后处理的数据包:POSTROUTING

处理的动作

ACCEPT:允许流量通过

REJECT:拒绝流量通过 (流量拒绝会通知,会返回流量拒绝信息)

LOG:记录日志信息

DROP:拒绝流量通过,丢弃 (直接把流量丢弃,不会返回任何值)

iptables常用参数和作用

参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新的规则
-l num 在规则链的头部加入新的规则
-D num 在规则链中删除某一条规则链
-s 匹配来源的ip/MASK
-d 匹配目标地址
-i 网卡名称 匹配这块网卡流入的数据
-o 网卡名称 匹配这块网卡流出的数据
-p 匹配协议,例如:TCP、UDP、ICMP
–dport num 匹配目标端口号
–sport num 匹配来源端口号

以Centos7和Kali为例

Centos——IP地址:192.168.80.131

Kali————IP地址:192.168.80.141

先停止、禁用firewalld

1
2
systemctl stop firewalld
systemctl disable firewalld
  • ==查看规则链==
1
iptables -L

在这里插入图片描述

  • ==清空规则链==
1
iptables -F

其实刚开始在没有配置规则的使用,查看规则链的时候就是空的

  • ==设置默认规则 ,将流入的流量丢掉==
1
iptables -P INPUT DROP

image-20230902173734183

命令回车 之后会发现,输入任何命令已经没有反应了

因为我是通过SSH连接到Centos7系统的,流量属于流入的流量,通过iptables -P INPUT DROP命令将流入的流量全部都禁掉了,所以就不能SSH连接了

主机使用ping命令也会ping不通centos

image-20230902174220184

  • ==允许icmp协议流量通过==
1
iptables -I INPUT -p icmp -j ACCEPT

image-20230902180051540

再次测试网络连通性就 可以通了

image-20230902175255098

虽然能ping通,但是ssh还是连接不上 ,因为没有设置允许tcp协议(ssh协议用的是tcp协议) 流量通过

  • ==可以显示规则的行数==
1
iptables -nL --line-numbers
  • ==删除刚才的默认策略==
1
iptables -D INPUT 1

image-20230902180227773

  • ==允许所有流量通过==
1
iptables -P INPUT ACCEPT

image-20230902180424300

现在SSH就能 连接成功了

image-20230902180605329

  • ==所有进来的22端口的TCP流量都给拒绝==
1
iptables -A INPUT -p tcp --dport 22 -j REJECT

命令回车后,ssh就不能连接了,已经被拒绝了

image-20230902181045147

查看一个规则

image-20230902181347523

  • ==允许192.168.80.0网段的22端口通过==
1
iptables -I INPUT -s 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT

image-20230902182919230

==匹配规则:从上往下==


  • ==设置某个端口流量全部拒绝== (UDP、TCP)
1
2
iptables -I INPUT -p tcp --dport 80 -j REJECT
iptables -I INPUT -p udp --dport 80 -j REJECT
  • ==在input链中添加某个IP拒绝访问某个端口==
1
iptables -I INPUT -p tcp -s 192.168.80.1 --dport 8080 -j REJECT

这里不能直接写真实机的地址,应该写VMnet8的地址,这样才能限制住真实机的访问

image-20230902190144279

Centos开启8080端口服务

1
python3 -m http.server 8080

image-20230902190340997

kali可以访问到

image-20230902184716297

真实机就访问不到了

image-20230902190031690

  • ==清空所有策略==
1
iptables -F

image-20230902190449942

  • ==禁用某一段端口==
1
iptables -A INPUT -p tcp --dport 8000:9000 -j REJECT
  • ==保存规则==
1
2
iptables-save
iptables-save > 1.txt

https://www.cnblogs.com/ip99/p/15313691.html
https://www.cnblogs.com/machangwei-8/p/15978257.html
https://blog.csdn.net/u014644574/article/details/130071097