Linux 防火墙:Netfilter

时间:2021-07-04 05:36:17

一、Netfilter 简介

(1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具
(2) Netfilter 是 Linux CentOS 6 内置的防火墙机制,Firewall 是 Linux CentOS 7 内置的防火墙机制,如果想在 CentOS 7 中使用 netfilter 而不是 firewall,操作如下
(3) 其他所有关于 iptables 的介绍请参考:https://www.cnblogs.com/metoy/p/4320813.html

[root@localhost ~]$ systemctl stop firewalld.service
[root@localhost ~]$ systemctl disable firewalld.service
[root@localhost ~]$ yum install -y iptables-services.x86_64
[root@localhost ~]$ systemctl start iptables.service
[root@localhost ~]$ systemctl enable iptables.service

二、iptables 常见用法:

iptables -nvL              # 查看规则,默认查看filter表的规则
iptables -F # 清空规则,默认清空filter表的规则
service iptables save # 保存规则,会把当前规则保存到/etc/sysconfig/iptables
iptables-save > my.ipt # 备份规则,这里指定备份到my.ipt文件
iptables-restore < my.ipt # 恢复规则,这里指定使用my.ipt文件进行恢复
iptables -A INPUT -p tcp --dport 80 -j ACCEPT                                                # 放通80端口
iptables -A INPUT -p tcp --dport 22 -j DROP # 禁用22端口
iptables -A INPUT -p tcp -m multiport --dports 80,843,443 -j ACCEPT # 放通多个端口
iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT # 只允许某个IP访问22端口
iptables -A INPUT -s 192.168.1.1/32 -p tcp -m multiport --dports 3873,4507,3306 -j ACCEPT # 允许某个IP访问多个端口
-A       # 追加规则,默认追加到最后一条规则
-I # 插入规则,默认插入到第一条规则
-D # 删除规则,先执行 iptables -nvL --line-numbers 查看规则的序列号,然后执行 iptables -D INPUT <number> 删除规则
-s # 用于指定源IP地址,用法如:iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT
-p # 用于指定检查哪个协议,用法如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-i # 用于指定入口网卡,用法如:iptables -A INPUT -i eth0 -j ACCEPT
-o # 用于指定出口网卡,用法如:iptables -A FORWARD -o eth0 -j ACCEPT
-j # 用于指定要进行的处理动作,用法如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-P # 用于设置默认规则,用法如:iptables -P INPUT DROP
-t # 用于指定操作哪张表,用法如:iptables -t nat -nvL
-Z # 用于清空计数器,用法如:iptables -Z
-L # 用于列出规则链中的所有规则
--sport # 用于指定源端口,用法如:iptables -A INPUT -p tcp --sport 1234 -j ACCEPT
--dport # 用于指定目标端口,用法如:iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT