[centos]安全加固
门窗框固定不牢可能影响安全,需要加固 #生活知识# #家庭维修常识# #门窗维修与更换#
前言
服务器的安全是一个大问题。所以,这几篇文章就先调研这个问题。
措施总结
关闭Ping 扫描先切换到root
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
1代表关闭,0代表开启
passwd 1 第二步,添加你自己的管理帐号
useradd lidi // 添加一个普通账户lidi,并设置密码 passwd lidi 12 第三布步 给刚才的帐号添加sudo权限
visudo 1
本文中,使用用户 sysadmin 。确保在编辑后这个文件时使用的用户是系统已有的用户。找到下面这行:
root ALL=(ALL) ALL
拷贝这行,然后粘贴在下一行,然后把root更改为“sysadmin”,如下所示:
root ALL=(ALL) ALL
sysadmin ALL=(ALL) ALL
现在解释一下这行的每一个选项的含义:
(1) root (2)ALL=(3)(ALL) (4)ALL
(1) 指定用户
(2) 指定用户使用sudo的终端
(3) 指定用户可以担任的用户角色
(4) 这个用户可以使用的命令
(LCTT 译注:所以上面的配置是意思是:root 用户可以在任何终端担任任何用户,执行任何命令。)
使用这个配置可以给用户访问一些系统工具的权限。
这时,可以放心保存文件了。
注意:对于ubuntu而言, ctrl+o 是保存,ctrl+x 是退出。
如果编辑器是vi,那么就直接用vi的方式。
vim /etc/ssh/sshd_config #Port 22 //这行去掉#号 Port 51866 //下面添加这一行 123
Systemctl restart sshd // 重启sshd
第五步使用刚才的帐号测试登录以及相关权限请继续:
重启ssh服务,使用刚才创建的管理测试能否登录到机器,能否使用sudo命令,能否切换到root帐号,如果都通过的话,进入第五步,不通过的话,排查原因直到通过。
使用刚才创建的管理测试能否登录到机器,能否使用sudo命令,能否切换到root帐号,如果都通过的话,进入第五步,不通过的话,排查原因直到通过。
禁止root进行登录到了这里,你应该拥有一个自己可以用的远程管理帐号了,那root就没必要留着等别人攻击了。
vim /etc/ssh/sshd_config PermitRootLogin no // 设为no #LogLevel INFO 去掉注释: LogLevel INFO 加强对ssh登录的监控 Systemctl restart sshd // 重启sshd 12345678 开启防火墙
不要说我没提醒。。对于服务器,防火墙是必须的,必须按照最小原则,譬如,只允许开放哪些规则什么的。
但是要注意:1 只能用root帐号开启这些服务,
2 一旦开启防火墙以后ssh端口就会瞬间被阻断,所以在开启防火墙的同时也要永久开放ssh端口的。这一步比较凶险,不成功就再也别想ssh登录了。除非找主机商。
阿里云主机方面我倒是知道失败了如何恢复过来的。其他主机商没研究。
切换到root,帐号,添加脚本,内容如下:
#!/bin/bash ## 首先开启一下防火墙 systemctl restart firewalld systemctl enable firewalld ## 然后,必须同时永久开启你的ssh远程端口-请将22替换成你的ssh端口,否则出问题不好玩。 firewall-cmd --add-port=22/tcp --permanent ## 下面这一步酌情添加,80web端口。 firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload 123456789
添加执行权限
chmod +x 脚本名称.sh
执行:
./脚本名称.sh
具体措施
一. 关闭Ping 扫描 先切换到root echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 1代表关闭,0代表开启 用iptables iptables -I INPUT -p icmp -j DROP 二. 创建普通用户,禁止root用户登录,只允许普通用户使用su命令切换到root 这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限。 在root下添加普通账户 useradd lidi // 添加一个普通账户lidi,并设置密码 passwd lidi 禁止root登录 vi /etc/ssh/sshd_config PermitRootLogin no // 设为no Systemctl restart sshd // 重启sshd 这样就完成了第一步,之后root就无法登录服务器只能通过普通用户su切换 三、 修改ssh的默认端口22,因为ssh的端口是22,我们如果修改了该端口,他们就需要花费一点时间来扫描,稍微增加了点难度 以下将端口改为20903可以根据需要自己更改,大家修改端口时候最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行 修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号 Port 51866 //下面添加这一行 为什么不先删除22,以防其他端口没配置成功,而又把22的删除了,无法再次进入服务器 作者:幽思片羽 链接:https://www.jianshu.com/p/15d81aa8d22c 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
123456789101112131415161718192021222324252627282930313233343536373839404142434445CentOS服务器安全技巧
CentOS服务器安全技巧 centoscentos 系统安全防御 2015年7月5日 252 0 1 Linux就该这么学 毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一。因此,也就有了许多针对这个话题而生的文章、博客和论坛帖子。 一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。 有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在本文将不会提及: 务必保证系统是 最新的 经常更换密码 - 使用数字、字母和非字母的符号组合 给予用户 最小 的权限,满足他们日常使用所需即可 只安装那些真正需要的软件包 下面是一些更有意思的内容: 更改SSH默认端口 在搭建好一台全新的服务器后要做的第一件事情就是更改SSH的默认端口。这个小小的改动能够使你的服务器避免受到成千上万的暴力攻击(LCTT 译注:不更改默认端口相当于黑客们知道你家的门牌号,这样他们只需要一把一把的试钥匙就可能打开你家的锁)。 要更改默认的SSH端口,先打开sshd_config文件: sudo vim /etc/ssh/sshd_config 找到下面这行: #Port 22 “#”号表示这行是注释。首先删除#号,然后把端口号改成目的端口。端口号不能超过65535,确保要指定的端口号没有被系统或其它服务占用。建议在[维基百科]上查看常用端口号列表。在本文中,使用这个端口号: Port 16543 然后保存并关闭文件,等待更改生效。 接下来的一步是: 使用SSH密钥认证 在通过SSH访问服务器时,使用SSH密钥进行认证是尤其重要的。这样做为服务器增加了额外的保护,确保只有那些拥有密钥的人才能访问服务器。 在本地机器上运行下面命令以生成SSH密钥: ssh-keygen -t rsa 你会看到下面的输出,询问要将密钥写到哪一个文件里,并且设置一个密码: Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): my_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in my_key. Your public key has been saved in my_key.pub. The key fingerprint is: SHA256:MqD/pzzTRsCjZb6mpfjyrr5v1pJLBcgprR5tjNoI20A 完成之后,就得到两个文件: my_key my_key.pub --- 注意: 把公钥拷贝到需要登录的远程服务器或Linux系统上,这里可以使用ssh-copy-id自动完成,也可以手动追加秘钥到远程服务器。 就是说,公钥文件.pub放到 远程机器的.ssh下面 方法一(推荐): ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.10 执行命令了会要求输入远程机器的密码,输入密码即可。 注:ssh-copy-id默认端口是22,如果您的SSH端口不是22,也就是远程服务器端口修改成其他的了,那就要得加上 -p +端口。 方法二: 进入远程服务器需要SSH登录的用户的目录下,这里仍然用root用户,cd /root/.ssh,执行ls看看目录下是否有authorized_keys文件没有的话则执行以下命令创建: touch authorized_keys 执行成功会创建空authorized_keys文件,授予600权限(注意:此处权限必须是600): chmod 600 /root/.ssh/authorized_keys 如果已经有了authorized_keys文件,这直接执行以下的密钥追加工作。 将上面生成的公钥id_rsa.pub追加到authorized_keys文件中: cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys --------------------- 作者:呐喊6510 来源:CSDN 原文:https://blog.csdn.net/nahancy/article/details/79059135 版权声明:本文为博主原创文章,转载请附上博文链接! 接下来把my_key.pub拷贝到~/.ssh/authorized_key中 cp my_key.pub ~/.ssh/authorized_keys 然后使用下面命令将密钥上传到服务器: scp -P16543 authorized_keys user@yourserver-ip:/home/user/.ssh/ 至此,你就可以从这台本地机器上无密码地访问服务器了。 关闭SSH的密码认证 既然已经有了SSH密钥,那么关闭SSH的密码认证就会更安全了。再次打开并编辑sshd_config,按如下设置: ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no 关闭Root登录 下面关键的一步是关闭root用户的直接访问,而使用sudo或su来执行管理员任务。首先需要添加一个有root权限的新用户,所以编辑这个路径下的sudoers文件: /etc/sudoers/ 推荐使用如 visudo 这样的命令编辑该文件,因为它会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,这就很有用了。 接下来赋予某个用户root权限。在本文中,使用用户 sysadmin 。确保在编辑后这个文件时使用的用户是系统已有的用户。找到下面这行: root ALL=(ALL) ALL 拷贝这行,然后粘贴在下一行,然后把root更改为“sysadmin”,如下所示: root ALL=(ALL) ALL sysadmin ALL=(ALL) ALL 现在解释一下这行的每一个选项的含义: (1) root (2)ALL=(3)(ALL) (4)ALL (1) 指定用户 (2) 指定用户使用sudo的终端 (3) 指定用户可以担任的用户角色 (4) 这个用户可以使用的命令 (LCTT 译注:所以上面的配置是意思是:root 用户可以在任何终端担任任何用户,执行任何命令。) 使用这个配置可以给用户访问一些系统工具的权限。 这时,可以放心保存文件了。 为了关闭通过SSH直接访问root,需要再次打开 sshd_config ,找到下面这行: #PermitRootLogin yes 更改为: PermitRootLogin no 然后保存文件,重启sshd守护进程使改动生效。执行下面命令即可: sudo /etc/init.d/sshd restart 设置防火墙 防火墙有助于过滤出入端口和阻止使用暴力法的登录尝试。我倾向于使用SCF(Config Server Firewall)这个强力防火墙。它使用了iptables,易于管理,而且对于不擅于输入命令的用户提供了web界面。 要安装CSF,先登录到服务器,切换到这个目录下: cd /usr/local/src/ 然后以root权限执行下面命令: wget https://download.configserver.com/csf.tgz tar -xzf csf.tgz cd csf sh install.sh 只需等待安装程序完成,然后编辑CSF的配置文件: /etc/csf/csf.conf 默认情况下CSF是以测试模式运行。通过将“TESTING”的值设置成0,切换到product模式。 TESTING = "0" 下面要设置的就是服务器上允许通过的端口。在csf.conf中定位到下面的部分,根据需要修改端口: # 允许入站的 TCP 端口 TCP_IN = "20,21,25,53,80,110,143,443,465,587,993,995,16543" # 允许出站的 TCP 端口 TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,16543" # 允许入站的 UDP 端口 UDP_IN = "20,21,53" # 允许出站的 UDP 端口 # 要允许发出 traceroute 请求,请加 33434:33523 端口范围到该列表 UDP_OUT = "20,21,53,113,123" 请根据需要逐一设置,推荐只使用那些需要的端口,避免设置对端口进行大范围设置。此外,也要避免使用不安全服务的不安全端口。比如只允许端口465和587来发送电子邮件,取代默认的SMTP端口25。(LCTT 译注:前提是你的邮件服务器支持 SMTPS) 重要 :千万不要忘记允许自定义的 ssh 端口。 允许你的IP地址通过防火墙,而绝不被屏蔽,这一点很重要。IP地址定义在下面的文件中: /etc/csf/csf.ignore 被屏蔽了的IP地址会出现在这个文件中: /etc/csf/csf.deny 一旦完成更改,使用这个命令重启csf: sudo /etc/init.d/csf restart 下面是在某台服务器上的csf.deny文件的部分内容,来说明CSF是很有用的: .216.48.205 # lfd: (sshd) Failed SSH login from 211.216.48.205 (KR/Korea, Republic of/-): 5 in the last 3600 secs - Fri Mar 6 00:30:35 2015 .41.124.53 # lfd: (sshd) Failed SSH login from 103.41.124.53 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 01:06:46 2015 .41.124.42 # lfd: (sshd) Failed SSH login from 103.41.124.42 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 01:59:04 2015 .41.124.26 # lfd: (sshd) Failed SSH login from 103.41.124.26 (HK/Hong Kong/-): 5 in the last 3600 secs - Fri Mar 6 02:48:26 2015 .169.74.58 # lfd: (sshd) Failed SSH login from 109.169.74.58 (GB/United Kingdom/mail2.algeos.com): 5 in the last 3600 secs - Fri Mar 6 03:49:03 2015 可以看到,尝试通过暴力法登录的IP地址都被屏蔽了,真是眼不见心不烦啊! 锁住账户 如果某个账户在很长一段时间内都不会被使用了,那么可以将其锁住以防止其它人访问。使用如下命令: passwd -l accountName 当然,这个账户依然可以被root用户使用(LCTT 译注:可用 su 切换为该账号)。 了解服务器上的服务 服务器的本质是为各种服务提供访问功能。使服务器只运行所需的服务,关闭没有使用的服务。这样做不仅会释放一些系统资源,而且也会使服务器变得更加安全。比如,如果只是运行一个简单的服务器,显然不需要X显示或者桌面环境。如果不需要Windows网络共享功能,则可以放心关闭Samba。 使用下面的命令能查看伴随系统启动而启动的服务: chkconfig --list | grep "3n" 如果系统运行了 systemd ,执行这条命令: systemctl list-unit-files --type=service | grep enabled 然后使用下面的命令关闭服务: chkconfig service off 或 systemctl disable service 在上面的例子中,把“service”替换成真正想要停止的服务名称。实例如下: chkconfig httpd off 或 systemctl disable httpd
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238配置其他用户进行ssh登录
以root身份登进系统后,增加一个非root帐户,名称为:systemadmin,密码按您的需求设置一个即可。接下来我们要禁止root直接登陆。 [root@mail ~]# useradd systemadmin [root@mail ~]# passwd systemadmin [root@mail ~]# vim /etc/ssh/sshd_config # PermitRootLogin yes 修改以下配置为: PermitRootLogin no 然后重新启动sshd,这样禁止了root直接登陆。 [root@mail ~]# service sshd restart [root@mail ~]# 现在以systemadmin用户登录,切换到root管理员用户 [systemadmin @mail ~]$ su - root 密码: [root@mail ~]# 现在以root用户登录,切换到 systemadmin 管理员用户 [root@mail ~]# su - systemadmin 密码: [systemadmin @mail ~]$ 配置完成!
12345678910111213141516171819202122232425262728293031323334353637 给新增用户添加sudo权限最近在学习linux,在某个用户(xxx)下使用sudo的时候,提示以下错误:xxx is not in the sudoers file. This incident will be reported。 1
百度了下,究其原因是用户没有加入到sudo的配置文件里。
解决方法如下: 1
1、切换到root用户,运行visudo命令
2、找到root ALL=(ALL) ALL,在下面添加一行 xxx ALL=(ALL) ALL 其中xxx是要加入的用户名称
注意:对于ubuntu而言, ctrl+o 是保存,ctrl+x 是退出。
如果编辑器是vi,那么就直接用vi的方式。
这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令:
sudo passwd
Password:你当前的密码
Enter new UNIX password:这个是root的密码
Retype new UNIX password:重复root的密码
网址:[centos]安全加固 https://www.yuejiaxmz.com/news/view/658639
相关内容
CentOS 7网络安全攻略:全方位整改指南,守护系统安全无忧CentOS 7桌面图标快速固定攻略:告别混乱,打造个性化工作环境
CentOS 清理系统磁盘空间
CentOS 7安装最新版本NMAP
CentOS 7轻松上网全攻略:告别网络难题,畅享网络生活!
CentOS离线安装gcc(循环依赖、冲突解决)
CentOS误删dev文件:紧急应对指南与预防措施揭秘
CentOS 7轻松应对:盘点5款清理磁盘空间的实用软件
服务器安全加固
CentOS 7快速开启桌面图标:一步到位,轻松打造个性化桌面体验!