Linux 防火墙:Netfilter iptables

 

 

一、Netfilter 简介

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

 

[root@MongoDB ~]# systemctl stop firewalld.service // 停止firewalld[root@MongoDB ~]# systemctl disable firewalld.service // 禁止firewall开机启动[root@MongoDB ~]# yum install iptables-services -y[root@MongoDB ~]# systemctl start iptables.service //启动防火墙[root@MongoDB ~]# systemctl enable iptables.service // 设置防火墙开机启动

 

 

 

 

 

centos7 iptables服务

1.查看iptables服务状态

[root@MongoDB ~]#systemctl status iptables

 

 

systemctl start iptables // 启动iptables服务systemctl restart iptables // 重启iptables服务systemctl stop iptables // 关闭iptables服务

 

centos6 iptables 服务

service iptables start // 启动 iptables服务service iptables restart // 重启iptables服务service iptables stop // 关闭iptables服务service iptables status // 查看iptables服务状态

 

2.查看规则,默认查看filter表的规则
iptables -nvL 
针对INPUT链 默认规则ACCEPT通过
iptables -nvLChain INPUT (policy ACCEPT 0 packets, 0 bytes) // 针对INPUT链 默认规则// INPUT链 规则 pkts bytes target prot opt in out source destination 7589 858K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 42 2520 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 104 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2701730806 3205K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited// FORWARD链 默认规则Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited// OUTPUT链 默认规则Chain OUTPUT (policy ACCEPT 6732 packets, 950K bytes) pkts bytes target prot opt in out source destination 

 

二、iptables 常见用法:

iptables -F # 清空规则,默认清空filter表的规则iptables -X # 删除用户自定义规则iptables -Z # 清空链的计数器service iptables save # 保存规则,会把当前规则保存到/etc/sysconfig/iptablesiptables-save > my.ipt # 备份规则,这里指定备份到my.ipt文件iptables-restore < my.ipt # 恢复规则,这里指定使用my.ipt文件进行恢复 

 

 

清空所有的规则,只留下默认规则

iptables -F  清空规则,默认清空filter表的规则

只留下默认规则 默认规则都是ACCEPT动作

[root@MongoDB ~]# iptables -F[root@MongoDB ~]# iptables -nvLChain INPUT (policy ACCEPT 6 packets, 480 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 6 packets, 528 bytes) pkts bytes target prot opt in out source destination 

iptables -X  删除用户定义规则

iptables -Z 清空链的计数器

 

 

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访问多个端口

 

 添加一条规则 到filter表 允许8080端口

[root@MongoDB ~]# iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT

删除一条规则

先执行 iptables -nvL --line-numbers 查看规则的序列号
[root@MongoDB ~]# iptables -nvL --line-numbersChain INPUT (policy ACCEPT 93 packets, 7775 bytes)num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 59 packets, 6900 bytes)num pkts bytes target prot opt in out source destination 

-D 删除规则

然后执行 iptables -D INPUT <number> 删除规则
[root@MongoDB ~]# iptables -D INPUT 1[root@MongoDB ~]# [root@MongoDB ~]# iptables -nvL --line-numbersChain INPUT (policy ACCEPT 14 packets, 1020 bytes)num pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 6 packets, 728 bytes)num pkts bytes target prot opt in out source destination

 

 
-A # 添加规则,默认添加到最后一条规则-I # 插入规则,默认插入到第一条规则-D # 删除规则,先执行 iptables -nvL --line-numbers 查看规则的序列号,然后执行 iptables -D INPUT <number> 删除规则-n # 数字-s # 用于指定源IP地址,用法如:iptables -A INPUT -s 192.168.1.1/32 -p tcp --dport 22 -j ACCEPT-d # 用于指定目标IP地址,用法如:iptables -A INPUT -d 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 # 用于指定要进行的处理动作,ACCEPT表示接受数据包进来 DROP直接丢弃数据包 用法如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT-P # 用于设置默认规则,用法如:iptables -P INPUT DROP-t # 用于指定操作哪张表,用法如:iptables -t nat -nvL , iptables -t filter ,如果没有指定默认是filter表-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 ! # 取反 

 

 

 

 

 

相关文章