CentOS 服务器安全配置策略
近期服务器频繁有被暴力破解,大致分析了一下入侵行为,整理了常用的安全策略:
最小的权限+最少的服务=最大的安全
1. 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口
步骤:
1) 修改ssh的默认端口22:
vi /etc/ssh/sshd_config
2)让防火墙通过这个端口
firewall-cmd --state【firewalld是否运行】
firewall-cmd --permanent --list-port【查看端口列表】
firewall-cmd --permanent --zone=public --add-port=48489/tcp【添加端口】
firewall-cmd --permanent --remove-port=48489/tcp【删除端口】
3)重启ssh服务,并退出当前连接的ssh端口
service sshd restart
4)然后通过putty ssh连接软件链接一下,使用默认22号端口无法进入ssh,达到目的,就ok了~
2. 禁止root帐号直接登录
linux的默认管理员名即是root,只需要知道root密码即可直接登录ssh。禁止root从ssh直接登录可以提高服务器安全性。经过以下操作后即可实现。
1)新建帐户和设置帐户密码
useradd ityangs
passwd ityangs
2)不允许root直接登陆
vi /etc/ssh/sshd_config
查找“#permitrootlogin yes”,将前面的“#”去掉,短尾“yes”改为“no”,并保存文件。
systemctl restart sshd.service【重启ssh,另一种方法重启】
3)下次登陆
先使用新建账号“ityangs”以普通用户登陆。
若要获得root权限,在ssh中执行以下命令
su root
执行以上命令并输入root密码后即可获得root权限。
4)winscp下su切换到root的技巧(禁止root远程ssh登录时)
限制了root用户的远程登录,但是重要的数据文件都是700。更可悲的是,winscp完全失去了用武之地。因为root账户无法登陆,而像是ftp,sftp,scp这些协议都不支持在登录以后切换用户。
scp协议在登录的时候可以指定shell,一般默认的也就是推荐的是/bin/bash,但是我们可以修改它来玩花样,比如改成sudo su -
但是新问题又来了,sudo需要输入密码,但是winscp在登录的时候并没有交互过程。但是天无绝人只要在root权限之路,只要在root权限下visudo,添加如下一行即可取消sudu时的密码:
yourusername all=nopasswd: all
为了可以在非putty的环境下sudo,我们还需要注释掉下面一行:
defaults requiretty
然后保存,即可在登录到winscp的时候享受root的快感啦!
步骤:
普通用户ssh到服务器,切换到root权限
visudo,然后添加 yourusername all=nopasswd: all 这一行,注释掉defaults requiretty
[root@iz252wo3z ~]# visudo
ityangs all=nopasswd: all
#defaults requiretty 【没有可不用管】
修改winscp的文件协议为scp
修改环境-scp/shell下的shell为sudo su-
登录winscp即可。
3. 安装denyhosts【拦截获取攻击的ip,生成黑名单,防止再次攻击】
denyhosts(项目主页:http://denyhosts.sourceforge.net/)是运行于linux上的一款预防ssh暴力破解的软件,可以从http://sourceforge.net/projects/denyhosts/files/进行下载,然后将下载回来的denyhosts-2.6.tar.gz源码包上传到linux系统中。
下面是安装过程
****************************************************************
tar zxvf denyhosts-2.6.tar.gz #解压源码包
cd denyhosts-2.6 #进入安装解压目录
python setup.py install #安装denyhosts
cd /usr/share/denyhosts/ #默认安装路径
cp denyhosts.cfg-dist denyhosts.cfg #denyhosts.cfg为配置文件
cp daemon-control-dist daemon-control #daemon-control为启动程序
chown root daemon-control #添加root权限
chmod 700 daemon-control #修改为可执行文件
ln -s /usr/share/denyhosts/daemon-control /etc/init.d #对daemon-control进行软连接,方便管理安装到这一步就完成了。
/etc/init.d/daemon-control start #启动denyhosts
chkconfig daemon-control on #将denghosts设成开机启动
******************************************************************vi /usr/share/denyhosts/denyhosts.cfg #编辑配置文件,另外关于配置文件一些参数,通过grep -v "^#" denyhosts.cfg查看
secure_log = /var/log/secure #ssh 日志文件,redhat系列根据/var/log/secure文件来判断;mandrake、freebsd根据 /var/log/auth.log来判断
#suse则是用/var/log/messages来判断,这些在配置文件里面都有很详细的解释。
hosts_deny = /etc/hosts.deny #控制用户登陆的文件
purge_deny = 30m #过多久后清除已经禁止的,设置为30分钟;
# ‘m' = minutes
# ‘h' = hours
# ‘d' = days
# ‘w' = weeks
# ‘y' = years
block_service = sshd #禁止的服务名,当然denyhost不仅仅用于ssh服务
deny_threshold_invalid = 1 #允许无效用户失败的次数
deny_threshold_valid = 3 #允许普通用户登陆失败的次数
deny_threshold_root = 3 #允许root登陆失败的次数
daemon_log = /var/log/denyhosts #denyhosts日志文件存放的路径,默认更改denyhosts的默认配置之后,重启denyhosts服务即可生效:
/etc/init.d/daemon-control restart #重启denyhosts
好了这篇文章就介绍到这了,需要的朋友可以参考一下。
推荐阅读
-
Centos 6.5 服务器优化配置备忘(一些基础优化和安全设置)
-
服务器(CentOS)安装配置mongodb-do前端while全栈-SegmentFault思否
-
CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)
-
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
-
Centos6.x服务器配置jdk+tomcat+mysql环境(jsp+mysql)
-
服务器安全设置_系统端口安全配置
-
Windows服务器安全配置小结第1/2页
-
阿里云linux服务器上使用iptables设置安全策略的方法
-
CentOS Linux服务器安全设置
-
阿里云linux服务器安全设置(防火墙策略等)