目录
- 一、原则
- 二、安全
-
- 1、sudo登录
- 2、禁止root远程SSH
- 3、锁定关键系统文件
- 4、隐藏Linux 版本信息显示
- 5、清除多余的系统虚拟用户账号
- 6、历史记录数及登录超时
- 7、禁ping
- 8、升权威胁命令
- 9、grub引导菜单加密
- 10、升级已知漏洞
- 三、优化
-
- 1、设定运行级别为3
- 2、精简开机启动服务
- 3、时间同步
- 4、中文显示设置
- 5、调整文件描述符数量
- 6、定时自动清理邮件服务临时目录
- 7、配置yum更新源
- 8、autofs自动挂载服务
- 9、关闭selinux及iptables
- 10、Linux内核参数优化
- 参考
一、原则
- 安装系统最小化。即选包最小化,yum安装软件包也要最小化。
- 自启服务最小化。精简开机启动服务crond、sshd、network、rsyslog、sysstat。
- 操作命令最小化。尽量不用
-r
参数。。
- 登录用户最小化。没有特殊需求不登录root,用普通用户登录。
- 权限设置最小化。普通用户授权权限最小化,只给用户必需的管理系统的命令;文件及目录的权限设置最小化,禁止随意创建、更改、删除文件。
二、安全
1、sudo登录
- 通过sudo 授权管理,不用root 登录管理系统,而以普通用户身份登录。
- sudo 授权管理:
visudo
或vim /etc/sudoers
- 登录
sudo 用户名
- 查看当前用户被授予的sudo权限集合
sudo -l
vim /etc/sudoers
root ALL=(ALL) ALL
centos ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
sudo centos
2、禁止root远程SSH
- 更改默认的远程连接SSH服务器端口,禁止root用户远程连接。
备份
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
配置
vim /etc/ssh/sshd_config
更改端口
Port 52112
禁止密码为空的用户远程登录
PermitEmptyPasswords no
禁止root 远程登录
PermitRootLogin no
禁止sshd 对远程主机名进行反向解析
UseDNS no
Linux 之间使用SSH 远程连接慢
GSSAPIAuthentication no
重启sshd
/etc/init.d/sshd reload
- 甚至更改SSH服务只监听内网IP,拨号到VPN 服务器,然后从局域网访问这些服务器。对外的Web服务器端口http80 和https 443进行安全控制。
vim /etc/ssh/sshd_config
Port 52112
PermitEmptyPasswords no
PermitRootLogin no
UseDNS no
GSSAPIAuthentication no
SSH 监听的IP
ListenAddress 192.168.10.10:52112
iptables限制端口
iptables -I INPUT -p tcp --dport 52112 -s 192.168.10.10/24 -j ACCEPT
3、锁定关键系统文件
- 锁定关键系统文件,如
/etc/passwd
、/etc/shadow
、/etc/group
、/etc/gshadow
、/etc/inittab
,处理以上内容后把chattr
、lsattr
改名为并转移,这样就安全多了。
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
mv /usr/bin/chattr /usr/bin/picha
lsattr /etc/passwd
4、隐藏Linux 版本信息显示
- 清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。
查看
cat /etc/issue
cat /etc/issue.net
清除
> /etc/issue
> /etc/issue.net
5、清除多余的系统虚拟用户账号
bin、adm、lp、halt、mail、uucp、operator、games、gopher、ftp、dbus、vcsa、abrt、ntp、saslauth、postfix、tcpdump
6、历史记录数及登录超时
vim /etc/profile
TMOUNT=10
HISTSIZE=5
HISTFILESIZE=10
7、禁ping
iptables -t filter -I INPUT -p icmp --icmp-type 8 -i eth0 -s 192.168.10.10/24 -j ACCEPT
8、升权威胁命令
- 别顺手把服务器关了。
- 常见于在VMware上做完实验,然后在服务器上操作完成之后。
删库跑路rm -rf
流量高峰关闭/重启服务器poweroff、halt、reboot
以上命令都毙了吧
9、grub引导菜单加密
/sbin/grub-md5-crypt
vi /etc/grub.conf
14 password --md5 $1$A5FhR1$790TX7w3S4gjlhCAeHxAG1
10、升级已知漏洞
rpm -qa openssl openssh bash
yum install openssl openssh bash -y
三、优化
1、设定运行级别为3
- 设定运行级别为3:使用文本命令行模式管理Linux,资源占用最小化
runlevel
init 3
- 查看当前系统运行级别
runlevel
- 切换运行级别,后面接对应级别的数字
init
运行级别 |
说明 |
运行级别0 |
系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。 |
运行级别1 |
单用户工作状态,root权限,用于系统维护,禁止远程登陆。 |
运行级别2 |
多用户状态(没有NFS)。 |
运行级别3 |
完全的多用户状态(有NFS),登陆后进入控制台命令行模式。 |
运行级别4 |
系统未使用,保留。 |
运行级别5 |
X11控制台,登陆后进入图形GUI模式。 |
运行级别6 |
系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。 |
2、精简开机启动服务
- 精简开机启动服务
crond、sshd、network、rsyslog、sysstat
服务 |
说明 |
sshd |
远程连接 Linux 服务器 |
rsyslog |
日志相关 |
network |
网络相关 |
crond |
周期性任务 |
sysstat |
包含监测系统性能及效率的一组工具。iostat工具提供 CPU 使用率及硬盘吞吐效率的数据; |
LANG=en
chkconfig --list|grep 3:on
for order in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig--level 3 $order off;done
for order in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $order on;done
for order in `chkconfig --list|grep "3:on"|awk '{print$1}'|grep -vE "crond|network|sshd|rsyslog|sysstat"`;
do chkconfig $order off;
done
chkconfig --list|grep 3:on|grep -vE "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig " $1 " off"}'|bash
chkconfig --list|grep 3:on|grep -vE "crond|sshd|network|rsyslog|sysstat" |awk '{print $1}'|sed -r 's#(.*)#chkconfig \1 off#g'|bash
3、时间同步
/usr/sbin/ntpdate time.nist.gov
which ntpdate
vim /var/spool/cron/root
*/5 * * * * /user/sbin/ntpdate time.nist.gov > /dev/null 2>&1
4、中文显示设置
- 更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak
vim /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
source /etc/sysconfig/i18n
echo $LANG
5、调整文件描述符数量
- 调整文件描述符的数量,进程及文件的打开都会消耗文件描述符数量
ulimit -n
vim /etc/security/limits.conf
* - nofile 65535
vim /etc/rc.local
ulimit -HSn 65535
6、定时自动清理邮件服务临时目录
- 定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes 数被小文件占满。
- 邮件服务临时目录:CentOS 5 Sendmail 服务
/var/spool/clientmqueue
/;CentOS 6 Postfix 服务 /var/spool/postf ix/maildrop/
find /var/spool/clientmqueue/ -type f|xargs rm -f
find /var/spool/postfix/maildrop/ -type f|xargs rm -f
mkdir -p /server/scripts
vim /server/scripts/del_file.sh
find /var/spool/postfix/maildrop/ -type f |xargs rm -f
crontab -e
00 00 * * * /bin/sh /server/scripts/del_file.sh >/dev/null 2>&1
crontab -l
7、配置yum更新源
- 配置yum 更新源,从国内更新源下载安装软件包。如阿里源,网易源等。
- 本地yum源配置与卸载
8、autofs自动挂载服务
- autofs服务:检测用户访问挂载,如用户访问未挂载文件系统时,自动挂载该文件系统。节约网络资源和服务器的硬件资源。
- centos7:AutoFs自动挂载
9、关闭selinux及iptables
- 在工作场景中,如果有外部IP一般要打开iptables,高并发、高流量的服务器可能无法开启
SELinux
修改配置文件,永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
使用命令,临时关闭
setenforce 0
getenforce
iptables
关闭服务
/etc/init.d/iptables stop
确认关闭
/etc/init.d/iptables stop
关闭重启
chkconfig iptables off
chkconfig --list|grep ipt
10、Linux内核参数优化
vim /etc/sysctl.conf
,执行sysct -p
生效
- linux内核参数注释与优化
vim /etc/sysctl.conf
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max=65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
sysctl -p
参考
linux内核参数注释与优化