Linux系统VPS安全与优化设置整理

VPS安全设置

一、用户权限安全设置

root权限太高,误操作就相当危险,所以日常操作使用普通账号,只有特定时候才使用su切换到root身份。
①、新建普通用户,比如zhangge
useradd  zhangge
②、修改密码
passwd zhangge
③、将帐号加入wheel组
usermod -G wheel zhangge
④、设置只允许这个组的帐号,使用su命令切换到root
vim /etc/pam.d/su
找到#auth            required        pam_wheel.so use_uid
去掉行首的注释符 # 然后使用 :wq 保存退出
接着vim /etc/login.defs
在最末添加SU_WHEEL_ONLY yes,再用:wq保存退出即可。
Ps:执行 echo "SU_WHEEL_ONLY yes">>/etc/login.defs 亦可。
现在,再建立新的普通帐号,是无法使用su命令切换到root组了,感兴趣的可以测试下效果。

⑤、删除掉不需要的用户和用户组

禁止所有默认的被操作系统本身启动的并且不必要的账号,账号越多,系统就越容易受到攻击。
 

userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers
 ⑥、锁定口令文件

执行chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。
Shell

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

二、SSH安全设置

①、修改SSH端口
默认的SSH使用22端口,众所周知,所以我们有必要自定义只有自己才知道的端口号,而且增加那些恶意扫描端口的难度,建议把SSH端口改到10000以上,比如使用23212,如下修改:
Ps:修改前,请执行iptables -nL 确认防火墙未设置非22/80访问限制规则,否则可能导致修改后无法使用自定义端口连接就悲剧了!
vim /etc/ssh/sshd_config 编辑SSH配置文件
i. 找到#Port 22,去掉#号,并在下面添加Port 23212(先保留22端口,等23212成功连接再去掉22,保险做法)
ii. 继续找到#UseDNS yes,改成UseDNS no,可以提高ssh的连接速度;
iii. 找到#PermitRootLogin Yes 改成 PermitRootLogin no 禁止root远程使用ssh登录
iv. 找到#PermitEmptyPasswords no,去掉#号, 禁止空密码登录
最后,使用 :wq 保存退出,再执行 service sshd restart 重启 ssh服务即可生效。
此时,可以新开一个终端,测试能否通过23212端口连线,如果可以就把之前保留的port 22删除即可。
 
三、防火墙简单安全设定

这个VPS是直接使用公网IP的,防火墙还是得简单设置下。
前期如下规划:
仅作为web服务器使用,所以只需要开放SSH和HTTP端口即可,即只要开放上面定义的23212和80端口,由于不使用ftp,本例未提到21号端口,实际使用请注意辨别。
①、准备工作
由于操作防火墙具有一定的误操作风险,很可能导致自己也被阻挡在外的悲剧,所以操作防火墙之前事先一定要先建立一个关闭防火墙的计划任务,比如:
执行 crontab -e 加入:
 
1
*/5 * * * * root /etc/init.d/iptables stop
表示每5分钟停止一次防火墙,以防误操作把自己挡在外面,就算出现误操作,5分钟之内将会停止,也不会造成悲剧,这是一个技巧!
②、防火墙设置脚本
以下代码我亲测无误,请放心使用,策略说明:
i. 仅开通HTTP(80)和SSH(自动抓取)端口,其他一律拒绝访问!可根据实际需要在第10行添加其他端口,比如FTP的21端口、smtp25端口等。
ii. 单向禁ping设置,即外部IP无法ping通你的公网IP.

Shell

#!/bin/bash
ssh_port=`netstat -nutlp | grep sshd | grep 0.0.0.0 | awk '{print $4}' | cut -d ":" -f2`
iptables -F
iptables -F -t nat
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 80,$ssh_port -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
/etc/init.d/iptables save
exit 0
 
确认无误后,记得把第①步中的任务计划取消。
如我的VPS防火墙规则如下:

 
四、其他安全设置

①、禁ping

执行如下命令即可:

Shell

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
然后用你的电脑ping服务器IP就可以看到效果了!
当然如果你用了上面的防火墙脚本,就已经自带禁ping功能了。两种方法的区别如下:
以上方法,ping能够返回消息(前提是防火墙未做阻挡规则,否则直接超时):

 
采用防火墙的方法,则直接超时:

 
Ps:个人推荐使用上文的防火墙脚本设置,更彻底。
②、开启TCP SYN Cookie保护
执行 echo 1 > /proc/sys/net/ipv4/tcp_syncookies 即可。
做到这里,你的VPS已经具备不错的安全性了,当互联网没有绝对的安全可言,我们必须时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。

VPS优化设置

一、增加SWAP分区

VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立执行程序和独立系统配置等。
下面是配置过程中的一些笔记:
VPS只有一个根分区,没有swap交换分区。VPS内存不大,于是,我为其增加了一个swap交换文件。
1、进入一个目录
cd /var/
2、获取256M的文件块:
dd if=/dev/zero of=swapfile bs=1024 count=262144
3、创建swap文件
/sbin/mkswap swapfile
4、激活swap文件
/sbin/swapon swapfile
5、查看一下swap是否正确:
/sbin/swapon -s
6、加到fstab文件中让系统引导时自动启动
vi /etc/fstab
在末尾增加以下内容:
/var/swapfile swap swap defaults 0 0
Ps:这个方法在玛思阁以前的文章同样整理过,详见:给已安装的Linux新增Swap交换分区。
--------------------------------------------------------------------------------
二、修改Linux系统时区

系统默认为美国东部时间,修改Linux时区为东八区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 三、Linux内核参数优化

Linux内核参数优化可以使用 sysctl 命令完成,但是命令只能临时生效,若要永久保留配置,我们就得编辑sysctl.conf这个文件了。先附上sysctl.conf详细参数说明
sysctl.conf 文件中参数设置及参考推荐值

点击展开代码
需要优化的朋友,可以参考上面的参数说明,并根据服务器实际负载来定制你的sysctl.conf文件,下面贴上一个针对nginx内核参数优化的例子,仅供参考(待补充):

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
将以上代码添加到sysctl.conf文件的最后,然后执行/sbin/sysctl -p 即可生效。

三、关闭多余tty,释放内存

linux默认会启动6个TTY控制台,都需要常驻占用内存(1tty占用4M多的样子),事实上没必要需要使用这么多tty,个人vps,仅需1~2个tty即可。
Centos5.* 设置tty数量:
①、编辑 /etc/inittab,找到 tty [1-6] 改成 tty [1-2]
②、编辑 /etc/sysconfig/init,同样将tty [1-6] 改成 tty [1-2]
重启系统即可生效(建议先不重启,等后续操作完成一起重启即可);
CentOS 6.* 设置tty数量:
CentOS 6.0 开始 TTY 的配置由 /etc/inittab 更改为 /etc/init/start-ttys.conf,所以上面的第①步变为:
①、编辑 /etc/init/start-ttys.conf,找到 tty [1-6] 改成 tty [1-2]
②同上编辑即可
四、关闭ipv6

ipv6一般都用不到,完全关闭即可。
编辑 /etc/modprobe.d/dist.conf 文件,在最后追加:
alias net-pf-10 off
alias ipv6 off
然后重启系统即可(某些发行版可能是/etc/modprobe.conf文件)。
五、关闭多余启动项

执行  chkconfig --list | grep :on  列出启动项:

 
然后找到不需要启动的项目,执行 chkconfig 程序名 off 即可.
比如,ip6tables 是ipv6防火墙,用不到,执行  chkconfig ip6tables off ,然后执行service ip6tables stop即可彻底关闭ip6tables这个多余进程。
其余进程,请先查清楚作用,再来操作,以免出错。
暂时就整理这么多,后续发现更多的优化设置,再来追加~

时间: 2024-10-26 17:31:14

Linux系统VPS安全与优化设置整理的相关文章

Linux系统Gentoo安装Kde5怎么设置

Linux系统Gentoo安装Kde5怎么设置   配置方法: 1.添加kde的overlay: layman -a kde echo -e "-qt5" >> /etc/portage/profile/use.stable.mask 或者在/etc/portage/make.conf的USE中添加qt5. 2.解除kde5的mask 方法一:按官方wiki中的方法做软链接: cd /etc/portage/package.accept_keywords ln -s /va

远程修改Linux系统VPS服务器Root用户密码教程

当你刚接触Linux系统的VPS主机时,运营商往往会给你一个Linux系统的远程登陆管理的用户名和密码.而这个密码是默认的切具有一定规律,所以是非常不安全的.这个时候我们就需要修改Root密码了. 方法其实很简单,在Windows系统下用putty链接到Linux后用一个简单的命令就可以搞定. Linux修改root密码命令 首先以root身份登陆,执行:「passwd 用户名」(用户名一般些root),如以下示例: [root@bogon ~]# passwd root Changing pa

linux系统vps服务器 必要的简单安全配置

虽然说linux 系统比windows安全性要高一些,不过一些简单的安全配置也是必要的. 互联网上有很多工具采用字典方式扫描套取你的管理员密码,我们可以创造一些麻烦出来,增加被破译的可能性.一起看学习下入门级安全配置吧. 第一.远程管理端口. 修改ssh 的登陆端口,默认端口是22.扫描字典穷举密码他们都是从默认的开始. 如果你把端口改成4位数的也大大提高了他们的难度及时间. 用vi命令来编辑ssh配置文件(vi命令要用到编辑和保存退出等几个简单命令如果不熟悉或者不会可以百度或者本站搜索): 

Linux系统vps服务器入门级安全配置指南

虽然说Linux 系统比Windows安全性要高一些,不过一些简单的安全配置也是必要的. 互联网上有很多工具采用字典方式扫描套取你的管理员密码,我们可以创造一些麻烦出来,增加被破译的可能性.一起看学习下入门级安全配置吧. 第一:远程管理端口 修改ssh 的登陆端口,默认端口是22.扫描字典穷举密码他们都是从默认的开始. 如果你把端口改成4位数的也大大提高了他们的难度及时间. 用vi命令来编辑ssh配置文件(vi命令要用到编辑和保存退出等几个简单命令如果不熟悉或者不会可以百度或者本站搜索): vi

Linux系统ulimit值的正确设置方法

学习swoole的时候有一个max_conn参数, max_conn 描述:服务器允许维持的最大TCP连接数 说明:设置此参数后,当服务器已有的连接数达到该值时,新的连接会被拒绝.另外,该参数的值不能超过操作系统ulimit -n的值,同时此值也不宜设置过大,因为swoole_server会一次性申请一大块内存用于存放每一个connection的信息.这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器很容易就达到这个数量.

Mac OS X/Linux系统下清除DNS缓存命令整理_unix linux

Mac OS X/Linux系统下怎么清除DNS缓存呢?在不同的系统中刷新DNS缓存的方法如下: Mac OS X 系统,终端输入: sudo dscacheutil -flushcache Linux系统,终端输入: /etc/init.d/nscd restart Windows 系统,CMD 命令行窗口输入: ipconfig /flushdns 查看

修改Linux系统VPS主机的DNS的方法

  Godaddy域名更换DNS 在众多域名注册商当中,使用godaddy域名注册商的还是居多.不管如今是不是大部分支持国人的信用卡付款,但是其普通的域名优惠价格也是比较便宜,算是在可以接受的范围之内.我们在购买域名之后,需要使用到的就是域名解析到网站主机中,很多新手在初次使用的时候还是有一点点困难.因为老左也是新站长,就和大家一起从头分享吧,对于高手来说这篇文章算是口水文,请忽略不计. 首先,我们登陆自己的godaddy账户后台域名列表处. 我们点击需要解析域名后面的Launch按钮仅需解析界

Linux系统中用户管理的基本命令整理

  认识一下linux的权限管理其实认的不是你的用户名和密码而是识别的你的UID和GID说白了,就是你的用户ID和群组ID 代码如下: >cat /etc/passwd < p>root:x:0:0:root:/root:/bin/bash   daemon:x:1:1:daemon:/usr/sbin:/bin/sh 上边的0就是用户id,群组id也是0,当然是我现在的用户root 用户登录的时候,会根据你的用户名,譬如我的root来去/etc/passwd有没有这个用户,如果没有跳出

重装系统后的简单优化设置方法介绍

1.改变我的文档的默认路径! 单击"开始" 出现下图 右击箭头所指,选属性,出现下图 点击箭头所指!就可以把我的文档的默认路径移动到其他盘了 这样做的优点是:避免系统盘资源紧张,重做系统后,保存在我的文档里的东西不会因为为备份而丢失! 2.禁用系统错误汇报 右击我的电脑-->选属性 点击箭头所指 在出现的对话框里将设置如下 3.移动IE临时文件夹 打开IE选项对话框 单击箭头所指,打开对话框: 点移动文件夹,就可以把文件移动到你想要的地方了! 这样做的好处是:IE产生的临时文件是