iptables

 

1、IT安全的概念和层面剖析

1)     随着互联网IT技术飞速发展,安全概念非常重要的,各种操作、配置、服务、设备等的安全性是运维人员必须时刻关注的,一旦被黑客或者误操作,导致企业的损失。安全维护不仅仅是安全人员的工作,同时运维人员也要懂一些安全策略和方法。

2)     作为运维人员,要保证企业服务器、门户网站、业务系统、数据库等安全、高效的运行,安全体现在哪些层面呢?

n  硬件层面

n  软件层面

n  系统层面

n  网络层面

3)     硬件层面,安全主要体现在什么地方?有哪些具体硬件安全需要保障呢?

n  进出机房,设置门禁、指纹识别、来访登记、具体操作的事项;

n  防止静电、监控机房温度、电子监控、空调安全运行的情况;

n  电力安全保障、UPS+服务器双电源、灭火器、消防设备;

n  接地线、防水、防地震、机房异地灾备、机柜加固、防雷。

4)     软件层面,安全主要体现在什么地方?有哪些具体软件安全需要保障呢?

n  软件服务的BUG、是否存在漏洞;

n  软件服务的安全、权限设置、对外进程、端口;

n  软件服务是否携带病毒、木马,定时检查;

n  WEB页面防止篡改、数据库对外权限、执行的SQL;

n  防止人为误操作、误删除、定期备份软件服务等。

5)     系统层面,安全主要体现在什么地方?有哪些具体系统安全需要保障呢?

n  Linux内核版本是否稳定、BUG、漏洞;

n  远程连接端口、SSHD服务、端口和服务;

n  登录用户名、密码安全、授权访问的IP地址;

n  启动文件、误操作、误删除、备份核心文件。

6)     网络层面,安全主要体现在什么地方?有哪些具体网络安全需要保障呢?

n  硬件设备、防火墙、交换机、路由器设备的安全;

n  ARP欺骗、攻击、冒充局域网网关;

n  DDOS攻击、大的流量访问;

n  过滤请求包、数据包协议、开放的策略。

2、系统层面&防护的策略

  •  定期升级Linux内核版本,尽量使用稳定版本,及时给系统打补丁;
  •  尽量禁止使用root用户登录,启用普通用户+sudo配置提权;
  •  定期修改服务器远程登录用户名、密码,密码复杂度足够复杂;
  •  引入系统级别的防火墙,关闭不必要的服务、端口、进程、设置安全策略;
  •  引入杀毒软件,木马拦截工具、定期扫描服务器系统的安全;
  •  编写运维服务器管理流程、规范运维人员命令、配置,防止误操作、删除;
  •  7x24小时x365监控服务器系统CPU、MEM、DISK、NET、I/O使用情况;
  •  引入Selinux系统级别的安全防护,限制某个软件、进程、目录访问权限;
  •  定期备份操作系统重要配置文件、WEB代码、数据库、启动文件、任务计划。

3、软件层面&防护的策略

  •   尽量使用普通用户运行软件服务,不建议使用root;
  •   定期更新软件服务的版本,尽量使用稳定版本,及时打补丁;
  •   尽可能隐藏软件服务的版本号,替换软件服务的名称;
  •   保障软件服务之间的依赖库稳定、保障其兼容性、稳定性;
  •   授予用户访问软件服务的权限、r、w、x权限,尽量设置最小的权限。

4、Iptables防火墙的概念

1)NetFilter/Iptables(简称Iptables)是一款开源、免费的unix/linux操作系统防火墙软件系统,基于数据包过滤的防火墙工具,主要是工作在OSI七层模型中:二层(数据链路层)、三层(网络层)、四层(传输层)。

2)NetFilter主要是工作中内核空间(Kernel Space),属于Linux内核自带的系统模块,无需安装,默认集成的,主要是由各种过滤的信息表组成的,表主要用于存储后期各种策略规则,负责规则、策略的处理、数据包过滤等工作。

3)Iptables主要是工作中用户空间(User Space),属于Linux系统自带(自行安装)的系统工具,主要是用于管理底层Netfilter模块的,默认不能直接操作内核模块的,可以通过iptables工具管理Netfilter模块中过滤表,还可以通过iptables工具在表中添加策略规则等。

4)在日常企业运维中,NetFilter和Iptables统称为Iptables防火墙,iptables防火墙默认有四张表:Raw、Mangle、NAT、Filter表,默认iptables是管理和使用Filter表。

5)四张表总共包含5条链,每条链上可以没有规则,也可以有无数的规则,规则是用于限制、允许客户端访问服务器的策略定义的,规则和规则之间没有冲突,5条链:

 

  •   RREROUTING;
  •   POSTROUTING;
  •   INPUT;
  •   OUTPUT;
  •   FORWARD。

5、IPTABLES四张表&五条链

 

 

 

iptables具有Filter, NAT, Mangle, Raw四种内建表。

6、Linux下IPtables下Filter表

Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:

  •   INPUT链 – 处理来自外部的数据;
  •   OUTPUT链 – 处理向外发送的数据;
  •   FORWARD链 – 将数据转发到本机的其他网卡设备上。

7、Linux下IPtables下NAT表

NAT (网络地址转换) 技术在平时是很多见的,如家庭中在使用路由器共享上网时,一般用的就是 NAT 技术,它可以实现众多内网 IP 共享一个公网 IP 上网。

NAT 的原理,简单的说就是当内网主机访问外网时,当内网主机的数据包要通过路由器时,路由器将数据包中的源内网 IP 地址改为路由器上的公网 IP 地址,同时记录下该数据包的消息;

      外网服务器响应这次由内而外发出的请求或数据交换时,当外网服务器发出的数据包经过路由器时,原本是路由器上的公网 IP 地址被路由器改为内网 IP 。

SNAT 和 DNAT 是 iptables 中使用 NAT 规则相关的的两个重要概念。如上图所示,如果内网主机访问外网而经过路由时,源 IP 会发生改变,这种变更行为就是 SNAT;反之,当外网的数据经过路由发往内网主机时,数据包中的目的 IP (路由器上的公网 IP) 将修改为内网 IP,这种变更行为就是 DNAT 。NAT表有三种内建链:

  PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

  POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

  OUTPUT链 – 处理本机产生的数据包。

8、Linux下IPtables命令图解

 

9、Linux下IPtables命令剖析

1.命令:

-A 顺序添加,添加一条新规则

-I 插入,插入一条新规则 -I 后面加一数字表示插入到哪行

-R 修改, 删除一条新规则 -D 后面加一数字表示删除哪行

-D 删除,删除一条新规则 -D 后面加一数字表示删除哪行

-N   新建一个链

-X   删除一个自定义链,删除之前要保证次链是空的,而且没有被引用

-L 查看

 @1.iptables -L -n 以数字的方式显示

 @2. iptables -L -v显示详细信息

 @3. iptables -L -x 显示精确信息

-E   重命名链

-F 清空链中的所有规则

-Z   清除链中使用的规则

-P 设置默认规则

2.匹配条件:

隐含匹配:

   -p  tcp udp icmp

   --sport指定源端口

   --dport指定目标端

   -s 源地址

   -d 目的地址

-i 数据包进入的网卡

-o 数据包出口的网卡

扩展匹配:

-m state --state   匹配状态的

-m mutiport --source-port   端口匹配 ,指定一组端口

-m limit --limit 3/minute   每三分种一次

-m limit --limit-burst  5   只匹配5个数据包

-m string --string --algo bm|kmp --string"xxxx"  匹配字符串

-mtime--timestart 8:00 --timestop 12:00  表示从哪个时间到哪个时间段

-mtime--days    表示那天

-m mac --mac-source xx:xx:xx:xx:xx:xx 匹配源MAC地址

-m layer7 --l7proto qq   表示匹配腾讯qq的 当然也支持很多协议,这个默认是没有的,需要我们给内核打补丁并重新编译内核及iptables才可以使用 -m layer7 这个显示扩展匹配

3.动作:

-j

DROP 直接丢掉

ACCEPT 允许通过

REJECT 丢掉,但是回复信息

LOG --log-prefix"说明信息,自己随便定义" ,记录日志

SNAT       源地址转换

DNAT       目标地址转换

REDIRECT   重定向

MASQUERAED  地址伪装

保存iptables规则

service iptables save

# 重启iptables服务

service iptables stop

service iptables start

10、Linux下IPtables企业案例解析

 

 

 

含义:

:INPUT ACCEPT [0:0]# 该规则表示INPUT表默认策略是ACCEP ([ 0:0 ]里记录的就是通过该规则的数据包和字节总数。)

:FORWARD ACCEPT [0:0]# 该规则表示FORWARD表默认策略是ACCEPT

:OUTPUT ACCEPT [0:0]# 该规则表示OUTPUT表默认策略是ACCEPT

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT# 意思是允许进入的数据包只能是刚刚我发出去的数据包的回应,ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT# 意思就允许本地环回接口在INPUT表的所有数据通信,-i 参数是指定接口,接口是lo,lo就是Loopback(本地环回接口)

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。

下面来介绍一下,我添加的每个参数是什么意思,跟我没讲得允许22端口的一样

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A 最后添加一条规则

-j 后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG)

–dport 限制目标的端口号码。

-p 协定:设定此规则适用于哪种封包格式 主要的封包格式有: tcp, udp, icmp 及 all 。

-m state –state 模糊匹配一个状态,

NEW 用户发起一个全新的请求

ESTABLISHED 对一个全新的请求进行回应

RELATED 两个完整连接之间的相互关系,一个完整的连接,需要依赖于另一个完整的连接。

INVALID 无法识别的状态。

11、IPtables企业案例规则实战一

WEB服务器,开启80端口;

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

邮件服务器,开启25,110端口; 

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
FTP服务器,开启21端口

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

DNS服务器,开启53端口

[root@www-jfedu-net ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

允许icmp包通过,也就是允许ping,

[root@www-jfedu-net ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[root@www-jfedu-net ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT设置成DROP的话)

将本机的8080端口转发至其他主机,主机IP:192.168.0.141,目标主机IP和端口:192.168.0.142:80,规则如下;

iptables -t nat -A PREROUTING  -d 192.168.0.141/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.142:80

iptables -t nat -A POSTROUTING -d 192.168.0.142/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.141

echo 1 > /proc/sys/net/ipv4/ip_forward

同时开启iptables forward转发功能。

12、IPtables企业案例规则实战二

生产环境,线上门户网站iptables规则策略如下:

[root@localhost ~]# vim /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Wed Dec 14 21:05:31 2016

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [602:39593]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#########################

-A INPUT -i lo -j ACCEPT

-A INPUT -s 116.22.202.146 -j DROP

-A INPUT -s 139.224.227.121 -j ACCEPT

##########################

-A INPUT -p icmp -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

-A INPUT -s 116.243.139.7 -p tcp -m state --state NEW -m tcp --dport 7001 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8801 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

####

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

# Completed on Wed Dec 14 21:05:31 2016

 

posted @ 2020-04-25 22:39  l_gang  阅读(626)  评论(0编辑  收藏  举报