设为首页 收藏本站
查看: 617|回复: 0

[经验分享] 保护你的Ubuntu服务器

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-5-9 07:14:25 | 显示全部楼层 |阅读模式
  安全是相对的,使用本文介绍的这些方法不能绝对保证你的服务器是“安全的”,但可以肯定的是它比以前更安全,也比大多数服务器要安全,至少菜鸟级的黑客是无法攻破的;安全是一个持续的过程,它不是一蹴而就的,我们认为,在安全领域是需要一点偏执精神的。
    本文所列举的这些保护措施在Ubuntu Server 10.04(Lucid)和10.10(Maverick)中测试通过,如果你想让你的新Ubuntu服务器变得坚不可摧,你应该仔细阅读本文。
DSC0000.png

  Ubuntu服务器设计优良,并有定期更新,相对来说是比较安全的,Ubuntu安全团队表示会不断努力,保护Ubuntu的安全,将会定期提供安全更新。
  · 不打开端口
  · 基于角色的管理
  · 无X服务器
  · 安全更新
  · 内核和编译器保护
  在这篇文章中,我们将从不同方向来应对安全挑战,包括:系统分析,修改设置,安装防火墙,扫描rootkit和制定周期性维护制度。
  · 修改设置,增强安全性
  · 实施UFW,简单的防火墙
  · 使用denyhosts自动将攻击者列入黑名单
  · 使用Tiger扫描系统漏洞
  · 使用psad检测入侵尝试行为
  · 安装nmap,扫描系统打开的端口
  · 使用chkrootkit检查系统rootkit
  · 监控日志
  修改设置,增强安全
  保护共享内存
  攻击一个运行中的服务(如httpd)时经常要使用/dev/shm,修改/etc/fstab使其更安全。

  

  
sudo vi /etc/fstab
  

  添加下面这一行内容:
  

  
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
  

  禁止root通过SSH登录
  Root帐号在Ubuntu中默认是被禁用了的,如果你在Slicehost或Linode上安装Ubuntu,root则是被启用的,无论怎样,禁止root通过SSH登录系统都是一个好主意。
  

  
sudo vi /etc/ssh/sshd_config
  

  将PermitRootLogin设为no:
  

  
PermitRootLogin no
  

  当然,如果你通过SSH访问你的服务器,在禁用root使用SSH之前,确保其它用户可以正常使用sudo工作。
  只允许管理用户使用su
  这将有助于预防特权提升,默认情况下,Ubuntu没有提供管理组,因此需要先创建一个管理组。
  

  
sudo groupadd admin
  

  将你自己加入到管理组:
  

  
sudo usermod -a -G admin andrew
  

  限制/bin/su的访问权,仅授予管理组成员:
  

  
sudo dpkg-statoverride --update --add root admin 4750 /bin/su
  

  检查/bin/su的权限:
  

  
ls -lh /bin/su
  

  看到下面的输出内容:
  

  
-rwsr-x--- 1 root admin 31K 2010-01-26 17:09 /bin/su
  

  不允许跟踪入站数据包的源路由
  

  
sudo sysctl -w net.ipv4.conf.all.accept_source_route=0
  
sudo sysctl ­-w net.ipv4.conf.default.accept_source_route=0
  

  不允许系统用户访问FTP服务器
  只有当你安装了ftpd才需要这么做,只要tiger扫描报告中不出现相关警告即可,SFTP比FTP的安全性要好,如果可能,应尽量使用SFTP。
  Edit /etc/ftpusers:
  

  
sudo vi /etc/ftpusers
  

  添加系统用户拒绝使用ftpd:
  


  • backup
  • bin
  • daemon
  • games
  • gnats
  • irc
  • libuuid
  • list
  • lp
  • mail
  • man
  • mysql
  • news
  • ntp
  • postfix
  • proxy
  • sshd
  • sync
  • sys
  • syslog
  • uucp
  • www-data
  

    UFW:简单防火墙
  UFW(Uncomplicated Firewall,简单防火墙)提供了一个易于理解的接口控制iptable(iptable控制Netfilter,Netfilter内置于内核之中),只需要几个简单的命令,你的服务器就可以控制访问,创建状态也很容易。
  UFW是用于配置iptable的一个简单接口。
  安装并启用Uncomplicated Firewall:

  

  
sudo aptitude install -y ufw
  
sudo ufw enable
  

  显示可用的UFW命令:
  

  
sudo ufw show
  

  显示UFW配置:
  

  
sudo ufw status
  

  允许SSH和HTTP访问Apache服务器:
  

  
sudo ufw allow ssh
  
sudo ufw allow http
  

  在上面的示例中,OpenSSH和Apache的端口通过服务名(ssh和http)打开,你可以使用端口号替换这里的服务名(如用80替换http)。
  查看服务运行情况:
  查看运行中的服务,便知道应该打开哪些端口:
  

  
sudo ufw app list
  

  查看UFW使用的服务:
  

  
less /etc/services

  

    Denyhosts:避免SSH攻击
  项目主页: http://denyhosts.sourceforge.net/
  查看服务器上的/var/log/auth.log,我发现有一连串的SSH攻击,对付这种攻击有很多方法,首先就是denyhosts。
  Denyhosts会周期性地扫描/var/log/auth.log,找出通过SSH反复失败访问系统的行为和来源,然后将它们添加到/etc/hosts.deny中。详细情况请访问项目主页。
  sudo aptitude -y install denyhosts
  要做的就这些,剩下来的都是自动的,你可以使用下面的命令查看添加到/etc/hosts.deny中的IP地址:
  sudo less /etc/hosts.deny
  Tiger:系统安全扫描器
  项目主页: http://www.nongnu.org/tiger/
  通过分析系统上的文件和设置,Tiger创建自动的安全审核,最终以报告的形式列出分析的内容,警告,警报和故障。
  Tiger命令在/var/log/tiger中记录了潜在的安全问题,使用tigexp命令查找结果编码可以获得详细的解释和安全加固建议,tiger认为很严重的问题都标记为Fail。
  安装tiger:

  

  
sudo aptitude -y install tiger
  

  运行tiger,创建一个安全问题报告:
  

  
sudo tiger
  

  使用less查看最近的tiger报告:
  

  
sudo -i
  
less /var/log/tiger/`ls -t1 /var/log/tiger | head -1`
  
exit
  

  使用tigexp列出Fail代码的解释:
  

  
tigexp dev002f
  

  当然使用Google搜索一下也可以。
  忽略这些:
  

  
--FAIL-- [dev002f] /dev/fuse has world permissions
  
--FAIL-- [logf005f] Log file /var/log/btmp permission should be 660
  

  修改它们的权限可能会导致其它问题。
    使用psad检测入侵行为
  项目主页: http://www.cipherdyne.org/psad/
  Psad可以记录下入侵行为,还可以监控iptable。
  安装psad:

  

  
sudo aptitude -y install psad
  

  后台进程会自动运行。
  检查当前的状态:
  

  
sudo psad -S
  

  你可以修改psad设置,检测到入侵行为时给管理员发送电子邮件。
  Nmap:端口扫描
  项目主页: http://nmap.org/
  Nmap允许你查看打开的端口,验证UFW/iptable工作是否正常。
  安装nmap:
  

  
sudo aptitude install -y nmap
  

  端口扫描:
  

  
nmap -v -sT localhost
  

  SYN扫描:
  

  
sudo nmap -v -sS localhost
  

  扫描类型解释: http://nmap.org/book/man-port-scanning-techniques.html
  Chkrootkit:检查rootkit
  项目主页: http://www.chkrootkit.org/
  Chkrootkit扫描系统中是否存在rootkit。
  理想情况下,你并不需要做这种扫描,但现实中最好还是定期运行一下。
  安装chkrootkit:
  

  
sudo aptitude install -y chkrootkit
  

  运行chkrootkit:
  

  
sudo chkrootkit
  

  LogWatch
  Ubuntu社区文档: https://help.ubuntu.com/community/Logwatch
  日志再详细,如果没有一款好用的日志查看器,日志起的作用也非常有限,Logwatch可以从海量的日志中精选出最有用的信息,形成一个易读的报告,每天打开Logwatch看一下系统产生的日志是一个良好的习惯。
  安装:
  

  
sudo aptitude -y install logwatch
  

  用法:
  

  
sudo logwatch | less
  

  持续维护
  你的服务器现在更安全了,但不要就此停下来,每周例行一次维护是个好习惯。
  更新软件:
  

  
sudo aptitude update
  
sudo aptitude safe-upgrade
  

  我喜欢使用safe-upgrade,因为它执行的是安全更新。
  请看: http://wiki.debian.org/Aptitude
  或者,你可以将安全更新设置为自动,如果你不能每周维护一次,这不是一个完美的解决方案,因为管理员没有监控更新了什么,更新后也没有执行测试。请看: https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html
  检查入侵行为:
  

  
sudo psad -S
  

  请先使用tiger分析一下系统,因为tiger在/var/log/tiger中的报告属于root用户,每次都运行一下这些命令,解决有些用户的权限问题。
  

  
sudo -i
  
tiger
  
grep FAIL /var/log/tiger/`ls -t1 /var/log/tiger | head -1`
  
exit
  

  在上面的命令中,使用grep从最新的报告文件中提取出Fail标记,ls子句给grep输送目录中的最新文件,sudo -i命令允许你以root用户运行多个命令,使用exit结束命令。
  使用tigexp列出Fail代码的解释:
  

  
tigexp dev002f
  

  使用nmap扫描端口:
  

  
sudo nmap -v -sS localhost
  

  检查rootkit:
  

  
sudo chkrootkit
  

  查看日志:
  

  
sudo logwatch | less
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-457303-1-1.html 上篇帖子: 从零开始学ubuntu(学习心得)(续) 下篇帖子: ubuntu安装vsftpd遇到的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表