Iptables#Iptables加固服务器安全

Iptables加固服务器安全

文章目录

一、信息安全概述系统方面

系统安全策略:SSH端口修改、SUDO、禁止ROOT登录
文件指纹:数据安全(加密认证)
Selinux:系统对内的防护,自身程序用于自身文件的访问(文件指纹),修改删除监控
Linux软件防火墙:系统对外的防护
  前身:ipfwadm,ipchains
  centos6:iptables(服务器自身和网络通信流量控制)
  centos7:firewall

二、信息安全概述网络方面

1、网络防火墙

应用安全防火墙
  WAF => Web Application Firewall ,可以用来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。一般针对的是应用层而非网络层的入侵,从技术角度应该称之为Web IPS。其防护重点是SQL注入。
网络防火墙(UTM)
  思科ASA5550、华为USG6650、启明星辰 天清汉马 USG-2000C
  UTM安全设备的定义是指一体化安全设备,它具备的基本功能包括网络防火墙、网络入侵检测/防御和网关防病毒功能,但这几项功能并不一定要同时得到使用,不过它们应该是UTM设备自身固有的功能。
防毒墙
  垃圾邮件病毒邮件过滤、国信冠群Yorton-2000应用安全网关 、趋势科技

2、上网安全行为

网康NI3200-50

3、入侵检测

IDS,IPS(网络扫描,网络嗅探)
绿盟,华为,天融信,启明星辰

4、传输安全VPN 虚拟专用网

三、信息安全概述Linux防火墙的建议

关闭Linux自身防火墙。(解决安全问题尽量不给服务器配置外网IP.需要访问的话,就使用代理转发。)因为高并发,iptables会加大延迟。除非并发小,服务器必须处于公网。考虑开启防火墙。

四、Iptables主机型防火墙概述

1、概述:

linux提供了大量的网络服务,FTP,WEB,EMAIL.DB等,保护互联网应用访问。通过linux防火墙,防火墙有:netfilter和iptables可以有效控制进出服务器的流量和流经服务器的流量。今天主要掌握墙的结构,匹配流程和编写规则。
  netfilter:内核态,即不以文件和形式存在(kernal space)的防火墙。
  iptables:用户态,在/sbin/iptables存在(User space)的防火。操作上二者没有区分

2、Iptabiles工作在TCP/IP2、3、4层模型

linux-iptables主机型防火墙工作在2,3,4层,对TCP/IP数据包进行过滤和限制。属于包过滤型防火墙(无法过滤病毒)。(除非编译内核才可以使iptables支持7层)

3、Iptables防火墙缺点

(1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时,防火墙没有作用。
(2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电脑。
(3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。
(4)正常状况下,所有互联网的数据包软件都应经过防火墙的过滤,这将造成网络交通的瓶颈。例如在攻击性数据包出现时,攻击者会不时寄出数据包,让防火墙疲于过滤数据包,而使一些合法数据包软件亦无法正常进出防火墙。
 PS:没有绝对安全的操作系统,虽然防火墙有这些缺点,但还是能阻挡大多数来自于外网的攻击!

五、Iptables的table&Chain&police(四表五链一堆策略)

1、四个表

filter过滤/nat装换/mangle碾压/raw生的
  主要是filter和nat
  表像安防小队

2、五个链

PREROUTING预路由
  POSTROUTING已路由
  INPUT入站
  OUTPUT出站
  FORWARD转发
  主要是INPUT、OUTPUT、POSTROUTING
  链像安防小队中的安防员

3、一堆策略

Iptables的防火墙规则

4、Iptables数据包过滤架构图和表链关系结构图

在这里插入图片描述
在这里插入图片描述

5、表链关系

filter表
  INPUT:访问本机的数据包进行过滤
  FORWARD:途径本机的数据包进行过过滤
  OUTPUT:本机访问互联网的数据包进行过滤
  总结:根据规则来处理数据包,如转或者丢。就是实现主机型防火墙的主要表。内核模块 iptable_filter
nat
  PREROUTING:修改目的地址
  POSTTOUTING:修改源地址
  OUTPUT:主要是控制内部
  总结:转换地址的表(改IP,改端口。当网关使用的linux。保护内外网流量。内核模块叫iptable_nat)
mangle
  PREROUTING,POSTROUTING,INPUIT,OUTPUT,FORWARD
  流量整形的表。路由标记用的表。改TOS,TTL,Mark标记策略路由等,内核模块iptables_mangle
raw:PREROUTING,OUTPUT,新表,数据包跟踪 iptables_raw

6、表的应用顺序

raw → mangle → nat → filter

7、链之间的顺序

入站
  比如访问自身的web服务流量。先PREROUTING(是否改地址),再INPUT(是否允许)到达程序。
  转发
  经过linux网关的流量。先PREROUTING(是否改地址),然后路由。转发给FORWARD(转发或者丢弃),最后经过POSTROUTING(看看改不改地址。如NAT)
  出站
  源自linux自身的流量。先OUTPUT,然后路由。再给POSTROUTING(是否改IP)。

8、规则的应用顺序

ACL(访问控制列表)逐条匹配,匹配即停止。(除了LOG规则)

六、Iptables主机型防火墙规则语法

iptables -t 表名 管理选项 [链名] [匹配条件] [-j 控制类型]
表名:filter(默认)、nat、mangle、raw
管理选项:
  添加新的规则
  -I:在链的开头(或指定序号)插入一条规则
  -A:在链的末尾追加一条规则
  查看规则列表
  -L:列出所有的规则条目
  -n:以数字形式显示地址、端口等信息
  -v:以更详细的方式显示规则信息
  --line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1
  删除、清空规则
  -D:删除链内指定序号(或内容)的一条规则
  -F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)(-F -X -Z连用,删除干净)
  设置默认策略
  -P:为指定的链设置默认规则
链名:PREROUTING、POSTROUTING、INPUIT、OUTPUT、ORWARD
匹配条件:数据包特征ip,端口等
控制类型:数据包处理方式,ACCEPT允许、REJECT拒绝、DROP丢弃、LOG日志(log不适用匹配即停止,记录后下一条)等

七、Iptables主机型防火墙配置规则示例:(宽进严格出,没有明确的允许皆为拒绝)

链名和控制类型名要用大写,默认的规则优先级最低
同一个表中的同一个链的配置规则中
优先级高的规则放行之后,后面的拒绝规则无效
优先级高的规则拒绝之后,后面的放行规则无效

1、添加和删除禁止自己被ping的规则

[root@iptables ~]# iptables -t filter -I INPUT -p icmp -j REJECT
[root@iptables ~]# iptables -t filter -D INPUT -p icmp -j REJECT

2、第一行添加

[root@iptables ~]# iptables -t filter -I INPUT -p udp -j ACCEPT

3、第二行添加

[root@iptables ~]# iptables -t filter -I INPUT 2 -p icmp -j ACCEPT

4、A最后一行添加

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

5、以数字形式显示端口、每行显示行号产看规则

[root@iptables ~]# iptables -L -n --line-number

6、通过行号删除规则

[root@iptables ~]# iptables -D INPUT 3

7、清空规则

[root@iptables ~]# iptables -F
[root@iptables ~]# iptables -X
[root@iptables ~]# iptables -Z

8、修改默认规则

[root@iptables ~]# iptables -t filter -P INPUT DROP
[root@iptables ~]# iptables -t filter -P INPUT ACCEPT

八、Iptables主机型防火墙规则进阶(条件匹配)

1、通用匹配(协议、ip地址、网络接口可以独立使用)

协议,不让别人ping自己
[root@iptables ~]# iptables -t filter -I INPUT -p icmp -j DROP
禁止10.11.67.85的主机ping自己(-s)
[root@iptables ~]# iptables -t filter -I INPUT -p icmp -s 10.11.67.85 -j REJECT
禁止10.11.67.0/24的网段ping自己
[root@iptables ~]# iptables -t filter -I INPUT -p icmp -s 10.11.67.0/24 -j REJECT
禁止物理接口eth0的数据包(-i)
[root@iptables ~]# iptables -t filter -I INPUT -i eth0 -j REJECT

2、隐含匹配–sport/–dport(源地址端口和目的地址端口),需要协议的前提

先设置默认拒绝所有,然后放行个别端口
[root@iptables ~]# iptables -t filter -P INPUT DROP
或者先设置默认允许所有,然后拒绝个别端口
[root@iptables ~]# iptables -t filter -P INPUT ACCEPT
端口匹配:允许个别端口,如网站端口,网站访问放行(–dport 80)
[root@iptables ~]# iptables -t filter -I INPUT -s 10.11.67.85 -p tcp --dport 80 -j ACCEPT
端口匹配:10:21表示端口范围,放行FTP(–dport 20:21)
[root@iptables ~]# iptables -t filter -I INPUT -p tcp --dport 20:21 -j ACCEPT
[root@iptables ~]# iptables -t filter -I INPUT -p tcp --dport 24500:24600 -j ACCEPT
标记位匹配(TCP连接类型SYN,ACK,RST)(–tcp-flags)
[root@iptables ~]# iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP
ICMP类型匹配(请求8,回应0)(–icmp-type)
自己可以ping别人反过来不可以(input进口禁掉8)
[root@iptables ~]# iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
自己不能ping别人了。别人可以ping自己。。
[root@iptables ~]# iptables -t filter -A INPUT -p icmp --icmp-type 0 -j DROP
拒绝任何ping请求
[root@iptables ~]# iptables -t filter -I INPUT -p icmp -j DROP

3、显示匹配(通过调用模块:lsmod | grep xt_ 来加载内核扩展模块,如端口匹配,IP范围,MAC地址,状态等特殊匹配)

多端口匹配,一次放行多个端口(-m multiport --sports -m multiport --dports)
[root@iptables ~]# iptables -t filter -I INPUT -p tcp -m multiport --dport 18,21,20 -j DROP
IP地址范围匹配,自定义ip地址范围(-m iprange --src-range)
[root@iptables ~]# iptables -t filter -I INPUT -p tcp -m iprange --src-range 10.11.67.2-10.11.67.89 -j ACCEPT
MAC地址匹配,放行一个MAC地址(-m mac --mac-source)
[root@iptables ~]# iptables -t filter -A INPUT -p tcp -m mac --mac-source 00:0c:29:43:38:28 -j ACCEPT
TCP状态匹配,根据iptables跟踪链接状态,来定义链接的3个状态new新,established相应,related已有(-m state --state)
[root@iptables ~]# iptables -t filter -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

4、新的Web服务器的iptables规则示例

IPT="/usr/sbin/iptables"
$IPT --delete-chain
$IPT --flush
$IPT -P INPUT DROP #1
$IPT -P FORWARD DROP#1
$IPT -P OUTPUT DROP #1
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #2
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #3
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #3
$IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT#3
$IPT -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT #3
$IPT -A INPUT -i lo -j ACCEPT #4
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#5
$IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #5
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #6
$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT #7
$IPT -A OUTPUT -o lo -j ACCEPT #4
$IPT -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT #8
$IPT -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT #9
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#10
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT #10
service iptables save
service iptables restart
存为脚本iptables. sh,执行sh iptables. sh自动配置防火墙。
解释:
#1、设置INPUT,FORWARD,OUTPUT链默认target为DROP,也就是外部与服务器不能通信。
#2、设置当连接状态为RELATED和ESTABLISHED时,允许数据进入服务器。
#3、设置外部客户端连接服务器端口80,22,21,873。
#4、允许内部数据循回。
#5、允许外部ping服务器。
#6、设置状态为RELATED和ESTABLISHED的数据可以从服务器发送到外部。
#7、允许服务器使用外部dns解析域名。
#8、设置服务器连接外部服务器端口80。
#9、允许服务器发送邮件。
#10、允许从服务器ping外部。
iptables保存:iptables-save
iptables还原:iptables-restore

九、Iptables网络型防火墙SNAT(源地址网络地址转换)技术

filter表主要做服务器流量控制。控制别人访问服务器的。
nat表主要做网关路由器的。网络地址转换。SNAT和DNAT
前言:
  internet访问,在没有NAT(network address translation)时,外部服务器对内部的私有地址是无法进行路由的。做了SNAT就可以转换地址,进行路由通信。(注意:您的网卡名称不是ens32;注意:您的虚拟网络名称不是VMNET1)
环境:
  CENTOS7A:内网客户机:192.168.100.10 ens32 VMnet1 GATEWAY:192.168.100.20
  CENTOS7B:网关内网 :192.168.100.20 ens32 VMnet1 GATEWAY:无
  CENTOS7B:网关外网 :192.168.200.10 ens33 VMnet2 GATEWAY:无
  CENTOS7C:WEB服务器:192.168.200.20 ens32 VMnet2 GATEWAY:192.168.200.10 (WEB 服务器)
原理:
在这里插入图片描述

1、配置IP,将同一网段打通。注意配置网关地址

配置网关,就可以进行不同网段的打通
  谁带我上网,谁就是我的网关

2、启动CENTOS7B的路由转发功能,后测试内外网互通。成功

echo “net.ipv4.ip_forward = 1” >>/usr/lib/sysctl.d/50-default.conf (重启一下,永久开启)
  sysctl -a | grep ip_forward
  echo 1 > /proc/sys/net/ipv4/ip_forward(临时开启)

3、删除CENTOS7C的网关,模拟私有IP没有路由的情况。尝试通信失败

4、建立SNAT。通信成功

iptables -FXZL(清空一下,分开执行)
  iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 192.168.200.10
  Linux-CentOS7做路由器的Iptables加上这个规则
  参数
  -t nat NAT表
  -A POSTROUTING 追加,已路由链
  -s 192.168.100.0/24 源地址
  -o ens33 接口33,出方向
  -j SNAT 动作:源地址转换
  --to-source 192.168.200.10 源地址转成 200.10
  通过CENTOS7Cweb主机的访问日志,可以看出来访者。
  less /var/log/httpd/access_log

十、Iptables网络型防火墙MASQUERADE(地址伪装)技术

MASQUERADE —— 地址伪装
  地址伪装:适用于外网IP地址非固定的情况
  因为:对于ADSL拨号连接,接口通常为 ppp0、ppp1
  所以:将SNAT规则改为MASQUERADE即可,使动态地址作为SNAT的目标地址。效果同前一个实验
  iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
  参数 -t nat  -A POSTROUTING -s 92.168.100.0/24 -o ens33  -j MASQUERADE

十一、Iptables网络型防火墙DNAT(目标地址转换)技术

发布内网服务器,DNAT转换目标地址
  ①先部署内网服务器。100.10部署成web/ssh
  ②在网关配置DNAT,外网访问内网测试成功。
  iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10
  参数
  -t nat
  -A PREROUTING
  -i ens33
  -d 192.168.200.10
  -p tcp --dport 80  
  -j DNAT
  --to-destination 192.168.100.10

十二、Iptables网络型防火墙PNAT(端口映射)技术

DAT端口转换(映射)。安全性更高,比如内网服务器的SSH程序的22号端口。发布时SSH使用2345端口。
  演示配置端口映射
  iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport 2345 -j DNAT --to-destination 192.168.100.10:22
  参数
  -t nat NAT表
  -A PREROUTING 预路由链
  -i ens33 接口33 ,入方向
  -d 192.168.200.10 目的地址 200.10
  -p tcp --dport 2346 协议,端口2346
  -j DNAT  目标地址转换
  --to-destination 192.168.100.10:22 转成目标地址100.10
  那么外网访问的时候,就要访问改过的外网地址和端口了。
  ssh -p 2345 192.168.200.10

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值