1.新建用户
useradd xxx
#设置密码
passwd xxx
2.设置sudo
visudo
root ALL=(ALL) ALL#找到这行添加如下行
xxx ALL=(ALL) ALL
安装两个软件,bash-completion(命令补全),dos2unix(dos格式文件转换成unix格式)
3.修改ssh
vi /etc/ssh/sshd_config
#禁用root远程登录
PermitRootLogin no
PermitEmptyPasswords no #禁止空密码登录
#不要支持闲置会话,并配置 Idle Log Out Timeout 间隔:
ClientAliveInterval 600 # (Set to 600 seconds = 10 minutes)
ClientAliveCountMax 0
#禁用用户的 .rhosts 文件:
IgnoreRhosts yes
Port 22#这个先留着免得配置错误导致的错误
Port 22155
4.设置防火墙,放开刚刚设置的ssh端口,和需要开放的端口
防火墙设置可以看http://blog.csdn.net/scchary/article/details/46482777
5.消除登陆信息,在登陆的时候会提示是什么系统之类的信息,隐藏起来
sudo cp /etc/issue /etc/issue.bak#备份下
sudo cp /etc/issue.net /etc/issue.net.bak
sudo cp /etc/redhat-release /etc/redhat-release.bak
sudo echo "Welcome" > /etc/issue#权限不足,用root直接改应该可以,直接vi编辑算了
sudo vi /etc/issue
sudo vi /etc/issue.net
sudo vi /etc/redhat-release
6.关闭不需要的服务,就剩下这几个了,就关了几个
auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #与selinux有关
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #定时任务
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #防火墙
iscsi 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 #一种新存储技术
iscsid 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 #一种新存储技术
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:关闭 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #网络基础服务
nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
php-fpm 0:关闭 1:关闭 2:启用 3:启用 4:关闭 5:启用 6:关闭
restorecond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #与selinux相关
rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #系统日志关键服务
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭 #设备管理
7.同步系统时间
sudo yum install ntpdate#安装更新时间软件
sudo ntpdate cn.pool.ntp.org;sudo hwclock --systohc#更新时间并写入bios
sudo crontab -e
11 11 * * * /usr/sbin/ntpdate cn.pool.ntp.org;/usr/sbin/hwclock --systohc#设置每天的11:11更新时间
8.注释不需要的用户和组
#注销用户
sudo vi /etc/passwd
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
#注销用户
sudo vi /etc/group
#adm:x:4:adm,daemon
#lp:x:7:daemon
#uucp:x:14:
#games:x:20:
#dip:x:40:
#ftp:x:50:
9.调整文件描述大小
echo "ulimit -SHn 65535" >> /etc/rc.local
cp /etc/profile /etc/profilebak2
ulimit -c unlimited
ulimit -s unlimited
ulimit -SHn 65535
source /etc/profile #使配置立即生效
ulimit -a #显示当前的各种用户进程限制
#配置完成之后普通用户登录会报错 -bash: ulimit: open files: cannot modify limit: 不允许的操作
可以/etc/security/limits.conf在加上
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535
10.调整记录历史命令的条数
vi /etc/profile #在文件末尾添加以下内容
找到 HISTSIZE=1000 改为 HISTSIZE=50
11.禁止使用Ctrl+Alt+Del快捷键重启服务器
sudo vi /etc/init/control-alt-delete.conf
#注释下面两行
#start on control-alt-delete
#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
12.禁止用户su到root,只允许wheel组用户su到root
sudo vi /etc/pam.d/su
#找到下面这句,去掉注释
auth required pam_wheel.so use_uid
13.系统参数优化
vi /etc/sysctl.conf #末尾添加如下参数 (备注:内核不够熟,加上注解大家谨慎选择使用)
net.ipv4.tcp_syncookies = 1 #1是开启SYN Cookies,当出现SYN 等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,默认是0关闭 net.ipv4.tcp_tw_reuse = 1 #1是开启重用,允许将TIME_AIT sockets重新用于新的TCP连接,默认是0关闭
net.ipv4.tcp_tw_recycle = 5 #TCP失败重传次数,默认是15,减 少次数可释放内核资源
net.ipv4.tcp_max_syn_backlog = 10240 #进入SYN包的最大请求队列,默认 是1024
net.core.netdev_max_backlog = 10240 #允许送到队列的数据包最大设备队 列,默认300
net.core.somaxconn = 2048 #listen挂起请求的最大数量,默认 128
net.core.wmem_default = 8388608 #发送缓存区大小的缺省值
net.core.rmem_default = 8388608 #接受套接字缓冲区大小的缺省值 (以字节为单位)
net.core.rmem_max = 16777216 #最大接收缓冲区大小的最大值
net.core.wmem_max = 16777216 #发送缓冲区大小的最大值
net.ipv4.tcp_synack_retries = 2 #SYN-ACK握手状态重试次数,默认5
net.ipv4.tcp_syn_retries = 2 #向外SYN握手重试次数,默认4
net.ipv4.tcp_max_orphans = 3276800 #系统中最多有多少个TCP套接字不 被关联到任何一个用户文件句柄上,如果超出这个数字,孤儿连接将立即复位并打印警告信息
net.ipv4.tcp_mem = 94500000 915000000 927000000
#net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;
#net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段;
#net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。内存单位是页,可根据 物理内存大小进行调整,如果内存足够大的话,可适当往上调。上述内存单位是页,而不是字节。
net.ipv4.ip_local_port_range = 20480 65535 #(表示用于向外连接的端口范围。缺省情况下很小:32768到61000 注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!
14.自动注销
vi /etc/profile
#在"HISTSIZE="后面加入下面这行:
TMOUT=300 #300秒
source /etc/profile#立即生效
15.锁定系统重要的文件
主要作用:防止未经许可的删除或添加用户和分组
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow
16.给系统服务端口列表文件加锁
主要作用:防止未经许可的删除或添加服务
chattr +i /etc/services
17.修改init目录文件执行权限
chmod -R 700 /etc/init.d/*
18.修改部分系统文件的SUID和SGID的权限:
chmod a-s /usr/bin/chage
chmod a-s /usr/bin/gpasswd
chmod g-s /usr/bin/wall
chmod a-s /usr/bin/chfn
chmod a-s /usr/bin/chsh
chmod a-s /usr/bin/newgrp
chmod g-s /usr/bin/write
chmod a-s /usr/sbin/usernetctl
chmod a-s /usr/sbin/traceroute#这个在6.6里面没有
chmod a-s /bin/mount
chmod a-s /bin/umount
chmod g-s /sbin/netreport
wall,write,netreport三个是SGID,这几个命令只用过mount和umount.....
参考:http://www.jb51.net/article/29873.htm
http://blog.csdn.net/zqtsx/article/details/9344709
http://blog.csdn.net/yunweigege/article/details/42002651
http://blog.csdn.net/knight_zhen/article/details/46444451