主机的资安防护措施

主机的简易资安防护措施

保护服务器主机时,需要知道你的服务器开了多少网络服务,以及启动的端口,根据情况关闭一些不必要的网络服务,再者,就是利用在线更新系统让你的Linux随时保持在

最新的软件的状态,这个工作可以预防绝大部分的入侵攻击,这个比较重要,最后就是架设基础防火墙

网络安全与主机基本防护:限制端口号,网络升级与SELinux

先介绍一下依据封包的流向,来制定系统强化的流程,包括在线自动升级,服务管控以及SELinux等等

网络封包联机进入主机的流程:

一个网络上的联机,这个网络封包在进入主机实际取得数据的整个流程,了解流程后,你才会了解要如何保护你的主机安全

封包进入主机的流程:

1,经过防火墙的分析:

Linux系统有内建的防火墙机制,因为你的联机能不能成功,得要先看防火墙的脸色,预设的Linux防火墙有两个机制,第一层是封包过滤式的netfilter防火墙,另一个是透过

软件控管的TCP Wrappers防火墙,

(1) 封包过滤防火墙:要进入Linux主机都会先通过Linux核心的预设防火墙netfilter的咚咚,就是iptables这个软件提供的防火墙功能,他主要分析TCP/IP的封包表头来进行过滤

的机制,主要分析的是OSI的二,三,四层,主要控制的就是MAC,IP,ICMP,TCP与UDP的端口与状态(SYN,ACK)等,

(2) 通过netfilter之后,网络封包会开始接收Super daemons以及TCP_Wrappers的检验,其实就是/etc/hosts.allow与 /etc/hosts.deny 的配置文件功能,这个功能也是针对TCP

的Header进行再次的分析,同样也可以设定一些机制来抵挡某些IP或Port,好让来源端的封包被丢弃或通过检验,

透过这两种防火墙的管控,我们可以将大部分来自因特网的垃圾联机丢弃,只允许自己开放的服务的联机才能够进入本机而已,可以达到最基础的安全防护

2,服务(daemon)的基本功能:

预设的防火墙是Linux的内建功能,但防火墙主要管理的是MAC,IP,PORT等等表头方面的信息,如果想要控管某些目录可以进入,某些目录无法使用的功能,那就要透过

权限以及服务器软件提供的相关功能了,例如:可以使用httpd.conf这个配置文件之内规范某些IP来源不能使用httpd这个服务来取得主机的数据,那么即使该IP通过了前面

两层的过滤,他依旧无法取得主机的资源,但是如果httpd这个服务本身就有问题的话,那么client端就可以直接利用httpd软件的漏洞来入侵主机

而不需要root的密码,

3,为了避免程序有问题所造成的资安问题,所以有了SELinux,SELinux可以针对网络服务的权限来设定一些规则,让程序能够进行的功能有限,因此

即使使用者的权限设定错误,以及程序自身有问题时,该程序能够进行的动作还是被限制的,即使该程序使用的是root的权限也一样,例如,http这个服务

被cracker攻击而让对方取得root的使用权,由于httpd已经被SELinux控制在/var/www/html里面,且能够进行的功能已经被规范住了,因此cracker就无法使用该程序来进行系统

的进一步破坏,现在这个SELinux一定要开启

4,使用主机的文件系统资源,WWW主机主要提供的就是档案,所以,最终网络封包其实是要向主机要求文件系统的数据,假设httpd这只程序来取得系统的档案

数据,但httpd默认是一个系统帐号名称为httpd来启动的,所以,你的网页数据的权限当然就要让httpd这个程序可以读取才行,如果前面三关的设定都OK了,最终权限设定错误

使用者依旧无法浏览你的网页数据。

所以我们要经常去分析/var/log/message与/var/log/secure这些档案,虽然各大Linux distribution大多推出适合他们自己的登录文件系统软件,例如CentOS的logwatch,不过

毕竟该软件不见的适合所有的distributions,所以可以自己写个logfile.sh 的shell script,

常见的攻击手法与相关保护

1,取得账户信息后猜密码:例如某个邮箱为dmtsai@your.host.name之类的样式,人家就知道你有一部主机为your.host.name,取得帐号为dmtsai

之后再利用nmap来进行你主机的port scan之后,就可以开始透过你主机有启动的软件功能来猜你这个帐号的密码了,所以密码还是要有良好的规划

解决方案:设定严格的密码设定规则, 包括/etc/shadow, /etc/login.def等档案的设定,如果主机够稳定,不会持续加入某些帐号时,可以使用chattr来限制

帐号(/etc/passwd, /etc/shadow) 的更改;

2,利用系统的程序漏洞攻击: 当主机在网络上开发网络服务时,就必须有启动某个网络服务,而软件可以产生一些会被cracker乱用的臭虫程序代码

而这些臭虫程序代码由于产生问题的大小,有分为bug(臭虫,可能造成系统的不稳定或当机)与Security(安全问题,程序代码撰写方式会导致系统的权限

被恶意者所掌握),有些时候cracker会尝试编写针对这个漏洞的攻击程序代码,放在网站上面供别人下载,这种攻击模式最常见,因为攻击者只要拿到攻击程序就可以攻击了

而且由攻击开始到取得你的root权限不需要猜密码,所以如果你的主机保持在实时更新的阶段,或者关闭一些不需要的软件,那么就能躲过这个问题了

(1) 关闭不需要的网络服务,开得port越少,可以被入侵的管道越少,一部主机负责的服务越单纯,越容易找出问题点

(2)  随时保持软件更新

(3) 关闭不需要的软件功能:举例来说,远程登录服务器SSH可以提供root由远程登录,那么危险的事情当然要给他取消

3,利用社交工程作欺骗:包括使用『好心的 email 通知』、『警告信函』、『中奖单』等等,都是在欺骗你的帐号密码,利用钓鱼方式

来欺骗你在某些恶意网站上面输入你的帐号密码,

解决方案:追踪对谈者,不要一味相信对方,不要随意透露帐号密码,不要随意在internet上面填写这些数据,真的很危险

4,利用程序功能的『被动』攻击

除了主动攻击外,还有所谓的被动攻击,例如某些网站上面的弹出式窗口,某些还会提示你很多好用的软件自动下载与安装,如果是信任

的,例如Red Hat,CentOS,Windows官网的话,那还好,如果是一个你也不清楚他是干嘛的网站,不要轻易同意下载该软件

解决方案:随时更新主机上的所有软件,如果你的浏览器没有问题的,你对方传递恶意代码时,你的浏览器也就不会执行,不要让你的收信软件主动的下载文件

不要连接到不明的主机。

5,蠕虫或木马的 rootkit

rootkit就是取得root权限的一群工具组,rootkit主要是透过主机的程序漏洞,社交工程让用户下载,安装rootkit软件,结果让cracker取得简单

的绑架对方主机,rootkit还会伪装或者是进行自我复制,例如:很多的rootkit本身就是蠕虫或者是木马间谍程序,蠕虫会让你的主机一直发送封包向外攻击

结果你的网络宽带被吃光,至于木马程序则是对你的主机进行开启后门 (开一个 port 来让 cracker 主动的入侵),结果就被绑架了,rootkit会主动的去修改系统观察指令,

包括ls,top,netstat,ps,who,w,last,find等等,让你看不到某些有问题的程序,如此一来,你的Linux就有危险了

解决方案:不要随意安装不明来源的档案或数据,不要让系统有太多危险指令,例如SUID/SGID的程序,很可能会造成用户不当的使用,而使得木马程序有机可趁

可以定时以rkhunter之类的软件来追查,有个网站提供 rootkit 程序的检查http://www.rootkit.nl/projects/rootkit_hunter.html

6,DDoS 攻击法 (Distributed Denial of Service )

他就是通过散步在各地的僵尸计算机进行攻击,让你的系统提供的服务被阻断而无法顺利的提供服务给其他用户的方式,最常见的就是SYN Flood 攻击法

当主机接收了一个带有SYN的TCP封包之后,就会启用对方要求的port来等待联机,并且发送出回应封包(带有 SYN/ACK 旗目标 TCP 封包),并等待 Client 端的再次回应

此时,client发送出SYN的封包后,却将来自Server端的确认封包丢弃,那么Server端就会一直空等,而client可以透过软件功能在短短的时间内

持续发送这样的SYN封包,那么你的Server会持续的发送确认封包,并且开启大量的port在空等,等到全部主机的port都启用完毕,系统就挂了

最常被用来作为阻断式服务的网络服务就是WWW了,因为WWW通常得对整个internet开放服务,这种攻击方法也是最难处理,因为要么就得要

系统核心有支持自动抵挡DDos攻击的机制,要么就要自行撰写侦测软件来判断,一般不会有人发起DDoS攻击的

其他还有IP欺骗,他可以欺骗你主机告知封包来源是来自信任网域,而且透过封包传送的机制,由攻击的一方持续的主动发送出确认封包与工作指令

如此一来,你的主机可能会误判该封包确实有响应,而且是来自内部的主机。不过由于因特网是有路由的,而每部主机在每一个时段的ACK确认码都不相同

所以用这个方式达成可以登录,会比较麻烦,不太容易发生在我们这些小型主机上面

解决方案:规定完善的防火墙,利用Linux内建的防火墙软件Iptables建立较完善的防火墙,设定好你的核心网络功能,分析登录文件来了解系统的状况

另外可以透过MRTG之类的监控软件来实时了解系统是否存在异常。

总结:服务器通常对内部来源的主机规范较为宽松,如果你的主机在公司内部,不小心被入侵了,那么贵公司的服务器可能就会暴露

在危险中了,又或者你因为看了色情网站导致你的主机中了蠕虫,那么公司的整个局域网就会无法使用网络了,因为带宽已经被蠕虫塞爆

主机防护还是很重要的:

1,建立完善的登录密码规则

2,完善的主机权限设定

3,设定自动升级与修补软件漏洞,及移除危险软件

4,在每项系统服务的设定当中,强化安全设定的项目

5,利用iptables,TCP_Wrappers强化网络防火墙

6,利用主机监听软件如 MRTG 与 logwatch 来分析主机状况与登录文件;

总之主机能做的保护:软件更新,减少网络服务,启动SELinux

软件更新的重要性:

例如WWW服务的httpd这只程序开启的时候,你的防火墙打开80端口让全世界都可以连接到你的port 80,如果你的httpd这只程序有资安方面的问题时,

因为防火墙原本就得开放port 80,此时防火墙对你的WWW一点防护也没有。没啥好说,就是将软件持续更新到最新就对了,自由软件有个好处,就是当程序有问题时,

开发商会在最短的时间取得职工提供的修补程序,并将该程序代码补充到软件更新数据库中,让一般用户直接透过网络来自动更新,因此要克服这个软件的问题

更新系统软件就对了,再者还是要尽量关闭一些不需要的网络服务,可以避免很多不必要的麻烦

权限与 SELinux 的辅助

有些时候发现权限不足方面的问题后,就直接将某个目录修订为chmod -R 777 /some/path/,如果这部主机有上网提供服务时,因为此目录的wx设定一起后,

代表该身份可以进行新增与删除的动作,偏偏又给了777,代表所有人都可以在该目录下进行新增与删除,万一这支程序被攻击而被取得操作权,你的主机可就危险了啊

由于帐号身份与群组设定的太混乱,导致无法使用单纯的三种身份的三种权限来设定你的系统时,可以透过ACL这个好用的东西,ACL可以针对

单一帐号或单一群组进行特定的权限设定,他可以辅助传统Unix的权限设定方面的困扰

如何避免用户乱用系统,乱设定权限,这个时候就要透过SELinux来控制,SELinux可以在程序与档案之间再加入一道细部的权限控制,即使程序与档案的权限符合了操作动作

但是程序与档案的SELinux类型不吻合时,那么该程序就无法读取该档案了,此外,我们的CentOS也针对了某些常用的网络服务制定了

许多的档案使用规则(rule),如果某些规则没有启用,那么即使权限,SELinux类型都对了,该网络服务的功能还是无法顺利的运作

透过这样的分析,随时更新系统软件,限制联机端口以及透过启动SELinux来限制网络服务的权限,经过这三个步骤你的系统将可以获得

相当大的保护,后续的防火墙以及系统注册表档分析工具仍是需要进行的

1,网络自动升级软件:

有些人会利用软件存在的系统漏洞,来进行侦测,入侵你的主机,因此,除了未来架设防火墙之外,最重要的Linux日常管理工作,莫过于软件的升级,那如果

自己每天去观察网络安全通报,并主动去查询各大distribution针对这些漏洞来提供升级软件包,那真是太不人性化了,目前就有很多在线直接更新的机制出现了

有了这些在线直接更新软件的手段与方法,我们系统管理员在管理主机系统上面,可以轻松多了,在安装好Linux之后,会先开启系统默认的防火墙机制,然后第一件事情

就是进行全系统更新,Linux上面的软件如何进行更新与升级,那就得依据当时你安装软件的方式来进行升级,每种方式都有其通用性:

RPM:软件管理工具,包括CentOS/ Redora/ SuSE都是使用这个方式来管理的

Tarball:利用官网释出的原始码在你的系统上面编译与安装,一般来说,由于软件是直接在自己的机器上面编译的,所以效能会好点,不过升级的时候就比较麻烦

因为又要下载新的原始吗并且重新编译一次,这种安装模式常见于某些特殊软件(没有包含在distribution当中),或者是Gentoo这个强调效能的distribution

dpkg:这个distribtion所使用的软件管理方式,与 RPM 很类似,都是透过预先编译的处理,可以让end user直接使用来升级与安装

如果系统安装的是CentOS,他使用的是RPM类型的软件管理模式,如果想要安装B2D的软件,要注意B2D是使用debian的kpkg来管理软件的,两者并不同

要互相安装比较难,所以在某些软件需要升级之前,得先要了解到你的系统上的软件安装与管理的方法才行

不过,如果是旧版本的Linux的软件升级该如何是好,由于旧版本的软件支持度本来就比较差,商业公司或者社群也没有那么多心力放在旧版本的支持上,

这个时候可以选择:(1) 升级到新的版本 (2) 利用Tarball来自行升级核心与软件,不过比较建议升级到新版本,因为要自行以手动方式由Tarball安装到最新的版本,实在

很浪费力气,还要常常查阅官网所推出的最新消息,楼过则可能发生无法预期的状况

Linux最常见的软件安装方式有RPM/Tarball/dpkg,其中由于Tarball是取得原始吗,所以要使用Tarball来在线自动更新是不太可能进行的,所以仅有RPM或dpkg这

两种软件管理的方式来进行在线更新了

由于各家distribution在管理系统上都有自己独特的想法,所以在分析RPM或dpkg软件与方式上面就有所不同,所以就有以下这些不同的在线升级机制啦

yum: CentOS与Fedora所常用的自动升级机制,通过FTP或WWW来进行在线升级以及在线直接安装软件

apt:早期由debian这个distribution所发展

you:由SuSE开发出来的在线安装升级方式,经过注册取得一组帐号密码后,就能够使用you的机制来进行在线升级,免费版本,仅有60天

urpmi:Mandriva所提供的在线升级机制

CentOS的yum软件更新,映像站使用的原理

1,先由配置文件判断yum server所在IP地址

2,连接到yum server后,先下载新的RPM档案的表头数据;

3,分析比较使用者所欲安装/升级的档案,并提供使用者确认

4,下载用户选择的档案到系统中的/var/cache/yum,并进行实际安装

由于你所下载的清单中已经含有官方网站释出的RPM档案的表头相依属性的关系,所以如果想要安装的软件包含某些未安装的相依软件时,我们的yum会顺便帮你下载

所需要的其他软件,预安装后,再安装你所实际需要的软件,从分析,下载,安装,全部一口气搞定,CentOS在世界各地都有映像站,这些映像站

将官网的yum服务器的数据复制一份,同时在映像站上面也提供同样的yum功能,因此,你可以在任何一部yum服务器的映像站上面下载与安装软件

http://www.centos.org/modules/tinycontent/index.php?id=32 此为亚洲地区映像站一览表

现在yum很聪明,他会主动的去分析离你的主机最近的那部映像站,然后直接使用该部映像主机作为你的yum来源,

yum的使用:安装,软件群组,全系统更新

yum [option] [查询的工作项目] [相关参数]

-y :当yum询问使用者的意见时,主动回答yes而不需要由键盘输入

install : 指定安装的软件名称,然后后面需接『 软件名称 』

update: 进行整体升级的行为,当然也可以接某个软件,仅升级一个软件

remove :移除某个软件,后面接软件名称

search:搜索某个软件或者是重要关键字

list:列出目前yum所管理的所有的软件名称与版本,有点类似rpm -qa

info:同上,有点类似于rpm -qai的执行结果

clean :下载的档案被放到/var//cache/yum ,可使用clean将他移除,可清除的项目:packages | headers | metadata | cache等

在[查询的工作项目]部分还可以具有整个群组软件的安装方式,如下所示:

grouplist:列出所有可使用的软件群组,例如Development Tools之类的

groupinfo:后面接group_name ,则可了解该group内含的所有软件名

groupinstall :这个可以安装一整组的软件群组,相当不错,更常与-- install root = /some/path共享来安装新系统

groupremove: 移除某个软件群组

范例一 :搜寻 CentOS 官网提供的软件名称是否有与 RAID 有关的?

yum search raid        mdadm.x86_64 : The mdadm program controls Linux md devices (software RAID)        输出内容中会显示与RAID软件相关的其他软件

范例一:上述输出结果中,mdadm的功能为何? 使用 yum info mdadm 来查看这个软件的作用和信息

yum list 查询所有的yum中的软件, 使用yum info 能够知道该软件的用途,再决定要不要安装,

范例三:安装某个软件吧!以 mdadm 这个软件名为例:   yum install mdadm,经过yum可以很轻松的就能安装好一个软件,并且这个软件已经主动的帮我们做好相依

属性的克服了,另外,yum下载的数据除了每个容器的表头清单档案之外,所有下载的RPM档案都会在安装完毕之后予以删除,这样你的系统就不会被下载的数据

给塞爆的问题,但是如果想要将下载的RPM档案继续保留在/var/cache/yum当中,就得要修改/etc/yum.conf配置文件了,将keepcache设置为1,这样RPM档案就

保存下来了,除了你有很多部主机要更新,你想要利用一台先yum升级且下载,然后将所有的RPM档案收集起来给内网的机器升级之外,上面的vim修改动作不建议修改,因为

你的/var恐怕会被塞爆,

yum安装软件群组

例如在桌面系统中,一般用户应该不会去发展软件,所以针对桌面计算机,软件群组又分为"Desktop Platform" 与开发者 "Desktop PlatformDevelopment" 两部份

观察某个软件群组拥有的RPM档案,利用Desktop Plagform这个项目说明

 LANG=C yum grouplist 查询系统有的软件去组有多少个

那么 Desktop Platform 内含多少个 RPM 软件呢?   yum groupinfo "Desktop Platform

安装某个软件群组的话  yum groupinstall "Desktop Platform"

全系统更新

yum update就可以进行软件的更新,yum update也可以直接进行同一版本的升级,不同版本的升级可能就要多花一些功夫了,老实说,不同版本之间最好不要去升级,而是

重新安装可能是最好的状况,

请设定一下工作排程,让你的 CentOS 可以每天自动更新系统

crontab -e 进行编辑,也可以编辑vim /etc/crontab      40 5 * * * root yum -y update && yum clean packages 这样就可以自动更新了,每天的凌晨5点40分

挑选特定的映像站,修改yum配置文件与清除yum快取

http://ftp.twaren.net/Linux/CentOS/6/os/x86_64/ 网址内最重要的就是那个【repodata】的目录,该目录就是分析RPM软件后所产生的软件属性相依数据放置处,

因此当你要找容器所在网址时,最重要的就是该网址底下一定要有个名为repodata的目录存在,那就是容器的网址。

接着修改yum的配置文件,配置文件的内容:

【base】里面的名称则可以随意取,但是不能有两个相同的容器名称,否则yum会不知道该到哪里去找容器相关软件列表档案

name 说明一下这个容器的意义

mirrorlist 列出这个容器可以使用的映射站台,如果不想使用,可以批注掉这行,由于等一下我们是直接设定映像站,因此等会确实是需要批注掉的

baseurl 后面接的是容器的实际网址,mirrorlist是由yum程序自行去捉映像站台,而baseurl则是指定固定的一个容器网址,将刚刚的网址放到这里来

enable=1 就是这个容器被启动,不想使用设为enable=0

gpgcheck=1 RPM的数字签名,这就是指定是否需要查阅RPM档案内的数字签名

gpgkey=1 就是数字签名的公钥文件所在位置,使用默认值即可

baseurl=http://ftp.twaren.net/Linux/CentOS/6/os/x86_64/最重要!

yum clean all <==改过配置文件,最好清除既有清单

yum repolist all 列出目前yum server 所使用的容器有哪些

在 status 上写 enabled 才是有启动的!由于 /etc/yum.repos.d/有多个配置文件,所以你会发现还有其他的容器存在

修改容器产生的问题与解决之道

我们是修改了系统默认的配置文件,事实上应该要去/etc/yum.repos.d/底下新建一个档案,该扩展名必须是.repo才行。

使用默认的配置文件会造成修改了网址没有修改容器名称(中括号内的文字),可能就会造成本机的列表与yum服务器的列表不同步,会出现无法更新的问题

此时就需要透过yum的clean项目来处理即可

yum clean [packages|headers|all]

packages:将已下载的软件档案删除

headers :将下载的软件文件头删除

all:将所有容器数据都删除!

范例:删除已下载过的所有容器的相关数据 (含软件本身与列表)  yum clean all 

新建repo文件的编写: vim /etc/yum.repos.d/drbl.repo

baseurl=http://mirrors.163.com/centos/6/os/x86_64/

yum search drbl

yum repolist all 可以看到刚刚新建立的容器

限制联机端口(port)

当启动一个网络服务,这个服务就会依据TCP/IP的相关通讯协议启动一个端口在进行监听,那就是TCP/IP封包的port(端口)了,

网络联机是双向的,服务端和客户端都要启动一个端口来接收响应的数据才行,端口规则:

服务器端启动的端口所对应的服务是固定的

例如WWW服务开启在port 80,FTP服务开启在port 21,email传送开启在port 25等等

客户端启动程序时,随机启动一个大于1024以上的端口

客户端启动的端口是随机产生的,主要开启在大于1024以上的端口,这个port也是由某些软件所产生的,例如浏览器,Filezilla这个FTP客户端程序

一部服务器可以同时提供多种任务,只要服务器软件激活的端口不同,那就不会造成冲突,当客户端连接到此服务器时,透过不同的端口,就可已

取得不同的服务数据,共65536个端口,端口分为两部分,以port 1024作区分

只有 root 才能启动的保留的 port,小于1024的端口,都是需要以root身份才能启动的,这些port主要是用于一些常见的通讯服务,在Linux系统下,

常见的协议与port的对应记录在/etc/services里面的

大于 1024 用于 client 端的 port: 主要是作为client端的软件激活port

当建立可靠的联机需要使用TCP协议,也就是三向交握,如果是非面向连接的服务,例如DNS与视讯系统,那只要使用UDP协议既可

通讯协议可以启用在非正规的port:例如MySQL这个数据库软件就启动在3306这个端口上,另外,影响网络完全的并不是

prot,而是启动port的那个软件,因此没有必要的服务就将它关闭,尤其是某些网络服务还会启动一些port,另外,那些已启动的软件

也需要持续的保持更新。

端口的观察

主机到底是开了多少的port,由于port的启动与服务有关,可根据/etc/services去设计端口

常用来观察port的,则有底下两个程序:

netstat : 在本机上面以自己的程序监测自己的port;

nmap: 透过网络的侦测软件辅助,可侦测非本机上的其他网络主机,但有违法之嫌,很多cracker会直接以他来侦测别人的主机

netstat  要了解自己的系统当中的服务项目,最简便的方法就是使用netstat了,

列出在监听的网络服务 netstat -tunl

列出已联机的网络联机状态  netstat -tun

删除已建立或在监听当中的联机 kill -9 1342 ,希望不要心急的使用killall这个指令,否则容易删错人(因为你的主机里面可能会有多个sshd存在),应该使用kill命令才对

nmap 如果要侦测的设备并没有可让你登录的操作系统,那该怎么办,举例,如果想要了解一下公司的网络打印机非本机的设备是否有开放某些协议时,用nmap就对了

nmap [扫瞄类型] [扫瞄参数] [hosts 地址与范围] 

[扫瞄类型]:

-sT:扫瞄 TCP 封包已建立的联机 connect() !

-sS:扫瞄 TCP 封包带有 SYN 卷标的数据

-sP:以 ping 的方式进行扫瞄 ‘

-sU:以 UDP 的封包格式进行扫瞄

-sO:以 IP 的协议 (protocol) 进行主机的扫瞄

[扫瞄参数]:

-PT:使用 TCP 里头的 ping 的方式来进行扫瞄,可以获知目前有几部计算机存活(较常用)

-PI:使用实际的 ping (带有 ICMP 封包的) 来进行扫瞄

-p :这个是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式

[Hosts 地址与范围]:

192.168.1.100 :直接写入 HOST IP 而已,仅检查一部;

192.168.1.0/24 :为 C Class 的型态,

192.168.*.*: 则变为 B Class 的型态了! 扫瞄的范围变广了!

192.168.1.0-50,60-100,103,200 :这种是变形的主机范围啦!很好用吧

# 范例一:使用预设参数扫瞄本机所启用的 port (只会扫瞄 TCP)   nmap localhost   在预设的情况下,nmap 仅会扫瞄 TCP 的协议

# 范例二:同时扫瞄本机的 TCP/UDP 埠口  nmap -sTU localhost <==会多出 UDP 的通讯协议埠口

# 范例三:透过 ICMP 封包的检测,分析区网内有几部主机是启动的 nmap -sP 192.168.1.0/24

了解各个主机的启动的 port 作一番侦测的话,那就得要使用 nmap 192.168.1.0/24,如果想要随时记录整个网段的主机是否有不小心开放了某些服务

可以利用nmap配合数据流重导向 (>,>>)来输出成为文档,可以随时掌握你局域网络内每部主机的服务启动状况

由于这个软件可以侦测别人的计算机,但是别人可以使用TCP_Wrappers(/etc/hosts.allow,/etc/hosts.deny) 的功能来记录曾经侦测过该port的IP

这个软件用来侦测自己机器的安全性是不错,侦测别人会很麻烦的

埠口与服务的启动/关闭及开机时状态设定

Stand alone:该执行文件直接加载到内存当中运作,用这种方式启动可以让该服务具有较快速响应的优点,这种服务的启动脚本放置在/etc/init.d/

这个目录底下,所以可以使用『 /etc/init.d/sshd restart 』之类的方式来重新启动

Super daemon:用一个超级服务xinted作为总管,来统一管理某些特殊的服务,这种方式响应的速度会比较慢,不过可以透过super daemon额外提供

一些控管,例如控制何时启动,何时可以进行联机,那个IP可以连接,是否允许同时联机等等,通常各个服务的配置文件放置在/etc/xinted.d/当中,

但设定完毕后需要重新以【/etc/init.d/xinted/ restart】重新来启动才行

如果想要将系统上面的port 111关掉的话,先找出那个port 111的启动程序netstat -tnlp | grep 111 接着找到档案which rpcbind,再以rpm处理rpm -qf /sbin/rpcbind 去找到这个

软件,将它关闭 rpm -qc rpcbind | grep init ,  /etc/init.d/rpcbind stop , 而如果使用kill去关闭服务的话,你不知道服务是做啥的,不知道关闭后出现的问题

所以在不知道的前提下可以利用上面的流程找出该服务软件,再利用rpm查询功能,不就知道该服务的作用了

预设启动的服务

不同的运行等级 run level 启动的数据都是放置在 /etc/rc.d/rc[0-6].d/ 里面的,手动管理这个目录会疯掉,那就要使用chkconfig去管理或者是ntsysv

(1)如何查阅 rpcbind 这个程序一开机就执行  chkconfig --list | grep rpcbind

(2)如果开机就执行,如何将他改为开机时不要启动 如果有启动 chkconfig --level 35 rpcbind off

(3)如何立即关闭这个 rpcbind 服务, 可以透过『 /etc/init.d/rpcbind stop 』来立即关闭他

在服务器中有的服务一定要开启例如crond工作排成,rsyslogd记录系统状况,所以除非你知道每个服务的目的是啥,否则不要随机关闭该服务

acpid  atd  crond   haldaemon   iptables   network   postfix  rsyslog  sshd   xinetd  这几个是主机需要的重点服务,请不要关闭

安全性考虑-关闭网络服务端端口

如果你的主机是作为服务器的,所以本来预计要给client使用的服务就可以关闭掉,底下有个例子,将你的网络服务关闭就好,其他在系统内部的服务暂时保留

先利用netstat -tunlp找出所有服务,使用which与rpm搜索出服务开启的执行脚本

例如:rpc.statd /etc/rc.d/init.d/nfs 等等,接下来就是将该服务关闭,设定为开机不启动

编写脚本:vim bin/closedaemon.sh

for daemon in nfs nfslock rpcgssd rpcidmapd rpcsvcgssd xinetd rpcbind

do

    chkconfig $daemon off

    /etc/init.d/$daemon stop

done

执行脚本sh bin/closedaemon.sh,执行完毕后再次下达netstat -tlunp 之后,会得到仅剩port 25,22而已,绝大部分服务器用不到的服务就被你关闭,而且

即使重新启动也不会被启动了

SELinux 管理原则

SELinux可以针对特定的程序与特定的档案资源来进行权限的控管,也就是说即使是root,在使用不同的程序时,你所取得的权限并不一定是root,而得要看当时

该程序的设定而定,如此一来,我们针对控制的主机变成了程序而不是使用者了,这个权限的管理模式就特别适合网络服务的程序了,即使程序使用root身份去启动

如果该程序被攻击而被取得操作权,那么该程序能做的事情还是有限的,因为被SELinux限制住了能进行的工作了,举例来说,WWW服务器软件达成程序为httpd

这支程序,而默认情况下httpd仅能在/var/www这个目录下存取档案,如果httpd这支程序想要到其他目录去存取数据,除了规则设定开放外,目标目录也要设定成

httpd可读取的模式(type),限制非常多! 所以,即使不小心 httpd 被 cracker 取得了控制权,他也无权浏览 /etc/shadow 等重要的配置文件

SELinux 的运作模式

主体(Subject):SELinux主要管理的就是程序,因此可以将主体跟程序划上等号

目标(Object): 主体程序能否存取的目标资源一般就是文件系统,因此目标项目可以与文件系统划上等号

政策(Policy):由于程序与档案数量庞大,因此SELinux会依据某些服务制定基本的存取安全性政策,这些政策还会有详细的规则(rule)来指定不同的服务开放

某些资源的存取是否,目前的两个政策如下,一般来说,使用预设的target政策即可

targeted:针对网络服务限制较多,针对本机限制较少,是预设的政策 

mls:完整的 SELinux 限制,限制方面较为严格

安全性本文 (security context):除了主体,目标,政策外,还有一个主体与目标的安全性文本必须一致才能顺利存取,这个安全性文本类似文件系统的rwx

安全性文本的内容与设定非常重要,如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),就会出现权限不符的错误信息

大致流程:

主体就是程序 --------------------->SELinux(分析政策规则  政策(Poliy) Rule1 Rule2 Rule3)------------>安全性文本比对(AVC 拒绝存取的讯息说明)-----------------> 目标(资源存取)

最终能否存取还是要继续参考rwx的权限设定

安全性文本

target政策帮我们制定了非常多的规则,因此你只要知道如何开启/关闭某项规则的放行与否即可,安全性文本比较就麻烦多了,你可能需要自行配置文件的安全性文本

安全性文本存在于主体程序中与目标档案资源中,程序在内存内,所以安全性文本可以存入没有问题,那档案的安全性文本则是记录在inode内的,因此主体程序想要

读取目标档案资源时,同样需要读取inode信息,此时就可以比对安全性文本与rwx等权限值是否正确,给予适当的读取权限依据

观察安全性本文可使用『 ls -Z 』去观察如下,前提是SELinux必须是启动的,

ls -Z 显示 drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 bin   特殊字体的部分,就是安全性本文的内容

安全性文本主要用冒号分为三个字段(最后一个字段先不看),前三个字段的意义是:identity身份识别 : role角色 :type类型

身份识别 (Identify): 相当于账号方面的身份识别,主要有三种常见类型:root(root的账号身份) system_u(表示系统程序方面的识别,就是程序) user_u一般使用者账号的身份

角色 (Role): 透过角色字段我们可以知道这个数据时属于程序,档案资源还是代表使用者,object_r代表的是档案或目录等档案资源,system_r代表就是程序或一般使用者

类型 (Type): 在预设的 targeted 政策中,identity与role字段基本不重要,重要的就是type字段,基本上,一个主体程序是否能读取这个档案资源,与类型type字段有关

而类型字段在档案与程序的定义不太相同:

type:在档案资源 (Object) 上面称为类型 (Type); 

domain:在主体程序 (Subject) 则称为领域 (domain) 了 

domain 需要与 type 搭配,则该程序才能够顺利的读取档案资源

例如:www服务器功能的httpd程序与 /var/www/html这个网页放置的目录来说明,首先看看这两个东东的安全性文本内容:yum install httpd

-rwxr-xr-x. root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd 

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

两者的角色都是object_r代表都是档案,而httpd属于httpd_exec_t 类型,而/var/www/html 则属于 httpd_sys_content_t 这个类型

httpd属于httpd_exec_t 这个可以执行的类型,而 /var/www/html 则属于httpd_sys_content_t 这个可以让 httpd 领域 (domain) 读取的类型,其实这个domain可以读取的资料

会详细的列在targeted这个政策中,其中包含可读取的httpd_sys_content_t类型。

操作步骤:

1,首先,我们触发一个可执行的目标档案案,那就是具有 httpd_exec_t 这个类型的 /usr/sbin/httpd

2,该档案的类型会让这个档案所造成的主体程序(Subject)具有httpd这个domain,我们在政策中针对这个领域制定了许多的规则,其中包括这个domain可读取的目标资源类型

3,由于 httpd domain 被设定为可以读取 httpd_sys_content_t 这个类型的目标档案 (Object),因此你的网页放置到 /var/www/html/ 目录下,就能够被 httpd 那支程序所读取了;

4. 但最终能不能读到正确的资料,还得要看 rwx 是否符合 Linux 权限的规范! 

上面的流程告诉我们政策内需要制定详细的domain/type 相关性;第二个是若档案的 type 设定错误, 那么即使权限设定为 rwx 全开的 777 ,该主体程序也无法读取目标档案资源

如此一来, 也就可以避免用户将他的家目录设定为 777 时所造成的权限困扰。

SELinux的启动,关闭,观察

因为CentOS本身支持SELinux,所以你不需要自行编译SELinux到你的Linux核心中,目前SELinux支持三种模式:

enforcing:强制模式,代表SELinux运行中,且已经正确的开始限制domain/type了;

permiessive:宽容模式,代表SELinux运行中,不过仅会有警告讯息并不会实际限制domain/type的存取,这种模式可以用来作为SELinux的debug之用

disabled:关闭,SELinux并没有实际运作

通过执行getenforce可以查看SELinux目前的模式,通过vim /etc/selinux/config可以知道SELinux的政策(Policy)为何:

SELINUX=enforcing <==调整 enforcing|disabled|permissive

SELINUXTYPE=targeted <==目前仅有 targeted 与 mls

上面是默认的政策与启动的模式,如果改变了政策则需要重新启动,如果由enforcing或permissive改成disabled,或由disabled改成其他两个,那也必须要重新启动,这是

因为SELinux是整合到核心里面去的,只可以在SELinux运作下由enforcing与premiessive之间切换,如果发现getenforce出现disabled时,请到上述档案修改成为enforcing

然后重新启动,如果从disabled转到启动SELinux的模式时,由于系统必须针对档案写入安全性文本的信息,因此开机过程会花费不少时间在等待重新写入SELinux安全性文本

有时也称为SELinux Label,而且在写完之后还要再重新启动一次,等到下次开机成功时,使用getenforce来观察看看是否成功的启动到Enforing的模式了,如果在进行调试

的时候可以将Enforcing的模式改为permissive的模式,让SELinux只会警告无法顺利联机的讯息,而不是直接抵挡本体程序的读取权限,让SELinux模式在

enforcing 与 permissive 之间切换的方法为:setenforce [0|1]    参数 :0转成permissive的模式,而1转成Enforcing强制的模式,setenforce 无法在 Disabled 的模式底下进行

模式的切换,在某些特殊情况下,由disabled切换成Enforcing之后,竟然有一堆服务无法顺利启动,会说/lib/XXX里面的数据没有权限读取,大多数是由于在重新写入SELinux

type出错之故,使用Permissive就没有问题,此时最简单的方法就是在Permissive的状态下,使用『 restorecon -Rv / 』重新还原所有 SELinux 的类型,就能够处理这个错误

SELinux type 的修改 SELinux的type字段很重要,

cp /etc/hosts /root 将/etc/hosts 复制到 root 家目录,并观察相关的 SELinux 类型变化

ls -dZ /etc/hosts /root/hosts /root 从结果中看出如果是单纯的复制时,SELinux的type字段会继承目标目录的,如果是mv /root/hosts /tmp 移动的话,那么会连同SELinux的类型

也会被移动过去,因此 /tmp/hosts 会依旧保持 admin_home_t 而不会变成 /tmp 的 tmp_t 这个类型, 那么,如何将/tmp/hosts变更成为最原始的net_conf_t的类型,就需要

使用chcon了。

chcon [-R] [-t type] [-u user] [-r role] 档案

chcon [-R] --reference=范例文件 档案

参数与选项:

-R :连同该目录下的次目录也同时修改;

-t :后面接安全性本文的类型字段!例如 httpd_sys_content_t ;

-u :后面接身份识别,例如 system_u;

-r :后面接角色,例如 system_r;

--reference=范例文件:拿某个档案当范例来修改后续接的档案的类型!

# 范例:将刚刚的 /tmp/hosts 类型改为 etc_t 的类型  chcon -t net_conf_t /tmp/host  接着使用ll -Z /tmp/hosts查看结果

# 范例:以 /var/spool/mail/ 为依据,将 /tmp/hosts 修改成该类型 chcon --reference=/var/spool/mail /tmp/hosts 改好后,执行ll -Z /tmp/hosts进行查看

chcon这种方式,我们必须要知道最终我们的SELinux type是啥类型,才能够变更成功,如果想要做的是复原成原有的SELinux type,可以使用底下的指令来进行

restorecon  选项与参数: -R :连同次目录一起修改; -v :将过程显示到屏幕上

# 范例:将刚刚 /tmp/hosts 移动至 /root 并以预设的安全性本文改正过来  mv /tmp/hosts  /root    ll -Z /root/hosts 执行restorecon -Rv /root表示将hosts由mail_spool_t 改为

admin_home_t,

默认目前的安全性文本查询与修改

SELinux恐怕会在档案的服务或移动时产生变化,因此需要使用chcon,restorecon等指令来修订,restorecon怎么会知道每个目录记载的默认SELinux type类型,这是因为

系统有记录,记录在、etc/selinux/targetd或context,但是该目录内有很多不同的数据,要使用文本编辑器去查阅很麻烦,可以透过semanage这个指令的功能来查询与修改

semanage 这个指令的功能来查询与修改

fcontext :主要用在安全性本文方面的用途, -l 为查询的意思;

-a :增加的意思,你可以增加一些目录的默认安全性本文类型设定;

-m :修改的意思;

-d :删除的意思。

# 范例:查询一下 /var/www/ 的预设安全性本文设定为何  yum install /var/wwwde预设安全性文本类型设定

yum install policycoreutils-python

semanage fcontext -l | grep '/var/www' 从结果中看其实semanage可以处理非常多的任务,不过,现在只要了解的是每个目录的默认安全性文本,用上面的命令我们可以查询

到每个目录的安全性文本,而目录的设定可以使用正则表示法去指定一个范围,那么如果想要增加某些自定义的目录的安全性文本,例如想要增加某些自定义的目录的安全

性文本,例如我想要制定/srv/vbird成为public_content_t的类型时,可以这样指定

# 范例:利用 semanage 设定 /srv/vbird 目录的默认安全性本文为public_content_t

mkdir /srv/vbird       ll -Zd /srv/vbird      预设的情况应该是 var_t 这个咚咚的!

semanage fcontext -l | grep '/srv'

执行semanage fcontext -a -t public_content_t ,  semanage fcontext -l | grep '/srv/vbird',接着使用cat  /etc/selinux/targeted/contexts/files/file_contexts.local 其实就写入这个

档案了,restorecon -Rv /srv/vbird* <==尝试恢复默认值   ll -Zd /srv/vbird   有默认值,以后用 restorecon 来修改比较简单

SELinux 政策内的规则布尔值修订

政策查阅  yum install setools-console   seinfo [-Atrub] 选项与参数:

-A :列出 SELinux 的状态、规则布尔值、身份识别、角色、类别等所有信息

-t :列出 SELinux 的所有类别 (type) 种类

-r :列出 SELinux 的所有角色 (role) 种类

-u :列出 SELinux 的所有身份识别 (user) 种类

-b :列出所有规则的种类 (布尔值)

列出SELinux在此政策下的统计状态,

# 范例一:列出 SELinux 在此政策下的统计 :状态执行seinfo ,从结果中看出政策是 targeted ,  Types: 3076 表示SELinux type有3076个,针对网络服务的规则boolean制定

了173条规则

# 范例二:列出与 httpd 有关的规则 (booleans) 有哪些? 执行seinfo -b | grep httpd 可以看出有非常多的与httpd有关的规则制定,同样除了查看httpd有关的布尔值外我们还

可以找到有httpd字样的安全性文本类别,可以使用 seinfo -t | grep httpd 来查询,如果查询到相关的类别或者是布尔值后,想要知道详细的规则,就要使用sesearch这个指令

sesearch [--all] [-s 主体类别] [-t 目标类别] [-b 布尔值]

--all :列出该类别或布尔值的所有相关信息  -t :后面还要接类别,例如 -t httpd_t   -b :后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server

找出目标档案资源类别为 httpd_sys_content_t 的有关信息 sesearch --all -t httpd_sys_content_t

你可以很轻易的查询到某个主体程序 (subject) 可以读取的目标档案资源 (Object)。

# 范例三:我知道有个布尔值为 httpd_enable_homedirs ,请问该布尔值规范多少规则?

sesearch -b httpd_enable_homedirs --all  从这个布尔值的设定我们可以看到里面规范了非常多的主题程序与目标档案资源的放行是否,实际规范这个规则的就是这个布尔值

你的主体程序是否能对某些目标档案进行存取,与这个布尔值非常有关系,布尔值可以将规则设定为启动 (1) 或者是关闭 (0) 啦

上面我们透过 sesearch 知道了,其实 Subject 与 Object 能否有存取的权限,是与布尔值有关的, 那么系统有多少布尔值可以透过 seinfo -b 来查询,

但,每个布尔值是启动的还是关闭的呢?这就来查询看看

getsebool [-a] [布尔值条款]      -a :列出目前系统上面的所有布尔值条款设定为开启或关闭值

并且以 sesearch 知道该布尔值的用途后,想要关闭或启动他,又该如何处置

setsebool [-P] 布尔值=[0|1]   -P :直接将设定值写入配置文件,该设定数据未来会生效的!

# 范例一:查询 httpd_enable_homedirs 是否为 on,若不为 on 请启动他!

getsebool httpd_enable_homedirs

setsebool -P httpd_enable_homedirs=1

getsebool httpd_enable_homedirs

记得setsebool最好要记得加上-P的选项,因为这样才能将此设定写入配置文件,一定要知道如何使用 getsebool 与 setsebool

SELinux 登录文件记录所需服务

上述的指令功能当中,尤其是 setsebool, chcon, restorecon 等,都是为了当你的某些网络服务无法正常提供相关功能时,才需要进行修改的一些指令动作,但是如何知道

系统因为SELinux的问题导致网络服务不对劲,CentOS提供了几只侦测的服务在登陆SELinux产生的错误,那就是auditd与setroubleshootd

setroubleshoot --> 错误讯息写入 /var/log/messages

几乎所有SELinux相关的程序都会以se为开头,这个服务也是以se为开头,而troubleshoot是错误克服,因此这个setroubleshoot自然就要启动它,这个服务会将关于SELinux

的错误信息与克服方法记录到/var/log/messages 与 /var/log/setroubleshoot/* 里头,所以一定要启动这个服务,需要两个软件,分别是setroublshoot 与 setroubleshoot-server

此外,原本的 SELinux 信息本来是以两个服务来记录的,分别是 auditd 与 setroubleshootd,既然是同样的信息,因此CentOS6将两者整合在auditd当中了,并没有

setroubleshootd 的服务存在了,当安装好setroubleshoot-server 之后,请记得要重新启动 auditd,否则 setroubleshootd 的功能不会被启动的。

yum install setroubleshoot setroubleshoot-server                /etc/init.d/auditd restart <==整合到 auditd 当中了

事实上,CentOS 6.x 对 setroubleshootd 的运作方式是(1)先由 auditd 去呼叫 audispd 服务(2)然后 audispd 服务去启动 sedispatch 程序,(3)sedispatch 再将原本的 auditd 

讯息转成 setroubleshootd 的讯息

以HTTP这个服务为例,先建立一个index.html,接着将它移动到/var/www/html 目录下,此时以links http://localhost/index.html -dump这个模式来进行首页的处理,会产生

SELinux的问题,画面最明显的地方就是告诉你,你并没有权限可以存取 index.html,可以透过setroubleshoot 的功能去检查看看,此时分析下/var/log/messages的内容

cat /var/log/messages | grep setroubleshoot,从输出中找出重点就是 sealert -l ,想要更完整的信息得要靠sealert配合侦测到的错误代码来处理,实际处理像下面这样:

sealert -l 6c927892-2469-4fcc-8568-949da0b4cf8d

Allowing Access: <==超重要的项目!要看要看! restorecon '/var/www/html/index.html'

restorecon -Rv '/var/www/html/index.html' 你只要照着『Allowing Access』里面的提示去进行处理,就能够完成你的SELinux类型设定了,

管出了啥 SELinux 的问题,绝大部分在 setroubleshoot 的服务中就会告诉你解决之道

用 email 或在指令列上面直接提供 setroubleshoot 错误讯息

如果每次测试都要到 /var/log/messages 去分析,那就太麻烦,此时可以透过email或console的方式将信息产生,就是说我们可以让setroubleshoot主动的发送产生的信息到

我们制定的email,这样可以方面我们实时的分析,可以修改setroubleshoot 的配置文件即可,你可以查阅/etc/setroubleshoot/setroubleshoot.cfg 这个档案的内容,只需要

修改的地方如下:

vim /etc/setroubleshoot/setroubleshoot.cfg

# 大约在 81 行左右,这行要存在才行! recipients_filepath = /var/lib/setroubleshoot/email_alert_recipients

# 大约在 147 行左右,将原本的 False 修改成 True 先! console = True

vim /var/lib/setroubleshoot/email_alert_recipients

root@localhost

your@email.address

/etc/init.d/auditd restart

之后就可以通过分析email来取得SELinux的错误信息了,上述的填写email的档案中,不能只写账号,连同@localhost都写上,这样本机上面的root才能收到信件

SELinux错误克服的总结

你的网络联机要通过SELinux的权限判定后才能继续rwx的权限比对,而SELinux的比对主要分为通过政策的各项规则比对后,才能够进行SELinux type安全性文本的比对,

这两项工作都要对才行,而后续的SELinux修改主要是透过chcon, restorecon, setsebool 等指令来处理的。处理的依据是分析/var/log/messages内提供setroubleshoot 的信息

但是如果因为某些原因,举例来说 CentOS 没有规范到的 setroubleshoot 信息时,可能你还是无法了解到事情到底错在哪,建议:

1. 在服务与 rwx 权限都没有问题,却无法成功的使用网络服务时;

2. 先使用 setenforce 0 设定为宽容模式;

3. 再次使用该网络服务,如果这样就能用,表示 SELinux 出问题,请往下继续处理。如果这样还不能用,那问题就不是在 SELinux 上面!请再找其他解决方法,采取底下动作

4. 分析 /var/log/messages 内的信息,找到 sealert -l 相关的信息并且执行;

5. 找到 Allow Access 的关键词,照里面的动作来进行 SELinux 的错误克服;

6. 处理完毕重新 setenforce 1 ,再次测试网络服务吧!

修改了 /etc/sysconfig/i18n 将里面的数据设定为: LANG=en_US 并且重新启动,才顺利恢复 sealert 的信息说明

1.网管人员应具备的技能:

了解什么是需要保护的内容:硬件:能锁就锁吧, 软件:还包含最重要的数据 

预防黑客 (Black hats) 的入侵:如果是大企业的话,那么员工使用网络时,也要分等级的

主机环境安全化:仔细的分析登录档,还包含了以最快的速度更新有问题的软件

防火墙规则的订定:

实时维护你的主机:这方面除了分析 log files 之外,也可以藉由实时侦测来进行这个工作!例如 PortSentry 就是蛮不错的一套软件

良好的教育训练课程:

完善的备份计划:完善的备份计划是相当重要的,我们在后面的远程联机服务器内提到一个很棒的 rsync 工具

2.主机受攻击后复原工作流程,万一你的主机被入侵了,最好的方法还是『重新安装Linux 』会比较干净!一部被入侵的主机应该如何修复比较好:

立即拔除网络线:拔除网络线之后,远程的攻击者立即就无法进入你的 Linux 主机,而且你还可以保护网域内的其他相关主机

分析登录文件信息,搜寻可能的入侵途径:分析登录档:低级的 cracker 通常仅是利用工具软件来入侵你的系统,所以我们可以藉由分析一些主要的登录档来找出对方的 IP 以

及可能有问题的漏洞。可以分析 /var/log/messages, /var/log/secure 还有利用 last 指令来找出上次登入者的信息。检查主机开放的服务 检查一下每个服务是否有漏洞,或者是

在设定上面有了缺失,然后一个一个的整理吧  查询 Internet 上面的安全通报: 透过安全通报来了解一下最新的漏洞信息,说不定你的问题就在上面

重要数据备份  如果主机上面没有重要的数据, 那么直接重新安装就好了,重要的数据应该是『非 Linux 系统上面原有的数据』,不要备份一些 binary 执行文件,因为 Linux 系

统安装完毕后本来就有这些档案,此外, 这些档案也很有可能『已经被窜改过了』,那备份这些数据,反而造成下次系统还是不干净

重新全新安装:备份完了数据,再来就是重新安装 Linux 系统了。而在这次的安装中, 你最好选择适合你自己的安装软件即可,不要全部软件都给他安装上去啊

软件的漏洞修补  重新安装完毕之后,请立即更新你的系统软件,否则还是会被入侵的,先在其他比较干净的环境下将 Internet 上面的漏洞修补软件下载下

来,然后刻录起来,然后拿到自己的刚刚安装完成的系统上面,mount CD 之后全部给他更新,更新之后,并且设定了相关的防火墙机制,同时进行下一步骤『 关闭或移除不

需要的服务』后,我才将网络线插上主机的网络卡上,因为不敢确定在安装完毕后,连上 Internet 去更新软件的这段时间,会不会又受到入侵攻击说....

关闭或移除不需要的服务:

数据回复与恢复服务设定:刚刚备份的数据要赶紧的复制回来系统,同时将系统的服务再次的重新开放,请注意, 这些服务的设定最好能够再次的确认一下,避免一些不恰当

的设定参数在里头喔!

连上 Internet: 所有的工作都进行的差不多了,那么才将刚刚拿掉的网络线接上来吧!恢复主机的运作了,最好还是参考防火墙的设定









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值