Centos7配置iptables规则
一、安装iptables
1、查看iptables是否安装
2、命令:systemctl status iptables
3、命令安装iptables:yum -y install iptables-services
4、selinux
关闭selinux,不关闭时,iptables不读取配置文件
centos7中默认的防火墙是firewalld,使用iptables需要先关闭selinux
临时关闭selinux >> setenforce 0
永久关闭selinux >> vim /etc/selinux/config
二、防火墙:关闭firewalld并关闭开机自启
关闭防火墙 systemctl stop firewalld
关闭开机自启 systemctl disable firewalld
查看防火墙状态 systemctl status firewalld
三、iptables命令
systemctl start iptables #启动
systemctl status iptables #查看状态
systemctl enable iptables #设置开机自启
iptables常用命令
iptables -h #查询帮助
iptables -L -n
iptables -F #清除所有规则
四、语法
INPUT:过滤进入主机的数据包
OUTPUT:处理从本机出去的数据包
FORWARD:负责转发流经本机但不进入本机的数据包,起到转发作用
-A:追加到规则的最后一条
-D:删除记录
-I:添加到规则的第一条
-p:规定通信协议,常用协议:tcp、udp、icmp、all
-j:指定跳转的目标,常见的目标:ACCEPT(接收数据包)、DROP(丢弃数据包)、REJECT(重定向,一般不使用会带来安全隐患)
五、案例
1、ip过滤
禁止192.168.200.113 IP地址的所有类型数据接入
iptables -A INPUT ! -s 192.168.200.113 -j DROP
2、开放指定端口
iptables -A INPUT -P TCP --dport 80 -j ACCEPT #开放80端口
3、开放指定端口范围
iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #开放22-80范围的端口
4、不允许80端口流出
iptables -I OUTPUT -p tcp --dport 80 -j DROP
5、配置配置文件
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
修改配置文件并重启
应用场景一:
centos7中没有service iptables save指令来保存防火墙规则
1.任意运行一条iptables防火墙规则配置命令:
iptables -P OUTPUT ACCEPT
2.对iptables服务进行保存:
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.
解决方法:
systemctl stop firewalld 关闭防火墙
yum install iptables-services 安装或更新服务
再使用systemctl enable iptables 启动iptables
最后 systemctl start iptables 打开iptables
再执行service iptables save
3.重启iptables服务:
service iptables restart
执行完毕之后/etc/syscofig/iptables文件就有了
应用场景二
背景:因业务需求,需要在CentOS服务器启动时通过自动执行脚本配置iptables过滤规则
方案:
1、在写好的自启动脚本set-iptables.sh的首行 #!/bin/bash 下面添加如下两条注释:
#chkconfig: 2345 90 10
#description: set-iptables.sh is a script to set iptables
2、将脚本移动到/etc/rc.d/init.d目录下
sudo mv /opt/script/set-iptables.sh /etc/rc.d/init.d
2、增加脚本的可执行权限
sudo chmod 755 /etc/rc.d/init.d/set-iptables.sh
3、添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
sudo chkconfig --add set-iptables.sh
sudo chkconfig set-iptables.sh on