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. 日志管理:登录认证记录等;

 

posted @ 2015-05-04 15:46  christian.badguy  阅读(5470)  评论(0编辑  收藏  举报