通过iptables为Linux服务器配置动态防火墙

Linux iptalbes 初级用法

操作系统Centos6.10
为方便操作,请切换root用户
警告:以下命令请勿直接在生产环境操作,仅供技术参考!!!

  • 背景知识
  • 防火墙打开、关闭、查看、重启、保存当前状态
  • 命令参数释义
  • 实例

背景知识

Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的。可以定义不同的表(通常只用到默认表filter),每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。--来自《百度百科》
1.如果数据包的目的地址是本机,则系统将数据包送往Input链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
2.如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往forward链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
3.如果数据包是由本地系统进程产生的,则系统将其送往output链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
制定规则的时候有个原则就是 放行的要先放在前面, 禁止的要放在最后.

防火墙服务打开、关闭、查看、重启、保存当前状态

  • service iptables start —打开
  • service iptables stop —关闭
  • service iptables status —查看当前状态
  • service iptables restart —重启
  • service iptables save —保存

命令参数释义

-t   table        指定处理的表名
-P   policy     设置链拉目标规则
-A append    在所选择的链末添加一条或更多规则
-D delete      从所选链中删除一条或更多规则。
-L  list           显示所选链的所有规则。如果没有选择链,所有链将被显示。
-F  flush        清空所选链。这等于把所有规则一个个的删除。
-p -protocal [!]protocol   指定规则对应的协议, 选项可以是tcp、udp、icmp或者0,0代表这三个全部。
-s --source [!] address[/mask]  指定源地址,可以是主机名、网络名和清楚的IP地址。
-d --destination [!] address[/mask]  指定目标地址
-j jump  目标跳转

实例

说明:以下规则默认使用iptables的默认表filter
step 0:查看所有表规则
iptables -L -n
第一
step 1:清空表规则
iptables -F 所有链的规则
在这里插入图片描述
step 2: 设置链的目标(默认情况下,此步骤可直接跳过)
iptables -P INPUT DROP
释义:在iptables的filter表的INPUT链上设置DROP目标
功能:所有经过INPUT入站的数据将全部被丢弃
iptables -P OUTPUT ACCEPT
释义:在iptables的filter表的OUTPUT链上设置ACCEPT目标
功能:所有经过INPUT入站的数据将全部被接受
iptables -P FORWARD DROP
释义:在iptables的filter表的FORWARD链上设置DROP目标
功能:所有经过FORWARD入站的数据将全部被丢弃
step 3: 添加入站规则(对应的,可添加DROP目标)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
释义:在iptables的filter表的INPUT链上设置针对tcp协议的22端口的ACCEPT目标
功能:允许任意外部主机的tcp类型数据包经由22端口入站
iptables -A INPUT -p tcp --dport 6379:6388 -j ACCEPT
释义:在iptables的filter表的INPUT链上设置针对tcp协议的从6379到6388范围内端口的ACCEPT目标
功能:允许任意外部主机的tcp类型数据包经由从6379到6388范围内的端口入站
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
释义:在iptables的filter表的INPUT链上设置针对tcp协议的22端口的ACCEPT目标
功能:允许ip为192.168.0.3的tcp类型数据包经由22端口入站
step 4: 允许icmp包入站(ping)
iptables -A INPUT -p icmp -j ACCEPT
step 5: 允许loopback(本地环回)
iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
功能: 使得127.0.0.1网卡可收发数据
step 6:如果需要,可以将现有的规则列表中的某一条删除
1. service iptables status 查看所有表的规则,每条规则都有一个序号
2. iptables -D INPUT 1 按序号删除规则

猜你喜欢

转载自blog.csdn.net/goal_ff/article/details/85335739