10.12 firewalld和netfilter
10.13 netfilter5表5链介绍
10.14 iptables语法
10.15 iptables filter小案例
10.16/10.17/10.18 iptables nat表应用
扩展(selinux了解即可)
selinux教程 http://os.51cto.com/art/201209/355490.htm
selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html
http://jamyy.us.to/blog/2006/03/206.html
12 firewalld与netfilter
firewalld
Firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具, 具备对 IPv4 和 IPv6 防火墙设置的支持
netfilter/iptables :
IP数据包过滤系统由 netfilter 和 iptables 两个组件构成。
netfilter是集成在内核中的一部分,其作用是定义、保存相应的规则,
iptables是一种工具,用来修改信息的过滤规则及其他配置,而这些规则会保存在内核空间之中。
netfilter是Linux核心中的一个通用架构,其提供了一系列的表(tables)每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。
关闭selinux
Setenforce 0
配置文件vi /etc/selinux/config
这里将enforcing配置成disabled配置成禁止开机启用
安装iptables命令yum -y install iptables-services
[root@localhost ~]# systemctl stop firewalld //关闭firewalld服务
[root@localhost ~]# systemctl disable firewalld //禁止firewalld为开机启动
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# yum -y install iptables-services //安装iptables这样就可以使用之前的版本了
[root@localhost ~]# systemctl enable iptables //设置开机启动
[root@localhost ~]# systemctl start iptables.service
netfilter
filter:表主要用于过滤包,是系统预设的表,该表内建3个链:INPUT、OUTPUT以及FORWARD。INPUT链作用于进入本机的包,OUTPUT链作用于本机送出的包,FORWARD链作用于那些跟本机无关的包。
nat:表主要用于网络地址转换,同样也有3个链,PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址。该表阿铭仅偶尔会用到。
mangle:表主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用
raw:表可以实现不追踪数据包做标记,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源,所以可以用raw表来指定某些端口的包不被追踪。
security:表在Centos6里是没有的,它用于强制访问控制(MAC)的网络规则。
netfilter的5个链
5个链分别为PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTING:发送到网卡接口之前
14, iptables语法
传输过程
Linux防火墙-netfilter
iptables -nvL 查看规则
iptables控制类型
常用的控制类型
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给出回应
REJECT:拒绝包通过,必要时会给数据包发送端一个响应信息
LOG:在/var/log/messages文件中记录日志信息,然后将包传给下一条规则,防火墙规则的"匹配即停止"对于log操作来说是一个特例,因为log只是一种辅助动作,并没有真正处理包。
常用的选项
-A 在链末尾添加一条新规则
-I 插入一条新规则,未指定序号时默认为第一条规则
-D 删除链中的某条规则,可指定规则序号或具体内容
-L 列出链中的规则
-F 清空链中规则
-n 使用数字形式显示结果,如显示IP地址,而不是主机名
-P 为指定链设置默认规则
-v 显示详细信息
--line-numbers 查看规则表时,同时显示规则在链中的序列号
-p :指定协议,可以是tcp,udp或者icmp;
--dport :跟-p一起使用,指定目标端口;
--sport :跟-p一起使用,指定源端口;
-s :指定源IP(可以是一个ip段);
-d :指定目的IP(可以是一个ip段);
-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;
-i :指定网卡(不常用,但有时候能用到)
例如增加规则
#iptables -t filter -A INPUT -p tcp -j ACCEPT(在filter表的INPUT链中最后一个规则后面添加一个新的规则)
#iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT (在filter表INPUT链第二行插入规则,允许tcp的80端口通过)
-A 表示增加一条规则, -I 表示插入一条规则,-D删除一条规则;后面的INPUT名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/--dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)
删除规则用
#iptables -D INPUT 3(删除filter表中INPUT链的第三条规则)
#iptables -t raw -F(清空raw表中所有链内的规则)
#iptables -F OUTPUT(清空filter表output链内所有规则)
15,Iptables小案例
16 iptables nat表应用
配置了之后,多出了一个ens37
B设备配置成192.168.101.33
这时候看AB两个设备是互通的
说明,网络上网使用的是172的网段,B地址为192.168.100.33
接下来
在A机器上设置路由转发
cat /proc/sys/net/ipv4/ip_forward
在A上执行iptables
iptables -t nat -A POSTROUTING -s 192.168.101.2/24 -o ens34 -j MASQUERADE
再从B上面ping www.baidu.com 发现已经可以ping通了,说明策略有效
案例需求2:端口转发
目的让PC能远程登录test01
添加规则1,将访问172.19.0.18:22222端口的数据包转发给192.168.101.33:22端口
iptables -t nat -A PREROUTING -d 172.19.0.18 -p tcp --dport 22222 -j DNAT --to 192.168.101.33:22
这样子给172.19.0.18:2222的包送到了 192.168.101.33:22上
下面这条可以不用
如需使用可以将B的包发出来的地址做一下nat映射
添加规则2,将来源于192.168.100.100的数据包的源地址转换为10.1.1.25
[root@long0000 ~]# iptables t nat A POSTROUTING s 192.168.100.1 j SNAT to 10.1.1.25