1.安装Linux系统后会有很多默认的账号和组,黑客扫描服务器这些默认账号默认密码进行测试登陆,从而得到使用权限,需要使用一定不能使用默认密码(从新设置8位以上的密码),如果不使用的话,就删除这些么系统默认不使用的帐号,包括:lp、mail、games、ftp、nobody、postfix等。删除系统默认不使用的组,包括:mail、games、ftp、nobody、postfix等
2.启动密码策略,修改 /etc/login.defs来实现
PASS_MAX_DAYS 60 #密码60天过期
PASS_MIN_DAYS 1 #修改密码最小间隔为1天
PASS_MIN_LEN 8 #最短密码要求8位
PASS_WARN_AGE 7 #密码过期前7天内通知用户
修改密码的命令: passwd root 需要输入两次密码,普通用户需要输入一次旧密码,在输入两次确认密码
3.启用证书登录,或者4A登录,安全性高 (非专业运维不建议使用证书登录和4A登录,设置这个比较麻烦)
证书登录详细操作参考网站:https://www.linuxidc.com/Linux/2015-12/126648.htm
4A登录相对比较麻烦,安全性高,4A简介:https://baike.baidu.com/item/4A/1825?fr=aladdin
4.连续3次输入密码错误,锁定5分钟,主要防黑客爆破,修改配置文件/etc/pam.d/system-auth
auth required pam_env.so
auth required pam_tally2.so deny=3 unlock_time=300
5.SSH安全设置,你切换到root权限,使用 last 命令查看登录记录,你会发现有不同ip用root登录失败的记录,显然很多朋友想来你服务器做客,防止这类指定ip段扫描的朋友,简历采取一下措施:
5.1 只使用协议版本2,禁止root登录,禁止空口令登录。
使用root权限 vi /etc/ssh/sshd_config,具体配置自己找下面三句,有#注释就把#注释去掉,然后eq保存:
Protocol 2 #只使用协议版本2
PermitRootLogin no #禁止root登录
PermitEmptyPasswords no #禁止空口令登录
5.2 新建一个用户 useradd testuser ,设置该用户的密码 passwd testuser 密码设置8位以上,使用testuser 登录服务器,再su 到 root 用户。
5.3 重启sshd服务才能生效
service sshd restart
6.五分钟无操作的不活动用户自动断开ssh链接
vi /etc/profile,在末尾加入以下内容:
TMOUT=300 # 单位/秒
7.清除系统别名
cp /etc/aliases /etc/aliases_$( date “+%Y%m%d%H%M%S”) #备份
cat /dev/null>&/etc/aliases #M清除系统别名
8.定期更新系统
Centos系统如果要检查系统更新的话,直接输入:
yum -y update #升级所有包同时也升级软件和系统内核
yum -y upgrade #只升级所有包,不升级软件和系统内核
9.安装补丁
你要经常检查更新以修复某些缺陷或系统稳定性的改进
否则你存在漏洞的系统将会不时的遭受新的攻击
方法:
列出可用更新: up2date -l
安装未排除的更新: up2date -u
安装包括排除的更新 up2date -uf
10. root 权限用户登录,邮件通知管理员,让您24小时知道是否有陌生朋友来你服务器做客。
详细操作参考我另一篇文章:http://blog.csdn.net/qq_33168577/article/details/79552566
四、防火墙配置
CentOS 7.0默认使用的是firewall作为防火墙,需要关闭firewall,安装iptables,详细操作请看:
1.首先切换成root用户,备份防火墙配置
cp /etc/sysconfig/iptables /etc/sysconfig/iptablesbak
2.修改防火墙配置
vi /etc/sysconfig/iptables
3.加入以下规则示例:
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8080 -j ACCEPT 允许访问指定端口
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT 允许访问通过指定端口
-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT 允许访问通过指定端口
你的web端口,和数据库端口可能不是我写的默认端口,自行开放你需要的端口
4.只允许指定ip访问ssh 默认22端口 和 数据库3306 默认端口:
-A INPUT -s 112.25.xx.xx -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT 允许指定ip访问tcp22端口
-A INPUT -s 112.25.xx.xx -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT 允许指定ip访问tcp22端口
-A INPUT -s 121.201.xx.xx -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT 允许指定ip访问tcp22端口
-A INPUT -s 58.222.xx.xxx -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT 允许指定ip访问tcp22端口
-A INPUT -s 112.25.xx.xx -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口
-A INPUT -s 112.25.xx.xx -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口
-A INPUT -s 121.201.xx.xx -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口
-A INPUT -s 58.222.xx.xx -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口
这里可以租一个或两个服务器长期当跳板机使用,或者你自己家里或者公司常用的ip。建议设置2个ip以上,否则一个跳板服务器挂了,就无法远程链接ssh端口了,只能去机房重置防火墙。
5.防止外网用内网欺骗
防止外网用内网IP欺骗 #iptables -t nat -A PREROUTING -i eth0 -s 10.10.0.0/8 -j DROP #iptables -t nat -A PREROUTING -i eth0 -s 172.16.10.0/12 -j DROP #iptables -t nat -A PREROUTING -i eth0 -s 192.168.10.0/16 -j DROP
6.eq保存后,请登录跳板机,备份并编辑跳板机的防火墙
cp /etc/sysconfig/iptables /etc/sysconfig/iptablesbak
vi /etc/sysconfig/iptables
7.在跳板机的防火墙配置添加*nat规则,连接跳板服务器的xxxx端口,转发到应用服务器的ssh 22端口上
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -i eth0 -d 跳板服务器的ip --dport 跳板服务器的无用端口 -j DNAT --to 应用服务器ip:应用服务器ssh 22端口
COMMIT
示例:
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -i eth0 -d 192.168.2.34 --dport 8321 -j DNAT --to 192.168.2.35:22
COMMIT
修改后eq保存
8.跳板服务器和应用服务器都重启防火墙 使以上配置生效
service iptables restart