linux系统安全.docx
- 文档编号:30719891
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:17
- 大小:1.34MB
linux系统安全.docx
《linux系统安全.docx》由会员分享,可在线阅读,更多相关《linux系统安全.docx(17页珍藏版)》请在冰豆网上搜索。
linux系统安全
Linux系统安全
摘要2
一、账户安全2
1.1禁止root远程登2
1.2密钥登录2
1.2.1设置密钥登录方法3
1.3增加root密码的长度4
1.4配置sudo4
1.5禁止从不同的控制台进行root登陆4
1.6ssh防暴力破解5
二、网络安全6
2.1禁止ping反应6
2.2防洪水攻击6
2.2.1DDoS攻击实例-SYNFlood攻击6
2.2.2防洪水攻击的方法8
2.2.3具体实施:
8
2.3防止源路由9
三、监控系统日志9
3.1登录日志的定时发送9
3.2更改历史记录9
四、漏洞扫描10
4.1Nessus介绍10
4.2Nmap软件介绍15
摘要
新安装的linux系统潜在的安全隐患较多,这篇文章对linux系统安全做了详细的说明与更改建议。
一、账户安全
1.1禁止root远程登
由于采用远程使用root登录风险太大,故采用禁止root远程登录的方法。
vim/etc/ssh/sshd_config
###port改成自己的端口
将PermitRootLoginyes改成PermitRootLoginno
将Usednsyes改成Usednsno
servicesshdrestart
说明:
SSH服务默认启用了DNS反向解析的功能,这种设置会导致我们在通过ssh访问服务器时,如果该服务器的主机名在DNS中无记录的话,由于等待超时而出现响应极慢的情况。
这时可对ssh服务器/etc/ssh/sshd_config添加如下设置:
UseDNSno
1.2密钥登录
1.2.1为什么要使用公钥认证
通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。
但是密码认证有以下的缺点:
1 用户无法设置空密码(即使系统允许空密码,也会十分危险)
2 密码容易被人偷窥或猜到
3 服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,导致密码容易泄露,而且修改密码时必须通知所有人
而使用公钥认证则可以解决上述问题。
1 公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
2 多个使用者可以通过各自的密钥登录到系统上的同一个用户
3 即使修改了对应用户的密码,也不会影响登陆
4 若同时禁用密码认证,则只要保证私钥的安全,不会受到暴力破解的威胁
1.2.2设置密钥登录方法
在一台机子上新建liuwei用户或其它要登录的用户
在liuwei用户下执行。
ssh-keygen将生成密钥对:
"id_rsaid_rsa.pub"
将密钥对copy出。
在另一台root下执行
cd/home/
useraddliuwei
su-liuwei
mkdir.ssh
chmod700.ssh
echo"公钥">>.ssh/authorized_keys
chmod600.ssh/authorized_keys
cat.ssh/authorized_keys
exit
注视:
公钥为用记事本打开copy出的id_rsa.pub文件内容
通过上面设置后使用ssh客户端就可以通过公钥方式登录了。
1.3增加root密码的长度
将root密码设为20位以上,root密码只有少数人知道。
通过设置/etc/login.defs文件可以设置密码的最小长度,密码过期时间等设置。
1.4配置sudo
配置sudo使普通用户执行sudo-s即可切换到root目录。
普通用户不需要知道root密码。
配置sudo的方法:
在命令行执行:
visudo
在下面
##Samethingwithoutapassword
#%wheelALL=(ALL)NOPASSWD:
ALL
添加
liuweiALL=(ALL)NOPASSWD:
ALL.其中liuwei为所要登录的用户。
1.5禁止从不同的控制台进行root登陆
"/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。
你可以编辑"/etc/securetty"文件,再不需要登陆的TTY设备前添加“#”标志,来禁止从该TTY设备进行root登陆。
或者在/etc/inittab文件中有如下一段话:
#Rungettysinstandardrunlevels
1:
2345:
respawn:
/sbin/mingettytty1
2:
2345:
respawn:
/sbin/mingettytty2
#3:
2345:
respawn:
/sbin/mingettytty3
#4:
2345:
respawn:
/sbin/mingettytty4
#5:
2345:
respawn:
/sbin/mingettytty5
#6:
2345:
respawn:
/sbin/mingettytty6
将后面注释,只允许使用2个控制台。
1.6ssh防暴力破解
DenyHosts,它是用Python2.3写的一个程序,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP
到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。
DenyHosts官方网站:
安装DenyHosts
需要python2.3版本以上的支持
python-V查看版本
wget
tar-zxfDenyHosts-2.6.tar.gz
cdDenyHosts-2.6
pythonsetup.pyinstall
程序脚本自动安装到/usr/share/denyhosts
库文件自动安装到/usr/lib/python2.3/site-packages/DenyHosts
denyhosts.py自动安装到/usr/bin
#设置启动脚本
cd/usr/share/denyhosts/
cpdaemon-control-distdaemon-control
chownrootdaemon-control
chmod700daemon-control
grep-v"^#"denyhosts.cfg-dist>denyhosts.cfg
vimdenyhosts.cfg
SECURE_LOG=/var/log/secure#RedHat/FedoraCore分析该日志文件,其它版本linux根据denyhosts.cfg-dist内提示选择。
PURGE_DENY=30m#过多久后清除
DENY_THRESHOLD_INVALID=1#允许无效用户(/etc/passwd未列出)登录失败的次数
DENY_THRESHOLD_VALID=5#允许有效(普通)用户登录失败的次数
DENY_THRESHOLD_ROOT=3#允许root登录失败的次数
HOSTNAME_LOOKUP=NO#是否做域名反解
/usr/share/denyhosts/daemon-controlstart#启动放入rc.local随系统启动。
最后使用/etc/security/limits.conf文件对个别用户进行限制
二、网络安全
2.1禁止ping反应
入侵者确定主机是否活动的最快、最简单的方法就是使用ping命令进行刺探。
Ping命令会发送一个ICMPecho请求,目标主机接收到请求后会回应一个ICMP应答包。
为了防止入侵者对主机进行ping刺探,可以禁止Linux主机对ICMP包的回应:
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
2.2防洪水攻击
到目前为止,进行DDoS攻击的防御还是比较困难的。
首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。
2.2.1DDoS攻击实例-SYNFlood攻击
SYN-Flood是目前最流行的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。
SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。
那么我们一起来看看SYN-Flood的详细情况。
SynFlood原理-三次握手
SynFlood利用了TCP/IP协议的固有漏洞。
面向连接的TCP三次握手是SynFlood存在的基础。
TCP连接的三次握手
图一
图一TCP三次握手
如图一,在第一步中,客户端向服务端提出连接请求。
这时TCPSYN标志置位。
客户端告诉服务端序列号区域合法,需要检查。
客户端在TCP报头的序列号区中插入自己的ISN。
服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。
在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。
到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
SynFlood攻击者不会完成三次握手
图二
图二SynFlood恶意地不完成三次握手
假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:
服务器端受到了SYNFlood攻击(SYN洪水攻击)。
2.2.2防洪水攻击的方法
主机上的设置
几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种:
∙关闭不必要的服务
∙限制同时打开的Syn半连接数目
∙缩短Syn半连接的timeout时间
∙及时更新系统补丁
网络设备上的设置
企业网的网络设备可以从防火墙与路由器上考虑。
这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是以多大的效率牺牲为代价的,对你来说是否值得。
1.防火墙
∙禁止对主机的非开放服务的访问
∙限制同时打开的SYN最大连接数
∙限制特定IP地址的访问
∙启用防火墙的防DDoS的属性
∙严格限制对外开放的服务器的向外访问
2.路由器
以Cisco路由器为例
∙CiscoExpressForwarding(CEF)
∙使用unicastreverse-path
∙访问控制列表(ACL)过滤
∙设置SYN数据包流量速率
∙升级版本过低的ISO
∙为路由器建立logserver
2.2.3具体实施:
echo1>/proc/sys/net/ipv4/tcp_syncookies#提高SYN攻击的能力
#添加防火墙规则防止洪水攻击
iptables-Nsyn-flood
iptables-AINPUT-ieth0-ptcp--syn-jsyn-flood
iptables-Asyn-flood-mlimit--limit9000/s--limit-burst120-jRETURN
iptables-Asyn-flood-jDROP
###以后会根据服务器的应用与配置写出防火墙的脚本。
2.3防止源路由
路由和路由协议会导致一些问题。
IP源路径路由(IPsourcerouting),也就是IP包包含到达的目的地址的详细路径信息,是非常危险的,因为根据RFC1122规定目的主机必须按原路径返回这样的IP包。
如果黑客能够伪造原路径路由的信息包,那么它就能截取返回的信息包,并且欺骗你的计算机,让它觉得正在和它交换信息的是可以信任的主机。
强烈建议你禁止IP原路径路由以避免这个安全漏洞。
echo0>/proc/sys/net/ipv4/conf/all/accept_source_route#禁止IP源路径路由
三、监控系统日志
3.1登录日志的定时发送
定时发送登录日志
crontab-e
**/1***last>denglu.log|muttbvsg@-adenglu.log-s"last"
定时发送登录成功的用户
Crontab-e
**/1***lastb>denglub.log|muttbvsg@-adenglu.log-s"last"
定时发送不能成功登录的用户。
3.2更改历史记录
默认情况下,bashshell会在文件$HOME/.bash_history中存放多达2000条命令记录(根据具体的系统不同,默认记录条数不同)。
这样会增加信息外露的风险。
将历史记录改成只记录20条命令:
vim/etc/profile
HISTSIZE=20
HISTFILESIZE=20
四、漏洞扫描
检查大量主机是否存在系统漏洞是一项相当费时间的任务,而借助一些自动化的漏洞扫描工具则可以大大减轻系统管理员的负担。
Nessus是linux上的一个用户自动检测和发现安全漏洞的强大工具,可以对多个目标主机进行远程漏洞自动检查。
4.1Nessus介绍
Nessus是一个GPL许可下的开放软件,完全免费和开源代码,用户可以通过www.nessus.org/nessus进行下载。
Nessus采用服务器/客户端的工作模式,用户需要分别下载。
我们下载一个系统对应的版本即可。
客户端一般安装在windows上比较方便。
Nessus以rpm软件包的形式发布,其安装步骤比较简单,安装完成后需要执行那nessus-adduser命令穿件Nessus的管理用户,具体步骤:
1、安装Nessus-4.4.0-es5.x86.rpm软件包,命令:
rpm-ivhNessus-4.4.0-es5.x86.rpm
2、创建Nessus的管理用户。
命令:
/opt/nessus/sbin/nessus-adduser
3、启动服务前需要激活,在下面地址激活,会受到激活邮件,内容如下:
/opt/nessus/bin/nessus-fetch--register44C4-86DF-1223-2625-DFEF执行命令如下图:
servicenessusdstart启动
chkconfignessusdon设置开机自动启动
4客户端安装下载NessusClientforwindows如图4-1所示
图4-1
点击"Connect"可以设置nessus服务器的地址如图4-2所示
图4-2
点击"Save"保存退出,后再次点击“Connect”连接服务器后点击“+”会出现图4-3所示
图4-3
在“Hostname”中填写要检测的服务器地址,点击“Save”后退出,出现图4-4所示
图4-4
点击ScanNow后即可扫描并显示出报告如图4-5所示。
图4-5
4.2Nmap软件介绍
Nmap是一个网络连接端扫描软件,用来扫描网上计算机开放的网络连接端口,并能推断出对方运行的操作系统。
nmap命令使用详细解释
-P0-PT-PS-PU-PE-PP-PM-PB当nmap进行某种类型的端口或协议扫描时,通常都会尝试先ping主机,这种尝试可使nmap不会浪费时间在那些未开机的主机上,但是许多主机与防火墙会阻塞ICMP报文,我们希望能通过控制使用。
-P0告诉nmap不ping主机,只进行扫描
-PT告诉nmap使用TCP的ping
-PS发送SYN报文。
-PU发送一个udpping
-PE强制执行直接的ICMPping
-PB这是默认类型,可以使用ICMPping也可以使用TCPping.
-6该标志允许IPv6支持
-v-d使用-v选项可得到更详细的输出,而-d选项则增加调试输出。
-oN按照人们阅读的格式记录屏幕上的输出,如果是在扫描多台机器,则该选项很有用。
-oX以xml格式向指定的文件记录信息
-oG以一种易于检索的格式记录信息,即每台主机都以单独的行来记录所有的端口和0s信息。
-oA使用为基本文件名,以普通格式(-oN)、XML格式(-oX)和易于检索的格式(-oG)jiluxinxi
-oM把输出格式化为机器可阅读的文件
-oS把输出进行傻瓜型排版
--resume如果你取消了扫描,但生成了供人或者供机器阅读的文件,那么可以把该文件提供给nmap继续让它扫描。
-iR-iL可以不在命令行中指定目标主机,而是使用-iR选项随即产生待扫描的主机,或者使用-iL选项从一个包含主机名或IP地址列表的文件中读取目标主机,这些主机名或IP地址使用空格、制表符或换行隔开。
-Fnmap只扫描在nmap内建的服务文件中已知的端口,如果不指定该选项,nmap将扫描端口1-1024及包含在nmap-services文件中的所有其他端口。
如果用-sO选项扫描协议,nmap将用它内建的协议文件(nmap-protocols文件)而不是默认地扫描所有256个协议。
-Anmap使用所有的高级扫描选项
-p参数可以是一个单独的端口、一个用逗号隔开的端口列表、一个使用“-”表示的端口范围或者上述格式的任意组合。
如果没有指定该选项,nmap将对包含前1024个端口的所有端口进行一次快速扫描。
-e在多穴主机中,可以指定你用来进行网络通信的网络接口。
-g可以选择一个源端口,从该端口执行所有的扫描。
--ttlnmap其发送的任何报文在到中间路由器的跳后会失效。
--packet-trace可以显示扫描期间nmap发送和接收的各个报文的详细列表,这对调试非常有用。
要与-o选项之一联合使用,需要根权限,以将所有的数据记录到文件。
--scanflags可以使用这个选项手工的指定欲在扫描报文中设置的TCP标志。
也可以指定TCP标志的OOred值的整数形式,或者标志的字符串表示形式。
Snort
Nis跳转机关掉密码登陆。
Root人工更改。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 系统安全