Linux主机安全笔记

      说明: Linux主机安全笔记部分内容参考网络上各位大神所整理的资料,部分内容不断增加、修改。当然本人对Linux系统不是很专业,大家将计看看。


一  BIOS安全(硬件上的安全)

  • 最基本最简单的安全配置,保障计算机硬件配置等不被别人更改.给BIOS设置密码,防止改变启动顺序从软盘或 光盘启动.防止特殊的启动盘启动用户的系统,进入rescue或其他模式.改变或删除当前配置等.每一个细心的网 管每个细节都不应该忽视!
  • 禁止使用contral+alt+delete重起机器编辑/etc/inittab文件,注释掉下面一行.

ca::ctrlaltdel:/sbin/shutdown-t3 -r now

该成:(使用#)

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

二  帐号安全

口令,系统的第一道防线,目前大多数数攻击都是截获口令或猜测口令等口令攻击开始的. /etc 目录下主要存放系统的配置文件.我们要对这个目录下的好多文件进行修改.

  1. /etc/login.defs文件是login程序的配置文件.口令的长度和口令的有效期等可以在这里设置.

[[email protected] ~]# vi /etc/login.defs

...

PASS_MAX_DAYS  9999  密码被用最多天数

PASS_MIN_DAYS  0     密码被用最少天数

PASS_MIN_LEN   5     系统默认密码长度5,我们可以该成8或更多.

PASS_WARN_AGE  7     密码有效期警告,超过7天将提示用户更换新的密码.

...

  1. /etc/profile文件是环境变量设置文件.在此文件设置环境变量将对所有用户生效.我们要在此文件设置自动 注销帐户的时间.及命令的历史记录数.

[[email protected]~]# vi /etc/profile

...

HOSTNAME=`/bin/hostname`

HISTSIZE=1000这里1000代表用户操作命令的历史记录.应尽量小一些.设置成0也可以,呵呵.

tmout=600添加此行,如果系统用户在600秒(10分钟)内不做任何操作,将自动注销这个用户.

...

  1. /etc/passwd文件存放系统用户名,用户标识(UID),组标识(GID)等的地方.我们要在这里找到并清除没有设置 口令的用户.同时还要清除一些特别帐号(因为可能会存在潜在的危险).

[[email protected] ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

...

wh::500:501::/home/wh:/bin/bash

仔细观察上面的一行(wh用户),在第二项,两个冒号中间什么都没有,而上面的的用户(如root用户)都是x. 这表 明此用户没有密码.要不添加上,要不删掉.

  1. 特别帐号的处理 如果不启动用sendmail,删除如下用户

[[email protected]]# userdel adm

[[email protected]]# userdel lp

[[email protected]]# userdel sync

[[email protected]]# userdel shudown

[[email protected]]# userdel halt

[[email protected]]# userdel mail

如果不用Xwindows服务器.可有删除

[[email protected]]# userdel news

[[email protected]]# userdel uucp

[[email protected]]# userdel operator

[[email protected]]# userdel games

如果不允许匿名FTP帐号登陆,可删除

[[email protected]]# userdel gopher

[[email protected]]# userdel ftp

  1. 不使用root用户登录系统
  • # useradd arcky.li
  • # vim /etc/passwd
  • # 改 :arcky.li:x:500:500::/home/arcky.li:/bin/bash

# 为: arcky.li:x:0:0::/home/arcky.li:/bin/bash    -->给arcky.li增加root权限,0:0为root的uid以及gid即用户组id与管理组id

  • # vim /etc/passed
  • # 改:root:x:0:0:root:/root:/bin/bash

# 为:root:x:0:0:root:/root:/sbin/nologin -->修改root不能登录系统

  1. 利用lastb查看最后登录系统的主机,检查是否有非法用户登录并且检查/var/log/btmp是否过大,如果过大说明有非法用户登录系统

  1. fail2ban可以监视系统日志,然后匹配日志的错误信息执行相应的屏蔽的作用 yum install     fail2ban -y安装

三  重要文件的安全设置.

首先要了解两个命令

1.  chmod:改变文件的属主

2.  chattr:改变文件属性

我们要做的是把重要文件的属主改成root并给相应的权限,还有就是改变文件的属性让它禁止被修改

我们来统计一下重要文件:(其实,只要你不想让其他用户更改的文件都可以这么做,我这里只是为安全而选择了

下面的文件.)

  • /etc/passwd,passwd-,passwd.OLD,group,group- 用户,组的ID等信息文件.
  • /etc/shadow,shadow-,gshadow,gshadow- 用户,组密码加密文件.
  • /etc/xinetd.conf 网络守护进程主配置文件
  • /etc/inittab  系统在启动是会读取这个文件里的内容.
  • /etc/services 防止未经许可的删除或添加服务
  • /etc/rc.d/rc.sysinit 系统启动是需要读取的文件,
  • /etc/rc.d/init.d/*

以一个文件为例,其它都一样

[[email protected]]# chmod 700 passwd

[[email protected]]# chattr +i passwd

当chattr+i时就是禁止对文件进行修改,当我们要添加用户时,就会有麻烦,因为passwd文件禁止修改写入.所以我们还要该掉它的属性.chattr -i.

四  防止攻击系统安全设置

  1. 限制用户使用系统资源,主要包括资源最大进程数,内存使用量等.这样可以防止DOS类型攻击.

需要编辑文件

[[email protected] /]# vi /etc/security/limits.conf

...

(这三行是添加的)

*hard core 0    禁止创建core文件

*hard rss 5000  其他用户(除root)最多使用5M内存

*hard nproc 20  最多进程数限制在20

注:*表示所有登陆到linux的用户.

#End of file

[[email protected] /]# vi /etc/pam.d/login

...

在文件末尾加入下面一行

sessionrequired /lib/security/pam_limits.so

  1. 限制控制台的访问

[[email protected] /]# vi /etc/securetty

...

我们注释掉

tty1

#tty2

#tty3

只留下tty1,这时,root仅可在tty1终端登录

  1. 禁止外来ping请求.

[[email protected] /]# vi /etc/rc.d/rc.local

...

在最后加入一行

echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

  1. 防止IP地址欺骗

[[email protected] /]# vi /etc/host.conf

加入如下几行

orderbind,hosts

multioff

nospoofon

5.  使用TCP_WRAPPER

在默认情况下linux系统允许所有请求,可用TCP_WRAPPER增强安全性,

在/etc/hosts.deny写入"ALL:ALL"禁止所有请求

[[email protected] /]# vi /etc/hosts.deny

#

#hosts.deny    This file describes the names of the hosts which are

#              *not* allowed to use the localINET services, as decided

#              by the ‘/usr/sbin/tcpd‘ server.

#

#The portmap line is redundant, but it is left to remind you that

#the new secure portmap uses hosts.deny and hosts.allow.  In particular

#you should know that NFS uses portmap!

"ALL:ALL"

把允许访问的客户,或服务添加到/etc/hosts.allow,冒号左边为服务,冒号右边为授权的机器

[[email protected] /]# vi /etc/hosts.allow

#

#hosts.allow   This file describes the names of the hosts which are

#              allowed to use the local INETservices, as decided

#              by the ‘/usr/sbin/tcpd‘ server.

#

vsftp:211.101.46.253   注:仅如许IP地址为211.101.46.253的机器访问FIP服务器

6.  删减登录信息

[[email protected] ~]# rm -f /etc/issue

[[email protected] ~]# rm -f /etc/issue.net

[[email protected] ~]# touch /etc/issue

[[email protected] ~]# touch /etc/issue.net

五  确保开启服务的安全性

我们先来看一下自己系统开启了多少服务.

[[email protected]~]# ps -eaf | wc -l

我们可以通过当前的进程里在来看一下都是什么服务

[[email protected] ~]# ps -aux

Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0  19232  1504 ?        Ss   Sep20   0:01 /sbin/init

root          2  0.0  0.0      0     0 ?        S    Sep20   0:00 [kthreadd]

root          3  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/0]

root          4  0.0  0.0      0     0 ?        S    Sep20   0:00 [ksoftirqd/0]

root          5  0.0  0.0      0     0 ?        S    Sep20   0:00 [stopper/0]

root          6  0.0  0.0      0     0 ?        S    Sep20   0:40 [watchdog/0]

root          7  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/1]

  • 查看连接状态,带有LISTEN的代表正在开启的端口,开启的服务.  [[email protected]~]# netstat -an

  • 查看启动服务

[[email protected]~]# cd /etc/rc.d

[[email protected]]# ls

init.d rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d rc5.d  rc6.d  rc.local  rc.sysinit

如果你的系统是X(图形化启动的话)运行级别是5,那就是rc5.d,我的是rc3.d,运行级别是3.(多用户模式)

是哪个模式就进入哪个目录,看一下

[[email protected]]# cd rc3.d/

linux在开机时会读取/etc/rc.d/rcX.d(根据X的运行级别)

服务进程说明,可以根据此列表来确认那些服务器是可关闭的进程:

  • amd: 自动安装NFS(网络文件系统)守侯进程
  • apmd:  高级电源管理
  • Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
  • atd 运行用户用At命令调度的任务。也在系统负荷比较低时     运行处理任务。
  • Autofs:自动安装管理进程automount,与NFS相关,依赖于NISBootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息
  • crond:Linux下的计划任务
  • Dhcpd:启动一个DHCP(动态IP地址分配)服务器
  • Gated:网关路由守候进程,使用动态的OSPF路由选择协议
  • gpm:  gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台鼠标的拷贝,粘贴操作以及弹出式菜单。
  • Httpd:WEB服务器
  • Inetd:支持多种网络服务的核心守候程序
  • Innd:Usenet新闻服务器
  • keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状态。
  • ldap LDAP代表Lightweight     Directory Access Protocol, 实现了目录访问协议的行业标准。
  • Linuxconf:允许使用本地WEB服务器作为用户接口来配置机器
  • Lpd:打印服务器
  • Mars-nwe:mars-nwe文件和用于Novell的打印服务器
  • mcserv Midnight Commander服务进程允许远程机器上的用户通过MidnightCommander文件管理器操作本机文件。服务进程用PAM来验证用户,需要给出“用户名/口令”以通过验证
  • named:DNS服务器
  • netfs:安装NFS、Samba和NetWare网络文件系统
  • network:激活已配置网络接口的脚本程序
  • nfs:打开NFS服务
  • nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务,它高速缓存用户口令和组成成员关系
  • Pcmcia pcmcia主要用于支持笔记本电脑。
  • portmap:RPC     portmap管理器,与inetd类似,它管理基于RPC服务的连接
  • postgresql:一种SQL数据库服务器random 保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的
  • routed:路由守候进程,使用动态RIP路由选择协议
  • rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序
  • ruserd:远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
  • rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息
  • rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务
  • sendmail:邮件服务器sendmail
  • smb:Samba文件共享/打印服务
  • snmpd:本地简单网络管理候进程
  • squid:激活代理服务器squid
  • syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
  • Webmin webmin是基于web的集系统管理与网络管理于一身的强大管理工具。利用webmin的强大功能,用户可以通过web浏览器来方便地设置自己的服务器、dns、samba、nfs、本地/远程文件系统以及许多其他的系统配置。
  • xfs:X Window字型服务器,为本地和远程X服务器提供字型集
  • xntpd:网络时间服务器
  • ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程
  • yppasswdd:NIS口令服务器
  • ypserv:NIS主服务器
  • gpm:管鼠标的identd:AUTH服务,在提供用户信息方面与finger类似

六  日志的安全.

日志的安全问题,也就是通过日志来查看那些可疑的用户登陆过机器。目前比较流行的ELK日志分析系统,建议大家有空可以研究研究。Linux系统三个重要的日志文件如下:

  • /var/log/wtmp 记录每个用户登陆和推出时间的永久记录.
  • /var/run/utmp 记录当前登陆到系统的每个用户信息.
  • /var/log/lastlog 每个用户最后一次登陆的信息(最新的信息)

wtmp和utmp都是二进制文件,它们要用命令来查看内容.

1.  命令who,查看utmp文件当前的每个用户的信息,它默认输出包括用户名,终端类型,登陆时间及远程主机.如下:

[[email protected]]# who

root    pts/0        May  4 22:10 (192.168.0.5)

如果指明了文件,则回显示自wtmp创建以来所有登陆的用户信息.

[[email protected]]# who /var/log/wtmp

root    tty1         May  4 20:44

root    pts/0        May  4 20:52(211.101.46.195)

2.  命令w,查看utmp文件并显示当前系统中每个用户和它所运行的进程信息.如:

[[email protected]]# w

 23:00:48 up 54 min,  1 user,  load average: 0.00, 0.00,0.00

USER     TTY      FROM             [email protected]   IDLE   JCPU  PCPU WHAT

root     pts/0    192.168.0.5     22:10    0.00s  0.03s  0.00s w

3.  users,显示当前当前登陆的用户数量.如,

[[email protected]]# users

root root

这表明两个root用户在同时登陆这台机器.

4.  last命令,用来显示wtmp文件第一次 创建以来所有登陆过的用户.如:

[[email protected]]# last

root    pts/1        192.168.0.5     Fri May  4 23:01 - 23:02  (00:00)

root    pts/0        192.168.0.5     Fri May  4 22:10   still logged in

reboot  system boot  2.6.9-34.EL      Fri May  422:07          (00:59)

root    pts/0        192.168.0.5     Fri May  4 21:38 - down   (00:27)

reboot  system boot  2.6.9-34.EL      Fri May  421:36          (00:29)

root    pts/1        192.168.0.5     Fri May  4 21:09 - down   (00:25)

我们也可以指明用户,[[email protected] log]# last root

root    pts/1        192.168.0.5     Fri May  4 23:01 - 23:02  (00:00)

root    pts/0        192.168.0.5     Fri May  4 22:10   still logged in

wtmpbegins Tue May  1 08:13:04 2007

5.  命令ac,根据wtmp文件中每个用户进入和退出时间.(以小时计算),不用参数代表全部

[[email protected]]# ac

total        2.88

[[email protected]]# ac -d 代表每天总连接时间

Today  total        2.89

[[email protected]]# ac -p 代表每个用户总连接时间

root                                2.89

total        2.89

我们要养成经常查看日志来观察有无可疑用户等问题的存在.

七、常见安全隐患以及解决方法

  • 窃听:利用对数据加密方法
  • 篡改:利用哈西算法检验数据的完整性(MD5 SHA1)

 opensslenc -e -des3 -a -in /etc/passwd -out /home/passwd.des3    #加密

   openssl enc -d -des3 -a -in/home/passwd.des3 -out /home/passwd  #解密

   diff /home/passwd /etc/passwd  #对比两个文件是否一致

 -e  encrypt 加密;后面可以加很多加密的算法,如-des3加密算法

     -d  decrypt解码

     -a/-base64 base64 encode/decode, dependingon encryptyion flag。#base64编码/解码,这取决于加密的标志。 

     -in    inputfile

     -out  outputfile

          MD5: Message-Digest Algorithm 5(信息摘要算法)。MD5算法的哈希值大小为128。是一种不可逆的算法。不管输入法数据长短,最终哈西出来的数据长度是一样的。

          

   MD5字符加密  

          SHA1: Secure Hash Algorithm(安全哈希算法)。SHA1算法哈希值大小为160。是一种不可逆的算法。

   

  • 伪装(伪装WIF):     利用身份认证确保是否被授权(用户密码、数据证书、CA证书)
  • 网络中断-->DDOS攻击:加大带宽,加多服务器
时间: 2024-10-21 15:06:31

Linux主机安全笔记的相关文章

Nagios学习笔记四:基于NRPE监控远程Linux主机

1.NRPE简介 Nagios监控远程主机的方法有多种,其方式包括SNMP.NRPE.SSH和NCSA等.这里介绍其通过NRPE监控远程Linux主机的方式. NRPE(Nagios Remote Plugin Executor)是用于在远端服务器上运行检测命令的守护进程,它用于让Nagios监控端基于安装的方式触发远端主机上的检测命令,并将检测结果输出至监控端.而其执行的开销远低于基于SSH的检测方式,而且检测过程并不需要远程主机上的系统帐号等信息,其安全性也高于SSH的检测方式. 2.安装配

Linux程序设计学习笔记----网络通信编程API及其示例应用

转载请注明出处, http://blog.csdn.net/suool/article/details/38702855. BSD Socket 网络通信编程 BSD TCP 通信编程流程 图为面向连接的Socket通信的双方执行函数流程.使用TCP协议的通信双方实现数据通信的基本流程如下 建立连接的步骤 1.首先服务器端需要以下工作: (1)调用socket()函数,建立Socket对象,指定通信协议. (2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Linux程序设计学习笔记----进程间通信——管道

转载请注明出处: http://blog.csdn.net/suool/article/details/38444149, 谢谢! 进程通信概述 在Linux系统中,进程是一个独立的资源管理单元,但是独立而不孤立,他们需要之间的通信,因此便需要一个进程间数据传递.异步.同步的机制,这个机制显然需要由OS来完成管理和维护.如下: 1.同一主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO),消息队列(Message Queue)和共享内存(Share Memory).无名管道多用于亲

Linux 操作系统学习笔记

一,unix 1.unix 特点 伸缩性强,开放性好, 2.基本原则 所有对象,硬件都是文件 配置数据以文本形式保存 短小的单目的程序构成 多个程序合作完成复杂任务 3.gnu 基本原则是共享,建立自由开放的unix系统 1984年 richard stallman 发起 基本体系是micro kernel 4.gpl Copyleft 原作者所有权 5.linux起源 Linustorvalds, 自由的类unix操作系统, 遵循gnu和gpl 6.linux 可以实现unix功能 遵循开源许

Linux程序设计学习笔记----Socket网络编程基础之TCP/IP协议簇

转载请注明出处: ,谢谢! 内容提要 本节主要学习网络通信基础,主要涉及的内容是: TCP/IP协议簇基础:两个模型 IPv4协议基础:IP地址分类与表示,子网掩码等 IP地址转换:点分十进制\二进制 TCP/IP协议簇基础 OSI模型 我们知道计算机网络之中,有各种各样的设备,那么如何实现这些设备的通信呢? 显然是通过标准的通讯协议,但是,整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等,如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

Linux扫描技术笔记

Linux扫描技术笔记 题记: 主机节点的存活的探测方法,我们日常用的最多的是ping,除此之外还有没有其他方法?本文介绍了fping,hping相关操作以探测节点存活. 服务的存活,我们日常用的最多的是telnet,除此之外还有没有其他方法?本文介绍了nmap,ncat对于服务存活的探测. 此外,本文还介绍了批量主机节点扫描,批量服务端口存活扫描,以及路由扫描以及安全防范措施. 0.网络安全技术 1)数据真实.可靠.完整.可控(安全角度). 举例:获取公用设备的弱口令 获取常用命令: trac

Linux程序设计学习笔记----网络编程之网络数据包拆封包与字节顺序大小端

网络数据包的封包与拆包 过程如下: 将数据从一台计算机通过一定的路径发送到另一台计算机.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame).数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理. 上图对应两台计算机在同一网段中的情况,