Ubuntu系统加固方案

1、删除系统不需要的默认账号

# userdel lp

# groupdel lp

#passwd –l lp

如果下面这些系统默认帐号不需要的话,建议删除。

lp, sync news, uucp, games, bin、man

修改一些系统帐号的shell变量,例如uucp,ftp和news等,还有一些仅仅需要FTP功能的帐号,一定不要给他们设置/bin/bash或者/bin/sh等Shell变量。可以在/etc/passwd中将它们的shell变量设为/bin/false或者/dev/null等,也可以使用usermod -s /dev/null

2、限制超级管理员远程登录

参考配置操作

SSH:

#vi /etc/ssh/sshd_config

PermitRootLogin yes

改为

PermitRootLogin no

重启sshd服务

#service sshd restart

3、修改ssh端口

Vi /etc/ssh/sshd_config

修改

Port 22

修改成其他端口,迷惑非法试探者

Linux下SSH默认的端口是22,为了安全考虑,现修改SSH的端口为1433,修改方法如下 :

/usr/sbin/sshd -p 1433

CONSOLE:

在/etc/securetty文件中配置:CONSOLE = /dev/tty01

#service sshd restart

3、缺省密码生存周期限制

cat /etc/login.defs

参考配置操作

PASS_MAX_DAYS 90

PASS_MIN_DAYS 0

4、设置关键目录的权限

参考配置操作

通过chmod命令对目录的权限进行实际设置。

补充操作说明

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

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

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

使用如下命令设置:

chmod 644 /etc/passwd

chmod 600 /etc/shadow

chmod 644 /etc/group

如果是有写权vi限,就需移去组及其它用户对/etc的写权限(特殊情况除外)

执行命令#chmod -R go-w /etc

5、修改umask值

参考配置操作

设置默认权限:

vi /etc/profile

vi /etc/bash.bashrc

在末尾增加umask 027

修改文件或目录的权限,操作举例如下:

#chmod 444 dir ; #修改目录dir的权限为所有人都为只读。

根据实际情况设置权限;

补充操作说明

如果用户需要使用一个不同于默认全局系统设置的umask,可以在需要的时候通过命令行设置,或者在用户的shell启动文件中配置

补充说明

umask的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

umask的计算:

umask是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码777减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码666减去需要的默认权限对应的八进制数据代码值。

6、资源限制

参考配置操作

第一步

编辑limits.conf文件

(vi /etc/security/limits.conf),加入或改变下面这些行:

* soft core 0

* hard core 0

* hard rss 5000

* hard nproc 20

* soft nofile 10000

* hard nofile 10000

如果限制limitu用户组对主机资源的使用,

加入:

@limitu soft core 0

@limitu hard nproc 30

@limitu - maxlogins 5

这些行的的意思是:“core 0”表示禁止创建core文件;“nproc 20”把最多进程数限制到20;“rss 5000”表示除了root之外,其他用户都最多只能用5M内存。上面这些都只对登录到系统中的用户有效。通过上面这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。星号“*”表示的是所有登录到系统中的用户。

第二步

必须编辑/etc/pam.d/login文件,在文件末尾加入下面这一行:

session required /lib/security/pam_limits.so

补充说明:

加入这一行后“/etc/pam.d/sudologin”文件是这样的:

#%PAM-1.0 auth required /lib/security/pam_securetty.so

auth required /lib/security/pam_pwdb.so shadow nullok

auth required /lib/security/pam_nologin.so a

ccount required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so

password required /lib/security/pam_pwdb.so

nullok use_authtok md5 shadow

session required /lib/security/pam_pwdb.so

session required /lib/security/pam_limits.so

#session optional /lib/security/pam_console.sodaemon

统计进程数量 ps ax | grep httpd | wc -l

7、设置目录权限

参考配置操作

查看重要文件和目录权限:ls –l

更改权限:

对于重要目录,建议执行如下类似操作:

# chmod -R 750 /etc/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。

8、设置关键文件的属性

# lsattr /etc/shadow

# lsattr /etc/passwd

# lsattr /etc/group

1、参考配置操作

# chattr +i /etc/shadow

# chattr +i /etc/passwd

# chattr +i /etc/group

建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。

9、使用PAM禁止任何人su为root

参考配置操作

编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:

auth sufficient /lib/security/pam_rootok.so

auth required /lib/security/pam_wheel.so group=wheel

这表明只有wheel组的成员可以使用su命令成为root用户。你可以把用户添加到wheel组,以使它可以使用su命令成为root用户。添加方法为:

# chmod –G10 username

10、更改主机解析地址的顺序

“/etc/host.conf” 说明了如何解析地址。编辑“/etc/host.conf” 文件(vi /etc/host.conf),加入下面该行:

# Lookup names via DNS first then fall back to /etc/hosts. order bind,hosts

multi on

# Check for IP address spoofing

nospoof on

第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否“/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的IP欺骗。

11、打开syncookie

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

net.ipv4.tcp_syncookies = 1

可以加入/etc/rc.d/rc.local中。/

12、

不响应ICMP请求:

# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

13、

参考配置操作

sysctl -w net.ipv4.tcp_max_syn_backlog = 2048

永久有效需要在vim /etc/sysctl.conf 直接添加上述net.ipv4.tcp_max_syn_backlog = 2048,而后执行sysctl -p

上述操作主要是对ubuntu、Linux系统进行评估分析,做了几个方面的安全加固,主要策略涉及到如下几点:

  1. 取消所有服务器的root远程ssh登录,限制su - root的用户权限,同时ssh登录端口调整,外网ssh登录全部调整;
  2. 调整密码过期时间和复杂度;
  3. 调整网络泛洪、SYN等防攻击策略参数;
  4. 清理服务器无效账户如lp、news等,调整系统关键目录权限;
  5. 优化服务器连接数参数;
  6. 日志管理:登录认证记录等;