教你保护Ubuntu服务器

2019-12-10    来源:爱站科技

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

Ubuntu服务器一直都是大家非常重视的问题,虽然我们无法绝对保证服务器安全,但是我们可以尽可能的让它比以前哼安全,那么你知道怎样才能让我们的服务器变得更安全吗?现在就让小编教你保护Ubuntu服务器。

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:

?


?
  1. backup?
  2. bin?
  3. daemon?
  4. games?
  5. gnats?
  6. irc?
  7. libuuid?
  8. list?
  9. lp?
  10. mail?
  11. man?
  12. mysql?
  13. news?
  14. ntp?
  15. postfix?
  16. proxy?
  17. sshd?
  18. sync?
  19. sys?
  20. syslog?
  21. uucp?
  22. 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

上文就是小编教你保护Ubuntu服务器的方法,其实安全是一个持续的过程,所以小编认为安全领域是需要一点偏执精神的。如果你想让你的新Ubuntu服务器变得坚不可摧,你应该仔细阅读本文。

标签: Ubuntu 服务器

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:Linux Server为什么无法启动NaviAgent

下一篇:如何将.htaccess绑定域名到子目录