系統:RHEL 5.5 64位,使用CentOS的yum源並做更新處理html
1、Telnet(遠程登陸推薦SSH)算法
一、安裝、啓動Telnetshell
1.一、安裝和啓動通常須要兩個包:vim
telnet-client提供客戶端程序安全
telnet-server提供服務器端程序bash
1.二、安裝以前,肯定是否已經安裝Telnet服務器
[root@localhost Server]# rpm -qa|grep telnet
telnet-server-0.17-39.el5
telnet-0.17-39.el5session
說明已經安裝,若未安裝,可掛載RHEL5.5的DVD光盤鏡像,在Server文件夾下找到並安裝下面三個包:app
[root@localhost Server]# rpm -ivh xinetd-2.3.14-10.el5.x86_64.rpm #先安裝這個包dom
[root@localhost Server]# rpm -ivh telnet-
telnet-0.17-39.el5.x86_64.rpm telnet-server-0.17-39.el5.x86_64.rpm #這兩個包的安裝順序是從左到右依次安裝
1.三、啓動:
方法一:
用# setup命令,選擇系統服務,在裏面找到Telnet,用空格鍵選中(前面加*),而後用Tab鍵選擇肯定,退出。
方法二:xinetd啓動
# vim /etc/xinetd.d/telnet
修改後文件以下:
# default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { #disable = no 這裏將no改成yes disable = yes flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID }
重啓服務
[root@localhost Server]# service xinetd restart #這種方式在這裏有問題哈。。。。。 bash: service: command not found [root@localhost Server]# /etc/init.d/xinetd restart #用這個吧 中止 xinetd: [失敗] 啓動 xinetd: [肯定]
二、配置Telnet
2.一、設置端口
# vim /etc/services ,修改默認23端口爲未使用的端口號,如22182:
telnet 22183/tcp telnet 22183/udp
[root@localhost Server]# /etc/init.d/xinetd restart #重啓服務
2.二、Telnet服務限制
Telnet用明文傳送口令和數據,有時有必要對其服務範圍進行限制
# vim /etc/xinetd.d/telnet修改文件以下:
# default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { disable = no #disable = yes flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID bind =192.168.111.23 #主機地址 only_from =192.168.0.0/16 #只容許192.168.0.0-192.168.255.255網段之間的計算機登陸 #only_from = .edu.cn #只容許教育網接入 #no_access =210.45.160.{115,116} #這兩個IP地址不可用 #access_times =7:00-12:00 15:00-23:00 #天天這兩個時間段開放服務 }
2.三、Telnet的root用戶登陸
Telnet默認不容許root登陸,若要root登陸,方法以下:
方法一:
# vim /etc/pam.d/login
找到下面一行,註釋掉:
#account required pam_nologin.so 將這一行加上註釋
方法二:
# mv /etc/securetty /etc/securetty_bankup
注意:非特殊狀況,請勿這樣操做
三、Telnet的會話示例:
登錄命令(只須提供登錄的主機名和用戶):
telnet [-l user ] [-a] host-name [port]
[root@localhost Server]# telnet 127.0.0.1 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. Red Hat Enterprise Linux Server release 5.5 (Tikanga) Kernel 2.6.18-194.el5 on an x86_64 login: vnc Password: Last login: Wed May 6 17:59:20 on :0 [vnc@localhost ~]$ su 口令: [root@localhost vnc]# exit exit [vnc@localhost ~]$ exit logout Connection closed by foreign host. [root@localhost Server]#
注意:須要關閉防火牆,或直接打開22183端口,
# vim /etc/sysconfig/iptables
添加下面一行代碼:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22183 -j ACCEPT
用Xshell打開截圖以下:
2、SSH
SSH優勢:傳輸的數據通過加密,有效防止「中間人」攻擊、DNS和IP欺騙;傳輸數據通過壓縮,傳輸速度快。
SSH有不少功能,既可代替Telnet,又可爲FTP、POP、甚至PPP提供安全通道
注意:有兩個不兼容的版本1.x和2.x;
OpenSSH是SSH的免費替代軟件,應用較普遍;
若準備使用SSH,必定要應用到全部服務器上,如9檯安全的服務器和一臺不安全的服務器配在一塊兒是沒安全性可言的。
一、安裝啓動SSH
1.1、查看有無安裝SSH
[root@localhost Server]# rpm -qa|grep ssh openssh-4.3p2-41.el5 openssh-server-4.3p2-41.el5 openssh-clients-4.3p2-41.el5 openssh-askpass-4.3p2-41.el5
如無安裝,掛載系統鏡像,安裝下列軟件:
[root@localhost Server]# rpm -ivh openssh- openssh-4.3p2-41.el5.x86_64.rpm openssh-clients-4.3p2-41.el5.x86_64.rpm openssh-askpass-4.3p2-41.el5.x86_64.rpm openssh-server-4.3p2-41.el5.x86_64.rpm
1.2、啓動
三種方式:
# service sshd start 方法一 啓動 sshd: [肯定] # /etc/rc.d/init.d/sshd restart 方法二 中止 sshd: [肯定] 啓動 sshd: [肯定]
方法三(開機啓動):
#setup,在系統服務中找到sshd,前面加上*,肯定,退出便可
二、簡單測試使用SSH
測試SSH提供的安全登陸功能:
ssh -l [your accountname on the remote host] [address of the remote host]
例子:
# ssh -l root 127.0.0.1 The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. RSA key fingerprint is 76:b3:02:d2:35:18:60:e6:c7:99:a3:01:08:fa:24:85. Are you sure you want to continue connecting (yes/no)? ye Please type 'yes' or 'no': yes Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts. root@127.0.0.1's password: [root@localhost ~]# who vnc :0 2015-05-06 17:59 vnc pts/1 2015-05-06 17:59 (:0.0) root pts/2 2015-05-06 20:08 (localhost.localdomain) [root@localhost ~]# who am i root pts/2 2015-05-06 20:08 (localhost.localdomain) [root@localhost ~]#
三、兩個配置文件
/etc/ssh/ssh_config 爲OpenSSH系統範圍內的配置文件
1 [root@localhost ~]# cat /etc/ssh/ssh_config 2 # $OpenBSD: ssh_config,v 1.21 2005/12/06 22:38:27 reyk Exp $ 3 4 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 # Host * #只對可以匹配後面字符串的計算機有效,*表明全部主機 6 # ForwardAgent no 7 # ForwardX11 no 8 # RhostsRSAAuthentication no #是否用RSA算法的基於rhosts的安全驗證 9 # RSAAuthentication yes #是否用RSA算法進行安全驗證 10 # PasswordAuthentication yes #是否用口令驗證 11 # HostbasedAuthentication no 12 # BatchMode no 13 # CheckHostIP yes #設置SSH是否查看鏈接到服務器的主機的IP地址,以防止DNS欺騙 14 # AddressFamily any 15 # ConnectTimeout 0 16 # StrictHostKeyChecking ask 17 # IdentityFile ~/.ssh/identity #設置從哪一個文件讀取用戶的RSA安全驗證標識 18 # IdentityFile ~/.ssh/id_rsa 19 # IdentityFile ~/.ssh/id_dsa 20 # Port 22 #設置鏈接到遠程主機的端口 21 # Protocol 2,1 22 # Cipher 3des #設置加密用的密碼 23 # Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc 24 # EscapeChar ~ #設置escape字符 25 # Tunnel no 26 # TunnelDevice any:any 27 # PermitLocalCommand no 28 Host * 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1 |
|
[root@localhost ~]# cat /etc/ssh/sshd_config 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 #Port 22 #設置sshd監聽的端口號 #Protocol 2,1 Protocol 2 #指定ssh支持的通訊協議版本 #AddressFamily any #ListenAddress 0.0.0.0 #設置sshd服務器綁定的IP地址 #ListenAddress :: # HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key # Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 1h #ServerKeyBits 768 #定義服務器祕鑰的位數 # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m #設置若是用戶不能成功登錄,在切斷鏈接以前服務器須要等待的時間(以秒爲單位) #PermitRootLogin yes #是否容許root登錄 #StrictModes yes #MaxAuthTries 6 #限制用戶錯誤登錄次數 #RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes #是否容許口令驗證 # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no GSSAPIAuthentication yes #GSSAPICleanupCredentials yes GSSAPICleanupCredentials yes 省略。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 #UsePAM no UsePAM yes # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL #AllowTcpForwarding yes #GatewayPorts no #X11Forwarding no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #指定服務器端向客戶端請求消息的時間間隔, 默認是0, 不發送.如ClientAliveInterval 60表示每分鐘發送一次, 而後客戶端響應, 這樣就保持長鏈接了 #ClientAliveCountMax 3 #使用默認值3便可,表示服務器發出請求後客戶端沒有響應的次數達到必定值, 就自動斷開. 正常狀況下, 客戶端不會不響應. #ShowPatchLevel no #UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10 #PermitTunnel no #ChrootDirectory none # no default banner path #Banner /some/path # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server
四、SSH的祕鑰管理
SSH的祕鑰管理主要包括兩方面:生成公鑰/私鑰對和公鑰的分發
4.1、生成用戶本身的密鑰對
4.1.1、好處:
(1)、能夠防止「中間人」這種攻擊方式
(2)、能夠只用一個口令就登錄到全部用戶想登錄的服務器上
4.1.2、生成密鑰:
# ssh-keygen #1.x版本,若爲2.x版本用 # ssh-keygen -d Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 回車便可 Enter passphrase (empty for no passphrase): 密碼不在屏幕上顯示 Enter same passphrase again: 注意:若是忘記口令或私鑰爲他人所知,則須要從新生成一次口令 Your identification has been saved in /root/.ssh/id_rsa. 保存用戶的私鑰 Your public key has been saved in /root/.ssh/id_rsa.pub. 公鑰 The key fingerprint is:
此時,用戶有一對密鑰:公鑰要發佈到全部用戶想用SSH登錄的遠程主機上去;私鑰要妥善保管,防止他人知曉
查看/root/.ssh/目錄下相應文件的訪問權限,必須是「-rw------"
4.2、分發公用密鑰
在每個用戶須要用SSH鏈接的遠程服務器上,用戶在本身的主目錄下建立一個 .ssh 的子目錄,把用戶的公用密鑰 id_rsa.pub複製到此目錄下,並重命名爲
authorized_keys,而後執行以下命令:
# chmod 644 .ssh/authorized_keys
若除了用戶還有他人知對此文件有寫的權限,SSH就不會工做。
若用戶想從不一樣的計算機登錄到遠程主機,authorized_keys 文件也能夠有多高公用密鑰,此時必須從新生成一對密鑰,而後把id_rsa.pub複製到遠程主機的
authorized_keys裏。另外,新的計算機上用戶必須有一個帳號,並且密鑰是用口令保護的。
SSH安全攻略:
一、關閉無關端口
爲避免被掃描到,除必要端口外所有關掉,建議關閉icmp端口,並設置規則,丟棄icmp包。
丟棄icmp包可在iptables里加入下列代碼:
-A INPUT -p icmp -j DROP
二、更改SSH端口
將默認端口22更改成10 000以上,以下降端口被掃描到的機率,方法以下:
# vim /etc/ssh/ssh_config # vim /etc/ssh/sshd_config
將端口均更改成:
Port 22 Port 18438 #加入新的Port值,
重啓ssh服務:
# service sshd restart
注意:
<1>此處設置兩個SSH端口,主要是爲防止出錯致使SSH沒法登錄,登錄成功後則須編輯上面兩個配置文件刪除22端口
<2>登錄成功後須在在iptables裏刪除22端口,添加新配置的18438端口
<3>若SSH登錄的是弱密碼,則能夠設置一個複雜密碼
三、限制IP登錄
/etc/hosts.allow 和 /etc/hosts.deny 文件時tcpd服務器的配置文件,tcpd服務器能夠控制外部IP對本機服務的訪問。
這兩個配置文件的格式以下:
# 服務進程名:主機列表:當規則匹配時可選的命令操做 server_name:hosts-list[:commond]
/etc/hosts.allow 控制能夠訪問本機的IP地址,/etc/hosts.deny 控制禁止訪問本機的IP地址。若二者配置有衝突,以/etc/hosts.allow 爲主。
爲便於理解和管理,將容許進入的寫入 /etc/hosts.allow當中,將不容許的寫入 /etc/hosts.deny 當中
例子1:
# vim /etc/hosts.allow #添加如下內容:
ALL:127.0.0.1 #容許本機訪問本地全部服務 sshd:192.168.75.130 #容許192.168.75.130登陸 smbd:192.168.0.0/255.255.255.0 #容許 192.168.0.0網段的IP訪問smbd服務
(舉例說明:192.168.6.100表明一個主機,192.168.6.表明整個網段。同理,test.com表明一臺主機,.test.com表明test.com域內全部主機。) # vim /etc/hosts.deny #添加如下內容:
sshd:all:deny #不容許全部IP登陸sshd,hosts.allow優先級大於hosts.deny in.telnet:ALL ALL:ALL EXCEPT 192.168.0.1/255.255.255.0,192.168.2.21,\ #不容許的IP 202.10.5.0/255.255.255.0
注意:service_name必須與xinetd或/etc/rc.d/init.d/*裏面的程序名稱相同:
例子2:
(1)只容許140.116.44.0/255.255.255.0和140.116.79.0/255.255.255.0這兩個網域,以及140.116.141.99這個主機進入Telnet服務器
(2)其餘IP所有攔截
首先,# vim /etc/hosts.allow ,添加如下內容:
telnet: 140.116.44.0/255.255.255.0 :allow #容許 telnet: 140.116.79.0/255.255.255.0 :allow #容許 telnet: 140.116.141.99 #容許
其次,# vim /etc/hosts.deny, 設置爲所有攔截:
telnet: ALL : deny
ALL表明所有,更安全的設置是:當有人掃描Telnet端口時,就記住其IP,做爲查詢與認證之用。修改以下:
# vim /etc/hosts.deny,內容爲:
#telnet: ALL : deny telnet: ALL : spawn (echo Security notice fromo host '/bin/hostname'; \ echo; /usr/sbin/safe_fingetr @%h) | \ /bin/mail -s "%d-%h security" root & \ :twist ( /bin/ehco -e "\n\nWARNING connection not allowed.Your attempt has been logged. #警告您還沒有容許登陸,您的聯機將會被記錄,而且做爲之後的參考
注意:
<1>root能夠寫成我的帳號或其餘E-mail。
<2>某些沒有安裝tcp_wrappers的套件的distribution中,因爲沒有safe_finger等程序,沒法執行相關的功能。