我如何在centos 7上使用iptables?

我用最less的configuration安装了CentOS 7(os + dev工具)。 我试图为httpd服务打开80端口,但是我的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. 

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

有可能回到更经典的iptables设置。 首先,停止并掩饰firewalld服务:

 systemctl stop firewalld systemctl mask firewalld 

然后,安装iptables-services包:

 yum install iptables-services 

在启动时启用服务:

 systemctl enable iptables 

pipe理服务

 systemctl [stop|start|restart] iptables 

保存你的防火墙规则可以做到如下:

 service iptables save 

要么

 /usr/libexec/iptables/iptables.init save 

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文档以查看选项。 有很多选项来检查区域,configuration,它是如何工作的…手册页是真正完整的。

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

我有问题,重新启动不会启动iptables。

这固定了它:

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

尝试以下命令iptables-save

我修改了/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命令所做的更改。

将IPtablesconfiguration放入传统文件中,并在启动后加载:

的/ etc / SYSCONFIG / iptables的

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

  systemctl start ip6tables.service systemctl enable ip6tables.service 

如果你这样做了,而你正在使用fail2ban,你将需要启用适当的filter/操作:

将以/etc/fail2ban/jail.d/sshd.local放在/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/

上个月,我尝试在LXC VM容器上configurationiptables,但每次重启后,iptablesconfiguration都不会自动加载。

我得到它的唯一方法是运行以下命令:

yum -y安装iptables-services; systemctl禁用firewalld; systemctl mask firewalld; 服务iptables重启; 服务iptables保存