简介:CentOS7.0版本及以上使用Firewall防火墙,CentOS7.0以下使用Iptablesl防火墙,如果CentOS7.0以上需要安装Iptables防火墙,请先关闭Firewall防火墙。Firewalld和Iptables一样自身并不具备防火墙的功能,需要通过内核netfilter来实现,二者只不过使用方法不一样,其中firewalld的底层是使用iptables进行数据过滤,建立在iptables之上。firewalld默认是拒绝的,需要设置以后才能放行,而iptables默认是允许的,需要拒绝的才去限制。要想端口隐藏,不被nmap扫描到,哪怕close等都不出现,就需要开启firewalld。
一、Firewall
1. 查看防火墙的状态
systemctl status firewalld 或 firewall-cmd --state
其中:Active: active (running) 高量显示 则表示开启状态;
Active: inactive (dead) 灰色显示 则表示关闭状态
2. 开启防火墙
systemctl start firewalld 或 service firewalld start
3. 关闭防火墙
systemctl stop firewalld 或 service firewalld stop
4. 重启防火墙
systemctl restart firewalld 或 service firewalld restart
5. 查看开放的端口
firewall-cmd --zone=public --list-ports
6. 开启端口(修改后需要firewall-cmd --reload)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
其中:
firewall-cmd:操作firewall的工具;
--zone=public:表示作用域;
--add-port:标识添加的端口和访问类型;
--permanent:表示设置为持久;
7. 关闭端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
8. 设置开机启动
systemctl enable firewalld
9. 禁用开机启动
systemctl disable firewalld
10. 配置rich-rule实现IP端口限制访问
A. 删除原有的3306端口访问规则:firewall-cmd --permanent --remove-port=3306/tcp;
B. 添加规则:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="3306" accept";
C. 生效规则:firewall-cmd --reload;
D. 查看结果:firewall-cmd --list-all;
E. 剔除规则:firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="3306" accept";
二、Iptables
1. 语法
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作;
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -d 172.17.0.1 -p tcp -m multiport --dports 6801,3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -D INPUT -p tcp --dport 3300 -j DROP
iptables -A INPUT -m iprange --src-range 10.15.119.115-0.15.119.123 -p tcp -m multiport --dports 9801,9802,9803 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 9801,9802,9803 -j DROP
iptables是按照顺序执行的,如果第一条命中,后面的规则都将失效。
1. iptables中四表
A. filter:控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路有input, forward, output;
B. nat:控制数据包中地址转换,可以控制的链路有prerouting, input, output, postrouting;
C. mangle:修改数据包中的原数据,可以控制的链路有prerouting, input, forward, output, postrouting;
D. raw:控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting, output;
2. iptables中五链
A. PREROUTING:路由前;
B. INPUT:数据包流入口;
C. FORWARD:转发管卡;
D. OUTPUT:数据包出口;
E. POSTROUTING:路由后;
3. 链管理
A. -N, --new-chain chain:新建一个自定义的规则链,比如docker链;
4. 规则管理
A. -A:在指定链的尾部追加新规则;
B. -I:在指定链的指定位置插入新规则,默认为首部;
C. -D:根据规则编号删除规则。
5. 动作
A. ACCEPT:接收数据包;
B. DROP:丢弃数据包;
6. 匹配条件
(1) 通用匹配条件
A. -p:指定规则的协议,如tcp、udp等;
B. -s:指定数据包的原地址,如果不指定-s参数,就代表所有地址,如:192.168.0.1;
C. -j:执行目标,即指定与规则匹配时如何处理数据包;
(2) 扩展匹配条件
A. --dport:目的端口,针对-p参数的
(3)显示扩展匹配条件
A. -m multiport --dports port[,port|,port:port]...:指定多个目标端口;
B. -m iprange --src-range from[-to]:以连续地址块的方式来指定多IP;
7. 查看防火墙的状态
systemctl status iptables.service 或 service iptables status
8. 开启防火墙
systemctl start iptables.service 或 service iptables start
9. 关闭防火墙
systemctl stop iptables.service 或 service iptables stop
10. 重启防火墙
service iptables restart
11. 设置开机启动
systemctl enable iptables.service
12. 禁用开机启动
systemctl disable iptables.service
13. 查看当前iptables规则:iptables -L -n;
https://www.cnblogs.com/vathe/p/6973656.html
可参考:iptables基础知识详解