怎么样来提升Linux服务器安全性测试系统安全性

比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
牢记这七点 让你的Linux服务器变得更安全
  我运行着几台;家里一台,充当文件,还有三台,分别用作我的站点服务器、邮件服务器和服务器。虽然我并不担心家里那台服务器,因为它并不与外界进行联系,可是另外三台服务器却要精心维护,而且始终要精心维护。有些新手想运行自己的服务器,必须牢记几个事项,这正是本文的重点所在。
  图1:运行中的服务。
  安装所需的服务
  如果你打算运行一台服务器,可能会想“我有来自Linode的40GB(),于是我可以安装想要安装的任何服务。”没错,你的地盘你作主:可以在服务器上安装任意软件。不过,别犯想当然的毛病。连最固若金汤的服务器也会因有人钻了在该服务器上运行的任何未打补丁或易受攻击的软件组件的空子而被劫持。
  所以,头规则就是让你的服务器尽量精简。只安装你确实需要的那些程序包。要是有不需要的程序包,那就清除。程序包数量越少,代码没打上补丁的可能性就越小。在安装任何软件和依赖程序包(比如ownCloud)之前,你应该读一下ownCloud的说明文档,只安装它需要的那些程序包。
  运行所需的服务
  第二条规则就是只运行需要的那些服务。许多发行版或程序包可能会开启某些服务,在不同的端口上运行。这可能会带来风险。于是,打开终端,运行下列命令:
  netstat -npl
  输出结果会显示哪些服务在哪些端口上运行。如果你发现任何不应该运行的服务,停止它。你还应该关注已被启用、系统启动时运行的服务。只要在运行systemd的系统上运行下列命令,就可以来检查这方面:
  systemctl-unit-files --type=service | grep enabled
  视系统而定,你会获得如上图1中所示的输出结果。要是你发现任何不需要的服务,可以使用强大的systemct1命令来禁用它:
  systemctl disable service_name
  限制对服务器的访问
  就好比你不会把自家钥匙随随便便交给认识的人,也不会将访问服务器的权限交随随便便授予认识的人。一旦明确了这个规则,就可以限制对服务器的访问。要牢记这点:这一切打消不了决意要破坏你服务器的坏人的念头。不过,其作用在于为你的服务器增添了多一层的安全,防范只是捡漏的不法分子。
  千万不要以根用户的身份登录
  以超级用户的身份通过进入到服务器不是一个好做法。我们后面会禁止以根用户身份通过ssh进入到服务器,不过在这么做之前,不妨创建一个拥有sudo权限的用户,那样你就能通过ssh进入到服务器,执行管理员任务了。一旦你登录进入到服务器,总是可以将用户切换成根用户,如果需要的话。如果你已经在系统上有了用户,就跳过几步;不然,跟着我走。
  不同的发行版使用不同的方法来添加新用户;Red Hat/CentOS使用useradd,/Debian使用user adduser。
  在/CentOS上创建新用户:
  useradd swapnil
  然后,为该用户创建密码:
  passwd swapnil
  它会要求你为它提供用户的新密码。现在,你需要为该用户授予sudo权限。运行下列命令:
  EDITOR=nano visudo
  寻找下面这一行(见图2):
  # %wheel ALL=(ALL) ALL
  图2:为用户授予sudo权限。
  去掉该行的注释(#符号意味着该行被注释;只要去掉这个符号,即可去掉注释),那样它看起来就像这样:
  %wheel ALL=(ALL) ALL
  现在,保存并关闭文件。如果用户不属于wheel组,你只要运行下面这个命令,就可以将它轻松添加到组:
  # usermod -aG wheel swapnil
  在Ubuntu系统上,你可以添加新用户,为此运行下列命令:
  adduser swapnil
  回答系统提出的一些问题,包括为该用户创建密码。一旦创建完毕,为用户授予sudo权限:
  gpasswd -a swapnil sudo
  打开另一个终端窗口,试着以刚创建的用户的身份登录进入到服务器,试着以sudo权限执行一些管理员任务。要是一切正常,进入到下一步。
  禁用根用户登录
  我们现在要禁用根用户登录,这意味着没人能够以根用户的身份通过ssh或登录进入到服务器。为此,打开sshd配置文件:
  nano /etc/ssh/sshd_conf
  下一步,寻找显示下列内容的这一注释行:
  #PermitRootLogin no
  然后保存并关闭该文件,重启服务:
  service ssh restart
  systemctl restart sshd
  重要提醒:这时切莫退出服务器。你要测试能不能使用刚创建的用户成功地通过ssh进入到服务器。打开终端的另一个实例,以之前创建的用户通过ssh进入到服务器。你不希望完全被锁在服务器外面。要是一切都正常,你可以以根用户身份安全地注销退出服务器。
  变更端口
  我们对sshd配置文件要进行的第二个变化就是更改默认端口。这主要是增添一层隐匿性,让你的服务器确保安全,而不是给服务器果真增添任何实际的安全机制。这就好比保安服务公司派一样的车辆来运送重要人物,那样攻击者就不知道该攻击哪些车了。
  打开sshd_config文件(这回以sudo权限打开,因为你再也不能以根用户身份登录进入到服务器了):
  sudo nano /etc/ssh/sshd_conf
  然后,找到这一注释行:
  #Port 22
  去掉该行注释,选择一个端口号。在选择端口时,务必要确保它没有被你系统上的其他任何服务所使用。你可以从维基百科的这篇文章(https://en.wikipedia.org/wiki/Port_%28computer_networking%29#Common_port_numbers)详细了解哪些端口通常已使用,避免此类端口。我为服务器选择了端口1977:
  Port 1977
  下一步,保存并关闭文件,重启sshd服务。再一次,注销退出服务器之前,检查一下设置,为此可以打开另一个终端窗口,然后使用该模式登录进去:
  ssh -p{port_number}@server_IP
  示例:
  ssh -p1977
  swapnil@10.14.190.118
  如果你能成功登录进去,就搞定了。
  无密码登录
  你可以通过无密码登录更容易通过ssh进入到服务器,并且完全禁用密码验证,增添另一层安全。务必要牢记一点:你只能够从创建ssh密钥的那台机器登录进入到你的服务器。
  不妨使用下列命令,在本地系统上创建ssh密钥(见图3):
  ssh-keygen - t rsa
  图3:创建ssh密钥。
  它会提出一些问题;你不用更改密钥位置,保留其默认值,为它提供一个难以猜中的通行码。下一步,你需要将这些密钥拷贝到服务器上,那样两台机器就能使用密钥与对方进行联系了。
  cat ~/.ssh/id_rsa.pub | ssh -p 1977 swapnil@remote-server ";mkdir -p ~/.ssh && cat && ~/.ssh/authorized_keys"
  现在,试着从另一个终端通过ssh进入到服务器;要是一切正常,它不会要求你。
  这一步主要是为了方便,而不是增添一些实实在在的安全。不过你也可以增添一点安全,只要禁用服务器的密码验证。只需打开sshd配置文件,寻找这注释的一行:
  #PasswordAuthentication yes
  去掉该行注释,将它从yes改成no。保存并关闭文件。然后,重启sshd服务。再一次,切莫从当前窗口关闭服务器连接。打开另一个窗口,登录进入到服务器(确保它没有要求输入密码)。
  这个设置的另一个方面在于,你现在只能从创建ssh密钥的那一台机器通过ssh进入到服务器。如果你经常从不同的机器登录进入到服务器,千万不要使用这一方法。
  结束语
  这些是试图自行运行服务器的新用户需要考虑的一些基本方面。牢记一点:总是先行一步;他们不断寻找进而闯入你服务器的任何漏洞。因而,最佳实践就是对你的服务器做一套始终最新的备份。我建议你在对站点做任何变化前后都应该进行备份。那样一来,万一你的服务器中了招,总是能够从上一套备份恢复过来。
相关文章:
[ 责任编辑:小石潭记 ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte如何保证Linux服务器的安全 | 信息安全 |
_数据库_运维_开发_IT学习_无忧IT学习网
一起学习!一起进步!
如何保证Linux服务器的安全
浏览: 63 views
很少见有人马上为一台新安装的服务器做安全措施,然而我们生活所在的这个社会使得这件事情是必要的。不过为什么仍旧这么多人把它拖在最后?我也做过相同的事,这通常可以归结为我们想要马上去折腾那些有趣的东西。希望这篇文章将向大家展示,确保服务器安全没有你想得那样难。...
很少见有人马上为一台新安装的做安全措施,然而我们生活所在的这个社会使得这件事情是必要的。不过为什么仍旧这么多人把它拖在最后?我也做过相同的事,这通常可以归结为我们想要马上去折腾那些有趣的东西。希望这篇文章将向大家展示,确保安全没有你想得那样难。在攻击开始后,俯瞰你的&堡垒&,也相当享受。
这篇文章为&Ubuntu&12.04.2 LTS 而写,你也可以在任何其他&Linux&分发版上做相同的事情。
我从哪儿开始?
如果已经有了一个公有IP,你会希望立即锁定 root 访问。事实上,你得锁定整个ssh访问,并确保只有你可以访问。增加一个新用户,把它加入admin组(在/etc/sudoers预配置以拥有sudo访问权限)。
$ sudo addgroup admin
Adding group 'admin' (GID 1001)
$ sudo adduser spenserj
Adding user `spenserj' ...
Adding new group `spenserj' (1002) ...
Adding new user `spenserj' (1001) with group `spenserj' ...
Creating home directory `/home/spenserj' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for spenserj
Enter the new value, or press ENTER for the default
Full Name []: Spenser Jones
Room Number []:
Work Phone []:
Home Phone []:
Is the information correct? [Y/n] y
$ sudo usermod -a -G admin spenserj
你也将希望在你电脑上创建一个私有key,并且在上禁用讨厌的密码验证。
$ mkdir ~/.ssh
$ echo &ssh-rsa [your public key]& & ~/.ssh/authorized_keys
/etc/ssh/sshd_config
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
AllowUsers spenserj
重新加载SSH,使用修改生效,之后尝试在一个新会话中登陆来确保所有事情正常工作。如果你不能登陆,你将仍然拥有你的原始会话来做修改。
$ sudo service ssh restart
ssh stop/waiting
ssh start/running, process 1599
既然你是访问的唯一用户,你就不用担心黑客鬼鬼祟祟进入,再次正常呼吸。当有一些针对你的更新时,正是修补的机会,所以动手吧,就现在。
$ sudo apt-get update
Hit http://ca.archive.ubuntu.com precise-updates/universe Translation-en_CA
Hit http://ca.archive.ubuntu.com precise-updates/universe Translation-en
Hit http://ca.archive.ubuntu.com precise-backports/main Translation-en
Hit http://ca.archive.ubuntu.com precise-backports/multiverse Translation-en
Hit http://ca.archive.ubuntu.com precise-backports/restricted Translation-en
Hit http://ca.archive.ubuntu.com precise-backports/universe Translation-en
Fetched 3,285 kB in 5s (573 kB/s)
Reading package lists... Done
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
-headers-generic-lts-quantal -image-generic-lts-quantal
The following packages will be upgraded:
accountsservice apport apt apt-transport-https apt-utils aptitude bash ...
73 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Need to get 61.0 MB of archives.
After this operation, 151 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Setting up libisc83 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up libdns81 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up libisccc80 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up libisccfg82 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up libbind9-80 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up liblwres80 (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up bind9-host (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up dnsutils (1:9.8.1.dfsg.P1-4ubuntu0.6) ...
Setting up iptables (1.4.12-1ubuntu5) ...
安装防火墙
安装现在正最流行的防火墙软件?好,行动吧。那就配置一个防火墙。之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。Iptables在Ubuntu里预装了,所以去设置一些规则吧。
$ sudo mkdir /etc/iptables
/etc/iptables/rules
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# Accept any related or established connections
1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow all traffic on the loopback interface
-i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
# Allow outbound DHCP request - Some hosts (Linode) automatically assign the primary IP
#-A OUTPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
# Outbound DNS lookups
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
# Outbound PING requests
-A OUTPUT -p icmp -j ACCEPT
# Outbound Network Time Protocol (NTP) request
-A OUTPUT -p udp --dport 123 --sport 123 -j ACCEPT
-i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
# Outbound HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
通过&iptables-apply&命令为规则集生效。如果你丢失连接,修补你的规则,在继续之前再试一下
$ sudo iptables-apply /etc/iptables/rules
Applying new ruleset... done.
Can you establish NEW connections to the machine? (y/N) y
... then my job is done. See you next time.
创建文件 /etc/network/if-pre-up.d/iptables,然后写入下面内容。当你启动的时候,将自动载入你的iptables规则。
/etc/network/if-pre-up.d/iptables
iptables-restore & /etc/iptables/rules
现在给它执行权限,执行文件,以确保它正常载入
$ sudo chmod +x /etc/network/if-pre-up.d/iptables
$ sudo /etc/network/if-pre-up.d/iptables
用 Fail2ban 处理潜在黑客
当谈到安全的时,Fail2ban 是我最喜欢的工具之一,它将你的日志文件,并且可以临时禁止那些正在滥用你资源,或者正在强制肆虐你的SSH连接,或者正在dos攻击你web的用户。
Install Fail2ban
$ sudo apt-get install fail2ban
[sudo] password for sjones:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
gamin libgamin0 python-central python-gamin python-support whois
Suggested packages:
The following NEW packages will be installed:
fail2ban gamin libgamin0 python-central python-gamin python-support whois
0 upgraded, 7 newly installed, 0 to remove and 2 not upgraded.
Need to get 254 kB of archives.
After this operation, 1,381 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
虽然 Fail2ban 安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在 /etc/fail2ban/jail.local 写配置,所以把它拷贝到那儿。
sudo cp /etc/fail2ban/jail.{conf,local}
把 ignoreip 行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。你也将希望设置一个deste,这里我通常输入我自已的e地址,再在后面加上 ,fail2ban@blocklist.de。BlockList.de&是一个跟踪并且自动报告黑客IP的系统。
/etc/fail2ban/jail.local
# &ignoreip& can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
maxretry = 3
# &backend& specifies the backend used to get files modification. Available
# options are &gamin&, &polling& and &auto&.
# yoh: For some reason Debian shipped python-gamin didn't work as expected
This issue left ToDo, so polling is default backend for now
backend = auto
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost,fail2ban@blocklist.de
这有一些其他的你想检查的配置,尽管缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。
Actions 允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了&iptables。值得感谢的是,有一个预配置文件 action_wml,它恰恰是做这个的。
/etc/fail2ban/jail.local
# Choose default action.
To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.
action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
为了让Fail2ban工作,需要了解要监控哪些东西。这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。既然到目前为止,你仅仅在上启用了SSH访问,那我们就只启用SSH和SSH-DDos 监控,然而你还是会想给安装在这台上的公共访问服务增加新的监控。
/etc/fail2ban/jail.local
= /var/log/auth.log
maxretry = 6
[ssh-ddos]
= sshd-ddos
= /var/log/auth.log
maxretry = 6
让变化生效
既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。
$ sudo service fail2ban restart
* Restarting authentication failure monitor fail2ban
$ sudo iptables -L
Chain INPUT (policy DROP)
prot opt source
destination
fail2ban-ssh-ddos
multiport dports ssh
fail2ban-ssh
multiport dports ssh
Chain fail2ban-ssh (1 references)
prot opt source
destination
Chain fail2ban-ssh-ddos (1 references)
prot opt source
destination
在任何时间,你都可以使用sudo iptables -L 来列出你的规则,随后列出所有当前禁止的 IP。此时,Fail2ban正在处理两个恶意的用户。
Banned IPs
204.50.33.22
195.128.126.114
保持最新更新
你可能现在拥有一个已经锁定并且准备投入使用的,然而这并不是你安全之旅的终点。保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的。
HackerNews 上的讨论
我的这篇文章,在 HackerNews&上有一些很好的评论,如果你对不同观点和更好的安全性感兴趣的话,我建议你去看看。这篇文章目的是作为安全的新手指南,在这篇文章结束的时候,并不意味着你的是无懈可击的。用本文来快速锁定一个新,在它之上为你特有的情况建立其他措施。你可能希望查询 IPV6 安全,改变你的SSH端口(通过隐藏达到安全目的),安全内核(SELinux和GRSecurity),跟踪系统改变,并且如果你的曾经不安全或已经在线相当长时间了的话,全面检查一番。一台有好几百个入口点,并且每一个你安装的应用都带来了额外的潜在漏洞,但是通过合适的工具,你可以免去困扰,直接去睡大觉了。
标签: , , ,
& | & & | & & | & & | & & | & & | & & | & & | & & | & & | & & | & & | & & | &
最热门文章
41290 views
10974 views
9984 views
6408 views
5982 views
4790 views
4121 views
4073 views
友情链接 |
本站进行132次查询推荐这篇日记的豆列
&&&&&&&&&&&&如何提高linux服务器的安全策略_百度知道
如何提高linux服务器的安全策略
我有更好的答案
  安全是IT行业一个老生常谈的话题了,处理好信息安全问题已变得刻不容缓。做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站在攻击者的角度思考问题,修补任何潜在的威胁和漏洞。主要分五部分展开:账户和登录安全账户安全是系统安全的第一道屏障,也是系统安全的核心,保障登录账户的安全,在一定程度上可以提高服务器的安全级别,下面重点介绍下Linux系统登录账户的安全设置方法。  1、删除特殊的账户和账户组 Linux提供了各种不同角色的系统账号,在系统安装完成后,默认会安装很多不必要的用户和用户组,如果不需要某些用户或者组,就要立即删除它,因为账户越多,系统就越不安全,很可能被黑客利用,进而威胁到服务器的安全。  Linux系统中可以删除的默认用户和组大致有如下这些:  可删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。  可删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等。  2、关闭系统不需要的服务Linux在安装完成后,绑定了很多没用的服务,这些服务默认都是自动启动的。对于服务器来说,运行的服务越多,系统就越不安全,越少服务在运行,安全性就越好,因此关闭一些不需要的服务,对系统安全有很大的帮助。具体哪些服务可以关闭,要根据服务器的用途而定,一般情况下,只要系统本身用不到的服务都认为是不必要的服务。例如:某台Linux服务器用于www应用,那么除了httpd服务和系统运行是必须的服务外,其他服务都可以关闭。下面这些服务一般情况下是不需要的,可以选择关闭: anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv  3、密码安全策略在Linux下,远程登录系统有两种认证方式:密码认证和密钥认证。密码认证方式是传统的安全策略,对于密码的设置,比较普遍的说法是:至少6个字符以上,密码要包含数字、字母、下划线、特殊符号等。设置一个相对复杂的密码,对系统安全能起到一定的防护作用,但是也面临一些其他问题,例如密码暴力破解、密码泄露、密码丢失等,同时过于复杂的密码对运维工作也会造成一定的负担。密钥认证是一种新型的认证方式,公用密钥存储在远程服务器上,专用密钥保存在本地,当需要登录系统时,通过本地专用密钥和远程服务器的公用密钥进行配对认证,如果认证成功,就成功登录系统。这种认证方式避免了被暴力破解的危险,同时只要保存在本地的专用密钥不被黑客盗用,攻击者一般无法通过密钥认证的方式进入系统。因此,在Linux下推荐用密钥认证方式登录系统,这样就可以抛弃密码认证登录系统的弊端。Linux服务器一般通过SecureCRT、putty、Xshell之类的工具进行远程维护和管理,密钥认证方式的实现就是借助于SecureCRT软件和Linux系统中的SSH服务实现的。  4、合理使用su、sudo命令su命令:是一个切换用户的工具,经常用于将普通用户切换到超级用户下,当然也可以从超级用户切换到普通用户。为了保证服务器的安全,几乎所有服务器都禁止了超级用户直接登录系统,而是通过普通用户登录系统,然后再通过su命令切换到超级用户下,执行一些需要超级权限的工作。通过su命令能够给系统管理带来一定的方便,但是也存在不安全的因素,例如:系统有10个普通用户,每个用户都需要执行一些有超级权限的操作,就必须把超级用户的密码交给这10个普通用户,如果这10个用户都有超级权限,通过超级权限可以做任何事,那么会在一定程度上对系统的安全造成了威协。因此su命令在很多人都需要参与的系统管理中,并不是最好的选择,超级用户密码应该掌握在少数人手中,此时sudo命令就派上用场了。sudo命令:允许系统管理员分配给普通用户一些合理的“权利”,并且不需要普通用户知道超级用户密码,就能让他们执行一些只有超级用户或其他特许用户才能完成的任务。比如:系统服务重启、编辑系统配置文件等,通过这种方式不但能减少超级用户登录次数和管理时间,也提高了系统安全性。因此,sudo命令相对于权限无限制性的su来说,还是比较安全的,所以sudo也被称为受限制的su,另外sudo也是需要事先进行授权认证的,所以也被称为授权认证的su。  sudo执行命令的流程是:将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户,而这一切的完成要通过sudo的配置文件/etc/sudoers来进行授权。  sudo设计的宗旨是:赋予用户尽可能少的权限但仍允许它们完成自己的工作,这种设计兼顾了安全性和易用性,因此,强烈推荐通过sudo来管理系统账号的安全,只允许普通用户登录系统,如果这些用户需要特殊的权限,就通过配置/etc/sudoers来完成,这也是多用户系统下账号安全管理的基本方式。  5、删减系统登录欢迎信息 系统的一些欢迎信息或版本信息,虽然能给系统管理者带来一定的方便,但是这些信息有时候可能被黑客利用,成为攻击服务器的帮凶,为了保证系统的安全,可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别是:/etc/issue、/etc/issue.net、/etc/redhat-release和/etc/motd。/etc/issue和/etc/issue.net文件都记录了操作系统的名称和版本号,当用户通过本地终端或本地虚拟控制台等登录系统时,/etc/issue的文件内容就会显示,当用户通过ssh或telnet等远程登录系统时,/etc/issue.net文件内容就会在登录后显示。在默认情况下/etc/issue.net文件的内容是不会在ssh登录后显示的,要显示这个信息可以修改/etc/ssh/sshd_config文件,在此文件中添加如下内容即可:Banner /etc/issue.net其实这些登录提示很明显泄漏了系统信息,为了安全起见,建议将此文件中的内容删除或修改。/etc/redhat-release文件也记录了操作系统的名称和版本号,为了安全起见,可以将此文件中的内容删除/etc/motd文件是系统的公告信息。每次用户登录后,/etc/motd文件的内容就会显示在用户的终端。通过这个文件系统管理员可以发布一些软件或硬件的升级、系统维护等通告信息,但是此文件的最大作用就、是可以发布一些警告信息,当黑客登录系统后,会发现这些警告信息,进而产生一些震慑作用。看过国外的一个报道,黑客入侵了一个服务器,而这个服务器却给出了欢迎登录的信息,因此法院不做任何裁决。  远程访问和认证安全   1、远程登录取消telnet而采用SSH方式 telnet是一种古老的远程登录认证服务,它在网络上用明文传送口令和数据,因此别有用心的人就会非常容易截获这些口令和数据。而且,telnet服务程序的安全验证方式也极其脆弱,攻击者可以轻松将虚假信息传送给服务器。现在远程登录基本抛弃了telnet这种方式,而取而代之的是通过SSH服务远程登录服务器。  2、合理使用Shell历史命令记录功能 在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash_history文件中,通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同时,在服务器遭受黑客攻击后,也可以通过这个命令或文件查询黑客登录服务器所执行的历史命令操作,但是有时候黑客在入侵服务器后为了毁灭痕迹,可能会删除.bash_history文件,这就需要合理的保护或备份.bash_history文件。  3、启用tcp_wrappers防火墙Tcp_Wrappers是一个用来分析TCP/IP封包的软件,类似的IP封包软件还有iptables。Linux默认都安装了Tcp_Wrappers。作为一个安全的系统,Linux本身有两层安全防火墙,通过IP过滤机制的iptables实现第一层防护。iptables防火墙通过直观地监视系统的运行状况,阻挡网络中的一些恶意攻击,保护整个系统正常运行,免遭攻击和破坏。如果通过了第一层防护,那么下一层防护就是tcp_wrappers了。通过Tcp_Wrappers可以实现对系统中提供的某些服务的开放与关闭、允许和禁止,从而更有效地保证系统安全运行。  文件系统安全  1、锁定系统重要文件系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便。例如:在软件的安装、升级时可能需要去掉有关目录和文件的immutable属性和append-only属性,同时,对日志文件设置了append-only属性,可能会使日志轮换(logrotate)无法进行。因此,在使用chattr命令前,需要结合服务器的应用环境来权衡是否需要设置immutable属性和append-only属性。另外,虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作:/dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题;/tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性;/var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。  2、文件权限检查和修改不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。下面列举几种查找系统不安全权限的方法。  (1)查找系统中任何用户都有写权限的文件或目录  查找文件:find / -type f -perm -2 -o -perm -20 |xargs ls -al查找目录:find / -type d -perm -2 -o -perm -20 |xargs ls –ld  (2)查找系统中所有含“s”位的程序  find / -type f -perm -4000 -o -perm -2000 -print | xargs ls –al  含有“s”位权限的程序对系统安全威胁很大,通过查找系统中所有具有“s”位权限的程序,可以把某些不必要的“s”位程序去掉,这样可以防止用户滥用权限或提升权限的可能性。  (3)检查系统中所有suid及sgid文件  find / -user root -perm -2000 -print -exec md5sum {} \;find / -user root -perm -4000 -print -exec md5sum {} \;  将检查的结果保存到文件中,可在以后的系统检查中作为参考。  (4)检查系统中没有属主的文件  find / -nouser -o –nogroup  没有属主的孤儿文件比较危险,往往成为黑客利用的工具,因此找到这些文件后,要么删除掉,要么修改文件的属主,使其处于安全状态。  3、/tmp、/var/tmp、/dev/shm安全设定在Linux系统中,主要有两个目录或分区用来存放临时文件,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点就是所有用户可读写、可执行,这就为系统留下了安全隐患。攻击者可以将病毒或者木马脚本放到临时文件的目录下进行信息收集或伪装,严重影响服务器的安全,此时,如果修改临时目录的读写执行权限,还有可能影响系统上应用程序的正常运行,因此,如果要兼顾两者,就需要对这两个目录或分区就行特殊的设置。/dev/shm是Linux下的一个共享内存设备,在Linux启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。对于/tmp的安全设置,需要看/tmp是一个独立磁盘分区,还是一个根分区下的文件夹,如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可,修改后的/tmp分区挂载属性类似如下:LABEL=/tmp
/tmp ext3 rw,nosuid,noexec,nodev 0 0 其中,nosuid、noexec、nodev选项,表示不允许任何suid程序,并且在这个分区不能执行任何脚本等程序,并且不存在设备文件。在挂载属性设置完成后,重新挂载/tmp分区,保证设置生效。对于/var/tmp,如果是独立分区,安装/tmp的设置方法是修改/etc/fstab文件即可;如果是/var分区下的一个目录,那么可以将/var/tmp目录下所有数据移动到/tmp分区下,然后在/var下做一个指向/tmp的软连接即可。也就是执行如下操作:  [root@server ~]# mv /var/tmp/* /tmp[root@server ~]# ln -s
/tmp /var/tmp  如果/tmp是根目录下的一个目录,那么设置稍微复杂,可以通过创建一个loopback文件系统来利用Linux内核的loopback特性将文件系统挂载到/tmp下,然后在挂载时指定限制加载选项即可。一个简单的操作示例如下:  [root@server ~]# dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000[root@server ~]# mke2fs -j /dev/tmpfs[root@server ~]# cp -av /tmp /tmp.old[root@server ~]# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp[root@server ~]# chmod 1777 /tmp[root@server ~]# mv -f /tmp.old/* /tmp/[root@server ~]# rm -rf /tmp.old  最后,编辑/etc/fstab,添加如下内容,以便系统在启动时自动加载loopback文件系统:  /dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0  Linux后门入侵检测工具rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统。rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。此时,即使系统管理员修改root密码或者清除root密码,攻击者还是一样能通过root用户登录系统。攻击者通常在进入Linux系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。在默认情况下,Linux中也有一些系统文件会监控这些工具动作,例如ifconfig命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。如果这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。这就是文件级别的rootkit,对系统维护很大,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如果发现文件被修改或者被替换,那么很可能系统已经遭受了rootkit入侵。检查件完整性的工具很多,常见的有Tripwire、 aide等,可以通过这些工具定期检查文件系统的完整性,以检测系统是否被rootkit入侵。内核级rootkit是比文件级rootkit更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序,也就是说,当用户要运行程序A时,被入侵者修改过的内核会假装执行A程序,而实际上却执行了程序B。内核级rootkit主要依附在内核上,它并不对系统文件做任何修改,因此一般的检测工具很难检测到它的存在,这样一旦系统内核被植入rootkit,攻击者就可以对系统为所欲为而不被发现。目前对于内核级的rootkit还没有很好的防御工具,因此,做好系统安全防范就非常重要,将系统维持在最小权限内工作,只要攻击者不能获取root权限,就无法在内核中植入rootkit。  1、rootkit后门检测工具chkrootkit
chkrootkit是一个Linux系统下查找并检测rootkit后门的工具,它的官方址:。 chkrootkit没有包含在官方的CentOS源中,因此要采取手动编译的方法来安装,不过这种安装方法也更加安全。chkrootkit的使用比较简单,直接执行chkrootkit命令即可自动开始检测系统。下面是某个系统的检测结果:  [root@server chkrootkit]# /usr/local/chkrootkit/chkrootkitChecking `ifconfig’… INFECTEDChecking `ls’… INFECTEDChecking `login’… INFECTEDChecking `netstat’… INFECTEDChecking `ps’… INFECTEDChecking `top’… INFECTEDChecking `sshd’… not infectedChecking `syslogd’… not tested  从输出可以看出,此系统的ifconfig、ls、login、netstat、ps和top命令已经被感染。针对被感染rootkit的系统,最安全而有效的方法就是备份数据重新安装系统。chkrootkit在检查rootkit的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时chkrootkit的检测结果将变得完全不可信。为了避免chkrootkit的这个问题,可以在服务器对外开放前,事先将chkrootkit使用的系统命令进行备份,在需要的时候使用备份的原始系统命令让chkrootkit对rootkit进行检测。  2、rootkit后门检测工具RKHunter
RKHunter是一款专业的检测系统是否感染rootkit的工具,它通过执行一系列的脚本来确认服务器是否已经感染rootkit。在官方的资料中,RKHunter可以作的事情有:MD5校验测试,检测文件是否有改动  检测rootkit使用的二进制和系统工具文件 检测特洛伊木马程序的特征码 检测常用程序的文件属性是否异常 检测系统相关的测试 检测隐藏文件 检测可疑的核心模块LKM 检测系统已启动的监听端口  在Linux终端使用rkhunter来检测,最大的好处在于每项的检测结果都有不同的颜色显示,如果是绿色的表示没有问题,如果是红色的,那就要引起关注了。另外,在执行检测的过程中,在每个部分检测完成后,需要以Enter键来继续。如果要让程序自动运行,可以执行如下命令:  [root@server ~]# /usr/local/bin/rkhunter –check –skip-keypress  同时,如果想让检测程序每天定时运行,那么可以在/etc/crontab中加入如下内容:  30 09 * * * root /usr/local/bin/rkhunter –check –cronjob  这样,rkhunter检测程序就会在每天的9:30分运行一次。服务器遭受攻击后的处理过程安全总是相对的,再安全的服务器也有可能遭受到攻击。作为一个安全运维人员,要把握的原则是:尽量做好系统安全防护,修复所有已知的危险行为,同时,在系统遭受攻击后能够迅速有效地处理攻击行为,最大限度地降低攻击对系统产生的影响。
专注培养IT技术人才
主营:PHP培训,JAVA培训,HTML5培训,UI培训,Linux培训,Python培训
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 云服务器安全性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信