目录
iptables和firewalld区别
iptables | firewalld |
|
|
iptables防火墙
-
iptables有多种功能,每一种功能都用一张表来实现
-
最常用的功能是防火墙和NAT
-
从RHEL7开始,默认的防火墙为firewalld,但是它的底层仍然调用iptables
-
安装iptables服务
# 关闭firewalld
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
# 安装iptables
[root@node1 ~]# yum install -y iptables-services.x86_64
nat表和filter表
iptables的表和链。我们只关心nat表和filter表。filter表是默认的表,它实现防火墙,也就是包过滤的功能。nat表实现网络地址转换。
包过滤匹配流程
-
顺序对比,匹配即停止
-
若无任何匹配,则按该链的默认策略处理
防火墙filter表基本用法
-
配置iptables时,不指定表,就是使用filter表
-
配置时不指定规则链,则配置所有链
-
可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则
-
命令选项、链名、目标操作使用大写字母,其他小写
目标操作:
Accept:允许放行/通过
Drop:直接丢弃,不给出任何回应
Reject:拒绝通过,必要时会给出提示
Log:记录日志,然后传给下一条规则
filter中的三条链
-
INPUT:数据包的目标地址是自己,则进入INPUT链
-
OUTPUT:数据包的源地址是自己,则进入OUTPUT链
-
FORWARD:数据包穿过自己,则进入FORWARD链
iptables操作命令和通用参数
-A 追加规则-->iptables -A INPUT -D 删除规则-->iptables -D INPUT 1(编号) -R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置) -I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位 -L 查看规则-->iptables -L INPUT 列出规则链中的所有规则 通用参数: -p 协议 例:iptables -A INPUT -p tcp -s源地址 例:iptables -A INPUT -s 192.168.1.1 -d目的地址 例:iptables -A INPUT -d 192.168.12.1 -sport源端口 例:iptables -A INPUT -p tcp --sport 22 -dport目的端口 例:iptables -A INPUT -p tcp --dport 22 -i指定入口网卡 例:iptables -A INPUT -i eth0 -o指定出口网卡 例:iptables -A FORWARD -o eth0 -j 指定要进行的处理动作 常用的ACTION: DROP:丢弃 REJECT:明示拒绝 ACCEPT:接受 |
iptables的语法
iptables [-t 表名] 选项 [链名] [条件] [-j 满足条件的操作] |
-
可以设置默认拒绝,然后明确允许
-
也可以设置默认允许,然后明确拒绝
开启内核转发:
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
或
echo 1 > /proc/sys/net/ipv4/ip_forward
NAT
-
NAT:网络地址翻译、网络地址转换
-
NAT技术产生,主要是解决IPV4地址不够用。
-
NAT一般用于将私有地址转成全球唯一的公有地址
-
私有地址:
-
A类:10.x.x.x
-
B类:172.16.x.x-172.31.x.x
-
C类:192.168.x.x
-
-
私有地址,如果需要访问互联网中的公有地址,进行上网,可以通过NAT技术,将私有地址转成公有地址,再访问外界。
互联网环境下,运营商不允许私有地址出现在互联网上,发现有这样的数据,就直接丢弃。所以,私有地址发往互联网时,需要用NAT转换成公有地址,也叫合法地址。
问题
iptables的4表和5链分别是什么?
1)4表包括:nat表、filter表、raw表、mangle表
2)5链包括:INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链
查看iptables防火墙规则的命令是什么?
[root@svr7 ~]# iptables -nL INPUT
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
[root@svr7 ~]# iptables -L INPUT --line-numbers
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere
2 ACCEPT icmp -- anywhere anywhere
3 ACCEPT tcp -- anywhere anywhere
清空iptables防火墙规则的命令是什么?
[root@svr7 ~]# iptables -D INPUT 3 #清除第三条规则
[root@svr7 ~]# iptables -nL INPUT #查看规则
Chain INPUT (policy ACCEPT) #INPUT链默认规则是接受
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0