ConterOS7.0以上默认使用的是firewalld,ConterOS7.0默认以下使用的是iptables。然而很多人习惯了使用iptables,所以本文也一并总结了iptables。不过需要注意:ConterOS7.0以上系统如果还想使用iptables的话,一般需要先安装,再使用。
一、firewalld
命令格式:
firewall-cmd [选项 ... ]
查看帮助:
firewall-cmd --help
基本使用:
查看防火墙状态:firewall-cmd --state
查看防火墙规则:firewall-cmd --list-all
更新防火墙规则:firewall-cmd --reload
(1)端口类
临时增加 (reload之后消失):
# firewall-cmd --add-port=88/tcp
永久增加 :
# firewall-cmd --permanent --add-port=88/tcp firewall-cmd --reload
临时删除端口:
# firewall-cmd --remove-port=88/tcp
永久删除端口:
# firewall-cmd --permanent --remove-port=88/tcp firewall-cmd --reload
查询某一具体端口:
# firewall-cmd --query-port=88/tcp
查看所有放行的端口:
# firewall-cmd --list-ports
(2)服务管理类
增加服务:(临时开放http服务)
# firewall-cmd --add-service=http
增加服务:(永久开放http服务)
# firewall-cmd --permanent --add-service=http --永久开放http服务,没有--permanent参数重启后会失效
# firewall-cmd --reload --重新加载配置
删除服务: (临时删除)
# firewall-cmd --remove-service=http
删除服务:(永久删除)
# firewall-cmd --permanent --remove-service=http --永久移除http服务,没有--permanent参数重启后失效
# firewall-cmd --reload --重新加载配置
查询服务 :
# firewall-cmd --query-service=http
获取所有支持的服务:
# firewall-cmd --get-services
防火墙服务的状态:
# systemctl status firewalld.service
启动/关闭/重启 防火墙:
# systemctl start firewalld.service --启动
# systemctl stop firewalld.service --关闭
# systemctl restart firewalld.service --重启firewalld服务,使配置生效/可查
(3)其他
查看所有的zone信息:
# firewall-cmd --list-all-zones
预定义区域有:block dmz drop external home internal public trusted work
查看默认的zone:
# firewall-cmd --get-default-zone
临时修改接口p3p1所属的zone为internal:
# firewall-cmd --zone=internal --change-zone=p3p1
二、CentOS7系统中安装并使用iptables
安装:
yum install -y iptables-services
语法:
iptables(选项)(参数)
常用选项
-A:向规则链中添加条目; -D:从规则链中删除条目; -I:向规则链中插入条目;-L:显示规则链中已有的条目;
-A和-I的区别:-A 会将后执行的策略添加到已有策略后,而-I 则会插入到已有策略的前(既成为第一条策略)。
基本使用:
(注意:centos7.X使用iptables的话,要确保关闭firewalld服务,避免冲突。执行systemctl stop firewalld&&systemctl disable firewalld)
查看防火墙状态:systemctl status iptables(推荐) 或 service iptables status
关闭防火墙:systemctl stop iptables(推荐) 或 service iptables stop
开启防火墙规则:systemctl start iptables(推荐) 或 service iptables start
设置开机自启:systemctl enable iptables.service
列出现有iptables规则:
# iptables -L --L:表示列出规则
# iptables -L -n --n:表示将单词表达形式改成数字形式显示
备份原iptables规则,避免丢失规则:
# cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
开放某个端口:
# iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT --开放22端口
# iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT --开放80端口
开放22端口,允许192.168.1.0网段的服务器访问:
# iptables -I INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
开放22端口,只允许192.168.1.144服务器来访问:
# iptables -I INPUT -s 192.168.1.144 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
禁止某个的端口:
# iptables -I INPUT -p tcp --dport 80 -j DROP --禁止80端口
示例:
添加规则,开放22端口:
# iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT -I insert插入 -3为顺序
删除一个规则:
# iptables -D INPUT 3 --删除INPUT链的第3个规则
清空所有规则(一般我们在清空之前,一般会先备份原来的规则):
# iptables -F
使INPUT链拒绝所有请求,即主机会拒绝所有请求(慎用!):
# iptables -P INPUT DROP
出口一律放行:
# iptables -P OUTPUT ACCEPT
所有转发一律丢弃:
# iptables -P FORWARD DROP
配置iptables命令行配置永久生效:
方法1:
保存iptables命令行添加的规则到/etc/sysconfig/iptables
# iptables-save > /etc/sysconfig/iptables
方法2:
# service iptables save --永久生效