ubuntu 12.04系统服务器安全配置介绍

这篇翻译linux安全技术的文章为 ubuntu 12.04.2 LTS 而写,你也可以在任何其他 Linux 分发版上做相同的事情。

如果服务器已经有了一个公有IP,你会希望立即锁定 root 访问。事实上,你得锁定整个ssh访问,并确保只有你可以访问。增加一个新用户,把它加入admin组(在/etc/sudoers预配置以拥有sudo访问权限)。

 代码如下 复制代码

$ sudo addgroup admin
Adding group 'admin' (GID 1001)
Done.
 
$ 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 []:
    Other []:
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 

sudo apt-get upgrade

安装防火墙
安装现在正最流行的防火墙软件?好,行动吧。那就配置一个防火墙。之后你总是可以增加另一个异常,几分钟额外的工作并不会折腾死你。Iptables在Ubuntu里预装了,所以去设置一些规则吧。

 代码如下 复制代码

$ sudo mkdir /etc/iptables
/etc/iptables/rules

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
 
# Accept any related or established connections
-I INPUT  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
-A INPUT  -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
 
# SSH
-A INPUT  -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
 
COMMIT

通过 iptables-apply 命令为规则集生效。如果你丢失连接,修补你的规则,在继续之前再试一下

 代码如下 复制代码

$ sudo iptables-apply /etc/iptables/rules

创建文件 /etc/network/if-pre-up.d/iptables,然后写入下面内容。当你启动服务器的时候,将自动载入你的iptables规则。

 代码如下 复制代码

/etc/network/if-pre-up.d/iptables

#!/bin/sh 

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

虽然 Fail2ban 安装一个默认配置(/etc/fail2ban/jail.conf),但我们希望在 /etc/fail2ban/jail.local 写配置,所以把它拷贝到那儿。

 代码如下 复制代码

sudo cp /etc/fail2ban/jail.{conf,local}

配置
把 ignoreip 行修改为你的ip,并且可以设置禁止恶意用户的时间量(默认是10分钟)。你也将希望设置一个destemail,这里我通常输入我自已的email地址:

 代码如下 复制代码

 

/etc/fail2ban/jail.local

[DEFAULT]
 
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
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

这有一些其他的你想检查的配置,尽管缺省配置已经相当不错了,所以,快速浏览这些,直到你读到Actions章节。

 Actions
Actions 允许你对恶意行为作出反应,然而当我们想要它禁止和发邮件的时候,默认是禁用了 iptables。值得感谢的是,有一个预配置文件 action_wml,它恰恰是做这个的。

 代码如下 复制代码

/etc/fail2ban/jail.local

Jails 监控
为了让Fail2ban工作,需要了解要监控哪些东西。这些已在Jails部分的配置文件,并且这有一些预载入而未启用的例子。既然到目前为止,你仅仅在服务器上启用了SSH访问,那我们就只启用SSH和SSH-DDos 监控,然而你还是会想给安装在这台服务器上的公共访问服务增加新的监控。

 代码如下 复制代码

/etc/fail2ban/jail.local

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
[ssh-ddos]
enabled  = true
port     = ssh
filter   = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

让变化生效

既然我们已经配置了Fail2ban,你将希望重新载入它,并且确保向iptables增加了合适的规则。

 代码如下 复制代码
$ sudo service fail2ban restart
 * Restarting authentication failure monitor fail2ban
   ...done.
 
$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere             multiport dports ssh
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
...
Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
 
Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

在任何时间,你都可以使用sudo iptables -L 来列出你的规则,随后列出所有当前禁止的 IP。此时,Fail2ban正在处理两个恶意的用户。

 代码如下 复制代码

Banned IPs

DROP       all  --  204.50.33.22         anywhere
DROP       all  --  195.128.126.114      anywhere

保持最新更新
你可能现在拥有一个已经锁定并且准备投入使用的服务器,然而这并不是你安全之旅的终点。保持最新更新(并且总是首先在非产品环境下测试),总是关闭你不需要的端口,定期检查你的日志,并且由内而外了解你的服务器。

后再我再把lamp新手配置也介绍一下

安装的网站软件环境中将使用Apache2网页服务软件、MySQL5网站后台数据库软件、以及PHP5角本解释语言软件,配置成的系统也可提供FTP服务。

1. LAMP 的安装

1.sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql
由于LAMP大部分操作与/var/www目录相关,为了方便,修改该目录的权限为普通用户可访问。

1.sudo chmod 777 /var/www/
2. phpmyadmin 安装

1.sudo apt-get install phpmyadmin
    在安装过程中会要求选择Web server:apache2或lighttpd,选择apache2,按tab键然后确定。然后会要求输入设置的Mysql数据库密码连接密码 Password of the database's administrative user。

    然后将phpmyadmin与apache2建立连接,以我的为例:www目录在/var/www,phpmyadmin在/usr/share /phpmyadmin目录,所以就用命令:sudo ln -s /usr/share/phpmyadmin /var/www 建立连接。

    phpmyadmin测试:在浏览器地址栏中打开http://localhost/phpmyadmin。

3. Apache 配置

(1)启用 mod_rewrite 模块

    终端命令:sudo a2enmod rewrite

(2)重启Apache服务器:sudo /etc/init.d/apache2 restart

    Apache重启后可以测试一下,在/var/www目录下新建文件test.php,写入代码: 保存,在地址栏输入http://127.0.0.1/test.php 或 http://localhost/test.php ,如果正确出现了Mysql已经正确配置,表明Apache和mysql都正常了。(记得重启Apache服务器后再测试)。

test.php

 代码如下 复制代码

1.<?php

2.    $link = mysql_connect("localhost","root","mysql密码");

3.    

4.    if (!$link)

5.    

6.    {

7.    

8.    die('Could not connect: ' . mysql_error());

9.    

10.    }

11.    

12.    else echo "Mysql已经正确配置";

13.    

14.    mysql_close($link);

15.    

16.    ?>

4. 浏览器PHP中文乱码问题

上面在FireFox浏览器中打开test.php测试时,如果出现了中文乱码,则是默认语言设置问题,解决方法如下:

打开apache配置文件: udo gedit /etc/apache2/apache2.conf,在最后面加上:AddDefaultCharset UTF-8,如果还是乱码的,再将UTF-8改用gb2312。

重启Apache:sudo /etc/init.d/apache2 restart 再刷新test.php 中文乱码没有了

时间: 2024-11-24 15:19:27

ubuntu 12.04系统服务器安全配置介绍的相关文章

Linux技巧--Redhat 5系统中的vim编辑器无法正常显示中文解决方案(中文显示为乱码)/Ubuntu 12.04系统gedit中文乱码

Redhat5 vim编辑器 中文乱码: 1.查看linux系统中是否已安装fonts-chinese中文语言支持包,如果没有安装,需要下载相应版本的rpm包进行安装 [root@localhost 02EXPORT_SYMBOL]# rpm -qa | grep fonts-chinese fonts-chinese-3.02-12.el5 2.修改/etc/sysconfig/i18n文件为以下内容 修改之前,记得先备份.cp /etc/sysconfig/i18n /etc/sysconf

ubuntu 12.04系统中安装SVN服务器的方法

1.安装命令 sudo apt-get install subversion(遇到报错的话 ,先更新软件源  sudo apt-get update) 2.创建项目目录 sudo mkdir /home/svn sudo mkdir /home/svn/project sudo chmod -R 777  /home/svn/project/ 3.创建svn仓库 sudo svnadmin create /home/svn/project 4.进入(create /home/svn/projec

Ubuntu 12.04上安装和配置Postfix邮件服务详细教程

邮件服务器配置之所以麻烦是因为需要了解很多东西,牵涉到域名服务 DNS/Bind,Web 收发邮件 Apache/PHP/MySQL/SquirrelMail,认证服务 LDAP, Kerberos, PAM,邮件通常存放在额外存储上还要 NFS/SAN,邮件服务 Postfix/Dovecot,反垃圾反病毒 Postgrey/Clam AV/SpamAssassion,安全认证 SSL,监控和备份等等,这一套下来基本包括了 Linux 系统管理的方方面面,所以说配置一个安全可靠的企业级邮件系统

Linux CentOS6/Ubuntu 12.04添加多IPV4 IP地址方法

有些Linux VPS主机,我们在拥有多个IP地址或者说购买第二个IPV4地址之后,我们在使用的时候是直接解析的,比如我们想用哪个IP对应某个域名的时候直接域名解析到这个IP,不要在服务器中设置配置文件.但是,有些VPS在添加新的IPV4后是需要设置的.     在这篇文章中,老左将记录今天在给公司的这台机器添加新的IPV4地址的时候并没有直接默认可以解析,而是需要配置文件的,把过程记录下来,分别基于CentOS6/Ubuntu 12.04两个环境系统进行的配置,万一以后有需要的时候还可以复制使

Ubuntu 12.04上享用新版本Linux的功能

Ubuntu 12.04上享用新版本Linux的功能 我司有一批Ubuntu 12.04的服务器暂时没有升级计划,但是像编译Android N代码等需求要求Linux的版本更新. 如何在不升级Ubuntu 12.04的情况下实现升级Linux版本的需求呢?我们有两大利器可以使用:docker和虚拟机. Docker大法 Docker安装 升级内核 Docker需要64位的Linux支持,幸好,这条是满足的. Docker需要kernel 3.10以上版本的支持. 首先我们查看一下当前的kerne

Ubuntu 12.04.1 LTS + PostgreSQL 9.1

Ubuntu 12.04.1 LTS + PostgreSQL 9.1 Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民之街道溪山美地518109+86 13113668890+86 755 29812080<netkiller@msn.com> 版权 2011, 2012 http://netkiller.github.com $Date: 2012-12-06 11:53:11 +0800 (Thu, 06 Dec 2012) $  

阿里云ubuntu 12.04 64位系统java环境配置详解

系统版本:ubuntu 12.04 64位 ssh链接服务器(使用终端远程链接):     ssh -l username IP地址 如果出现类似如下错误:         @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ 表示host文件中记录的上次登陆信息和当前信息不匹配.在客户端执行:         mv ~/.ssh/known_hosts /tmp 再次登陆,提示是否继续链接时输入yes即可. 添加用户 1:使用a

Windows XP硬盘安装Ubuntu 12.04双系统图文详解

Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubuntu 12.04,下面就是整个安装过程,记录下来,希望能够帮助和我一样第一次在XP中安装Ubuntu 12.04双系统的朋友. 下载相关资源 需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 12.04 LTS的镜像文件,具体下载地址如下: 1.grub4dos  点击下载 grub4dos 2.Ubuntu 12.04 点击下载 Ubuntu 1

Linux服务器下搭建hadoop集群环境 redhat5/Ubuntu 12.04

Ubuntu 12.04 下搭建 hadoop 集群环境步骤 一. 搭建环境前的准备: 我的本机Ubuntu 12.04 32bit作为maser,就是上篇hadoop单机版环境搭建时用的那台机子,http://www.linuxidc.com/Linux/2013-01/78112.htm 还在KVM中虚拟了4台机子,分别起名为: son-1        (ubuntu 12.04 32bit),son-2        (ubuntu 12.04 32bit),son-3        (