【原创】FreeBSD下设置root用户异地登陆sshd(附:FreeBSD SSH配置详解)
本次教程使用的是:FreeBSD-8.1
修改freebsd下可以用sshd权限可允许普通用户登录ssh, 但不能用超级用户root用户登录的方法!
在/etc/ssh/sshd_config最后中加入
PermitRootLogin yes #允许root登录
PermitEmptyPasswords no #不允许空密码登录
PasswordAuthentication yes # 设置是否使用口令验证。
就可以了=========================================
之后再,vi编辑/etc/inetd.conf,去掉ssh前的#,保存退出 (开启监听ssh服务)
编辑/etc/rc.conf
最后加入:sshd_enable="yes"即可
最后激活sshd服务:
techo#/etc/rc.d/sshd start
用下面命令检查服务是否启动,在22端口应该有监听。
#netstat -an ## check port number 22
===================================================================
***********************************************************************************
##############################################
记得修改完配置文件后,重新启动sshd服务器(/etc/rc.d/sshd restart)即可。
几点补充说明
1,如果重启后还是不行请重新载入sshd_config 文件
/etc/rc.d/sshd reload
2,如果出现using keyboard-interactive authentication
password:
请确认PasswordAuthentication是否已经改成yes
另外如果客户端是putty那么请确认"尝试'智能键盘'认证(SSH-2)"的勾是否有去掉
3,如果是使用root帐号登陆
请确认密码是否为空
空密码无法登陆
4请确认是否有安装SSH
sysinstall>>>configure>>>networking>>>sshd是否的勾是否有打上
【原创】freeBSD更改系统root密码,注:root安装系统默认为空
本次教程使用的是:FreeBSD-8.1
FreeBSD 5 之以后的版本,都按照如下步骤操作:
首先重启FreeBSD执行命令和linux一致:shutdown -r now
在系统启动提示以下画面时候按spacebar选择数字键:4 按enter进入单用户模式,图如下:
待系统运行至,提示以下信息时:
Enter full pathname of shell or RETURN for /bin/sh:
再按Enter进入单用户,提示
挂载档案系统,输入:
# fsck -p \\文件档案系统檢查
接下来开始重新设置root用户密码,输入:passwd 回车
# passwd \\更改密碼,
\\现New password: 时候键盘输入你想设置的密码,这里无*号提示,记住你输入密码的位数!
New password:
\\更改密碼,在出现Retype new password: 时候,键盘再次输入你上一步设置的密码!
Retype new password:
返回到以下界面说明设置成功!
之后输入:exit 退出,重新加载多用户。
# exit \\离开单用戶进入多用戶正常模式,再次启动系统,root用户使用新设置的密码进行登入!
==========================================================================
验证完成!root用户进入系统的画面@!
==========================================================================
freeBSD 比较早的版本使用以下步骤:
==========================================================================
重置root密码其实很简单
第一步:重启服务器,在出现模式选择时,选择单用户模式 选择 4(Boot FreeBSD in single user Mode) 系统出现提示,按回车确认继续
第二步:输入 fsck -y (检查系统文件) 磁盘检查完成后,挂载所有系统分区
第三步:输入 mount -a
第四步: 重设root用户密码 输入 passwd 回车 之后会提示再输入一遍,确认后 Ctrl+D 系统继续启动,就可以了.
------------------------------------------------------------------------------------------------------
Nginx简单的防盗链和带宽限制
很多时候,服务不是被用户流量击垮,而是被大量的对你没有任何贡献的盗链击倒,所以作为一个web站点防盗链是首先要考虑的问题,目前来说,对于各个web服务器,简单的防盗链方法多数是做rewrite,判断referer是否有效,当然高端的伪造referer的情况不在这里讨论。
在apache下,防盗链的方法有很多,你可以看看apache的日志,有多少是外部直接referer过来的,有可能比内部引用还多,尤其是图片和下载类站点更加明显。在apache下,最简单的防盗链使用类似这个形式:
SetEnvIfNoCase Referer "^http://www.google.com" local_ref=1
SetEnvIfNoCase Referer "^http://google.com" local_ref=1
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
或者在apache下使用RewriteEngine on,然后使用RewriteCond {HTTP_REFERER} 来定义,这些都是防止比较低级的盗链,如果是面对迅雷或者其他的话,这个远远不够,但是不是这里讨论的范围。
对于nginx而言,本身也有简单的防盗链模块ngx_http_referer_module,配置比较简单,定义文件类型:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
valid_referers none blocked server_names *.163.com 163.com baidu.com;
if ($invalid_referer) {return 403;}
expires 30d;
}
具体的可以参考这里:http://wiki.nginx.org//NginxHttpLimitZoneModule,同时还有一个第三的防盗链相关模块,ngx_http_accesskey_module:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
具体的使用方法:http://wiki.nginx.org//NginxHttpAccessKeyModule
对于带宽限制,apache可以动态编译一些模块进去,mod_evasive20.so和mod_bw.so都是对防止简单的dos和带宽限制而存在的,而对于nginx,可以使用nginx的标准模块ngx_http_limit_zone_module,进行会话的并发连接数控制:
http {
limit_zone one $binary_remote_addr 10m;
#定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)
...
server {
...
location /icons_rar/ {
limit_conn one 2;
limit_rate 2k;
}
limit_conn 一个会话只能进行两个连接。超过一个,则返回503。
imit_rate 来控制该目录的下载速度为2KB/S
# 如果限制当前server内域名下所有目录下载显示则写 / 如:
server {
...
location / {
limit_conn one 2;
limit_rate 2k;
}
之后用迅雷下载文件测试:
这是简单的nginx的方案,更高级的应用应该是在客户端类型或者根据日志分析后,针对具体问题做文章,例如对$http_user_agent的特殊内容进行匹配,然后返回503。
为什么要返回503?如果直接返回403,有可能被下载工具发现,403的状态被认为被禁止了,然后进行调整继续作案。而返回一个503,对服务器来说影响不大,只占用一个nginx的线程而已。
先说到这里,以后再继续补充。
【原创】linux服务器更改DNS设置,Centos-5.4 让yum使用搜狐sohu镜像下载源
今日朋友买一北京VPS,本人帮其安装环境,先前YUM类库,出现无法解析域名,查看DNS设置得知问题所在。
粗心的机房管理员,设置好DNS也不测试下。
=============================================
详细更改如下:
进入/etc/ 打开DNS设置文件
原来机房管理设置的DNS 202.96.128.166 为原来北京地区DNS经在本地WIN测试已经不可用!@
新设置为:202.106.0.20 / 202.99.160.68
主DNS:202.106.0.20 (北京DNS)
次DNS:202.99.160.68 (河北DNS)
更改完成后,重启服务器即可,而不要使用重启网络配置命令:/etc/init.d/network restart
之所以不使用::/etc/init.d/network restart 重启网络命令是因为重启后会先关闭网络连接,此时SSH客户端已和服务器断开连接,导致启动服务无法发往服务器端。服务器所有网站将无法访问,SSH也无法连接@!
而选择重启服务器,再次启动机器时,会自动加载最新修改完的网络配置。
==================================================================
重启后,执行下载,可以完成!
之后删除 entOS-Base.repo 文件,或者备份成其他名称:
mv CentOS-Base.repo CentOS-Base.repo.bak
*****************************************
重命名:CentOS-Base-sohu.repo 为:CentOS-Base.repo
mv CentOS-Base-sohu.repo CentOS-Base.repo
*******************************************
现在使用 yum 就会选择国内搜狐开源镜像站!@
推荐 yum使用的CENTOS 国内镜像站点,单CD安装CENTOS
centos官方镜像列表
http://www.centos.org/modules/tinycontent/index.php?id=32
CENTOS 国内镜像
http://mirrors.163.com/centos/ (浙江省杭州市 电信,武汉电信访问快,竟提供最新的4.7及5.2)
http://mirrors.shlug.org/centos/ (上海市电信真如IDC机房,武汉电信访问慢)
http://mirrors.ta139.com/centos/ (移动线路,武汉电信访问快)
http://centos.ustc.edu.cn/centos/ (中国科学技术大学,教育网线路 -官方镜像)
http://mirror.centos.net.cn/ (北京市 网通, -官方镜像)
--------------------------------------------------------------------------------
CentOS USTC mirror
http://centos.ustc.edu.cn/centos/
--------------------------------------------------------------------------------
安装CentOS 4的方法:
下载CentOS-4.7.ServerCD.iso 单张光盘安装CentOS4.7,安装后可以用yum update升级,适合服务器使用
安装后请按照以下步骤修改CenOS-Base.repo,以后就可以方便的用yum安装软件了.
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo
修改以上文件后, 如需要安装gcc, 直接yum install gcc就可以了
--------------------------------------------------------------------------------
安装CentOS 5的方法:
下载centos/5.2/isos/i386/CentOS-5.2-i386-netinstall.iso,刻盘安装CentOS5.2,安装地方 设置为HTTP,Server centos.ustc.edu.cn, 目录 为centos/5.2/os/i386。
安装后请按照以下步骤修改CenOS-Base.repo,以后就可以方便的用yum安装软件了.
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo.5
mv CentOS-Base.repo.5 CentOS-Base.repo
为Centos5添加网易163、Sohu的yum源
将yum的目标服务器更改为中国大陆服务器镜像
以下的URL地址我都验证过了在当前完全可以下载,而且速度挺快.
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
vi /etc/yum.repos.d/CentOS-Base.repo
- # CentOS-Base.repo
- #
- # This file uses a new mirrorlist system developed by Lance Davis for CentOS.
- # The mirror system uses the connecting IP address of the client and the
- # update status of each mirror to pick mirrors that are updated to and
- # geographically close to the client. You should use this for CentOS updates
- # unless you are manually picking other mirrors.
- #
- # If the mirrorlist= does not work for you, as a fall back you can try the
- # remarked out baseurl= line instead.
- #
- #
- [base]
- name=CentOS-$releasever - Base
- baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/
- http://ftp.iasi.roedu.net/mirrors/centos.org/$releasever/os/$basearch/
- http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
- http://ftp.hostrino.com/pub/centos/
- gpgcheck=1
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
- #released updates
- [update]
- name=CentOS-$releasever - Updates
- baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/
- http://ftp.iasi.roedu.net/mirrors/centos.org/$releasever/os/$basearch/
- http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
- http://ftp.hostrino.com/pub/centos/
- gpgcheck=1
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
- #packages used/produced in the build but not released
- [addons]
- name=CentOS-$releasever - Addons
- baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/
- http://ftp.iasi.roedu.net/mirrors/centos.org/$releasever/os/$basearch/
- http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
- http://ftp.hostrino.com/pub/centos/
- gpgcheck=1
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
- #additional packages that may be useful
- [extras]
- name=CentOS-$releasever - Extras
- baseurl=http://mirror.be10.com/centos/$releasever/os/$basearch/
- http://ftp.iasi.roedu.net/mirrors/centos.org/$releasever/os/$basearch/
- http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
- http://ftp.hostrino.com/pub/centos/
- gpgcheck=1
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
- #additional packages that extend functionality of existing packages
- [centosplus]
- name=CentOS-$releasever - Plus
- baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
- gpgcheck=1
- enabled=0
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
- #contrib - packages by Centos Users
- [contrib]
- name=CentOS-$releasever - Contrib
- baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
- gpgcheck=1
- enabled=0
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
=======================================================================
或者直接下载SOHU 163 开源镜像服务器的配置文件到当前目录:
或者直接下载163 SOHU 镜像服务区
====================================
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
yum makecache
yum update
【原创文章】更改windows2003默认的用户名,及其修改用户密码(图解)
今天有个朋友问我修改2003服务器系统默认的administrator帐号的方法,现在写出来和大家分享下。
一种方法是按"开始"--"运行" 输入: gpedit.msc
然后在"计算机配置"--"windows设置"--"安全设置"--"本地策略"--"安全选项" 那里
找到最下面的"帐号:重命名系统管理员帐号"那里改用户名.在"交互式登陆:不显示上一次的用户名"设置为"启用".
或者可以打开“我的计算机”--“控制面板”---“用户帐户”--“本地用户和组”---“用户”--“administrator”--右键单击“administrator”--选择“重命名”----在出现的名称设置框中,设置新的管理员名称----输入新的用户名。
重新启动系统,就可生效@!
原来2003默认管理帐号:administartor 已经无法登入!
使用新修改后的帐号(liuxinxiu.com)和密码(liuxinxiu.com)进行登入!
=========================================================================
具体修改密码的方法如下:
重复输入2次新密码点击:“确定” 然后重新启动系统!就可生效!@
改服务器密码对安全还是很有必要的,要是服务器用默认帐号密码简单,用穷举法很容易破解管理员权限。
修改windows2003默认远程桌面端口号【文章】:http://liuxinxiu.com/3389
为linux添加ip或网卡的方法
ls ifcfg-eth0*
可以看到有
ifcfg-eth0
如果以前配过别的ip,可能会有
ifcfg-eth0:0
ifcfg-eth0:1
等等
如果没有,就编辑一个ifcfg-eth0:0的文件,如果有,就在最大数上加一。文件内容:
IPADDR=”192.168.0.10″
NETMASK=”"
IPADDR就是要加的新的IP,如果有多个连续IP,可以写成:
IPADDR=”192.168.0.10-11″
NETMASK=”"
文件编辑完之后,运行:
/etc/init.d/network reload
用ifconfig看新的IP是否已经加上。
如果是为第二块网卡配IP,在/etc/sysconfig/network-scripts目录下编辑一个ifcfg-eth1的文件:
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
修改一下IPADDR,NETMASK和GATEWAY的参数。
运行:
/etc/init.d/network reload
用ifconfig看新的IP是否已经加上。
高级SSH安全技巧【转载】
在这篇文章中我将为你展示一些简单的技巧,帮助你提高你的SSH服务的安全。SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它进行每一次改动后都需要重新启动SSH服务,以便让改动生效。
1、修改SSH监听端口
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。
打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
修改端口号并重新启动SSH服务:
/etc/init.d/ssh restart
2、仅允许SSH协议版本2
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:
Protocol 2,1
修改为
Protocol 2
3、仅允许特定的用户通过SSH登陆
你不一个允许root用户通过SSH登陆,因为这是一个巨大的不必要的安全风险,如果一个攻击者获得root权限登陆到你的系统,相对他获得一个普通用户权限能造成更大的破坏,配置SSH服务器不允许root用户通过SSH登陆,查找下面这样的行:
PermitRootLogin yes
将yes修改为no,然后重新启动服务。现在,如果你想使用特权用户,你可以先以其他用户登陆,然后再转换到root。
创建一个没有实际权限的虚拟用户是一个明智的选择,用这个用户登陆SSH,即使这个用户遭到破解也不会引起什么破坏,当创建这个用户时,确保它属于wheel组,因为那样你才能切换到特权用户。
如果你想让一列用户都能通过SSH登陆,你可以在sshd_config文件中指定它们,例如:我想让用户anze、dasa、kimy能通过SSH登陆,在sshd_config文件的末尾我添加下面这样一行:
AllowUsers anze dasa kimy
4、创建一个自定义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文本文件。
5、使用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的内容看起来象下面这样:
~$ cat .ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwMWc
JYDusNGAIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604ZTdr
LZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7n
M7aKxIBPDrQwKNyPQAAAIEAq+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5pu
Fe7eplmr6t7Ljl7JdkfEA5De0k3WDs
9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0AMRC7ngIe6bta
NIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rb
WOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP
34fST1amc0YNeBp28EQi0xPEFUD0IXzZtXtHVLziA1/NuzY= anze@station1.example.com
如果文件~/.ssh/authorized_keys已经存在,请将上面的内容附加在该文件的后面。剩下的只是给该文件设置正确的权限了:
~$ chmod 600 ~/.ssh/authorized_keys
现在,配置sshd_config文件使用DSA密钥认证,确保你将下面三行前的注释去掉了:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
重新启动服务,如果你的配置没有错误,现在你就可以SSH到你的服务器,而且无需任何交互动作(如输入用户名和密码)就直接进入你的home目录了。
如果你只想使用DSA认证登陆,确保你在sshd_config中取消掉注释并修改PasswordAuthentication这一行,将yes改为no:
PasswordAuthentication no
任何在服务器上没有公钥的人试图连接到你的SSH服务,它就被拒绝,给它显示如下一个拒绝提示信息:
Permission denied (publickey).
6、使用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.0/24 193.180.177.13
现在,只有来自192.168.1.0/24和193.180.177.13的主机能够访问SSH服务了,其他主机在连接时还没有到登陆提示符时就被断开了,并收到错误提示,如下:
ssh_exchange_identification: Connection closed by remote host
=====================================================
方法1、iptables。
iptables -A INPUT -s 192.168.1.100 --destination-port 22 -j ACCEPT
iptables -A INPUT --destination 22 -j DROP
方法2:
vi /etc/ssh/sshd_config
添加一行:
allowusers root@192.168.1.100
注:root为你用来登入服务器的用户名。
==========================================================
7、使用iptables允许特定的主机连接
作为TCP wrappers的一个代替品,你可以使用iptables来限制SSH访问(但可以同时使用这个两个的),这里有一个简单的例子,指出了如何允许一个特定的主机连接到你的SSH服务:
~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT
并确保没有其他的主机可以访问SSH服务:
~# iptables -A INPUT -p tcp --dport 22 -j DROP
保存你的新规则,你的任务就完成了,规则是立即生效的
8、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
9、结论
这些技巧都不是很难掌握,但是它们对于保护你的SSH服务却是很强劲的手段,花一点代价换来的是睡一个好觉。
【原创】更改SSH默认22端口或增加SSH端口的修改方法
以下教程以Fedora-13 为例
首先查看SELinux是否是开启状态,如果默认是开启先暂时关闭
// 查看SELinux的当前模式
# getenforce
// 设置SELinux的当前模式,1设为Enforcing,2设为Permissive
# setenforce 1|0
=====================================================
vi /etc/ssh/sshd_config
查找:#Port 22 去掉之前的# 并在以下新增加新端口999
Port 22
Port 999
无论你是想增加新端口999 还说想更改默认22端口为999
建议先保存22和999 请先同时保存两个端口以避免修改中出现失误导致无法登入到远程服务器!
之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。
更改完成并保存!重启SSHD:
*************************************************************************************
service sshd restart 或者 /etc/init.d/sshd restart
*************************************************************************************
然后修改防火墙规则:
vi /etc/sysconfig/iptables
添加新端口:-A INPUT -m state --state NEW -m tcp -p tcp --dport 999 -j ACCEPT
*************************************************************************************
保存之后重启防火墙规则:/etc/init.d/iptables restart 或者 service iptables restart
*************************************************************************************
现在请使用ssh工具连接999端口,来测试是否成功。如果连接成功了,则再次编辑sshd_config的设置,将里边的Port22删除,即可。