您的位置:首页 > 运维架构 > Linux

Linux系统安全需要注意的一些问题

2017-02-26 13:52 405 查看

http://www.cnblogs.com/chenpingzhao/p/6443354.html

写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务
如果某一天当你登录服务器发现 /bin/bash –i,python
-c 'import pty; pty.spawn("/bin/sh")' 等命令在服务器上出现的时候,那么恭喜你,服务器被入侵了
但是入侵者都是很聪明的,首先会执行以下命令

然后是通过跳板访问

建立ttyshell

然后清除访问记录

等等。。。一系列的操作
然后你就能看到服务器上会留下以上的蛛丝马迹,那么我们如何防止呢?


1、系统用户优化

用户是Linux中安全加固的第一关,如果系统中本身就存在有安全隐患的用户,那么再安全策略也无法起到加固的效果

如果除了root还有其他的超级用户,那就要非常小心了

1.1 将系统自带的用户和用户组删除掉

删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher
删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers

1.2 或者锁定不需要登录的用户

如:xfs,news,nscd,dbus,vcsa,games,nobody,avahi,haldaemon,gopher,ftp,mailnull,pcap,mail,shutdown,halt,uucp,operator,sync,adm,lp,bin,sys,nuucp,hpdb,www,daemon

1.3 限制能够su为root的用户

这样,只有wheel组的用户可以su到root

1.4 检查shadow中空口令帐号

对空口令账号进行锁定,或要求增加密码

1.5 系统关键目录权限控制

根据安全需要,配置某些关键目录其所需的最小权限,password文件、shadow文件、group文件权限。
/etc/passwd 所有用户都可读,root用户可写 –rw-r—r—

/etc/shadow 只有root可读 –r——–

/etc/group 必须所有用户都可读,root用户可写 –rw-r—r—


2、系统服务优化

一般情况下,系统可能会自动的运行一些不必要的服务,我们可以使用下面的命令查看当前默认开启运行的系统服务:

如果我们只是提供web服务,那么对于sendmail、nfs、postfix、ftp等不需要的服务就可以关闭了
对于关键的服务,我们需要保证它们的运行,比如:iptables、sshd、syslog、httpd、nginx、mysql、php-fpm等。


3、ssh访问策略

ssh的访问都是我们日常工作中几乎唯一的控制系统的手段。所以ssh的安全性非常重要,一般来说较高的ssh安全策略秉承以下几个原则。

禁止root用户ssh登录。

禁止口令的方式验证。

只允许一个用户拥有sudo的完整权限。

除非是堡垒机,系统中不允许存放私钥文件。

使用一个随机端口来代替22端口。

编辑 /etc/sudoers,加入一条:

这里的例子表示:将test赋予完全的sudo权限,并在sudo提权时不需要验证密码。

现在我们来看ssh的访问效果:

所有用户不能使用密码验证登录。

root用户不可直接登录的,即使拥有root密码,唯一获得root的方法是使用test用户提权。

test用户只可以使用证书登录。

ssh不再使用默认的22端口


4、系统内部安全配置

4.1、保护引导过程

4.2、内核修改

/etc/sysctl.conf 改为以下内容

/etc/security/limits.conf 改为以下内容

解释

4.3 密码口令策略修改

4.4 历史命令保留和常用服务端口修改

4.5、Banner伪装

可以扰乱入侵者这对服务器信息的判断
a、Vsftpd banner 伪装
修改vsftpd.conf
ftpd_banner=Welcome to Microsoft FTP service.
b、Apache banner 伪装
修改/usr/local/apache/conf/httpd.conf文件,可以隐藏一些apache信息,如果要屏蔽掉所有信息,需要修改源码文件重新编译
httpd-2.2.25/include/ap_release.h

httpd-2.2.25/os/unix/os.h
c、Nginx banner 伪装
在nginx.conf 的 http 块里面添加 server_tokens off;
若要彻底屏蔽,需要修改源码,重新安装
src/core/nginx.h
d、 PHP banner修改

php.ini 修改expose_php On —> expose_php = Off
Php彩蛋,PHP源码/ext/standard/info.h
e、 TTL值修改
echo net.ipv4.ip_default_ttl = 128 >> /etc/sysctl.conf

/sbin/sysctl –p
f、利用iptables,将本机的TCP 3389端口转移到其它开有3389端口的计算机上,给Linux系统伪装出一个提供服务的TCP 3389端口

4.6、防火墙IPtables设置

下面是linux一些常用的服务所需要的规则。(根据实际情况更改)

(1) iptables 防止CC攻击的规则
安装 kernel-smp-modules-connlimit 、recent 内核模块
modprobe ipt_connlimit

如果没有这个文件需要新建如下文件

控制单个IP的最大并发连接数

(2)iptables 限制主机登录的规则

4.7、防止暴力登录

ftp,ssh暴力登录,脚本实现。

4.8、监控所有终端用户操作

记录所有登录用户终端操作命令记录

4.9 日志审计

统一远程日志服务器配置,当前系统应配置远程日志功能,将需要重点关注的日志内容传输到日志服务器进行备份。
修改配置文件 /etc/rsyslog.conf
加上这一行:authpriv.* @x.x.x.x
重新启动syslog服务,执行下列命令:services syslogd restart

4.10、更改危险文件(命令)权限

只有root用户能使用一下命令

4.11、杀毒软件

下载 http://www.clamav.net/lang/en/download/sources/ 直接下载:http://downloads.sourceforge.net/clamav/clamav-0.98.1.tar.gz

4.12 、rootkit病毒检测

Rkhunter 下载:http://jaist.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
chkrootkit 下载:ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz

4.13、inotify 监控系统文件

监控命令

Inotify监控比较大的目录的时候会报错,需要修改/proc/sys/fs/inotify/max_user_watches的值
建议写入sysctl.conf:fs.inotify.max_user_watches=8192000


5、系统应用安全配置

5.1、中间件 安全配置

(1) apache安全配置

(2) nginx安全配置

5.2、php 安全配置


参考文章

http://m.jb51.net/hack/55784.html https://blog.slogra.com/post-684.html http://blog.chinaunix.net/uid-25723371-id-4542221.html

作者:踏雪无痕
出处:http://www.cnblogs.com/chenpingzhao/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 系统安全