文章目录
- 规则链的分类--五链
- 处理的动作
- 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
systemctl stop firewalld
systemctl disable firewalld
- 查看规则链
iptables -L
- 清空规则链
iptables -F
其实刚开始在没有配置规则的使用,查看规则链的时候就是空的
- 设置默认规则 ,将流入的流量丢掉
iptables -P INPUT DROP
命令回车 之后会发现,输入任何命令已经没有反应了
因为我是通过SSH
连接到Centos7
系统的,流量属于流入的流量,通过iptables -P INPUT DROP
命令将流入的流量全部都禁掉了,所以就不能SSH连接了
主机使用ping
命令也会ping不通centos
- 允许icmp协议流量通过
iptables -I INPUT -p icmp -j ACCEPT
再次测试网络连通性就 可以通了
虽然能ping通,但是ssh还是连接不上 ,因为没有设置允许tcp协议(ssh协议用的是tcp协议) 流量通过
- 可以显示规则的行数
iptables -nL --line-numbers
- 删除刚才的默认策略
iptables -D INPUT 1
- 允许所有流量通过
iptables -P INPUT ACCEPT
现在SSH
就能 连接成功了
- 所有进来的22端口的TCP流量都给拒绝
iptables -A INPUT -p tcp --dport 22 -j REJECT
命令回车后,ssh
就不能连接了,已经被拒绝了
查看一个规则
- 允许192.168.80.0网段的22端口通过
iptables -I INPUT -s 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT
匹配规则:从上往下
- 设置某个端口流量全部拒绝 (UDP、TCP)
iptables -I INPUT -p tcp --dport 80 -j REJECT
iptables -I INPUT -p udp --dport 80 -j REJECT
- 在input链中添加某个IP拒绝访问某个端口
iptables -I INPUT -p tcp -s 192.168.80.1 --dport 8080 -j REJECT
这里不能直接写真实机的地址,应该写VMnet8
的地址,这样才能限制住真实机的访问
Centos开启8080
端口服务
python3 -m http.server 8080
kali可以访问到
真实机就访问不到了
- 清空所有策略
iptables -F
- 禁用某一段端口
iptables -A INPUT -p tcp --dport 8000:9000 -j REJECT
- 保存规则
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