LINUX SSH 管理与监控
来源:互联网 发布:vb 双引号转义字符 编辑:程序博客网 时间:2024/06/09 15:49
1. 修改ssh服务的默认端口。
ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口。所以第一步就是修改这个默认端口
打开/etc/ssh/sshd_config,找到
Port 22
然后将22修改为其它没有被占用的端口,如1022。最好在1-1024之间,防止与用户进程端口冲突。
然后重启sshd即可
sudo /etc/init.d/ssh restart
2. 限制IP
方法一:
使用TCP wrappers仅允许指定的主机连接
如果你想在你的网络上只允许特定的主机才能连接到你的SSH服务,但又不想使用或弄乱你的iptables配置,那这个方法非常有用,你可以使用TCP wrappers。在这个例子中对sshd进行TCP包裹,我将创建一条规则允许本地子网192.168.1.0/24和远程193.180.177.13的自己连接到我的SSH服务。
默认情况下,TCP wrappers首先在/etc/hosts.deny中查找看主机是否允许访问该服务,接下来,TCP wrappers查找/etc/hosts.allow看是否有规则允许该主机服务指定的服务,我将在/etc/hosts.deny中创建一个规则,如下:
sshd: ALL
这意味着默认情况下所有主机被拒绝访问SSH服务,这是应该的,否则所有主机都能访问SSH服务,因为TCP wrappers首先在hosts.deny中查找,如果这里没有关于阻止SSH服务的规则,任何主机都可以连接。
接下来,在/etc/hosts.allow中创建一个规则允许指定的主机使用SSH服务:
sshd: 192.168.1 193.180.177.13
现在,只有来自192.168.1.0/24和193.180.177.13的主机能够访问SSH服务了,其他主机在连接时还没有到登陆提示符时就被断开了,并收到错误提示,如下:
ssh_exchange_identification: Connection closed by remote host
方法二:
使用iptables。
iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
方法三:
修改ssh配置文件
vi /etc/ssh/sshd_config
添加一行:
allowusers xxx@192.168.1.2
注:xxx为你用来登入服务器的用户名。
配置SSH服务器不允许root用户通过SSH登陆,查找下面这样的行:
PermitRootLogin yes
将yes修改为no,然后重新启动服务。
3. 使用DSA公钥认证
代替使用用户名和密码对SSH进行认证,你可以使用DSA公钥进行认证,注意你既可以使用登陆名,也可以使用DSA公钥进行认证,使用DSA公钥认证可以预防你的系统遭受字典攻击,因为你不需要用登陆名和密码登陆SSH服务,而是需要一对DSA密钥,一个公钥和一个私钥,在你本地机器上保存私钥,将公钥放在服务器上。当你发起一个SSH登陆会话时,服务器检查密钥,如果它们匹配的话,你就可以直接进入shell,如果它们不匹配,你的连接将被自动断开。
在本例中的私人计算机叫‘工作站1’,服务器叫‘服务器1’。在两个机器上我有相同的home目录,如果服务器和客户端上的home目录不同将不能工作,实现,你需要在你的私人计算机上创建一对密钥,命令:~$ ssh-keygen -t dsa,它将要求你为私钥输入一个密语,但是你可以保留为空,因为这不是一个推荐的做法。密钥对创建好了:你的私钥在~/.ssh/id_dsa,你的公钥在.ssh/id_dsa.pub。
接下来,拷贝~/.ssh/id_dsa.pub中的内容到‘服务器1’的~/.ssh/authorized_keys文件中,~/.ssh/id_dsa.pub的内容看起来象下面这样:
如果文件~/.ssh/authorized_keys已经存在,请将上面的内容附加在该文件的后面。剩下的只是给该文件设置正确的权限了:
~$ chmod 600 ~/.ssh/authorized_keys
现在,配置sshd_config文件使用DSA密钥认证,确保你将下面三行前的注释去掉了:
PubkeyAuthentication yes
重新启动服务,如果你的配置没有错误,现在你就可以SSH到你的服务器,而且无需任何交互动作(如输入用户名和密码)就直接进入你的home目录了。
如果你只想使用DSA认证登陆,确保你在sshd_config中取消掉注释并修改PasswordAuthentication这一行,将yes改为no:PasswordAuthentication no
任何在服务器上没有公钥的人试图连接到你的SSH服务,它就被拒绝,给它显示如下一个拒绝提示信息:
Permission denied (publickey).
4. SSH时间锁定技巧
你可以使用不同的iptables参数来限制到SSH服务的连接,让其在一个特定的时间范围内可以连接,其他时间不能连接。你可以在下面的任何例子中使用/second、/minute、/hour或/day开关。
第一个例子,如果一个用户输入了错误的密码,锁定一分钟内不允许在访问SSH服务,这样每个用户在一分钟内只能尝试一次登陆:
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP
第二个例子,设置iptables只允许主机193.180.177.13连接到SSH服务,在尝试三次失败登陆后,iptables允许该主机每分钟尝试一次登陆:
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP
5、仅允许SSH协议版本2
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:Protocol 2,1
修改为
Protocol 2
6. 创建一个自定义SSH banner
如果你想让任何连接到你SSH服务的用户看到一条特殊的消息,你可以创建一个自定义SSH banner,只需要创建一个文本文件(我的是/etc/ssh-banner.txt),然后输入你想的任何文本消息,如:
*This is a private SSH service. You are not supposed to be here.*
*Please leave immediately. *
编辑好后,保存这个文件,在sshd_config中查找下面这样一行:
#Banner /etc/issue.net
取消掉注释【将#去掉】,然后将路径修改为你自定义的SSH banner文本文件。
- LINUX SSH 管理与监控
- Linux SSH服务管理与防火墙服务管理
- MongoDB管理与监控
- Linux 进程管理与监控(supervisor and monit)
- linux ssh 登录管理
- linux监控和管理.txt
- 监控和管理Linux进程
- linux进程监控及管理
- 【snmp+ssh+linux】实现自动化运维与监控系统--持续更新中
- AIX进程监控与管理
- AIX进程监控与管理
- 10.监控与管理虚拟机
- 告警监控与容量管理
- RMAN 配置、监控与管理
- -- RMAN 配置、监控与管理
- AIX进程监控与管理
- 10.监控与管理虚拟机
- JMX 与系统监控管理
- Google cardBoard Android API (十):HeadMountedDisplay
- Android动画分类和详解
- Processing UDP 服务端 客户端 程序代码
- Form触发器的执行顺序
- Oracle数据库中的空值
- LINUX SSH 管理与监控
- 【BZOJ 2733】 [HNOI2012]永无乡|Splay启发式合并
- 【算法学习笔记】之动态规划
- eval的作用
- Android中ListView点击事件失效的解决办法
- java版CRC16(Modbus)校验_2016_3_21
- 企业级java之Struts2学习系列1
- ajax
- 使用WCF来实现一个ShadowSocks客户端(一)