> CentOS > CentOS运维 >

Centos Linux下VPS的优化与安全设置

1、建立一个普通权限的用户
因为root用户对系统具有全权的操作权限,为了避免一些失误的操作,建议在一般情况下,以一般用户登录系统,必要的时候需要root操作权限时,再通过“su -”命令来登录为root用户进行操作。
useradd pysche
passwd pysche
usermod -G wheel pysche
修改pam配置,使非wheel组用户不能使用su命令登录为root:
vi /etc/pam.d/su
找到
#auth required /lib/security/$ISA/pam_wheel.so use_uid
将行首的 # 去掉。
然后
vi /etc/login.defs
在文件末尾加上
SU_WHEEL_ONLY yes

2、安装yum加速工具,并更新系统
yum install yum-fastestmirror -y
yum upgrade -y

3、安装mlocate工具
yum install mlocate -y

4、root邮件的修改
在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。
vi /etc/aliases
在文件末尾加上
root: admin@it.net.cn

5、locate命令设置
vi /etc/updatedb.conf
在末尾增加
DAILY_UPDATE=yes
然后运行
updatedb

6、关闭不必要的服务
比如cups
/etc/init.d/cups stop
chkconfig cups off
除了以下服务以外,其他服务默认的都可以采用刚才的方法关闭:
atd
crond
irqbalance
lvm2-monitor
microcode_ctl
network
sendmail
sshd
syslog

7、停止ipv6
vi /etc/modprobe.conf
在文件末尾加上
alias net-pf-10 off
alias ipv6 off

8、关闭SELinux
vi /etc/selinux/config
将其中的
SELINUX=enforcing
改为
SELINUX=disabled

9、安装sudo工具
yum install sudo -y
安装好了以后,修改sudo的配置
vi /etc/sudousers

# %wheel ALL=(ALL) NOPASSWORD:ALL
去掉前面的 # , 然后保存文件。
这样修改了以后,只有所有属于wheel组的用户能执行sudo命令,并且执行sudo命令时只需要输入自己的密码即可。

10、修改SSH配置
vi /etc/ssh/sshd_config
增加ServerKey的强度
找到
#ServerKeyBits 768
改为
ServerKeyBits 1024
不允许root用户直接登录
#PermitRootLogin Yes
改为
PermitRootLogin no
禁止空密码登录
找到
#PermitEmptyPasswords no
去掉前面的 #
全部修改完了以后,重启服务器
init 6

在系统刚安装完成时立即对Grub加密,防止他人通过进入单用户模式获得root权限!!!

1.Bios 安全设置

一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。
这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。

2.删除掉不需要的用户和用户组
应该禁止所有默认的被操作系统本身启动的并且不必要的账号,当您第一次安装系统时就应该这么做,Linux提供了很多默认账号,而账号越多,系统就越容易受到攻击。
vi /etc/passwd
#userdel adm
#userdel lp
#userdel sync
#userdel shutdown
#userdel halt
#userdel news
#userdel uucp
#userdel operator
#userdel games
#userdel gopher
#userdel ftp
vi /etc/group

#groupdel adm
#groupdel lp
#groupdel news
#groupdel uucp
#groupdel games
#groupdel dip
#groupdel pppusers

3.口令文件
chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。
# chattr +i /etc/passwd
# chattr +i /etc/shadow
# chattr +i /etc/group
# chattr +i /etc/gshadow

检查以上权限后期使用
lsattr /ec/passwd

4.禁止Ctrl Alt Delete重新启动机器命令
修改/etc/inittab文件,将”ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。5.限制su命令
如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=isd
这时,仅isd组的用户可以su作为root。此后,如果您希望用户admin能够su作为root,可以运行如下命令:
# usermod -G10 admin

6.删除finger程序,具体方法如下
#rpm –e finger

7.删减登录信息
默认情况下,登录提示信息包括Linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。
然后,进行如下操作:
# rm -f /etc/issue
# rm -f /etc/issue.net
# touch /etc/issue
# touch /etc/issue.net

8、更改SSH端口

最好改为10000以上,别人扫描到端口的机率也会下降
不允许使用低版本的SSH协议
vi /etc/ssh/ssd_config
将#protocol 2,1改为
protocol 2
将PORT改为1000以上端口
vi /etc/ssh/sshd_config
Port 10000

同时,创建一个普通登录用户,并取消直接root登录
useradd ‘username’
passwd ‘username’

vi /etc/ssh/sshd_config
PermitRootLogin no #取消root直接远程登录

9、关闭那些不需要的服务

记住少开一个服务,就少一个危险。
以下仅列出需要启动的服务,未列出的服务一律关闭:
#setup
acpid
anacron
cpuspeed
crond
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
network
random
sendmail
sshd
syslog
yum-updatesd

10、启用iptables 防火墙,对增加系统安全有许多好处。

设置好防火墙的规则。
vi /etc/sysconf/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# allow local loopback connections
-A INPUT -i lo -j ACCEPT
# drop INVALID connections
-A INPUT -m state –state INVALID -j DROP
-A OUTPUT -m state –state INVALID -j DROP
-A FORWARD -m state –state INVALID -j DROP
# allow all established and related
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# add anymore rules here

COMMIT

11.系统安全记录文件
操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到Internet,您发现有很多人对您的系统做Telnet/FTP登录尝试,可以运行”#more /var/log/secure | grep refused”来检查系统所受到的攻击,以便采取相应的对策,如使用SSH来替换Telnet/rlogin等。

12.创建所有重要的日志文件的硬拷贝
如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:
Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
执行/etc/rc.d/init.d/syslog restart
或者把日志发送到其它服务器保存

authpriv.* /var/log/secure
要把它发送到192.168.0.2,就可以这样修改
authpriv.* @192.168.0.2 /var/log/secure

13。改变/etc/rc.d/init.d目录下的脚本文件的访问许可

# chmod -R 700 /etc/rc.d/init.d/*
这样便仅有root可以读、写或执行上述所有脚本文件。
注意:慎重修改此安全设置

14.inetd.conf或xinetd.conf
如果是inetd.conf建议注释掉所有的r开头的程序,exec等
7,TCP_Wrappers
在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL

15./etc/aliases文件
Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.
编辑aliases,删除或注释下面这些行:
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
运行/usr/bin/nesaliases重新加载.

16.防止sendmail被没有授权的用户滥用
编辑sendmail.cf
把PrivacyOptions=authwarnings
改为PrivacyOptions=authwarnings,noexpn,novrfy

17.不响应ping
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

18.使TCP SYN Cookie保护生效
Echo 1 > /proc/sys/net/ipv4/tcp_syncookies

19.带S位的程序
可以清除s位的程序包括但不限于:
? 从来不用的程序;
? 不希望非root用户运行的程序;
? 偶尔用用,但是不介意先用su命令变为root后再运行.
find / -type f ( -perm 04000 –o –perm -02000 ) -print
chmod a-s 程序名

20.帐号安全设置
修改/etc/login.def文件
PASS_MAX_DAYS 120 ?设置密码过期日期
PASS_MIN_DAYS 0 ?设置密码最少更改日期
PASS_MIN_LEN 10 ?设置密码最小长度
PASS_WARN_AGE 7 ?设置过期提前警告天数
确保/etc/shadow为root只读
确保/etc/passwd为root读写

定期用密码工具检测用户密码强度

21. /etc/exports
如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
建议最好不要使用NFS.

22.登录终端设置
/etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,您可以

编辑/etc/securetty且注释掉如下的行。
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
这时,root仅可在tty1终端登录。

23.防止IP欺骗
编辑host.conf文件并增加如下几行来防止IP欺骗攻击。
order bind,hosts
multi off
nospoof on

24.Inetd设置
首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用”stat”命令进行检查。
# chmod 600 /etc/inetd.conf
然后,编辑/etc/inetd.conf禁止以下服务。
ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth
如果您安装了ssh/scp,也可以禁止掉Telnet/FTP。为了使改变生效,运行如下命令:
#killall -HUP inetd
默认情况下,多数Linux系统允许所有的请求,而用TCP_WRAPPERS增强系统安全性是举手之劳,您可以修

改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。例如,将/etc/hosts.deny设为”ALL: ALL”可以默认拒绝所有访问

。然后在/etc/hosts.allow文件中添加允许的访问。例如,”sshd: 192.168.1.10/255.255.255.0 gate.openarch.com”表示

允许IP地址192.168.1.10和主机名gate.openarch.com允许通过SSH连接。
配置完成后,可以用tcpdchk检查:
# tcpdchk
tcpchk是TCP_Wrapper配置检查工具,它检查您的tcp wrapper配置并报告所有发现的潜在/存在的问题。

25.防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以

在/etc/security/limits.conf中添加如下几行:
* hard core 0
* hard rss 5000
* hard nproc 20
然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。
session required /lib/security/pam_limits.so
上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。

26.内核参数调整
#vi /etc/sysctl.conf
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
#sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
sysctl -w net.ipv4.ip_conntrack_max=65535
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_syn_retries=1
sysctl -w net.ipv4.tcp_fin_timeout=5
sysctl -w net.ipv4.tcp_synack_retries=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.route.gc_timeout=100
sysctl -w net.ipv4.tcp_keepalive_time=500
sysctl -w net.ipv4.tcp_max_syn_backlog=10000

27.查看系统隐藏文件
find / -name “.*” –print

28.查找系统中没有主人的文件
find / -nouser –o –nogroup

29.查找.rhosts文件
find /home -name “.rhosts”
如果有,请删除它.

30.收回系统编译器的权限或删除
如: chmod 700 /usr/bin/gcc

31.查找任何人都有写权限的文件和目录
find / -type f ( -perm -2 -o perm -20 ) ls
find / -type f ( -perm -2 –o –perm -20 ) ls

32.关闭FTP匿名用户登陆

33.icmp包处理

1)用防火墙禁止(或丢弃) icmp 包
iptables -A INPUT -p icmp -j DROP
2)对所有用ICMP通讯的包不予响应
比如PING TRACERT

34.Bash Shell 命令

Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。

经过以上的设置,您的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。

centOS 5.4 IP,防火墙,SSH配置(详细版本)2010年01月21日 星期四 上午 00:57文件 /etc/sysconfig/network
这个/etc/sysconfig/network文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。
设定形式:设定值=值
/etc/sysconfig/network的设定项目如下:
NETWORKING 是否利用网络
GATEWAY 默认网关
IPGATEWAYDEV 默认网关的接口名
HOSTNAME 主机名
DOMAIN 域名
文件 /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg- eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3……(这里面的文件是相当重要的,涉及到网络能否正常工作)
设定形式:设定值=值
设定项目项目如下:
DEVICE 接口名(设备,网卡)
BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动)
HWADDR MAC地址
ONBOOT 系统启动的时候网络接口是否有效(yes/no)
TYPE 网络类型(通常是Ethemet)
NETMASK 网络掩码
IPADDR IP地址
IPV6INIT IPV6是否有效(yes/no)
GATEWAY 默认网关IP地址
这里有一个例子:
CODE:
[root@linux ~]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0:0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.101
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
=================================
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:16:E6:4D:30:05
ONBOOT=yes
IPADDR=192.168.1.99
NETMASK=255.255.255.0
NETWORK=192.168.1.0
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=192.168.1.1

文件 /etc/resolv.conf
这个文件是用来配置主机将用的DNS服务器信息。在这个文件中如果不设置DNS服务器的IP地址,那么在通信的时候,将无法指定像http://www.waptv.us这样的域名。(DNS是Domain Name
System的简称,中文名称域名解析服务器,主要是IP和域名转换功能)/etc/resolv.conf的设定项目:
domain ←定义本地域名
search ←定义域名和搜索列表
nameserver←定义被参照的DNS服务器的IP地址(最多可指定3个)
一般来说最重要的是第三个nameserver项目,没有这项定义,用域名将无法访问网站,并且yum等服务将无法利用

search localdomain
nameserver 192.168.1.1

网络基本命令
[root@linux ~]#service network restart
start ←启动
stop ←停止
restart ←再启动
reload ←和再启动一样(..)
status ←状态表示

防火墙配置: /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 7777 -j ACCEPT
允许的端口,在修改SSH端口前,先在这里开启端口。

SSH端口修改
/etc/ssh/ssh_config
/etc/ssh/sshd_config
port 8888
port 22 #先留着此端口,上面的端口可以链接了,在关闭这个
service sshd restart #重启SSH
/etc/init.d/iptables restart #重启防火墙


(责任编辑:IT)