第四周LINUX 學習筆記

来源:https://www.cnblogs.com/gohrx/archive/2019/03/31/10633341.html
-Advertisement-
Play Games

內核編譯丶sed丶awk Linux:單內核 模塊化:動態 /lib/modules lsmod,modinfo,modprobe,insmod,,modprobe -r ,rmmod dep文件:模塊的依賴關係 sysbols:符號映射 depmod:用來生成模塊依賴關係 kernel文件夾下 a ...


                                                                                                             內核編譯丶sed丶awk

Linux:單內核
    模塊化:動態
      /lib/modules
      lsmod,modinfo,modprobe,insmod,,modprobe -r ,rmmod
      dep文件:模塊的依賴關係
      sysbols:符號映射
    depmod:用來生成模塊依賴關係
         kernel文件夾下
            arch:架構
            crypto:加密模塊
            drivers:驅動
            fs:文件系統
               有兩部分組成
            kernel:內核調試模塊
            lib:內核本身通用庫
            mm:
            net:網路協議的實現
               netfilter:軟體防火牆
               openvswith:虛擬機
               sunrpc:
            sound:聲音

        CentOS6:
           與官方kernel可能不一樣
    
        src.rpm
           源碼rpm包+specs文件
           步驟:
             1.創建mockbuild用戶
             2.切換至mockbuild用戶,而後安裝src.rpm包
             3.rpmbuild -bb|-ba ~/rpmbuild/SPECS/package_name.spec
             4.製作完成的rpm包:位於/root/rpmbuild/RPMS/x86_64中

        /usr/src,/usr/local/src

   編譯內核:
       可能需要的模塊不多,紅帽或者centos為了使版本更通用,
       y:編譯進核心
       m:編譯成模塊
       make config
       make allyesconfig
       make allnoconfig

       make menuconfig

       建議將/boot/下的config文件拷貝到當前目錄下,叫.config
       
       make kconfig(KDE桌面環境,並且安裝了qt開發環境)

       make gconfig(Gnome桌面環境,並且安裝gtk開發環境)

    第二步:編譯
      make -j #
    第三步:安裝模塊
      make modules_install
    第四步:安裝內核
      make install
    第五步:檢查。測試
      grub.conf中是否已經有新內核配置項
      重啟系統並啟用新內核

      
安裝一個新桌面:
   screen命令:
      screen:打開一個新的screen
      隱藏:ctrl+a,d
      重新打開隱藏的screen:
         顯示個screen ID: screen -ls
         重新打開 screen -r Screen_ID


    查看硬體信息:
    lspci
    hal-device
    lspcmcia
    lscpu
    lsdiff
    lsusb
    lsdlk
    dmidecode:查看BIOS,


RHEL src.rpm
  補充:http://ftp.redhat.com/pub/redhat/linux/enterprise


編譯安裝新內核:
1.獲取內核編碼,解壓至/usr/src
  tar xf linux-3.13.5.tar.xz -C /usr/src
  ln -sv /usr/src/linux-3.13.5 /usr/src/linux-
2.配置內核特性
  cp /boot/config-* /usr/src/linux/.config
  make menuconfig
3.編譯內核
   make [-j #]
      最多為cpu物理核心總數的兩倍
4.安裝內核模塊
   make modules_install
5.安裝內核
   make install
6.驗證並測試
  cat /boot/grub/grub.conf
  重啟系統並應用新系統

 二次編譯如何做清理操作:
     make clean:只清理編譯生成的文件,但不刪除配置文件.config
     make mrproper:刪除編譯生成的文件和.config
     make distclean:重置源代碼樹
將編譯的文件放置於源碼不同的路徑:
    mkdir /path/to/somewhere
    cd  /path/to/somewhere
    ./configure --ksource=/usr/src/linux

如何實現內核的部分編譯:
   1.只編譯某子目錄下的相關代碼:
      cd /usr/src/linux
      make 子目錄文件

      make SUBDIR=arch/
      make drivers/net/
   2.只編譯部分模塊
      make M=path/to/dir/

      make M=drivers/net/
   3.只編譯某一個模塊
      make path/to/dir/module_name.ko

      make drivers/net/e1000/e1000.ko
   4.將編譯後的結果放置於別的目錄中
      make O=/path/to/somewhere

如何實現交叉編譯
    make ARCH=架構

    以arm為例:

    make ARCH=arm 預設編譯文件

 樹莓派


 內核參數的查看與配置:
   /proc/sys/
      kernel net vm fs
   配置參數:
      echo "string" > /proc/sys/path/to/some_parameter
      echo 1 > /proc/sys/net.ipv4/icmp_echo_ignore_all
     sysctl -w
     上面也可寫成
     sysctl -w net.ipv4.icmp_echo_ignore_all=1
   查看參數:
     sysctl -a
    配置文件:
     /etc/sysctl.conf

     net.ipv4.ip_forward ip轉發
     kernel.hostname 主機名
     net.ipv4.icmp_echo_ignore_all ping功能
     vm.drop_caches 清除緩存
     sysctl -p 重讀配置文件

硬體設備:設備文件
    2.4-:2W+

    udev:用戶空間程式

    kenrel硬體探測過程在根文件系統掛載前就已經結束,啟動udev daemon程式,要求內核重新探測硬體信息,並輸出/sys目錄,
    由此udevadmin工具就可以根據/sys目錄中硬體信息給每個硬體創建設備文件了

    udev rules:udev規則文件,用於定義udev如何創建設備文件的
      /etc/udev/rules.d/

    kernel+initramfs(根文件系統所在設備的設備驅動模塊)-->devtmps(用於在內核初始化時為基本設備創建設備文件的臨時文件系統)

    如何手動創建設備文件
    mknod
       mknod [option] ...NAME YTPE [MAJOR MINOR]
       MAJOR:主設備號,表示設備類型
       MINOR:同一設備的不同文件

       選項:
         -m MODE:指定許可權

       例子
         mknod -m 660 /dev/testdev b 100 0

 

sed初級使用
   stream editor
一次只讀一行,只處理一行,不對源文件做處理,至輸出到屏幕上
模式空間
是一個行編輯器

格式
   sed[options] "script" FILE....

選項:
   -n:靜默模式,不輸出模式空間內的內容;預設列印空間模式的內容
   -r:擴展的正則表達式
   -f 文件:指定sed腳本文件
   -e 'script' -e 'script' :指定多個編輯指令
   -i : 直接編輯原文件
編輯命令:
    d:刪除
    p: 列印
    i  \:在被指定到的行前面插入文本
    a  \:在被指定的行的下麵插入文本
    \n:換行
    r 文件:在指定位置把另外一個文件的內容插入
    w 文件:將符合條件的所有行保存至指定文件中
    =:顯示符號條件的行的行號
    s///:查找條件可以使用模式,但是要替換的內容不行

地址定界:自定義的起始行到結束行
  startline,endline
   1,3
   /pat1/,/pat2/
   /pattern/

 用法:sed [options] 'addr1[,addr2]編輯命令' FILE...
       sed [options] "addr1[,addr2]編輯命令" FILE...   變數替換使用雙引號
      
 正則表達式:
     基本的
        字元:
           .
           []
           [^]
        次數
           *
           \?
           \{m,n\}
         錨定:
           ^
           $
           \<,\b
           \>,\b
         分組:
          \(\)
         引用:
          \1,\2,……
     擴展:
        字元:
           .
           []
           [^]
        次數
           *
           ?
           {m,n}
           +
         錨定:
           ^
           $
           \<,\b
           \>,\b
         或:
           a|b
         分組:
          \(\)
         引用:
          \1,\2,……
    sed '地址定界s@查找條件@替換文件@'
       修飾符:
          g:global,全局替換
          i:ignore-case,不區分字元大小寫

awk命令:
   awk:報告生成工具
       把文件中讀取帶的每一行的每個欄位分別進行格式化,而後進行顯示:

       支持使用變數、條件判斷、迴圈、數組

    awk --> new awk --> nawk

    GNU awk --> gawk


  選項:
    -F:切割符
    $0:整行
    $1,$2.....:位置參數


  用法格式:
     awk [options] 'script' FILE...
     awk [options] '/pattern/{action}' FILE...

     action: print $1,$2

     模式:
       地址定界:/pat1/,/pat2/ 一個範圍
                /pattern/ 被匹配到的行
                experssion 表達式
                   >,>=,<,<=,==,!=,~(模式匹配)
        BEGIN:執行前操作
        END:執行後的收尾  操作

  awk的常用四種分隔符:
      輸入:
          行分隔符
          欄位分隔符
      輸出:
          行分隔符
          欄位分隔符
 
  awk的內置變數
    NF:最後一個欄位
    FS: 指定輸入分隔符 在BEGIN中定義,指定時要使用""
    預設為空白
    OFS:輸出時指定的分隔符,在BEGIN中定義,指定時要使用"",預設為空白

 

                                                                               安裝丶bash丟失丶dhcp丶pxelinux

anaconda:fedora,Linux的安裝程式


anaconda:將安裝分成兩個階段
    安裝前配置階段
        鍵盤類型
        安裝過程中的語言
        支持的語言
        時區
        選擇要使用的磁碟設備
        分區格式化
        選擇要安裝的程式包
        管理員密碼
        是否使用iptables
        是否啟用selinux
    安裝階段
        在目標磁碟上根文件系統
        將選定的程式包安裝至目標磁碟

如何啟動安裝過程
  MBR:bootloader,本身可啟動的安裝光碟
  網路啟動安裝過程
  可移動設備,攜帶型設備

簡裝光碟:只有isolinux,能夠啟動安裝過程的

anaconda的配置文件稱為kickstat

安裝前配置階段:
     配置的選項:
          必選項:
          可選項:

kickstart文件的組成部分:
    命令段:用於配置系統
        install
        firewall
        part
        lvm
    軟體包:指定要安裝的程式包及程式包組
    %packages 標識
      @Base:使用@指定包組
      lftp:直接寫程式包名
      tree:
      每行一個  
    註意:在程式包前加-,不安裝相關包
     %end :軟體包結束
    腳本段:
       %pre:安裝過程開始前的預備腳本
            所能執行的操作較小,它是一個首先得環境,因為其是僅有簡裝版的shell環境
       %post:所有的軟體完成之後執行的腳本
            此時,具有完整意義上的shell環境,但並非所有命令都安裝,先確保所有的程式包已經安裝

以光碟為例:
     MBR-->bootloader,isolinux/
     安裝樹:

     noparport:不探測硬體  


啟動安裝界面時,boot提示符後,可以向安裝內核傳遞許多的配置參數,用於指定安裝過程的特性
boot:
   test:文本安裝界面
   graphical:圖形安裝界面
   askmethod:提示用戶指定安裝方法,讓用戶選擇使用的安裝樹
   asknetword:提示用戶在安裝過程中使用網路功能,並提示用戶配置網路地址
   dd:提示用戶指定一個驅動程式所在的設備
   ks=:指定一個安裝過程使用的kickstart文件
      ks={http|https}://<sevrer>/<path>
      ks=cdrom:/<path>
      ks=nfs:<server>:/<path>
    repo=:指定安裝樹位置
        repo=ftp://<path>
        repo={http|https}://<path>
        repo=nfs:<path>
    ip:
    netmask:
    gateway:
    dns:
    noipv6:


    http://172.16.0.1/centos6.X86_64.cfg

    成長是用來發現自己的過去是多麼的操蛋


    CentOS:
     kickstart文件:命令段、軟體包段、腳本段

     selinux限制進程的訪問,
     permissive 記錄到日誌

    創建光碟映像

     mkisofs:-R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos 6.5 X86_64 boot(可改)" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.5.boot.iso(可改) linuxiso/
   
     光碟中的背景圖片
     640*480

     dhcp server:告訴客戶端到某一位置找一tftp server,向此tftp server要一個文件


     pxe:安裝方式

     創建kickstart文件的方式:
        1,複製模板/root/anaconda-ks.cfg。而後使用vim編輯配置
        2.使用system-config-kiskstart來生成,建議使用/root/anaconda-ks.cfg 模板生成

 ksvalidator 檢查kiskstart文件的配置是否存在問題

系統故障排除之:bash程式文件損壞
1.啟動緊急救援模式
2.獲取到bash的rpm包:
   mkdir /media
   mount -r /dev/dvd /media
   rpm -ivh bash-*.rpm --replacepkgs --root=/mnt/sysimage/
 緊急救援模式:啟動了一個工作於光碟上的linux

arp

dhcp和pxe

DHCP:動態地址配置協議
  前身bootp:分配出去以後,將綁定
  leases,地址租約,地址池



  Dynamic Host Configuration Protocol

  C/S 模式
   Server:DHCP Server(運行dhcp服務)
     UDP服務:67
   Client:DHCP Client(運行dhcp程式)
     UDP服務:68
   udp:適合發送較小的數據報文,且對時效性要求較高

  A:DHCP DISCOVER
  S:DHCP OFFER(ip/netmask)
  A:DHCP REQUEST(確認使用)
  S:DHCP ACK

  50%:DHCP REQUEST
      75%:DHCP REQUEST
         87.5%:DHCP REQUEST

  DHCP DISCOVER

  DHCP :
     IP,NETMASK,GATEWAY,DNS,NTP SERVER,WINS SERVER,File

  DHCP Client:
       169.254.X.X
        本地地址
  有兩個進程
     一個dhcpd
     一個dhcrelay,中繼


  dhcpd.conf大致可以分為四個區域:
    定義dhcpd自身的工作屬性:
       log-facilify:日誌facilify
    全局地址跟拍屬性:options打頭
      option router
    子網配置:
        通常每個作用域通過一個subnet定義
         subnet NETWORK_ADDR netmask NETMASK {


         }
    主機配置:
      通常為某特定MAC地址固定的分配一個地址
         host ‘HOST ID’ {
           hardware ethernet 08:00:07:26:c0:a5; MAC地址
  fixed-address IP; ip地址
         }
日誌服務的配置文件:/etc/rsyslog.conf

文件詳解:
ption domain-name "example.org"; 搜索域
option domain-name-servers ns1.example.org, ns2.example.org; 全局預設網關
default-lease-time 600;預設租約期限
max-lease-time 7200;最長租約期限
#ddns-update-style none;動態dns
og-facility local7;日誌反動地址
subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20; 地址池
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; 提供的網關
}

subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;向bootp提供服務
  option broadcast-address 10.254.239.31;廣播地址
  option routers rtr-239-32-1.example.org;
}
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;預設網關
  option broadcast-address 10.5.5.31;廣播地址
  default-lease-time 600;
  max-lease-time 7200;
}

host fantasia {
  hardware ethernet 08:00:07:26:c0:a5; MAC地址
  fixed-address fantasia.fugue.com; ip地址
}
class "foo" {
  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}定義函數,用來定義特定系統分配特定的地址

/var/lib/dhcpd有配置文件

dhcilent -d etho:/客戶端重新獲取dhcp地址

總結:dhcp dhcpd /etc/dhcp/dhcpd.conf /etc/rc.d/init/dhcpd /var/lib/dhcp,udp:67,68



PXE:Preboot Execution Environment,啟動前的執行環境
    
    Client:網卡要支持網路引導

tftp Trivial FTP:簡單文件傳輸協議,高效傳輸小文件(udp:69)
   瞬時(非獨立)守護進程:他們無需定義在運行級別下,只需要一次性的定義xinetd的運行級別
   獨立(standalone)守護進程:能自我管理,無需xinted提供箭頭服務的進程

超級守護進程:xinetd
   為那些極少接收用戶請求的服務,專門提供監聽功能
     tftp:udp:69
     
   瞬時守護進程基於xinetd的配置文件:/etc/xinted.d/Service_name
   獨立守護進程:能自我管理,無須xinetd提供監聽服務的進程
 
   chkconfig xinetd on
   service xinetd start

   chkconfig Service_name on
   service xinetd restart

  Linux上的tftp:
    伺服器:tftp-server
    客戶端:tftp
在dhcp添加
    next-server ip地址
    filename="pxelinux.0"


配置步驟:
前提:需要安裝apache伺服器,並啟動httpd服務!
 mkdir /media/cdrom
 mount -r /dev/dvd /media/cdrom
 vi /etc/yum.repo.d/
1.配置DHCP伺服器
yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
自定義subnet{
    ...
    next-server
    filename ""
}
 service dhcpd restart
 tail -f /var/log/boot.log
2配置tftp-server
yum -y install xinetd tftp-server tftp
chkconfig xinetd on
chkconfig tftp on
service xinetd start
3準備安裝樹
mkdir /var/www/html/centos6
mount --bind /media/cdrom /var/www/html/centos6
service httpd start
4.準備tftpboot下的文件
yum -y install syslinux
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

5.提供kickstart文件
註意:url及repo後的路徑要修改為可用安裝樹的路徑;
url --url=http://192.168.48.128/centos6
repo --name="CentOS-6.5"  --baseurl=http://192.168.48.128/centos6
編輯好kickstart文件後保存至/var/www/html目錄下;假設為ks.cfg

6)配置引導程式能自動載入kickstart文件。
編輯/var/lib/tftpboot/pxelinux.cfg/default
在label為linux項的append一行後附加:
    ks=http://192.168.48.128/ks.cfg

        



SELinxu:Secure Enhenced Linux

獲取selinux的當前狀態:
getenforce
臨時啟用或禁用
setenfoce 0|1

永久啟用:/etc/sysconfig/selinux
      /etc/selinux/config

     SELINUX={enforcing|permissove|disabled}


 ls -Z:查看
 mac:強制訪問控制

                                                                                         Openssl丶ssh丶腳本信息捕獲

passwd:
   加密方式:
       對稱加密、公鑰加密、單向加密
    加密、解密
    明文:plaintext,cleartext -->密文 -->

    對稱加密:
       加密演算法+口令
          明文 --> 密文

          字典攻擊
          加密方,解密方使用同一個口令
          DES(56bits):數據加密標準
          3DES
          AES(128bits):高級加密標準
          Blowfish
          Twofish
          IDEA
          RC6
          CAST5
          Serpent
          特性:
          1.加密/解密使用統一口令
          2.將原文分割成固定大小的數據塊,對這些塊進行加密
            ECB,CBC

          1.口令傳輸
          2.密鑰太多

        密鑰交換:
        用戶認證:
        數據完整性:

   密鑰交換(IKE:Inernet Key Exchange):DH演算法

   非對稱加密:公開公鑰,私鑰私有,只有一組密鑰對(公鑰和私鑰組成)才能對消息進行加密和解密,公鑰和私鑰都能進行加密或者解密。公鑰一般來加密數據,私鑰一般來簽名數據。
      加密演算法:RSA,EIGmal,DSA
      1.密鑰交換
      2.用戶身份認證
    單向加密:
     抽取數據特征碼:
       MD5,SHA1,SHA512,CRC-32(迴圈冗餘校驗碼)
      1.完整性,

      消息認證演算法:MAC(Message Authenntication Codes)
        CBC-MAC
        HMAC

        雪崩效應
        定長輸出:
使用私鑰鑰來加密特征碼(保留數據的完整性)和數據(保證數據的來源)再將兩者進行對稱加密(速度快),接著再用對方的公鑰來加密密碼(保證安全性)

 PKI:Pubile key Infrastucture 公鑰基礎設施

 openssl gpg

 openssl:套件,開源程式
     libcrypto:通用功能的加密庫
     libssl:用於實現TLX/SSL的功能
     openssl:多功能命令工具
         生成密鑰,創建數字證書,手動加密解密數據
 加密解密技術常用的功能及演算法:
   對稱加密:
     工具:gpg openssl enc
     加密:openssl enc -des3 -a -salt -in /ets/fstab -out /tmp/fstab.cipher
     解密:openssl enc -d -dec3 -a -salt -in /tmp/fstab.cipher  -out 文件

   單向加密:
     特性:One-Way
           Collision-free:
     演算法
      md5:128bits
      sha1:160bits
      sha512:512bits
     工具:sha1sum,md5sum,openssl dgst
      openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename] /path/to/somefile
   MAC:信息摘要碼,單向加密的延伸應用
       應用:用於實現在網路通信中保證所傳輸的數據完整性
       機制:
           CBC-MAC
           HMAC:使用md5和sha1演算法
   用戶認證:每一個用戶的密碼即使是相同的,他們的加密方式也不同,因為是不同用戶。可以指定-salt string 即可生成相同的加密
       工具:passwd openssl passwd
 
    公鑰加密:公鑰加密,私鑰解密
       密鑰對:
          公鑰:pkey
          私鑰:skey

       演算法:RSA,EIGamal

       工具:gpg openssl rsautl

    數字簽名:私鑰加密,公鑰解密
       演算法:RSA,EIGamal,DSA

       DSA:Digital Signature Algorithm
       DSS: Digital Signature standard
    密鑰交換:IKE
       演算法:DH(Diffie-Hellman),公鑰加密

    數字證書:
    第三方機構使用一種安全的方式把公鑰分發出去
       證書格式:x509,pkcs家族
         x509格式:
           公鑰和有效期限:
           持有者的個人合法身份信息;(主機名),所以輸入主機名所對應的IP地址,有可能會訪問不到。
           證書的使用方式
           CA的信息
           CA的數字簽名

        誰給CA發證:自簽署證書
   用戶
    1.生成一對密鑰
    2.把所需信息和公鑰按固定格式製作成證書申請
   CA機構
    1.自簽證書
    2.簽署證書
    3.傳給用戶
    4.維護吊銷列表
    OpenCA
用openssl實現是有CA
配置文件/etc/pki/tls/openssl.cnf
命令:
誰給CA發證:自簽署證書

    用openssl實現私有CA:
            配置文件:/etc/pki/tls/openssl.cnf

        生成密鑰對兒:
            # (umask 077; openssl genrsa -out private/cakey.pem 2048)
            
            如果想查看公鑰:
                # openssl rsa -in private/cakey.pem -pubout -text -noout

        生成自簽證書:
            # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

        
    用openssl實現證書申請:

        在主機上生成密鑰,保存至應用此證書的服務的配置文件目錄下, 例如:
            # mkdir /etc/httpd/ssl
            # cd /etc/httpd/ssl
            # (umask 077; openssl genrsa -out httpd.key 1024)

        生成證書簽署請求:
            # openssl req -new -key httpd.key -out httpd.csr

        將請求文件發往CA;
                                               #  scp httpd.csr  192.168.48.128:/tmp/

    CA簽署證書:
        簽署:
            # openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days DAYS

        將證書傳回請求者

    吊銷證書:
        # openssl ca -revoke /path/to/somefile.crt





speed 測試當前系統上的加密演算法的性能
version: 版本
s_client ssl/tls client program 測試連接性的
rand:用來生成偽隨機數字
   openssl rand -hex #

openssl:私有CA
  證書格式
         公鑰和有效期限:
         持有者的個人合法身份信息;(主機名)
         證書的使用方式
         CA的信息
         CA的數字簽名


對稱加密:數據私密性
公鑰加密:密鑰交換(對方的公鑰)、數據加密(對方的公鑰)、身份認證(自己的私鑰)
單向加密:hash碼,only-way hash
openssl補充材料:

        openssl中有如下尾碼名的文件
        .key格式:私有的密鑰
        .crt格式:證書文件,certificate的縮寫
        .csr格式:證書簽名請求(證書請求文件),含有公鑰信息,certificate signing request的縮寫
        .crl格式:證書吊銷列表,Certificate Revocation List的縮寫
        .pem格式:用於導出,導入證書時候的證書的格式,有證書開頭,結尾的格式
        
        常用證書協議
        x509v3: IETF的證書標準
        x.500:目錄的標準
        SCEP:  簡單證書申請協議,用http來進行申請,數據有PKCS#7封裝,數據其實格式也是PKCS#10的
        PKCS#7:  是封裝數據的標準,可以放置證書和一些請求信息
        PKCS#10:  用於離線證書申請的證書申請的數據格式,註意數據包是使用PKCS#7封裝這個數據
        PKCS#12:  用於一個單一文件中交換公共和私有對象,就是公鑰,私鑰和證書,這些信息進行打包,加密放在存儲目錄中,CISCO放在NVRAM中,用戶可以導出,以防證書伺服器掛掉可以進行相應恢復。思科是.p12,微軟是.pfx



ssl:網景公司開發
 Secure Scocket Layer
  安全的套接字層

TLS:Transport Layer Security
    安全的傳輸層

遠程登錄:
 telnet

telnet服務:明文傳輸
   監聽tcp協議的23號埠
   ss -tan |grep 23

   禁止管理員直接登陸
      使用普通用戶登錄。而後su到管理員

ssh:Secure SHell
 監聽tcp協議的22號埠
 /etc/services 解析庫,進程<->埠
   ssh文本協議:字元通信

 sshv1,sshv2
    由於sshv1是居於CRC-32做MAC,因此,不安全,建議勿用
    sshv2 基於雙發主機協商選擇最安全的MAC實現機制
       加密機制和MAC機制是雙方協商選定
       基於DH實現密鑰交換,基於RSA或DAS實現身份認證
       客戶端通過檢查服務端的主機密鑰來判斷是否與其進一步通信

 OpenSSH(C/S)
   Server:監聽tcp22
   Client:程式
 windows客戶端:xmanager(xshell)、SecureCRT、putty、sshshellcilent

 openssh客戶端組件:
    ssh
       ssh Username@HOST [command]
       ssh -l Username HOST [command]
          -p port:指定要連入埠

    ssh認證機制:
       基於口令
       基於密鑰
          客戶端在本地生成一對密鑰
          客戶端將公鑰複製到伺服器,要登陸的用戶的家目錄下的隱藏目錄.ssh中的一個名為authorized_keys或authorized_keys2中
       配置過程:
         1.生成密鑰對,客戶端
            ssh-key -t rsa
             生成的密鑰預設保存至當前家目錄下的.ssh下的id_rsa,公鑰在id_rsa.pub
          文件中
          2.複製密鑰至遠程主機:
             ssh-copy-id -i 公鑰文件 登陸用戶@遠程ip地址
    scp:類cp命令,基於ssh協議跨主機複製
       scp SRC1 SRC2 .... DEST
       分兩種情況:
         1.源文件在本機,目標為遠程
         scp /path/to/somefile ....  Username@HOST:/path/to/somewhere
         2.源文件在遠程,目標在本機
          scp Username@HOST:/path/to/somefile /path/to/somewhere

         -r當源文件為目錄,以實現遞歸複製
         -p:保留源文件的複製及修改時間戳,以及許可權
         -q:靜默模式
         -P PORT:指定伺服器埠

    sftp:是基於ssh的ftp協議
     只要OpenSSH的伺服器端有以下項,則代表支持sftp
     Subsystem    sftp    /usr/libexec/openssh/sftp-server

     用法: sftp[username@]HOST

伺服器端:sshd
   配置文件 /etc/ssh/sshd_config
   服務腳本 /etc/rc.d/init.d/sshd
   腳本配置文件:/etc/sysconfig/sshd

   查看config文件的幫助
       man sshd_config
       ListernAddress 當前主機的監聽地址
       Protocol 協議版本
       # HostKeys for protocol version 2
       #HostKey /etc/ssh/ssh_host_rsa_key
       #HostKey /etc/ssh/ssh_host_dsa_key
       驗證主機的公鑰
       #KeyRegenerationInterval 1h  密鑰的使用時間
       #ServerKeyBits 1024 密鑰長度
       #LogLevel INFO 日誌級別
       #LoginGraceTime 2m 登陸寬限期
       #PermitRootLogin yes root是否可以登錄
       #StrictModes yes 嚴格模式,家目錄 屬主 屬組
       #MaxAuthTries 6 最多可以承受的次數
       #MaxSessions 10
       最大的連接數
       PasswordAuthentication yes 是否使用用戶名和密碼的方式
       Kerberos集中認證管理
       X11Forwarding yes 是否轉發圖形視窗
       AllowUsers user1 user2
       用戶白名單
       Allowgroups 組白名單
       DenyUser 用戶黑名單
 
用戶登錄信息獲取
  lastlog:顯示用戶最近一次的登錄信息,成功的 /var/log/wtmp
  lastb:顯示用戶登錄的信息,並嘗試失敗的 /var/log/btmp
  用戶成功登陸的日誌信息
  last



使用ssh的最佳方式
1)only use ssh protocol 2
2)limit users SSh access
    Allowusers root vivek jerry
    白名單
    denyUser saroj anjali foo
    黑名單
3)configure  Idle Log out timeout Interval 配置空閑超時長。
    ClientAliveCountMax 300
    ClientAliveInterval  0
4)Firwall SSH Port # 22
    使用iptables設置ssh服務安全訪問策略
5)change ssh port and Limit IP binding
    port 300
    Listaddress 192.168.1.5
    ListenAddress 202.54.1.5
    勿使用預設22埠
6)use Strong SSH passwords and passphrase  
    genpasswd(){
        local 1=$1
            [ "$1" == "" ]&& 1=20
            tr -dc A-Za-z0-9_</dev/urandom | head -c ${1} | xargs
    }
使用足夠長足夠複雜的密碼,且定期更換。
7)use Public key Based AUthentication
使用公鑰認證。
8)disable Empty password
9)thwart ssh crakers (Brute  Force attack)
google:ssh best practice
10)rate-limit incoming port # 22 COnnections
限制ssh訪問頻度
11)use log analyzer
    記錄好日誌,經常做日誌分析。

總結:ssh,scp.sftp,sshd
      ssh /etc/ssh/ssh_config
      sshd /etc/ssh/sshd_config

bash編程的信號捕獲
  trap 陷阱
  trap ‘command’ signal
  kill -l
  KILL無法捕捉

  信號捕捉用於:在中途中止時做一些清理操

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 獲取毫秒大家都經常用到。大家應該都知道怎麼用。但是,毫秒下麵還有微秒。其實這個方法也已經在c#中。只不過很少有人用到,所以查找資料也很少有人說。下麵代碼就是獲取微秒的方式:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff:ffffff"))fff 是 毫秒... ...
  • C#中的List集合在排序的時候,如果不使用Lambda表達式進行排序的話,一般調用Sort()方法進行排序,如果希望Sort()方法排序後的結果跟我們預想的效果一致或者按照我們自定義的規則排序,則需要將對應的實體繼承IComparable介面來實現。 MSDN上給IComparable介面的定義為 ...
  • 阿裡雲突發性能伺服器1核2G的t5伺服器在高資源利用率的情況下運行一段時間後,發現伺服器反應變得很慢,通過windows遠程桌面連接上伺服器後查看到CPU性能一直在90%到100%之間,無法降下來。前期剛上線應用的時候不卡頓,運行一段時間後出現伺服器卡頓,CPU利用率居高不下,此種情況很有可能是因為 ...
  • 在大前端盛行的今天,似乎前後端分離的開發模式才是大勢所趨,而SPA的概念更是應運而生。現在隨便構建一個web應用程式如果你不是使用SPA的話,就會感覺有點low,但是真的是這樣嗎?今天這篇文章我們就來一起探討下,構建現代web應用時該如何進行選擇。 作者:依樂祝 博客園鏈接:https://www. ...
  • 單步調試時發現,行“176”的cookie的值是null,也就是原先新建的cookie在這裡沒有成功request,解決的辦法就是在後面添加respose.add: ...
  • 在搜索引擎優化領域,靜態網頁對於SEO的優化有著很大的好處,因此很多人就想把自己的網站的一些網頁做成偽靜態。我們現在在網路上發現很多博客網站、論壇網站、CMS內容管理系統等都有使用偽靜態這一種情況,偽靜態在地址欄看到的URL地址是以.html結尾的,但實際上卻是一個動態的網頁,後臺可能是Asp.ne ...
  • 在C#中可以使用MemoryStream類、BinaryFormatter類等來操作圖片,將圖片讀取到二進位數據流中,最終轉成二進位數據流進行調用,詳細的實現如下方法所示。 備註:原文轉載自C#將圖片轉換為二進位流調用_IT技術小趣屋。 ...
  • C#操作MySQL的類 C#操作MySQL的類 [C#cāozuò MySQL de lèi] C# operation MySQL class C#操作MySQL的類 [C#cāozuò MySQL de lèi] C# operation MySQL class C#操作MySQL的類 [C#c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...