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 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

linux中怎么查看mysql数据库版本

Linux下单机安装部署kafka及代码实现

Linux中iptables防火墙指定端口范围

-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段