一、Netfilter 简介

(1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具
(2) Netfilter 是 Linux CentOS 6 内置的防火墙机制,Firewall 是 Linux CentOS 7 内置的防火墙机制,如果想在 CentOS 7 中使用 netfilter 而不是 firewall,操作如下

[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