Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux iptables错误行_Linux_Firewall_Iptables - Fatal编程技术网

linux iptables错误行

linux iptables错误行,linux,firewall,iptables,Linux,Firewall,Iptables,我有next/etc/sysconfig/iptables规则(安装后的默认设置): 添加这样的角色后: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT service iptables save 此时端口80是否应打开? 在我像这样保存iptables之后: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j

我有next/etc/sysconfig/iptables规则(安装后的默认设置):

添加这样的角色后:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
service iptables save
此时端口80是否应打开? 在我像这样保存iptables之后:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
service iptables save
我明白了

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92:28264]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
这是行不通的,我希望新规则能再高一行,你怎么看? 我正在使用centOS。另外,这里的最佳实践是什么,我是否应该更改文件并重新启动iptables,这样更好?
非常感谢。

-输入
意味着附加到链输入,因此规则在末尾。您希望
-I INPUT 4
在拒绝规则之前将规则插入链。

更改文件
/etc/sysconfig/iptables
后,必须重新启动iptables:

/etc/init.t/iptables restart

但在bash中编写iptables命令时,必须执行以下操作:

/etc/init.d/iptables save

尝试将
/etc/sysconfig/iptables
文件修改为:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT --protocol icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp --protocol tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --protocol tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
在bash中输入iptables命令也是正确的:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
如果您使用的是基于debian或任何发行版,建议在bash(终端)中输入iptables命令,因为基于redhat的发行版中只存在
/etc/sysconfig/iptables

更新 如果要在bash终端中运行iptables命令,最好先删除规则…可以运行以下bash脚本:

#!/bin/bash 

iptables -F
iptables -X

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

/etc/init.d/iptables save

我知道如果我更改文件本身,我必须重新启动,但是如果我使用命令行如“iptables-A INPUT-m s…”我是否必须重新启动。不。如果以这种方式重新启动,您的命令将被删除…只是您应该
保存它…请检查我添加到asnwer中的简单bash脚本,运行这个bash应该可以解决您的问题…运行规则的顺序非常重要…因此最好删除并刷新以前的rulesupdate工作,但我不太喜欢重写所有角色。也许我应该编辑一个文件,然后重新启动服务?听起来怎么样?或者这是一种不好的做法。这不是不好的做法,但在其他发行版中没有用处……您只能在基于redhat的发行版上使用
/etc/sysconfig/iptables
,例如
centos
谢谢,但是为什么要使用4?我怎么知道是什么号码?这将成为第四条规则。您可以将其放在拒绝之前的任何位置,但将最常用的规则放在第一位更有效。
#!/bin/bash 

iptables -F
iptables -X

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

/etc/init.d/iptables save