Linux服务器初始化 centos7

1、更新

先备份
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

再下载
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

更新缓存
# yum clean all
# yum makecache
# yum update -y

同步时间

确定时区为东八区
# more /etc/localtime
apif2
CST-8

更新时间
# ntpdate ntp1.aliyun.com 或者
# ntpdate ntp2.aliyun.com

定时任务
# crontab -e
00 23 * * * ntpdate ntp1.aliyun.com

设置主机名

# hostname
# hostnamectl set-hostname master
# vi /etc/hosts
127.0.0.1 master
::1 master

 

2、创建管理用户,避免日常使用root用户

大家都知道超级管理员是root,权限非常大,所以要防止密码泄露,日常尽量避免直接使用

2.1、建用户

# groupadd web

# useradd -g web zhangsan

# passwd zhangsan

2.2、授权

如果是一个人独立管理服务器,涉及使用超级管理员权限时,通过 su 切换到root。
如果是多人管理服务器,建议使用 sudo 进行授权。

授权用户 zhangsan 超级管理员权限:

# visudo

在文件中找到"root ALL=(ALL) ALL"这一行,然后在下面加入一行"zhangsan ALL=(ALL) ALL",这样就把用户user加入sudo组了。
这个是很粗暴的把用户 zhangsan 设置为超级管理员权限,建议在实际操作时,进行详细的授权。

授权用户 zhangsan 个别权限(特别要注意权限溢出问题):

zhangsan ALL=/bin/more
或者更严格的:
zhangsan ALL=/bin/more /etc/shadow

可以用*代替,如
zhangsan ALL=/bin/*,/sbin/*,!/bin/more

 

3、保护SSH

3.1、禁止root登录

防止匿名用户不断的用root用户尝试登录

# vi /etc/ssh/sshd_config

PermitRootLogin no

重启ssh服务生效

# systemctl restart sshd

注意:如果是远程管理,先使用 zhangsan 登录后,再退出root用户,防止出现意外

3.2、修改SSH登录端口

新增ssh端口 6000

# vi /etc/ssh/sshd_config
Port 22
Port 6000

重启生效

# systemctl restart sshd

配置selinux 授权新的端口(如果selinux启动的话)

安装selinux管理命令工具
# yum -y install policycoreutils-python  setroubleshoot(选装)

查看selinux允许的ssh端口
# semanage port -l | grep ssh

增加新的端口
# semanage port -a -t ssh_port_t -p tcp 6000

配置防火墙,允许新的端口

# cp /usr/lib/firewalld/servies/ssh.xml /etc/firewalld/services/
# vi /etc/firewalld/services/ssh.xml
增加端口节点:6000

# firewall-cmd --reload

不要断开目前的连接,尝试使用6000端口连接服务器,如果连接不成功则进行排查

连接成功后删除22端口,并重启生效

# vi /etc/ssh/sshd_config
# systemctl restart sshd

删除防火墙配置中的22端口,并重启生效

# vi /etc/firewalld/services/ssh.xml
# firewall-cmd --reload

selinux先不关了

 

4、检查防火墙

防火墙非常重要,一定要开启。
centos7 默认使用 firewalld 防火墙,默认开启,前面也使用过了。
注意把对外的网络定义为public级别,然后严格控制其端口和服务。

 

5、检查selinux

比较重要,建议开启。
默认开启,前面也使用过了。

 

6、定期维护拒绝IP目录

如果发现那个IP有异常情况,如流量异常,则禁该IP访问一段时间

# vi /etc/hosts.deny

ALL:124.112.137.34
ALL:198.123.44.32

 

7、禁止密码登录

如果还要加强安全性,直接静止SSH的密码登录,使用证书登录,或者双重验证。
关闭密码登录:

# vi /etc/ssh/sshd_config

PasswordAuthentication no

 

8、日志监控器

采用fail2ban等第三方日志监控器,当发现有人在试探你的SSH密码的时候,只要达到一定的次数,则调用防火墙屏幕该IP,而且可以发邮件通知管理员,非常强大的一个功能。

 

9、最后

安全无止境,只有不断优化,做好数据备份,它是最后的一道安全措施了。