iptables防火墙和firewalld防火墙
背景
CentOS7 默认的防火墙 不是iptables
, 而是firewalld
.
一些软件的端口号要放开来提供服务,如:22
,80
等常用端口
firewalld防火墙
说明:很多人用CentOS 7
时会发现CentOS 6
系列中的iptables
相关命令不能用了,因为Centos 7
使用firewalld
代替了原来的iptables
。所以iptables
相关命令是不能直接使用的,这里说下开放设置端口及firewalld
常用命令。
1、关闭防火墙
1 2
| systemctl stop firewalld.service systemctl disable firewalld.service
|
2、开启端口
1
| firewall-cmd --zone=public --add-port=80/tcp --permanent
|
命令含义:
1 2 3
| --zone --add-port=80/tcp --permanent
|
3、重启防火墙
1
| systemctl restart firewall-cmd
|
4. 常用命令介绍
1 2 3 4 5 6 7 8 9 10 11 12
| firewall-cmd --state firewall-cmd --reload firewall-cmd --get-zones firewall-cmd --get-services firewall-cmd --query-service ftp firewall-cmd --add-service=ftp firewall-cmd --add-service=ftp --permanent firewall-cmd --remove-service=ftp --permanent firewall-cmd --add-port=80/tcp --permanent iptables -L -n man firewall-cmd
|
iptables防火墙常用命令
关闭firewalld
1. 关闭firewalld
1 2
| systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动
|
2. 安装iptables
1
| yum install iptables-services
|
3. 配置防火墙文件
1
| vi /etc/sysconfig/iptables
|
如下图所示,方框内两条语句分别开启了端口80和3306
具体添加代码:
1 2
| -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
|
4. 重启防火墙使配置生效
1 2
| systemctl restart iptables.service systemctl enable iptables.service
|
iptables命令
1. 开启与关闭
1 2 3 4 5
| systemctl restart iptables.service systemctl enable iptables.service systemctl restart iptables systemctl start iptables.service systemctl stop iptables.service
|
2. 常用操作
1 2 3
| service iptables status yum update iptables iptables -L -n
|
3. 其他
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #查看iptables现有规则 [root@localhost ~]# iptables -L -n
#先允许所有,不然有可能会杯具 [root@localhost ~]# iptables -P INPUT ACCEPT
#清空所有默认规则 [root@localhost ~]# iptables -F
#清空所有自定义规则 [root@localhost ~]# iptables -X
#所有计数器归0 [root@localhost ~]# iptables -Z
#允许来自于lo接口的数据包(本地访问) [root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
#开放22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP) iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS) iptables -A INPUT -p tcp --dport 443 -j ACCEPT
...
====> 按照实际要求:是否加下面的: -------------------------------------------------------------------
#允许ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃 iptables -P INPUT DROP
#所有出站一律绿灯 iptables -P OUTPUT ACCEPT
#所有转发一律丢弃 iptables -P FORWARD DROP
------------------------------------------------------------------- #如果要添加内网ip信任(接受其所有TCP请求) iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求 iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令: iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令: iptables -D INPUT -s ***.***.***.*** -j DROP
|