还是再写一下iptables,虽然总在用它,但是每次新装开系统时,由于各家云服务端精简的系统不同,每次在配置服务器时都还要在这里浪费一些时间,简单整理一下方便以后使用。

环境是centos7.9 x64,步骤如下:

1.关闭firewalld 
在centos7以后版本中,有些环境默认启用了firewalld防火墙,这时iptables是不开启的,这时需要关掉firewalld。
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

这一点很重要,否则会导致很多灵异问题,比如我就遇到了使用iptables-save保存配置重启不生效的问题。

2.安装iptables
执行一下iptables -L看看输出内容,如果执行找不到文件说明系统并没有安装iptables,那么要安装一下。
yum install iptables

如果执行iptables -L输出格式正确,即使没有规则也说明已经安装正常。

3.安装iptables服务脚本
在centos7以后的系统中,使用systemctl管理软件的开机运行,所以我们在上一步安装了iptables,但还需要安装下面脚本使得可以systemctl对其进行操作。
yum install iptables-services
systemctl enable iptables
systemctl start iptables

下面几条是可操作选项:
systemctl enable iptables //启用iptables
systemctl start iptables  //启动iptables
systemctl stop iptables   //停止iptables
systemctl restart iptables   //重启iptables
systemctl reload iptables    //热加载iptables配置

4.配置iptables
iptables防火墙的默认配置保存在/etc/sysconfig/iptables文件中,iptables具体的使用方法请参照其它文章,这里仅提供一个我常用的配置列表,复制下面所有命令在shell中一次性执行(去掉注释行):
# 清空所有现有规则(谨慎操作)
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -t security -F
iptables -t security -X

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许已建立连接和回环接口
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# 允许 ICMP (ping)
iptables -A INPUT -p icmp -j ACCEPT

# 允许 TCP 端口(合并重复端口)
iptables -A INPUT -p tcp -m multiport --dports 80,443,12345 -j ACCEPT
(上面行中含#和中文的是注释文件,可以删掉)


5.iptables配置文件的保存
这里分两种情况,如上面第4步的修改,是直接修改iptables的配置文件,修改后规则并不会直接加载到系统中生效,可以使用systemctl reload iptables加载一下,或者就直接重启一下系统即可。

如果是使用手工在shell一条一条添加的规则,这个时候是立即生效的,但是并没有保存到配置文件中,重启系统后就没了,需要使用iptables-save > /etc/sysconfig/iptables保存一下。如果当前目录已经在/etc/sysconfig中,直接执行iptables-save效果也是一样的。

扩展使用方法:
iptables防火墙配置的导出与导入
这里的iptables配置导出导入,也就是备份与恢复的意思。假设我已经有一台机器已经配置好了,怎样把这个配置复制到其它机器使用呢?
//导出配置
iptables-save > /etc/sysconfig/iptablesRule.bak    

//导入配置
把iptablesRule.bak复制到另一台机的/etc/sysconfig目录下执行
iptables-restore < /etc/sysconfig/iptablesRule.bak

好了,相同的配置已复制过去了,但还没有加载生效,重启系统或者systemctl reload iptables即可。


 

标签: none

评论已关闭