15.安全整改.part2


这里继续讲等保的整改,这节讲讲堡垒机和防火墙的配置,有经费当然是直接上硬件,或者直接租用类似阿里云的安全环境,如果没有可用用开源的设置。本节主要讲基于jumpserver的堡垒机配置和Linux自带的iptables防火墙

堡垒机配置

堡垒机服务概念介绍

概念(来自百度百科):堡垒机也叫跳板机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
1.操作系统权限集中管理主要针对多用户操作系统,例如:linux。
可以想象一下,我们有10个服务器要管理,然后有两个管理员,这这两个管理员要记住这10台机器的各种账号,最起码就是20个相互关系。如果用堡垒机进行防护,那么就简单了。
2.网络安全访问控制限制

在这里插入图片描述
3.上图来自百度搜索结果,可以看到所有的运维管理操作都是通过堡垒机进行的,因此其作用可以记录管理人员操作行为日志记录、录屏等

开源堡垒机:https://www.jumpserver.org/index.html

堡垒机服务环境准备

这里以jumpserver配置为例进行简单的讲解
操作系统环境:CentOS7.x以上
安装完毕后需要对系统进行一些基本的配置,也可以直接下载软件优化:
可以参考这里https://blog.csdn.net/a13568hki/article/details/102922206
不过阿里云的镜像站目前在升级,不知道什么时候好,貌似网易也有。
具体命令再贴一下:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

EPEL (Extra Packages for Enterprise Linux), 是由 Fedora Special Interest Group 维护的 Enterprise Linux(RHEL、CentOS)中经常用到的包
当然安装前可以备份一下。

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

除了软件方面的配置,还需要手动关闭防火墙以及关闭selinux
检查防火墙状态:

/etc/init.d/iptables status

临时关闭防火墙:

/etc/init.d/iptables stop

永久关闭防火墙:

chkconfig iptables off

查看防火墙服务:

chkconfig--list iptables

临时关闭selinux

setenforce 0

查看selinux

getenforce

永久关闭要编辑config文件:

vim /etc/selinux/config

修改第七行:SELINUX=disabled

堡垒机服务安装部署

可以参考:https://docs.jumpserver.org/zh/master/install/setup_by_fast/
第一步:依赖软件下载安装

yum-y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass Lrzsz
readline-devel

这里安装的软件如下表所示:

名称用途
git代码版本控制管理,下载jumpserver代码
python-pip下载python组件下载工具,利用pip下载python程序依赖
mysql-develmysql数据库程序依赖包
gccGNU编译器, 编译识别c语言代码信息
automake实现自动编译 ,相当于make的升级版
autoconf实现自动配置
python-devel相关python依赖
vim这个不用介绍了,编辑器
sshpass免交互远程连接(就是SSH免密登陆)
lrzsz实现windows系统和linux系统之间传输数据
readline-develpython语言自动补全

第二步:下载jumpserver

cd /opt
git clone https://github.com/jumpserver/jumpserver.git

github比较慢的,可以去coding托管网站下载
第三步:初始化配置
安装python模块,主要是一些组件的版本要对上,有现成的软件。
创建.pip目录,并编辑pip.conf文件

mkdir ~/.pip/
vim ~/.pip/pip.conf

然后在里面加入如下内容:
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
在/opt/jumpserver/install目录下面,有一个requirements.txt文件,里面是要安装的模块,做好上面的pip操作准备后,就可以使用下面命令进行安装。如果不做上面的操作可能安装过程会非常慢。无红色错误即可,黄色警告可忽略。

pip instalL -r requirements.txt

该文件包含的内容包含:

#sphinx-me==0.3
django==1.6
pycrypto==2.4.1
paramiko==1.16.0
ecdsa==0.13
MySQL-python==1.2.5
#django-uuidfield==0.5.0
psutil==3.3.0
xlsxwriter==0.7.7
x1rd==0.9.4
django-bootstrap-form==3.2
tornado==4.3
ansible==1.9.4
pyinotify==0.9.6
passlib==1.6.5
argparse==1.4.0

这里安装过程还需要注意pycrypto版本问题,如果报错,需要卸载重装为2.4.1版(这个问题在新版jumpserver貌似没有了,这个也和centos版本有关。)卸载脚本如下:

pip uninstall pycrypto 
rm -rf /usr/lib64/python2.6/site-packages/Crypto/
rm -rf /usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6-linux-x86_64.egg

python环境好了后,执行:

python install.py

然后选择是否安装mysql,如果没有单独的数据库服务器,可以直接安装。
然后配置smtp服务器和端口。
然后输入邮箱账号
然后输入邮箱的授权码,这里不是密码。
然后登录邮箱收取确认邮件。
然后在数据库中创建表。
然后创建管理员账号密码。
若服务提示启动成功,则over;
若服务提示failed,则需要手工启动该服务。
需要跳转到/opt/jumpserver目录,执行

./service.sh start

服务启动成功后,查看进程ps -ef|grep python可以看到如下进程
python /opt/jumpserver/manage.py runserver 0.0.0.0:80#这个进程表示可以通过web访问和管理jumpserver
python /opt/jumpserver/run_websocket.py#这个进程表示jumpserver可以用socket管理其他主机

堡垒机应用配置

堡垒机应用配置就是要为不同的角色配置不同的权限,使其能够访问不同的主机。
基本都是图形界面,大概步骤是:
1.用户/组管理
2.资产/组管理(主机/主机组/机房)
3.权限管理:sudo管理员权限下放,主机登录账号(记得要将账号信息推送到相应主机a)

配置成功后,就可以在日志审计中看到:
登录历史
命令记录(有视频)
上传下载文件历史

iptables 防火墙

简介

以下内容来自百度百科:
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。

补充总结说明:
iptables 防火墙可以在低配置的服务器上运行。
1)可以实现包过滤功能开源服务软件
2)iptables 防火墙服务只能工作OSI7层模式二层三层四层(传输层:端口过滤、网络层:ip过滤、数据链路层:MAC地址过滤)

相关概念

  1. 规则:iptables防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。数据包通过防火墙时,如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则;如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。默认规则是所有规则执行完才执行的。
  2. 链:可以理解为防火墙中一层层的关卡,符合条件的才能过这个关卡。每一个关卡可以包含多个规则,很多个规则串起来就变成了链。默认有五种链:
名称作用
OUTPUT流出数据流量进行访问控制
INPUT流入数据流量进行访问控制
FORWARD流经数据流量进行访问控制
POSTROUTING在经过路由之后,要对数据包做什么处理(改写数据包信息-改源地址、端口信息)
PREROUTING在经过路由之前,要对数据包做什么处理(改写数据包信息-改目标地址、端口信息)
  1. 表:用来保存相同功能的规则的集合,前面说了iptables 可以工作在OSI7层模式二层三层四层,这里可以把端口过滤的规则放到一个表中,ip过滤的放到一个表中。默认的表有四种:
名称作用内核模块
*filter表实现过滤功能iptables_filter
*nat表network address translation,网络地址转换功能iptable_nat
mangle表拆解数据包,做出修改,并重新封装的功能,例如标记VLAN数据包iptable_mangle
raw表关闭nat表上启用的连接追踪机制,取消数据包的标记信息iptable_raw

星号的两个表是重点,其中filter对应前面三个链,nat对应后面两个链。当然这些链还可以用在后面两个表,不常用就不详写了。

服务策略配置

初始化配置

1.清空策略信息

iptables -F

查看规则:

/etc/init.d/iptables status

2.清空防火墙计数器

iptables -Z

计数器可以排查通讯过程产生的错误。用于记录规则匹配的数据包个数
3.清空防火墙自定义链、自定义脚本变量

iptables -X

查看及增加/插入规则信息

查看帮助

iptables --help
iptables -L -n -v --line-number

-n代表以数字的方式显示端口和IP,否则以协议的方式显示。
-v代表显示更详细的信息
–line-number代表显示规则行号,便于规则很多的时候定位插入位置。

对于配置规则,以下面命令为例:

iptables -A 大写链名 -s 源地址 -p 协议名 --dport 端口号 -j 处理方式

-A:指定规则信息添加到规则列表后,后面接链名(链名必须大写),如果用-I则表示将规则信息添加到规则列表前。如果需要在指定位置插入,可在链名后面加行号。
-s:链名为INPUT时,指定可以访问服务器的源地址,格式为:192.168.1.0/24,如果在-s前面加!,表示取反操作。
-d:链名为OUTPUT时,指定可以访问服务器的目的地址
-p:协议信息(tcp/udp/icmp/all)
–dport:链名为INPUT时,指定源端口
–sport:链名为OUTPUT时,指定目的端口
端口如果是连续的,可以用冒号分隔,例如21:80表示对21到80所有端口进行操作;
如果要指定多个不连续的端口,需要用逗号隔开,但是在链名后面要加-m multiport参数
-m:还有设置禁止ICMP数据包的功能(防止ping探测),后接icmp 参数
-j:防火墙完成处理动作,有三种:ACCEPT、DROP、REJECT

小例子:规则需求:阻止10.0.0.0/24网段主机远程连接服务器,只允许10.0.0.5主机可以访问服务器

iptables -A INPUT -s 10.0.0.5 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP

注意上面两个命令顺序不可调换
以上两条整合为一条

iptables -A INPUT !-s 10.0.0.5 -p tcp --dport 22 -j DROP

完全禁止ping命令,此时服务器也无法平通别的机器:

iptables -A INPUT -m icmp -p icmp --icmp-type any-j DROP

如果想要禁止别人ping通服务器,而允许服务器ping通别人,则要根据ICMP包类型分别设置规则(具体看:https://baike.baidu.com/item/ICMP/572452?fr=aladdin),其中:
禁止别人向服务器发送8–回显请求(Ping请求)
或者禁止0–回显应答(Ping应答)output,下面两个语句功能一样。

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP

修改删除规则

修改:

iptables -R 链名 行号 后面和增加规则一样

删除

iptables -D 链名 行号

默认规则

比较安全的方式应该是默认阻止,但是默认是允许,因此需要对默认规则进行修改。默认规则一般根据链进行配置,需要用到- P参数,例如:

iptables -P INPUT DROP
iptables -P FORWARD DROP

但是一般OUTPUT链应该是默认允许。

iptables -P OUTPUT ACCEPT

防火墙NAT配置

假设防火墙服务器有两块网卡,分别连接外网eth0和内网eth0,内网网卡应配置为内网网关:

内到外

1.要将经过防火墙之后的数据包映射为外网地址,准确的说是要把从内网出来的数据包的源地址映射为eth0的ip

iptables -t nat A POSTROUTING -s 内网计算机IP -o eth0 -j SNAT --to-source eth0的IP

2.配置内核默认信息,打开ip转发功能
2.1修改vim /etc/sysctl.conf文件,添加如下信息:
net.ipv4.ip_forward = 1
2.2重新加载sysctl.conf文件

sysctl -p

如果不起作用,要检查FORWARD链。

外到内

1.要将经过防火墙之后的数据包映射为内网地址,准确的说是要把从外网进来的数据包的目的地址和目的端口映射为内网IP和内网端口。

iptables -t nat -A PREROUTING -d eth0IP地址 -p tcp--dport 外网映射端口号 -j DNAT--to-destination 内网IP:内部服务端口

防火墙自定义链

可以想象一下这样的场景,如果链中存放了300条规则,这些规则有针对http服务的,有针对ssh服务的…假如,我们突然想要修改针对http服务的相关规则,如果没有自定义链,需要从头到尾重新一条条看一遍这些规则,很麻烦。
iptables中可以通过自定义链即可解决上述问题。
下面在INPUT链上自定义一个自定义链名,内含一个将来针对http要使用多次的操作

iptables -N 自定义链名
iptables -A INPUT -p tcp -- dport 80 -j 自定义链名

调用自定义链:

iptables-A 自定义链名 -s 网段或IP -j ACCEPT

这里不展开,其实这块比较复杂,自定义链内可以包含多个规则、可以在自定义链上修改某些规则、自定义链可以引用自定义链。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值