众所周知,Linux相对于Windows有更多的优势,运行在Linux上的网站也越来越多了。但是,不管哪一种Linux发行版本,安装完成后都需要必须的配置,增强它的安全性。下面简单介绍一下,如何提高Linux主机安全性能。
1. 从mini linux开始
如果允许,初装的linux,系统尽可能的小。比方说,作为网站的服务器,没有必要将桌面系统一并安装。最初的系统,除了最最基本的功能,再具备“ssh”就够了。这样最少有三大优点:
- 系统小,占用资源小,为性能提升留下更多的空间。
- 只安装必须的软件和服务,便于管理,资源更可控。
- 安全,潜在的漏洞和后门少了。
2. SSH登录安全管理
笔者认为,远程登录安全,是网站首要解决的问题。ssh登录服务器时需要注意一下几点:
- 不允许用root直接登录
- 建议,禁用密码,使用密匙的方式登录
- 使用最新版本的SSH,版本号高于2.0
- 设置白名单
通过修改文件/etc/sshd_config,设置白名单:
AllowUsers <user@Host>
3. 保持更新
每个大型系统都有一个不断的改进过程,定期更新升级,是非常有必要的。第一次登陆系统时,做的第一件事就是更新和升级。
Debian/Ubuntu:
# apt-get update && apt-get upgrade
5. 文件和权限
读Read(r) | 写Write(w) | 执行Execute(x) | |
---|---|---|---|
用户User | 4 | 2 | 1 |
组Group | 4 | - | 1 |
其他Others | 4 | - | - |
chmod: -rwxr-xr-- | 0754
6. 删除不必要服务
不需要的一律去掉。如ftp,telnet,exec,talk,imap,pop等,这些如果不是必须,就关闭,甚至删除。关闭和删除的方法,不同版本的linux会有所不同,以ubuntu/debian为例:
停止服务:
# /etc/init.d/(servicename) stop
禁止开机运行:
# update-rc.d (servicename) remove
7. 网站服务
Linux下较为流行的网站服务有Apache和Nginx等。如何提高Apache或Nginx安全性能,可以深入的内容有很多。这里只讲两点:
- 给网站服务分配单独的用户和用户组,例如www-data。
- 不要把不必要的文件暴露在http下面
建议的目录结构如下。只有public目录下的文件可以通过http访问。
/var/www/site
public --> 可以通过http访问
config
src
……
8. 数据库
- 1)限制数据库客户端。
例如,如果网站服务和数据库在同一台服务器,MySQL可以通过配置/etc/mysql/my.cnf文件,限制客户端用户必须来自本机:
bind-address=127.0.0.1
- 为每个新数据库创建一个新的用户
- 新用户,只可以拥有SELECT, UPDATE INSERT DELETE, ALTER, CREATE权限,避免错误的删除数据
- 新用户,能用'new_user'@'localhost'就绝不用'new_user'@'%'
9. 适当地配置防护墙
防火墙是外部攻击的第一道防线。可以通过以下命令查看监听的TCP和UDP端口。
# netstat -nltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 1648/sendmail: MTA:
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 1162/memcached
tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 1022/mongod
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1633/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1648/sendmail: MTA:
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1022/mongod
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1354/mysqld
tcp6 0 0 :::139 :::* LISTEN 1079/smbd
tcp6 0 0 :::80 :::* LISTEN 1098/apache2
tcp6 0 0 :::22 :::* LISTEN 1633/sshd
tcp6 0 0 :::445 :::* LISTEN 1079/smbd
udp 0 0 0.0.0.0:68 0.0.0.0:* 856/dhclient
udp 0 0 127.0.0.1:11211 0.0.0.0:* 1162/memcached
udp 0 0 192.168.47.255:137 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.47.10:137 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.83.255:137 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.83.128:137 0.0.0.0:* 1045/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.47.255:138 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.47.10:138 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.83.255:138 0.0.0.0:* 1045/nmbd
udp 0 0 192.168.83.128:138 0.0.0.0:* 1045/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 1045/nmbd
再通过文件/etc/services,查看默认的端口:
……
whois 43/tcp nicname
tacacs 49/tcp # Login Host Protocol (TACACS)
tacacs 49/udp
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp
domain 53/tcp # name-domain server
domain 53/udp
mtp 57/tcp # deprecated
tacacs-ds 65/tcp # TACACS-Database Service
tacacs-ds 65/udp
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
gopher 70/tcp # Internet Gopher
gopher 70/udp
rje 77/tcp netrjs
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
……
然后根据需求限制端口的使用,关闭不必要的端口,切记,防火墙不是万能的,不要配置的过于复杂。
9. 日志与监控
日志是监控服务器,查找问题,发现黑客攻击最好的手段,如果必要的话使用专门的服务器管理和备份日志。Linux日志,如何配置和分析,详细内容,以后的文章再介绍。