抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

参考 linux IPtable防火墙 禁止和开放端口, 写的很有价值,就是排版太烂了

iptbales配置详解:https://www.cnblogs.com/alimac/p/5848372.html

先从需求入手

全局默认规则 input output forward 丢弃

27100、 25565、 80、 22 、 3306 端口允许

允许与目标机 192.168.216.1 的连接

清空iptables表规则
script
1
2
3
 # 清理iptables所有的表上的所有规则 
iptables -F
iptables --flush

设置 INPUT FORWARD OUTPUT 的默认策略。

设置默认丢弃包的策略。

script
1
2
3
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

允许 22 端口的进出

script
1
2
3
4
5
# 允许 INPUT 时,由本机22端口进来的数据
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 OUTPUT 时,由本机22端口出去的数据
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
*/

-A 指定是 INPUT 还是 OUTPUT
-p 指定是什么协议
–dport 目标端口 当数据从外部进入服务器为目标端口
–sport 来源端口 OUTPUT的时候,源端口在本机上。
-j 就是指定是 ACCEPT 接收 或者 DROP 不接收

注意

区分 INPUT –dport 22 与 INPUT –sport 27100 的意义,一个是许可目标端口为22的数据连接进入,另一个是许可来源端口为27100的数据连接进入。

script
1
2
3
4
5
6
# 允许来自 27100 端口的数据连接进入
iptables -A INPUT -p tcp --sport 27100 -j ACCEPT
# 允许去往 27100 端口的数据发送出去
iptables -A OUTPUT -p tcp --dport 27100 -j ACCEPT
iptables -A INPUT -p udp --sport 27100 -j ACCEPT
iptables -A OUTPUT -p udp --dport 27100 -j ACCEPT

允许与 192.168.216.1 宿主机数据链接的全端口自由进出

script
1
2
3
4
5
# -t filter 可以免掉
# iptables -t filter -A INPUT -s 192.168.216.1 -p tcp -j ACCEPT
# 在 minecraft 反向代理到主机的时候,连接是主动发起送给主机的,所以 INPUT 配合 -s
iptables -A INPUT -s 192.168.216.1 -p tcp -j ACCEPT
iptables -A OUTPUT -d 192.168.216.1 -p tcp -j ACCEPT

查看 iptable 的规则

script
1
iptables -L -n

移除 iptables 的规则

script
1
2
3
4
5
6
7
8
9
10
# 先查看先有规则的编码
iptables -L -n --line-number

/*
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
*/

# 然后根据编码,移除指定的规则
iptables -D INPUT 1

关于ping的问题

参考来源:

iptables设置ping协议ICMP

linux 中 iptables关于ping的问题

允许来自外部的ping测试

script
1
2
3
4
5
6
# --icmp 省略了 --icmp-type
iptables -A INPUT -p icmp --icmp 8 -j ACCEPT #允许请求进来
iptables -A OUTPUT -p icmp --icmp 0 -j ACCEPT #允许响应出去
# 下面这两条也可以
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

type 8为ping 命令请求信号
type 0为ping 命令响应信号

允许本机ping外部主机

script
1
2
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

能ping通回环地址(有的称为 环回 loopback)

不设置会导致DNS无法正常关闭等问题

script
1
2
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT

能ping通域名

也就是我主动向外去连接53端口

script
1
2
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT # 参考的那篇博客这里dport写错了,妈逼的

注意保存规则

script
1
service iptables save && service iptables restart

配置完后的文件内容

配置完成之后的 /etc/sysconfig/iptables 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Generated by iptables-save v1.4.21 on Sun Nov  3 14:04:33 2019
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [1:328]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25565 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 27100 -j ACCEPT
-A INPUT -p udp -m udp --sport 27100 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -s 192.168.216.1/32 -p tcp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 25565 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 27100 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 27100 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 192.168.216.1/32 -p tcp -j ACCEPT
COMMIT
# Completed on Sun Nov 3 14:04:33 2019

对yum放行

直接/etc/sysconfig/iptables 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Generated by iptables-save v1.4.21 on Tue Nov  5 10:57:26 2019
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [24:1824]

....中间省略.........

# ===主要靠下面的配置===
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
# Dont forget to open for the DNS as well
# 下面是允许 dns 的意思
-A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
# and a line to accept packets from outbound connections
# 下面是允许 出站(outbound) 数据包的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ===到这===
COMMIT
# Completed on Tue Nov 5 10:57:26 2019

解释

-m state –state <状态>

状态:

INVALID: 无效的封包

ESTABLISHED: 已经联机成功的联机状态

NEW: 想要新建立联机的封包状态

RELATED: 这个最常用,表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设置,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机,可以简化相当多的设定规则。

参考链接

IPtables not allowing yum in centos 7

iptables参数-m state

对 /etc/sysconfig/iptables 文件内容的介绍

参考来源:https://zhidao.baidu.com/question/564388897.html

1
2
3
4
5
6
7
8
9
10
11
12
:INPUT ACCEPT [0:0]
# 该规则表示INPUT表默认策略是ACCEPT
:FORWARD ACCEPT [0:0]
# 该规则表示FORWARD表默认策略是ACCEPT
:OUTPUT ACCEPT [0:0]
# 该规则表示OUTPUT表默认策略是ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 意思是允许进入的数据包只能是刚刚我发出去的数据包的回应,ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。
这个是iptables的默认策略,你也可以删除这些,另外建立符合自己需求的策略。

评论