Linux之iptables的解析与基本用法

在这里插入图片描述
网络世界总是很危险,你直接把服务器放至到网络世界,没有加防火墙之类的防护措施,就超级不安全,容易受到攻击。
所以我们需要对防火墙进行配置,进行配置之前也需要了解一些防火墙知识。
首先需要知道iptables并非真正的防火墙,而是用来定义防火墙规则的管理工具,它会将定义好的规则交由内核中的netfilter即网络过滤来读取,从而实现防火墙功能。定义问题,按我理解还是可以把iptables当作保护服务器的外壳

iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链,叫规则链。规则链则依据处理数据包的位置不同分类:

PREROUTING: 在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包 POSTROUTING:
在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)

iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,当规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。

规则表也分为以下:

raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记(较少使用)
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)/最常用

规则链的先后顺序:
入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING

iptables命令中则常见的动作有:

ACCEPT:允许通过.
LOG:记录日志信息,然后传给下一条规则继续匹配.
REJECT:拒绝通过,必要时会给出提示.
DROP:直接丢弃,不给出任何回应

注意:命令配置中若没有指定那张表,一般默认为filter表;不指定规则链则指表内所有的规则链;过滤数据包的过程中会在规则链中匹配规则,它是从第一条开始匹配,会依次匹配,匹配到即停止(LOG规则例外),若没匹配项则按链的默认状态处理
iptables的用法解析

参数 作用
-P 设置默认策略.如:iptables -P INPUT (DROP
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I 链名 num 在规则链的前头或者在指定的链编号前加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外
-d 匹配目标地址
-i eth0 匹配从eth0流入的数据
-0 eth0 匹配从eth0流出的数据
-p 匹配协议,如tcp,udp,icmp
–dport num 匹配目标端口号
–sport num 匹配源端口号

具体命令显示
查看iptables服务规则配置
在这里插入图片描述
我进行开放了80,53,20,21…….等等端口,并且预设规则动作是INPUT链是DROP,OUTPUT链是ACCEPT,FORWARD链是DROP。
清除原有规则
在这里插入图片描述
然后需要保存配置才可以生效,不然重启之后又会复原的
在这里插入图片描述
保存配置之后也要记得重启让配置生效
现在iptables什么规则都没有了,需要进行手动开始配置了
①设定预设规则
在这里插入图片描述
建议三条链都预设DROP,因为这样比较安全
服务器现在都是默认拒绝连接的,所以需要进行一些规则的配置才可以让服务器正常运行
②针对服务需求开启端口
一:接受与响应ICMP包,因为我是个人虚拟机上做实验的,为了方便我会开放这个功能,如果你是在公司业务,看个人需求开不开
在这里插入图片描述
二:开启SSH服务,它开启端口是22端口
在这里插入图片描述
三:开启web服务,开启端口为80
在这里插入图片描述
四:开启ftp服务,开启端口为20,21
在这里插入图片描述
因为ftp服务是比较特殊的,它还有一些端口是 数据传输端口,例如目录列表,上传,下载文件都要用到这些端口
这时需要修改一下ftp配置文件/etc/vsftpd/vsftpd.conf
在这里插入图片描述
这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送
修改配置,要重启vsftpd服务使其生效
在这里插入图片描述
然后添加防火墙规则,打开30001至31000端口
在这里插入图片描述
在这里插入图片描述
五:开启DNS解析服务,端口为53,且使用的是udp协议
在这里插入图片描述
六:开启邮件服务,端口为25,110端口
在这里插入图片描述
七:一些细节配置
目标来自 192.168.2.200 这个 IP 的封包都予以接受
在这里插入图片描述
只准192.168.2.100连接ssh服务

iptables -A INPUT -s 192.168.2.100 -p tcp --dport 22 -j ACCEPT

iptables –A OUTPUT –s 192.168.2.100 –p –tcp –sport 22 –j ACCEPT

若在IP前面加上“!”,即是只不准192.168.2.100连接ssh服务
删除某条规则
在这里插入图片描述
这样也可以查看规则,并按照上述规则进行删除
在这里插入图片描述
但又一个简单的方法使用iptables –nL –line-n (n指定number)可以查看命令的编号,并进行编号删除,比较简单
在这里插入图片描述
在这里插入图片描述
指定链名和编号即可进行删除

关于FORWARD链和其他规则表我并没有涉及,等我下次有空再补充

猜你喜欢

转载自blog.csdn.net/weixin_42022374/article/details/89002977