第八周LINUX學習筆記

来源:https://www.cnblogs.com/gohrx/archive/2019/04/22/10748298.html
-Advertisement-
Play Games

vsftpd丶NFS丶SAMBA nfs基於rpcsamba基於cifs(smb) DRBD:ftp:File Transfer protocol 文件傳輸協議 兩個連接: tcp:命令連接 tcp:數據連接 在被動模式下數據傳輸埠是隨機的除非自己指定 主動模式:伺服器端通過20埠主動連接客戶端 ...


                                   vsftpd丶NFS丶SAMBA

nfs基於rpc
samba基於cifs(smb) 
DRBD:

ftp:File Transfer protocol 文件傳輸協議

   兩個連接:
       tcp:命令連接
       tcp:數據連接 在被動模式下數據傳輸埠是隨機的除非自己指定
            主動模式:伺服器端通過20埠主動連接客戶端,
            被動模式:客戶端使用自己與伺服器端建立連接。
      預設情況下FTP協議使用TCP埠中的 20和21這兩個埠其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作為傳輸數據的埠與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸埠就是20;如果採用被動模式,則具體最終使用哪個埠要伺服器端和客戶端協商決定。   

防火牆上連接追蹤

數據要流式化
   文本:文件流
   二進位

c/s
   Server:
      wu-ftpd(華盛頓大學的fdtp)
      proftpd
      pureftp
      vsftpd Very Secure ftpd
      iis
      ServU

    Client:
      GUI
        windows
         flashfxp
         cuteftp
         filezilla(開源)
        linux
         gftp
       CLI
         ftp
         lftp
         wget
         lftpget
用戶認證:
    系統用戶
    虛擬用戶
        hash file
        mysql
    匿名用戶

數據傳輸安全
    sftp:ssh提供的基於ssh協議的ftp
    ftps:基於ssl的ftp

相應碼:
  1XX:信息碼
  2XX:成功狀態碼
  3XX: 進一步提示補全信息的狀態碼
  4XX:客戶端錯誤,臨時錯誤
  5XX: 伺服器端錯誤,永久性錯誤

安裝vsftpd
    /etc/pam.d/vsftpd:認證文件
        pam:Plugable Authentication Module 插件式認證模塊

        nsswith:名稱解析框架
            模塊化:/lib64/linbnss*,/usr/lib64/libnss*
            配置文件:/etc/nsswitch.com

        pam:認證框架
             模塊化:/lib64/security/pam*.so
             配置文件:/etc/pam.conf和/etc/pam.d/*

        服務腳本:/etc/rc.d/init.d/vsftpd
        配置文件:/etc/vsftp/vsftpd.conf
        主程式文件:/usr/sbn/vsftpd
        數據文件:/var/ftp


        空閑頂格寫:
        等號前後沒有空格
        anonymous或ftp

對於ftp訪問ftp伺服器時應該對其chroot
    禁錮用戶與其家目錄中
chroot_local_user={yes|no} 禁錮用戶,預設為no
 需要禁錮開啟為yes,安全

chroot_list_enable={yes|no}
chroot_list_file=/etc/vsftp/chroot
不禁錮全部用戶,將禁錮的用戶保存在/etc/vsftp/chroot
    每行一個用戶
兩項不能同時使用

local_enable={yes|no}是否需要本地用戶登錄
匿名用戶的配置
anonymous_enable=YES,啟動虛擬用戶登錄
anon_upload_enable=YES 允許虛擬用戶有寫許可權
anon_other_write_enable=YES 允許虛擬用戶有刪除許可權
anon_mkdir_write_enable=YES 允許虛擬用戶創建文件夾許可權

註意:啟用寫入功能時,ftp用戶對相應的本地文件系統也有相應的寫入許可權;
  生效的許可權取決於文件系統許可權和服務許可權的交集

實現用戶的歡迎信息login banners
ftpd_banner=
banner_file=banner文件
切換目錄式的歡迎信息
dirmessage_enable=YES
    在目錄中創建.messages

vsftp控制登陸系統用戶的機制
    /etc/vsftpd/ftpusers中的用戶不允許使用ftp伺服器,這是在/etc/pam.d/vsftpd中定義的

user_list配置文件有兩種用法
    黑名單: 裡面的無法登陸,不寫在裡面的可以登陸
        userlist_enable=YES
        uselist_deny=YES
    白名單:裡面的可以登陸,不寫在裡面的無法登陸
        userlist_enable=YES 
        uselist_deny=NO

連接限制
    max_clients:最大併發連接數
    max_per_ip:每IP可同時發起併發請求

傳輸速率:
    anon_max_rete: 匿名用戶的傳輸速率,單位為“位元組/秒”
    local_max_rate:本地用戶傳輸速率,單位為“位元組/秒”

上傳文件的umask:
     anno_umask:匿名用戶上傳文件的umask;
     local_umask:
修改匿名用戶上傳文件的屬主和屬主
     chown_uploads=YES
     chown_username=用戶名

實現虛擬用戶:使用虛擬用戶的原因是因為使用系統用戶不安全,增刪重要文件之類的。
   所有的虛擬用戶會映射成一個系統用戶,訪問時的文件目錄是為此系統用戶的家目錄

   虛擬用戶
       hash編碼的文件:
           奇數行為用戶名,偶數行為密碼
       關係型資料庫:
          pam-mysql(第三方模塊)實現認證
   虛擬用戶的許可權
        user_config_dir=文件夾
        在文件夾中創建虛擬用戶同名的的文件
        在虛擬用戶的文件中寫入許可權


總結:
    ftp:命令和數據
    ftp數據傳輸:文本和二進位
    數據連接的工作模式:主動和被動

    /etc/vsftpd
      匿名用戶的許可權
      本地用戶的訪問許可權
      本地用戶禁錮於家目錄
      本地用戶黑白名單
      歡迎信息
      上傳的umask
      上傳文件的速率
      上傳文件的屬主
      最大併發連接數
      虛擬用戶
      日誌

NFS:network file system
V1
V2
V3
V4
為nfs提供監聽的
      2049/tcp
      2049/udp


NIS:Nerwork Infomction Service
  NIS+
  不完全相容
Kerberos
LDAP


RPC:portmapper
     監聽
        111/tcp
        111/udp

     各基於RPC提供的進程,在啟動時要向rpc註冊監聽在某埠上,rpc會從各未使用的埠中挑選一個埠給此進程監聽,即半隨機
NFS:

安裝配置:
   nfs-utils


三個關鍵進程
moutnd 掛載守護進程,負責客戶端來源認證進程
nfsd:文件讀寫
idmapd:id映射進程

/etc/exports,建議直接導出一個分區(即給NFS文件系統一個單獨的分區會更好)
文件系統  客戶端1(文件系統導出屬性) 客戶端2(文件系統導出屬性)    
    文件系統
    客戶端:
       IP:172.16.100.7
       Hostname: *.magedu.com
       IP networks: 長短格式都可以
    文件系統導出屬性:
       rw:讀寫
       async:非同步
       sync:同步
       root_squash:壓縮root用戶,基於imapd,將root通過網路訪問時轉換為nfsnobody用戶
       no_root_squash:不壓縮用戶
       all_squash:壓縮所有用戶
       anonuid,anongid:指定



showmount
   -a 全部 在nfs伺服器端顯示所有的掛載會話
   -d 文件 在伺服器端執行,顯示那個導出的文件系統被那些客戶端掛載過
   -e 共用,在客戶端執行,探查某主機所導出的nfs文件系統,使用格式為showmount -e Server_IP


exportfs導出nfs文件(可以不用重啟服務,避免瞭如果重啟服務正在傳輸一些文件的丟失)
     -a:操作所有文件系統
     -ra:重新導出所有文件系統
     -ua:取消導出的所有文件系統
     -v:顯示詳細信息

如果客戶端要啟用開機自動掛載NFS,掛載的設備為伺服器端IP:/nfs文件系統名 ,但是如果伺服器端需要導出NFS文件系統,那麼就得再掛載選項裡加入defaults,_netdev
保證其不會一直請求掛載。

nfs的輔助進程mountd等監聽在固定埠上,可以通過在編輯/etc/sysconfig/nfs等參數來實現

samba:      
smb:Service Message Block smbd tcp:445
NetBIOS:本地名稱解析 nmbd udp:137 138 tcp:139
winbindd:window的綁定進程
註意:samba伺服器的啟動時 nmb 名稱解析,和smb協議 都應該啟動
AD(LDAP)
  Active Directory
DC

UNC: \\Server\Shared

所謂的samba是因為WINDOS間只支持smb協議之間進行進程調用,而LINUX間只支持RPC下的NFS所以為了兩者能夠通信,所以在LINUX上有人開發了SAMBA支持兩者之間的進程調用。
samba的用戶:
    1.系統用戶
    2,密碼是獨立的,非為/etc/shadow中的密碼

    使用smbpasswd -a 用戶名 設置訪問smb的密碼

    密碼文件被加密後存在在一個特殊路徑下,ls -a 也無法查看、


    預設訪問的是用戶的家目錄。 那麼如何配置一個公共的共用目錄提供訪問。
smbclient:
    檢查伺服器上的共用:
       sambclient -L Server -U username
    以互動式模式連入伺服器的某共用
       smbclient //Server/Shared -U username
vim /etc/smb.comf
新建一個共用文件
    [shared name] 共用名
        comment= 滑鼠懸停在文件夾上線顯示的機械能系
        path 共用文件夾路徑
        read only =
        writeable =
        browaeable =
        public =
        guset ok = 是否允許來賓賬號訪問。
        write list = 可寫用戶列表
           用戶名:hadoop
           用戶組:@groupname,+groupname

測試配置文件語法錯誤,並顯示最終生效的配置
     testparm

掛載cifs文件系統
mount -t cifs //IP/Shared /path/to/mount_point -o username=smbuser

                              iptables

iptables:基於軟體的形式實現的一種防火牆的軟體程式
   Firewall:工作在主機或網路邊緣,對進出的報文按事先定義的規則進行檢查,並且由匹配到的規則進行處理的一組硬體或軟體,甚至可能是兩者的組合

主機防火牆:工作於主機邊緣,只能對一臺主機起到保護作用
網路防火牆:工作於網路邊緣,對多台主機起到保護作用

一般來講網路防火牆對多台主機起保護作用,那麼符合不同主機的不同功能的報文都會放行,而當到達某個主機的時候 就應該用主機防火牆來進一步隔離。因此 很多時候都是主機防火牆和網路防火牆配合工作的。
 
網路層:網路防火牆
應用層:網關

IDS:入侵檢測
   HIDS:OSSEC  主機型入侵檢測
   NIDS:snort  網路型入侵檢測
   Filesystem:tireware  文件系統級別的入侵檢測

IPS:入侵防禦系統+Firewall 與防火牆聯動

honeypot:蜜罐 做誘補工作

系統評估安全工具:
  Nessus,nmap

BTlinux
 
  rootkit

烏雲平臺

iptables/netfilter:基於網路層的防火牆,連接追蹤(狀態檢測)

ipfw ipchains iptables

iptables:防火牆規則編寫工具
    netfiter:網路過濾器,是一個框架
        hook_function

    PRERROUTING 路由前    主要做目標地址轉換
    INPUT
    OUTPUT
    FORWARD
    POSTROUTING 路由後    主要做源地址轉換
   
 這裡稍微解釋一下:一個報文進來 發現目標地址並不是本機,那麼通過路由 指向FORWARD
 這時候不應該做轉換。因為還沒有指向哪個地址 例如有多塊網卡的情況下。所以說FORWARD是用來判斷指向哪塊網卡的,當到達POSTROUTING時才進行源地址轉換,將源地址轉換為網關的地址,轉發到目標地址的主機上去。然後當響應報文進來的時候,目標地址肯定是本機,但是實際上是要將報文響應給用戶的。 於是PRERROUTING就發揮作用了,將目標地址進行轉換,轉換為用戶機。

filter:過濾:做報文篩選  私有地址發送的報文 是不會被送回來的,就像游覽網站時,發送過去的報文是不會被返回的。除非做代理和地址轉換。

NAT:Network Address Transltion 將報文中的源地址和目標地址 轉換為另外的地址
     DNAT
     SNAT

mangle:對報文進行修改,不實現過濾也不實現地址轉換,只對報文中的一些信息進行修改,然後重新封裝。因此在任何位置都能有這個功能
raw:

FORWARD:
    filter
    mangle
INPUT
    filter
    mangle
OUT
    filter
    mangle
    nat
PREROUTING
     mangle
     nat
POSTOUTING
     mangle
     nat

將控制強的放在前面,應用訪問頻繁的也要放在前面

四表:
   fileter,net,mangle,raw
五鏈
   PREROUTING(路由前) INPUT FOREARD OUTPUT POSTROUTING(路由後)

表和鏈的對應關係
     filer:INPUT,FORWARD.OUTPUT
     nat:PREROUTING OUTPUT POSTROUTING
     magle:PREROUTING FORWARD POSTROUTING INPUT OUTPUT

規則:檢查條件,處理機制,如果規則太多了,可能又將規則串為一條自定義的鏈,併在檢查時將報文送給自定義的鏈檢查後再送回原先的鏈繼續檢查

通:白名單,預設為堵,只對能識別的進行放行
堵:黑名單,預設為通,只對能識別的進行阻截

檢查條件:
   IP:SIP,DIP
   TCP:SPORT,DPORT,FLags
   UDP:SPORT,DPORT
   ICMP:ICMP-TYPE

擴展機制:
  time string state(connection-tracking)連接追蹤

處理機制:
    DROP(丟棄),
    REJECT(拒絕,並返回)
    ACCEPT(允許)
    SNAT
    DNAT
    RETURN(返回)
    REDIRECT(埠轉發)
    LOG(只記錄日誌)

mangle:做防火牆標記

自己在網上找的關於TCP連接時3次握手和斷開時四次握手的必要性https://www.cnblogs.com/qiaoconglovelife/p/5733056.html(連接時的一些數值(+ -號可能沒標明)


如何寫規則
   -t 表 -L 列出 -n 以數值方式顯示
  iptables [-t table] -N chain
     創建一條自定義的空規則鏈
  iptables [-t table] -X chain
     產出一條自定義的空規則鏈
  iptables [-t table] -E old-chin-name new-chain-name
    為鏈修改名
 iptables [-t table] -P chain—name target
    為鏈指定預設策略,修改預設的屬性
  iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
  註意當省略"-t表名"時,預設表示操作filter表
  -F 清空鏈中的規則 可以指定哪個鏈,或者哪個鏈中的哪些規則
     規則由編號,在鏈中自上而下,從1開始
  -L list 列出表中的所有規則
     -n:數字格式顯示ip和port
     -v:顯示信息,
        pkts:packets,被本規則所有匹配到的報文的個數
        baytes:被本規則所匹配到的所有報文的大小子和,單位是位元組,會執行單位換算
         target:目標,即處理機制
         port:協議一般為(TCP|UDP|ICMP)
         opt:可選項
         in:數據包的流入埠
         out:數據包的流出介面
         scource:源地址
         destination:目標地址
      -vv:
      -vvv:更加詳細
      -x:exactly:精確值,不執行單位換
      --line-nambers:顯示各規則的行號

  -Z:zero,清零:
    把規則的計數器清零

  -P  設置指定鏈的預設策略
      iptables -P INPUT DROP
iptables [-t table] {-A|-D} chain rule-specification
  -A:append,附加一條規則
     rule-specification
     匹配條件 -j 處理機制

    匹配條件:
      通用匹配
     -s 匹配原地址,可以IP,也可以網路地址:可以使用!操作符取反,!172.168.0.0/16 相當於 --src,或 --source
     -d  匹配目標地址,可以IP,也可以網路地址:可以使用!操作符取反,!172.168.0.0/16
     -p  匹配協議,通常只能使用{TCP|UDP|ICMP}三者之一
     -i  數據報文流入的介面,通常只用於INPUT,FORWARD和PREROUTING
     -o  數據報文流出的介面,通常只用OUTPUT,FORWARD和POSTROUTING

     保存規則:
       service iptables save
        規則會被保存至/etc/sysconfig/iptables文件中:
        預設,start時也會讀取次文件中的內容篇日誌規則
        iptables-save > /path/to/some_rulefile 保存iptables至別的位置
        iptables-restore < /path/to/some_rulefile 從自定義的位置讀取並使之生效
規則命令:
  -A:添加
  -D:刪除
  iptables [-t table] -D chain rulenum(規則所在行數)
    當一條被刪除,後續的條目會被補上
 
  插入規則
  iptables [-t table] -I chain [rulenum] rule-specification
  不帶規則行數 預設為第一行
  
  替換規則(覆蓋指定規則)
  iptables [-t table] -R chain rulenum rule-specification

  顯示指定鏈上的規則添加命令
  iptables [-t table] -S [chain [rulenum]]

擴展匹配
    隱含擴展:使用-p {tcp|udp|icmp}指定某特定協議後,自動能夠對協議進行的擴展
       -p tcp
          --dport m[-n],匹配的目標埠,可以是連續的多個埠
          --sport:m[-n],匹配的源埠,可以是連續的多個埠
          --tcp-flags
           URG PSH PST SYN ACK FIN
                        例如後面加上  rst,syn,ack,fin syn
           那麼這個意思就是 必須syn為1 其他的必須為0  另外還能寫成ALL,NONE
       -p udp
          --dport m[-n],匹配的目標埠,可以是連續的多個埠
          --sport:m[-n],匹配的源埠,可以是連續的多個埠
       -p icmp
            --icmp-type 8是ping請求 0是ping響應
            例子:放行ping其他主機
          iptables -A INPUT -d 192.168.48.128 -p icmp --icmp-type 0 -j ACCEPT
          iptables -A OUTPUT -s 192.168.48.128 -icmp --icmp-type 8 -j ACCEPT


    顯式擴展:必須要明確指定的擴展模塊
      -m 擴展模塊名稱 --專用選項1 --專用選項2

      multiport:多埠匹配,一次指定多個離散埠
        --source-ports --sports ports{port1 port2}
        --destination-ports, --dports
      例子iptables -A INPUT -d 192.168.48.128 -p tcp -m multiport --dports 21,80 -A ACCEPT

     iprange:ip地址服務
       [!] --src-range from [-to]
       [!] --dst-range from [-to]
      例子:
      iptables -A INPUT -d 192.168.48.128 -p tcp --dport 23 -m --src-range from 192.168.48.129-192.168.48.130 -j ACCEPT
      iptables -A OUTPUT -s 192.168.48.128 -p tcp --dport 23 -m iprange --dst-range from 192.168.48.129-192.168.48.130 -j ACCEPT

     time 指定時間範圍
        --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
        --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

        --timestart hh:mm[:ss]
        --timestart hh:mm[:ss]

        [!] --weekdays day[,day....]

        例子iptables -A INPUT -d 192.168.48.128 -p tcp -dport 80 -m time --weekdays 1,2,3,4,5 --timestart 8:00 --timestop 21:00 -j ACCEPT

     string 字元串匹配
        --alog {bm|kmp} :字元匹配查找時使用的演算法 必要選項
        --string “STRING” :要查找的字元串 必要選項
        --hex-string "HEX-STRING" 要查找的字元,先編碼成16進位格式

        例子iptables -I OUTPUT -s 192.168.48.128 -p tcp -sport 80 -m string --alog bm --string "hello" -j DROP
        例如對游覽器訪問限制含有字元串“hello"不能通行
        另外很重要的一點是 這裡選擇了插入的方式,並且沒有選定插入的行數。說明插入的是第一行。因為這裡相比於其他阻截方式更為嚴格,即含有字元的限制。所以說如果你有對HTTP請求的一些普通限制,

      connlimit:每IP對指定服務的最大併發連接數
       [!] --connlimit-above

      limit:報文速率控制
        --limit number[/second|/minute|/hour|/day]
        --limit-burst # number 峰值
        hping3:安裝此包,做測試

      state:狀態追蹤
          ip_conntrack,nf_conntrack 通過這些模塊實現對整個連接的追蹤。內部有個表記錄各個連接的各種信息。

          !註意:內部用來存儲記錄的空間是有限的,例如只能存儲1000個記錄連接,那麼下一個連接進來的時候就不會被記錄進來。這並不是沒有記錄信息那麼簡單,這造成了整個伺服器的拒絕連接請求。所以要將這部分記憶體空間加大。

          netfilter:會話
           這其中有個自己進行控制的連接狀態記時器,只要新連接進來成為NEW,在連接狀態計時器倒計時為0前,一直處於ESTABLISHED狀態,這種可以使用與任何協議(與TCP三次握手的ESTABLISHED有區別)
         --state
             NEW  新的連接
             ESTABLISHED 連接中
             RELATED 即一些連接之間是有依賴關係的(特別適用於被動模式下的FTP服務)
             INVALID  無效連接

             狀態匹配的簡單介紹:例如我們對HTTP的INPUT的鏈做了限制,但是OUTPUT鏈是無法做限制的。因為我們HTTP的回覆是面向全體的。於是 一些木馬程式攻破了INPUT鏈,通過控制了新的程式埠並從OUTPUT出去並控制了主機。所以這時候基於狀態追蹤就能很好的防護,INPUT鏈 只能夠接受NEW和ESTABLISHED 這兩種狀態的連接。而OUTPUT鏈只接受ESTABLISHED 狀態的連接 。這樣就起到了很好的防護作用

            
      調整連接追蹤功能所能容納的最大連接數
          cat /proc/sys/net/nf_conntrack_max
              定義了連接追蹤的最大值,因此,建議按需調大此值
          cat /proc/net/nf_conntrack
             記錄了當前追蹤的所有連接
            
          cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
          超時時間  這個超時時間比較難定義 定義少了在用戶訪問時間挺長時就會給你自動斷開,定義長了,有大量用戶訪問的網站將出現一些用戶無法訪問的跡象

          因此state 是一把雙刃劍,他能夠對安全起更好的作用,但是對一些大流量的網站來說需要謹慎開啟

          法則:
          1.對於進入狀態為ESTABLISHED都應該放行 ,即將狀態為ESTABLISHED的規則放置在input規則鏈中的第一個,只要是ESTABLISHED的連接都可以直接放行,而後續規則則嚴格檢查NEW狀態的。但是後續的一些更嚴格的規則比如速率控制的規則將無法生效。所以應該對規則進行優化。
          2.對於返回狀態為ESTABLISHED都應該放行
          3.嚴格檢查進入的狀態為NEW的鏈接
          4.所有狀態為INVALID都應該拒絕

          規則優化的一些原則:以下原則有等級
          1.將有更加嚴格要求的規則放在最前面
          2.將一些頻繁需要檢查的規則合併,但同時最好也要修改一下PROT即協議類型(如對INPUT鏈ESTABLISHED狀態應該全部放行)
          3.同一些協議的普通的 沒有嚴格要求的協議應該合併

      -j target
            RETURN:返回調用鏈
      例如我自定義了一個鏈 iptables -t filter -N clean_in
      在寫好這個鏈的一些規則後,如 iptables -A clean_in -d 192.168.48.128 -p tcp --tcp-flags ALL ALL -j DROP
      對自定義的鏈進行返回 iptables -A clean_in -d 192.168.48.128 -j RETURN
      主鏈對自定義的鏈進行調用 iptables -A INPUT -d 192.168.48.128 -j clean_in

如何放行工作與被動模式的ftp服務(因為FTP被動模式下的數據傳輸埠是隨機的,除非自己特殊指定)
   1、確保iptables載入ftp協議支持的模塊,ip_nat_ftp,ip_conntrack_ftp
      編輯/etc/syconfig/iftables-config文件,定義如下參數:
      IPTABLES_MIDULES="ip_nat_ftp ip_conntrack_ftp"
    2。放行請求報文的RELATED和ESTABLISHED狀態,放行響應報文的ESTABLISHED狀態

 

                          iptables的nat  

-m state:追蹤連接狀態
   模板:記憶體中會維持一個空間
       NEW
       ESTABLISHED
       RELATED
       INVALID
在前段的伺服器中儘量不要開啟追蹤連接

iptables子命令
  規則:-A,-I,-D,-R
  鏈:-N,-X,-F,-Z,-E,-P -S
      通:預設 DROP
      堵:預設ACCEPT
  顯示:-L -S
      -L
       -n -v -x --line-numbers

  規則定義:iptables -t table -A|-I|-R chain 匹配條件 -j target
      匹配條件
         通用匹配:-s -d -i -o -p
         擴展匹配
             隱含擴展
               -p tcp
                --sport --dport --tcp-flags
                --syn
               -p udp
                 --sport --dport
               -p icmp
                  --icmp-type
                    echo-request 8
                    echo-reply 0
              顯示擴展:
                 -m state
                    --statr
                 -m multiport
                    --sprots --dports  --ports
                 -m iprange
                    --src-range --dst-range
                 -m string
                    -algo {bm|kmp} --string --hex-string
                 -m connlimit
                   ! --connlimit-above
                 -m limit
                   --limit n(/second|/minute|/hour|/day), --limit-burst
                 -m time
                    --datestart --datestop
                    --timestart -- timestop
                    --weekdays
           -j
             ACCEPT,DROP,REJECT,LOG,REDIRECT,SNAT,DNST,MASQUERADE,MARK,RETURN,自定義
四表:raw mangle nat filte
五鏈:PREROUTING INPUT FOEWARD OUTPUT POSTOUTING

iptables-save iptables-restore

主機防火牆:INPUT OUTPUT
網路防火牆:FORWARD
    路由:


地址屬於內核,地址當前屬於主機的都給予響應

路由:對Linux主機而言,設定/proc/sys/net/ipv4/ip_forward的值為1,即為開啟路由


iptables -A FORWARD -s 172.16.0.0/16 -d 192.168.20.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -d 172.16.0.0/16 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 192.168.20.12 -p tcp -m multiport 22,80 -m --state NEW -j ACCEPT

     路由表的生成
       靜態:手動添加
       動態:基於路由協議學習,RIP2 OSPF
NAT:網路地址轉換
     A:10
     B:172.16-172.31
iptables -A FORWARD -s 172.16.0.0/16 -d 192.168.20.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -d 172.16.0.0/16 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 192.168.20.12 -p tcp -m multiport 22,80 -m --state NEW -j ACCEPT


     C:192.168.0-192.168.255

     NAT: 要註意NAT技術和路由的區別 。NAT技術是用於內網和外網的訪問的,而路由主要實現的是地址轉向
        過載技術
        Basic NAT:靜態NAT
        NAPT:動態NAT,網路地址埠轉換
             源地址轉換:SNAT 用於內網主機訪問互聯網
             目標地址轉換:DNAT
             讓互聯網上主機訪問本地內網上的某伺服器上的服務

        iptables基於SNAT和DNAT這兩個目標實現地址轉換技術
            -j SNAT --to-source SIP
               規則添加:POSTROUTING鏈
          iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-souer 192.168.48.128
            -j MASQUERAADE  動態獲取 適用於主機的IP是動態分配的。缺點是性能降低

            -j DNAT --to-destination DIP{:PORT}
            支持埠映射
          iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.48.128

          這邊強調一下埠,埠意義是指向的某種服務。那麼比如一個用戶想要去訪問本地內網上的某伺服器上的http服務。這邊假設用戶主機為A 作為路由以及NAT地址轉換的主機為B 提供服務的主機為C。 我們應該訪問主機B的IP地址加上不應該為80埠號的地址,因為若為80埠,那麼意思將會是訪問B主機的http服務,然後將IP轉換時變為 C主機的IP號加80埠號。因此在B主機上應該將提供http服務的80埠和提供轉向的埠22022做好區分
          具體例子
          iptables -t nat -A PREROUTING -d 192.168.48.128 -dport 22022 -j DNAT --to-destination 192.168.48.129:22

          所以:FORWARD僅僅是做一個對地址路由過濾的作用,而NAT是對地址進行轉換的作用 對網路進行過濾的話應該在FORWARD上就進行了
        基於net表
           PREROUTING
           POSTROTING
           OUTPUT
     Proxy(代理):                          

                           rsync

rsync:remote sync
cp scp(rsync不具備加密) rsync對文件夾之間會逐一比較是否有不同,若有不同或缺失則替換新文件。沒有不同的文件則不理會。所以比較快速
rsync命令的工作模式
    第一種:shell模式,也稱作本地模式
    第二種:遠程shell模式,此時可以利用ssh協議承載其數據傳輸過程
    第三種:列表模式,其工作方式與ls相似,僅列出源的內容:-nv
    第四種:伺服器模式,此時,rsync可以工作在守護進程,能夠接收客戶端的數據請求;在使用時,可以在客戶端使用rsync命令把文件發送到守護進程,也可以像伺服器請求獲取文件

 rsync有許多選項:
      -n:測試,在不確定命令是否能按照意願執行時,務必要實現測試
      -v:詳細輸出模式,--verbose
      -q:--quiet,靜默模式
      -c:--checksum,開啟校驗功能,強行對文件傳輸進行校驗
      -r:--recursive,遞歸複製
      -a: --archives.歸檔,保留文件的原有屬性
      -p:--perms 保留文件的許可權
      -t: --times 保留文件的時間戳
      -l:--links 保留文件的符號鏈接
      -g:--group保留文件的屬組
      -o:--owner 保留文件的屬主
      -D:--devices 保留設備文件

      -e ssh:表示使用ssh協議作為繼承
      -z:對文件壓縮後傳輸
      --progress:顯示進度
     

註意:rsync命令使用中,如果源參數的末尾有斜線,只會複製指定目錄的內容,而不複製目錄本身,沒有斜線,則會複製目錄本身。包括目錄
rsync -r /mydata/data /bachups/ 會把目錄data直接同步至/bakups目錄中
rsync -r /mydata/data/ /backups/:會把目錄data/中的內容至/backups目錄中

例子基於ssh協議將本地目錄同步到目標主機: rsync -e ssh -r /etc [email protected]:/tmp/
同時也可以將目標主機的同步到本地rsync -e ssh -r [email protected]:/etc /tmp/

本地cp
rsync 源目錄 目標地址
查看幫助 man rsyncd.conf

配置rsync以daemon的方式運行
1.設定rsync伺服器端:
  1)安裝超級守護進程 xinetd
    yum -y install xinetd
  2)為rsync提供配置文件  具體的配置還得看官方文檔
     配置文件為/etc/rsync.conf
        定義一個全局配置和多個rsync共用配置
        #Global Settings
        uid = nobody  以哪個用戶去運行進程
        gid = nobody
        use chroot = no(是否禁錮用戶家目錄)
        max connections = 10(最大連接數)
        strict modes = yes(是否完全檢查)
        pid file = /var/run/rsyncd.pid
        log file = /var/log/rsyncd.log
        #Directory to be synced
        [synced_name]
        path = /path/to/some_dir
        ignore errors = yes(是否忽略錯誤)
        read only = no(只讀)
        write only = no(只寫)
        hosts allow = white_list_ip/net 白名單
        hosts deny = black_list_ip/net 黑名單
            說明:
               1.預設規則為允許訪問,二者都不出現時
               2.只出現hosts allow:定義白名單;但沒有被匹配到的由預設規則處理,即為允許
               3,只出現hosts deny:定義黑名單;出現在名單中的都被拒絕
               4二者同時出現,先檢查hosts allow,如果匹配就allow,否則,檢查hosts deny 如果匹配則拒絕,如二者均無匹配,則使用預設的,即允許
        list = false 是否允許列出名單
        uid = root(以哪個用戶去操作文件)
        gid = root
        auth users = username (允許的用戶)
        secrets file = /etc/rsync.passwd 用戶密碼的存放位置

       3)配置密碼文件/etc/rsync.passwd
       username:password
       文件許可權要設置為600

       4)配置服務能夠啟動
          chkconfig rsync on
          service xinetd start


          監聽與873/tcp

2.在客戶端做測試
 
 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


rsync --password-file=/etc/rsyncd.passwd install.log [email protected]::mydata 將本地文件發送到服務端
rsync [email protected]::mydata/*  /etc 但是將服務端文件同步到本機需要將服務端目錄加個*
如果客戶端本地提供了密碼文件那麼就不需要去輸密碼,而沒有提供的話則每次都需要輸相應的密碼。


如果需要做周期性操作,定義crontab

 

nfs基於rpc
samba基於cifs(smb)  
DRBD:

ftp:File Transfer protocol 文件傳輸協議

   兩個連接:
       tcp:命令連接
       tcp:數據連接 在被動模式下數據傳輸埠是隨機的除非自己指定
            主動模式:伺服器端通過20埠主動連接客戶端,
            被動模式:客戶端使用自己與伺服器端建立連接。
      預設情況下FTP協議使用TCP埠中的 20和21這兩個埠其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作為傳輸數據的埠與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸埠就是20;如果採用被動模式,則具體最終使用哪個埠要伺服器端和客戶端協商決定。    

防火牆上連接追蹤

數據要流式化
   文本:文件流
   二進位

c/s
   Server:
      wu-ftpd(華盛頓大學的fdtp)
      proftpd
      pureftp
      vsftpd Very Secure ftpd
      iis
      ServU

    Client:
      GUI
        windows
         flashfxp
         cuteftp
         filezilla(開源)
        linux
         gftp
       CLI
         ftp
         lftp
         wget
         lftpget
用戶認證:
    系統用戶
    虛擬用戶
        hash file
        mysql
    匿名用戶

數據傳輸安全
    sftp:ssh提供的基於ssh協議的ftp
    ftps:基於ssl的ftp

相應碼:
  1XX:信息碼
  2XX:成功狀態碼
  3XX: 進一步提示補全信息的狀態碼
  4XX:客戶端錯誤,臨時錯誤
  5XX: 伺服器端錯誤,永久性錯誤

安裝vsftpd
    /etc/pam.d/vsftpd:認證文件
        pam:Plugable Authentication Module 插件式認證模塊

        nsswith:名稱解析框架
            模塊化:/lib64/linbnss*,/usr/lib64/libnss*
            配置文件:/etc/nsswitch.com

        pam:認證框架
             模塊化:/lib64/security/pam*.so
             配置文件:/etc/pam.conf和/etc/pam.d/*

        服務腳本:/etc/rc.d/init.d/vsftpd
        配置文件:/etc/vsftp/vsftpd.conf
        主程式文件:/usr/sbn/vsftpd
        數據文件:/var/ftp


        空閑頂格寫:
        等號前後沒有空格
        anonymous或ftp

對於ftp訪問ftp伺服器時應該對其chroot
    禁錮用戶與其家目錄中
chroot_local_user={yes|no} 禁錮用戶,預設為no
 需要禁錮開啟為yes,安全

chroot_list_enable={yes|no}
chroot_list_file=/etc/vsftp/chroot
不禁錮全部用戶,將禁錮的用戶保存在/etc/vsftp/chroot
    每行一個用戶
兩項不能同時使用

local_enable={yes|no}是否需要本地用戶登錄
匿名用戶的配置
anonymous_enable=YES,啟動虛擬用戶登錄
anon_upload_enable=YES 允許虛擬用戶有寫許可權
anon_other_write_enable=YES 允許虛擬用戶有刪除許可權
anon_mkdir_write_enable=YES 允許虛擬用戶創建文件夾許可權

註意:啟用寫入功能時,ftp用戶對相應的本地文件系統也有相應的寫入許可權;
  生效的許可權取決於文件系統許可權和服務許可權的交集

實現用戶的歡迎信息login banners
ftpd_banner=
banner_file=banner文件
切換目錄式的歡迎信息
dirmessage_enable=YES
    在目錄中創建.messages

vsftp控制登陸系統用戶的機制
    /etc/vsftpd/ftpusers中的用戶不允許使用ftp伺服器,這是在/etc/pam.d/vsftpd中定義的

user_list配置文件有兩種用法
    黑名單: 裡面的無法登陸,不寫在裡面的可以登陸
        userlist_enable=YES
        uselist_deny=YES
    白名單:裡面的可以登陸,不寫在裡面的無法登陸
        userlist_enable=YES  
        uselist_deny=NO

連接限制
    max_clients:最大併發連接數
    max_per_ip:每IP可同時發起併發請求

傳輸速率:
    anon_max_rete: 匿名用戶的傳輸速率,單位為“位元組/秒”
    local_max_rate:本地用戶傳輸速率,單位為“位元組/秒”

上傳文件的umask:
     anno_umask:匿名用戶上傳文件的umask;
     local_umask:
修改匿名用戶上傳文件的屬主和屬主
     chown_uploads=YES
     chown_username=用戶名

實現虛擬用戶:使用虛擬用戶的原因是因為使用系統用戶不安全,增刪重要文件之類的。
   所有的虛擬用戶會映射成一個系統用戶,訪問時的文件目錄是為此系統用戶的家目錄

   虛擬用戶
       hash編碼的文件:
           奇數行為用戶名,偶數行為密碼
       關係型資料庫:
          pam-mysql(第三方模塊)實現認證
   虛擬用戶的許可權
        user_config_dir=文件夾
        在文件夾中創建虛擬用戶同名的的文件
        在虛擬用戶的文件中寫入許可權


總結:
    ftp:命令和數據
    ftp數據傳輸:文本和二進位
    數據連接的工作模式:主動和被動

    /etc/vsftpd
      匿名用戶的許可權
      本地用戶的訪問許可權
      本地用戶禁錮於家目錄
      本地用戶黑白名單
      歡迎信息
      上傳的umask
      上傳文件的速率
      上傳文件的屬主
      最大併發連接數
      虛擬用戶
      日誌

NFS:network file system
V1
V2
V3
V4
為nfs提供監聽的
      2049/tcp
      2049/udp


NIS:Nerwork Infomction Service
  NIS+
  不完全相容
Kerberos
LDAP


RPC:portmapper
     監聽
        111/tcp
        111/udp

     各基於RPC提供的進程,在啟動時要向rpc註冊監聽在某埠上,rpc會從各未使用的埠中挑選一個埠給此進程監聽,即半隨機
NFS:

安裝配置:
   nfs-utils


三個關鍵進程
moutnd 掛載守護進程,負責客戶端來源認證進程
nfsd:文件讀寫
idmapd:id映射進程

/etc/exports,建議直接導出一個分區(即給NFS文件系統一個單獨的分區會更好)
文件系統  客戶端1(文件系統導出屬性) 客戶端2(文件系統導出屬性)     
    文件系統
    客戶端:
       IP:172.16.100.7
       Hostname: *.magedu.com
       IP networks: 長短格式都可以
    文件系統導出屬性:
       rw:讀寫
       async:非同步
       sync:同步
       root_squash:壓縮root用戶,基於imapd,將root通過網路訪問時轉換為nfsnobody用戶
       no_root_squash:不壓縮用戶
       all_squash:壓縮所有用戶
       anonuid,anongid:指定



showmount
   -a 全部 在nfs伺服器端顯示所有的掛載會話
   -d 文件 在伺服器端執行,顯示那個導出的文件系統被那些客戶端掛載過
   -e 共用,在客戶端執行,探查某主機所導出的nfs文件系統,使用格式為showmount -e Server_IP


exportfs導出nfs文件(可以不用重啟服務,避免瞭如果重啟服務正在傳輸一些文件的丟失)
     -a:操作所有文件系統
     -ra:重新導出所有文件系統
     -ua:取消導出的所有文件系統
     -v:顯示詳細信息

如果客戶端要啟用開機自動掛載NFS,掛載的設備為伺服器端IP:/nfs文件系統名 ,但是如果伺服器端需要導出NFS文件系統,那麼就得再掛載選項裡加入defaults,_netdev
保證其不會一直請求掛載。

nfs的輔助進程mountd等監聽在固定埠上,可以通過在編輯/etc/sysconfig/nfs等參數來實現

samba:       
smb:Service Message Block smbd tcp:445
NetBIOS:本地名稱解析 nmbd udp:137 138 tcp:139
winbindd:window的綁定進程
註意:samba伺服器的啟動時 nmb 名稱解析,和smb協議 都應該啟動
AD(LDAP)
  Active Directory
DC

UNC: \\Server\Shared

所謂的samba是因為WINDOS間只支持smb協議之間進行進程調用,而LINUX間只支持RPC下的NFS所以為了兩者能夠通信,所以在LINUX上有人開發了SAMBA支持兩者之間的進程調用。
samba的用戶:
    1.系統用戶
    2,密碼是獨立的,非為/etc/shadow中的密碼

    使用smbpasswd -a 用戶名 設置訪問smb的密碼

    密碼文件被加密後存在在一個特殊路徑下,ls -a 也無法查看、


    預設訪問的是用戶的家目錄。 那麼如何配置一個公共的共用目錄提供訪問。
smbclient:
    檢查伺服器上的共用:
       sambclient -L Server -U username
    以互動式模式連入伺服器的某共用
    &

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

-Advertisement-
Play Games
更多相關文章
  • 最近在學習Liunx,從裝虛擬機到敲命令出了一些問題,95%的問題從搜索引擎都可以找到。本來想寫個虛擬機安裝步驟結果忘記截圖了,不過沒事,網上一大把。寫寫博文勒就是記錄下自己的成長,雖然現在還是個小白。同時也讓一起在學習的小伙伴們一起交流學習。 1.開啟虛擬機出現了“內部錯誤”,截圖如下 解決方法: ...
  • 1、begin #! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。 echo 命令用於向視窗輸出文本。 2、運行shell的2種方式 2.1、作為可執行程式 將上面的代碼保存為 test.sh,並 cd 到相應目錄: 2.2、作為解釋器參數 這種運行方式是,直 ...
  • ps 查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令 參數格式: UNIX格式:一個"-"開頭 BSD格式:沒有"-"開頭 GNU長格式:兩個"-"開頭 a # 顯示與終端相關的所有進程,包含每個進程的完整路徑 u # 顯示進程的用戶信息 x # 顯示與終端無關的所 ...
  • 註:本文僅針對Cortex-M3/4 系列進行講述。 在傳統的ARM處理器架構中,常使用SWP指令來實現鎖的讀/寫原子操作,但從ARM v6開始,讀/寫訪問在獨立的兩條匯流排上進行,SWP指令已無法在此架構下保證讀/寫訪問的原子操作,因此互斥訪問指令應運而生。本文結合項目中運用的相關方法,總結Cort ...
  • 什麼是雲計算? 雲計算是一種採用按量付費的模式,基於虛擬化技術,將相應計算資源(如網路、存儲等)池化後,提供便捷的、高可用的、高擴展性的、按需的服務(如計算、存儲、應用程式和其他 IT 資源)。 雲計算的基本特征? 自主服務:可按需的獲取雲端的相應資源(主要指公有雲); 網路訪問:可隨時隨地使用任何 ...
  • 一、 概念與由來 LVM:邏輯捲管理(Logical Volume Manager) 普通的磁碟分區管理方式在邏輯分區劃分好之後就無法改變其大小,當一個邏輯分區存放不下某文件時,這個文件因為受上層文件系統的限制,不能跨越多個分區存放,所以也不能放到多個磁碟上。 而當某個分區空間耗盡時,解決的方法通常 ...
  • 胖友,如果你的電腦是windows系統,下麵這十八招windows快捷鍵都不會,還敢說你會用windows? 說到windows的快捷鍵,當然不是只有ctrl+c,ctrl+v這麼簡單,今天我整理了一下一些windows常用的使用快捷鍵技巧,用於提高辦公效率。來吧,一起玩一下。 1,新建文件夾(Ct ...
  • if [ 1 -ne 1 ];then...fi這是指當1不等於1時執行then後的語句-eq:等於-ne:不等於-le:小於等於-ge:大於等於-lt:小於-gt:大於 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...