有些特殊的情况我们需要禁止root在本地或远程使用ssh登录以增加安全性。

禁止root本地登录

修改/etc/pam.d/login文件增加下面一行

auth required pam_succeed_if.so user != root quiet

禁止root远程ssh登录

修改/etc/ssh/sshd_config文件将


#PermitRootLogin yes


修改为


PermitRootLogin no



重启ssdh服务即可默认情况下PermitRootLogin参数是注释的把注释去掉把值改为no就可以。

/etc/rc.d/init.d/sshd restart

注意禁止以后可以使用普通用户登录登录后若需要root权限可以使用“su”切换到root用户。或者配置sudo使普通用户使用某些root权限。

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
        sed -i '/#UseDNS yes/a\UseDNS no' /etc/ssh/sshd_config


Linux下让一个普通用户并且获得root权限

用户权限的配置文件保住在/etc/sudoers,此文件为只读文件使用root用户登陆然后给此文件加上写权限权以用如下命令chmod u+w /etc/sudoers然后用vi编辑


用户  别名(可用all)=NOPASSWD:命令1命令2
wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restart
UserName ALL=(ALL) ALL
peterli        ALL=(ALL)       NOPASSWD:/sbin/service


添加fuquanjun ALL=(ALL) ALL赋予root权限


## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
fuquanjun ALL=(ALL)   NOPASSWD:  ALL

然后保存退出再把写权限给去掉chmod uw /etc/sudoers这样用户了获得了root用户的所有权限

如果只想给用户相关命令权限可以按下面这样写


nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_mem

 Defaults requiretty             # sudo不允许后台运行,注释此行既允许
 Defaults !visiblepw             # sudo不允许远程,去掉!既允许



同时禁止ssh的22号端口登录

在/etc/ssh/sshd_config文件中找到"Port 22”这个选项将它修改成"Prot yourID”并且在iptables里面修改允许端口即在/etc/sysconfig/iptables里面添加一条“-A INPUT -m state --state NEW -m tcp -p tcp --dport yourID -j ACCEPT”

重启sshd服务即可。



linux下升级 OpenSSH版本

可以参考


一、下载最新版本 OpenSSH

OpenSSH 的官方网站http://www.openssh.com

这里我下载的是openssh-6.6p1

使用ssh -V 命令查看一下

centos7 禁用账户 centos7禁止root本地登录_重启


#安装相关的组件

yum -y install gcc openssl-devel pam-devel rpm-build

二、下面开始升级SSH这里我写了两种升级方法

1、编译安装 OpenSSH



wget http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz
tar xf openssh-6.6p1.tar.gz 
cd openssh-6.6p1
./configure --prefix=/usr --sysconfdir=/etc/ssh
make
mkdir /etc/sshbak



下载的是源码包要编译一***意我的编译路径我是讲OPENSSH安装在原来的路径下这样后面安装完成后就不用在重新copy SSHD服务到/etc/init.d/下了可以根据实际情况定制安装路径。



由于我使安装在原路径下,所以我将旧的配置文件挪了一下位置,不然make install 会报错! make install


/etc/init.d/sshd restart        
这里注意安全如果你前面编译报错了还强制安装SSHD服务可能就起不来了
chkconfig --add sshd 
chkconfig sshd on


重启过SSH服务后查看版本



[root@test01 ~]# ssh -V
OpenSSH_6.6p1, OpenSSL 1.0.1e-fips 11 Feb 2013



已经成功升级至6.6版本



2、rpm包安装

编译源程序为 RPM 安装包



cp /root/openssh-6.2p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
cp openssh-6.2p1.tar.gz /usr/src/redhat/SOURCES/ 
cp x11-ssh-askpass-1.2.4.1.tar.gz /usr/src/redhat/SOURCES/
perl -i.bak -pe 's/^%define no_gnome|x11_askpass\s+0$/$1 1/' openssh.spec    //备份这个文件
rpmbuild -bb openssh.spec    //制作生成rpm包



安装编译好了的 RPM 包


cd /usr/src/redhat/RPMS/`uname -i`
rpm -Uvh openssh*rpm