Linux防火墙
Posted 还行少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux防火墙相关的知识,希望对你有一定的参考价值。
文章目录
一、Linux防火墙基础
1.iptables的表、链结构
1.1 规则表
表的作用 : 容纳各种规则链
表的划分依据 : 防火墙规则的作用相似
默认包括四个表
- raw表:对数据包进行状态追踪–数据从内网访问外网可以访问,外网访问内网也可以是因为数据出去时- 有标记,回来能查到标记,能追踪到标记
- mangle表:为数据包打标机----打标记,通过raw表追踪
- nat表:修改数据包中的源和目标IP地址或端口,做映射—比如snat和dnat中,nat的转换
- filter表(默认表):确定是否放行该数据包(过滤)–核心
1.2 规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
默认包括5种规则链
- INPUT:处理入站数据包
- OUTPUT:处理出站数据包
- FORWARD:处理转发数据包
- POSTROUTING:路由选择后处理数据包
- PREROUTING:路由选择前处理数据包
2.数据包控制的匹配流程
2.1 规则表之间的顺序
- raw ----> mangle ----> nat ----> filter
2.2 规则链之间的顺序
入站:PREROUTING ---->> INPUT
出站:OUTPUT —>> POSTROUTING
转发:PREROUTING —>> FORWARD---->> POSTROUTING
2.3 规则链内的匹配顺序
- 按顺序依次检查,匹配即停止(LOG策略例外)
- 若找不到相匹配的规则,则按该链的默认策略处理
二、编写防火墙规则
1 语法构成
iptables -t 表名 选项 链名 条件 -j 控制类型
iptables -t filter -I INPUT -p icmp -j REJECT
不指明表名时,默认指filter表
不指明链名时,默认表内所有链
注意大小写
2 控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给任何回应
REJECT:拒绝通过,必要时会给提示
LOG:记录日志信息,然后传给下条规则继续匹配
3 管理选项
添加新规则:
-A 在链末尾追加规则
-I 在链的开头插入规则
或者:-2 在第二条插入
-3 在第三条
查看规则列表
-L 列出所有规则列表
-n 以数字形式显示地址,端口等信息
-v 详细信息显示规则
–line-numbers 显示规则序号
示例: iptables -L
iptables -n
删除,清空规则
-D 删除链内指定序号或内容的一条规则
-F 清空所有规则
例如: iptables -D OUTPUT 5
iptables -F 清空的是默认的表,也就是filter表
iptables -t nat -F 清空nat表
设置默认策略
-P
匹配规则条件
-p 协议名
-s 源地址
-d 目标地址
-i 入站网卡
-o 出站网卡
隐含匹配条件
端口匹配: --sport源端口 --dport目标
icmp类型匹配:–icmp-type
示例:iptables -A INPUT -s 192.168.10.10 -p udp --dport 53 -j DROP
iptables -A INPUT -p tcp --dport 20:21 -j DROP
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
多个端口匹配条件
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目标
ip范围匹配:-m iprange --src-range ip范围
mac地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
4 示例
4.1 查看规则列表
[root@localhost ~]# iptables -L
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@localhost ~]#
4.2 允许本机ping别的主机但是不允许别的主机ping本机
4.3 清空规则表
4.4 禁止ping这些主机
[root@localhost ~]# iptables -A OUTPUT -p icmp -m iprange --dst-range 192.168.30.1-192.168.30.254 -j DROP
[root@localhost ~]# ping 192.168.30.254
PING 192.168.30.254 (192.168.30.254) 56(84) bytes of data.
ping: sendmsg: 不允许的操作
ping: sendmsg: 不允许的操作
^C
--- 192.168.30.254 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1001ms
[root@localhost ~]# ping 192.168.30.2
PING 192.168.30.2 (192.168.30.2) 56(84) bytes of data.
ping: sendmsg: 不允许的操作
^C
--- 192.168.30.2 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[root@localhost ~]#
4.5 禁止此主机访问这些连续端口
以上是关于Linux防火墙的主要内容,如果未能解决你的问题,请参考以下文章
linux打开终端如何启动scala,如何在终端下运行Scala代码片段?
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段