如何在centos 7上使用iptables?[关闭]


154

我以最少的配置(OS +开发工具)安装了CentOS 7。我正在尝试打开80端口进行httpd服务,但是iptables服务出了点问题...这是怎么回事?我究竟做错了什么?

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.

试试这个/etc/init.d/iptables保存
Satya 2014年

8
我在这里得到了答案。RHEL 7使用iptables的Firewalld Instad
Meiblorn 2014年

Answers:


333

在RHEL 7 / CentOS 7中,引入了firewalld来管理iptables。恕我直言,firewalld比服务器环境更适合工作站。

可以回到更经典的iptables设置。首先,停止并屏蔽firewalld服务:

systemctl stop firewalld
systemctl mask firewalld

然后,安装iptables-services软件包:

yum install iptables-services

在启动时启用服务:

systemctl enable iptables

管理服务

systemctl [stop|start|restart] iptables

保存防火墙规则可以如下进行:

service iptables save

要么

/usr/libexec/iptables/iptables.init save

5
它没有保存iptables。重新启动服务器将丢失所有更改。
罗斯福2014年

2
在我的系统上,iptables已正确保存。您确定在启动时已启动iptables服务吗?您可以通过运行“ systemctl enable iptables”来做到这一点
Sgaduuw 2014年

1
您可能还运行了防火墙,这将向列表添加其他iptables规则(每次重新启动系统时)。要停止firewalld,请运行“ systemctl mask firewalld”
TroodoN-Mike

正如@ TroodoN-Mike建议的那样,在答案中添加了有关屏蔽firewalld的信息
Sgaduuw 2014年

8
@Sgaduuw请您详细说明为什么您认为fitewalld不适合/不太适合服务器吗?
亚历山大·格罗斯

98

RHEL和CentOS 7使用firewall-cmd代替iptables。您应该使用这种命令:

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent

然后,您可以重新加载规则以确保一切正常

firewall-cmd --reload

这比使用iptable-save更好,特别是如果您打算使用lxc或docker容器。启动docker服务将添加iptable-save命令将提示的一些规则。如果保存结果,则将有很多不应保存的规则。因为docker容器可以在下次重新启动时更改其IP地址。

带有永久选项的Firewall-cmd更好。

检查“ man firewall-cmd”或检查firewalld的官方文档以查看选项。有很多选项可以检查区域,配置,工作方式...手册页确实很完整。

自Centos 7以来,我强烈建议不要使用iptables-service


1
很棒的解释-非常适合我。谢谢!
digitalformula

1
firewall-cmd --reload无法正常工作。为了使更改生效,我不得不使用“ systemctl restart firewalld”重新启动。
罗勒·穆萨

“由于firewalld是动态的,因此可以随时对其配置进行更改,并且可以立即实施。不需要重新加载防火墙的任何部分,因此不会无意间破坏现有的网络连接” –来自官方firewalld文档
yicone '16

高效清洁。非常感谢
Vaibhav

17

我有一个问题,就是重启不会启动iptables。

这修复了它:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

在CentOS 7不起作用:# systemctl start iptablesFailed to start iptables.service: Unit not found.# systemctl start ip6tablesFailed to start ip6tables.service: Unit not found.
PKHunter


5

我修改了/etc/sysconfig/ip6tables-config文件更改:

IP6TABLES_SAVE_ON_STOP="no"

至:

IP6TABLES_SAVE_ON_STOP="yes"

还有这个:

IP6TABLES_SAVE_ON_RESTART="no"

至:

IP6TABLES_SAVE_ON_RESTART="yes"

这似乎可以保存我通过重新引导使用iptables命令所做的更改。


1

将IPtables配置放入传统文件中,它将在引导后加载:

/ etc / sysconfig / iptables


1

上个月,我尝试在LXC VM容器上配置iptables,但是每次重新启动后,iptables配置都不会自动加载。

我要使其正常工作的唯一方法是运行以下命令:

yum -y install iptables-services; systemctl disable firewalld; systemctl mask firewalld; 服务iptables重启;服务iptables保存


0

另外,运行systemctl mask firewalld命令后,您还应该能够对ip6tables执行相同的操作:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0

如果这样做,并且您使用的是fail2ban,则需要启用适当的过滤器/操作:

将以下行 /etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400

启用并启动fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

参考:http : //blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.