About me

Sunday, 16 October 2016

[Linux] Uncomplicated Firewall (UFW)

  
  Uncomplicated Firewall

  之前一直在用firewalld,用法請參考之前的文章『firewalld』,但是我的PC安裝的是Ubuntu阿,
  所以還是來研究一下UFW (Uncomplicated Firewall),然後將firewalld取代掉吧。

  在Linux的kernel裡面提供了一個過濾封包的subsystem稱為『netfilter』,主要用來決定外來或內部網路封包是否可以通過的規則,傳統操縱netfilter的介面是『iptables套件』,iptables提供了一套完全彈性和很好去組態的防火牆機制。但是想要精通iptables需要花很多時間,而且對於初學者來說想要使用iptables來設定你的防火牆是一件非常堅巨的任務。所以有許多的前端軟體被建立出來,每個都有不同的用途。

  UFW是Ubuntu上的防火牆(iptables)的前端CLI工具,提供了控制netfilter的framework,但是在其他的distros上面也可以安裝,如果不喜歡用CLI的話,可以使用『Gufw』這套GUI程式。而UFW是在Ubuntu 版本8.04 LTS (Hardy Heron)被引入的,後面的版本都可以直接安裝:


  - Ubuntu 12.04 LTS: 0.31.1-1
  - Ubuntu 14.04 LTS: 0.34~rc-0ubuntu2
  - Ubuntu 15.10: 0.34-2
  - Ubuntu 16.04 LTS: 0.35-0ubuntu2
  - Ubuntu Core: 0.35pre


  

Monday, 8 August 2016

[Linux] Firewalld

  

Firewalld 介紹 firewalld是一套Linux上的防火牆管理工具,最初版本是在2011年1月3號釋出的,穩定版直到2016年4月20號才釋出。主要提供Linux核心的iptables封包過濾(packet filtering)系統 - 『netfilter』的前端(front-end)功能。命名規則主要遵循著Unix的命名規則daemon的名字加一個『d』。這一套工具是由Python所寫的,之前原本想要移植到C++上面,但是這個計畫在2015年時就取消了。 官方上有firewalld的主要功能: - D-Bus API - Timed firewall rules - Rich Language for specific firewall rules - IPv4 and IPv6 NAT support - Firewall zones - IP set support - Simple log of denied packets - Direct interface - Lockdown: Whitelisting of applications that may modify the firewall - Support for iptables, ip6tables, ebtables and ipset firewall backends - Automatic loading of Linux kernel modules - Integration with Puppet

Tuesday, 2 August 2016

About Hugh

我是Hugh,因為發現自己hacker的本質,所以致力於當個專精的Linuxer,目前有相關Linux證照:
1. LPIC - Level2
2. RedHat - RHCE
3. Novell - SCLA


底下是我所有研究的分類連結,主要為『嵌入式系統』和『Linux 相關應用』,小文章我會放在這個blog裡,而架構比較大的文章我會放在gitbook上:


[Linux][Ubuntu][RedHat] bonding and teaming

Link aggregation

網路聚合(Link Aggregation),在電腦網路領域這個名詞代表的是將多重網路介面NIC(Network interfaces)用並列的方式結合來增進網路流量,也可以提高其容錯能力。主要的方式是建立一個LAG(Link Aggregation Group),而這個LAG群組底下會有多個實體的埠(port),每個port都有辦法處理高流量的封包,所以將這些port都結合在一起的話,就可以增加很大的彈性。

Thursday, 28 July 2016

[Linux][Red Hat] Network Teaming


在Linux裡面,可以透過將多個實體網路介面分配到單一個邏輯網路,這樣可以增加網路的流通量和穩定性。舉例來說,可以將兩個網路介面「eth0」和「eth1」組成一個群組「group1」,然後分配一個IP給這個群組,這樣的話,妳就有兩倍的流量了,又或者是你也可以設置成備用的用途,像是如果eth0壞掉了,這個群組會自動的改走「eth1」。

將兩個網路介面設定群組「Link aggregation」,可以藉由「teaming」或是「network bonding」來達成,但是在Red Hat的官方網站上,有比較兩邊的差異,請參考→ here for a full list of the differences.

我參考的這邊文章,主要講解如何用「team」將兩個不同的網路介面給設定成一個群組。

Sunday, 24 July 2016

[Linux] Single Mode

前言

使用Linux系統,有時候我們會忘記密碼,這時候就會無法登入,此時就必須要在開機時做一點手腳,然後由『Single mode』去修改密碼。
不過你也許會想,這樣不就是只要接觸到你電腦的人,都可以藉由這種方式來取得你的root嗎?@@,所以這就是為什麼有些公司的重要機房都會管制,以防止被竊取資訊(然後有些駭客就必須要爬杜拜塔進去機房.....,阿~對不起,我電影看太多了~~=.=)。

Menu entries可以藉由在開機之前修改參數,然後在傳遞這個參數到Kernel裡。要進行這個動作,就必須要用到『menu entry 編輯介面』,底下主要紀錄一下『Ubuntu』和『Redhat』怎麼進入Single Mode的。




Ubuntu 16.04


在Ubuntu裡,開機時按著「shift」就會進入Boot Menu,但是像我自己曾遇到,狂按著「Shift」還是不會進去,所以這時候就必須要強制打開它,請修改檔案「/etc/default/grub」,將這一行如下圖一樣註解掉「GRUB_HIDDEN_TIMEOUT=0」,然後儲存後在更新grub table:
update-grub


這時候重開機後就會看到Boot Menu在倒數了:

接下來就是選擇你要的系統上按「e」進入編輯,然後在如下的地方帶入額外的參數「single」以後,直接按「Ctrl+x」或是「F10」以這份修改後的Boot Table開機:

重開機後你就會看到進入single mode了,接下來如下一樣,使用指令「passwd」修改密碼,然後在用「reboot」或是「init 6」重新開機後,在用你的新密碼開機瞜~。


RetHat

從RHEL7開始,grub版本就變成『grub2』了,所以這邊需要分成兩個部份來介紹:RHEL6.X 的『grub』和 RHEL7.X 的『grub2』:

RHEL 6.X


在這個介面,選擇你要啟動的OS版本,按下『e』鍵修改,像這個例子,只有一個版本,所以不需要選擇,直接按下『e』就好。

按下去以後,就會跳進去下一個表單,像這個例子來說,有三行資訊,第一行是我的root file system的磁碟位置,第二行為kernel image的印象檔檔名和傳入參數,第三行則是initrd印象檔的檔名。我們想要修改的是kernel的傳入參數,所以選擇第二行後再按『e』。


進來之後就會看到比較細節的參數資訊了,這時候請在此行最後面加入一個『single』或者是『1』都可以,這邊記得跟前面的參數之間要隔一個空格,然後按下『Enter』儲存改變後回到上一層。


回到上一層以後,在按下『b』鍵,代表用這個修改過的『Menu entry』來開機,但是記得,這個只是對於這一次的開機,也就是說,你下次開機後,你剛剛修改的值就會消失恢復成預設值了。
按下『b』以後,你就會看到一堆的開機程序,然後就進入root了,這時候你只要簡單的輸入:
passwd
修改你的密碼以後再輸入
reboot
或是
init 6
就可以用你的新密碼開機了


RHEL 7.X



RHEL7.X的grub2會有一點點不太一樣,主要差異是『SELinux』和『systemctl』。開機後一樣,看到boot menu後,移到你要的版本上按下『e』鍵:
然後你就會發現在比較進階的資訊,這些資訊其實都是在檔案『/boot/grub2/grub.cfg』裡面的內容,接下來你要找到讀入kernel檔案的那一行,將『rhgb quiet』取代成『init=/bin/bash』,然後按下『Ctrl+x』用這個組態開機以後就會進入到Single Mode了,如下圖:
一旦你進入Single Mode以後,你的root的分區(Partition)將會是唯獨(read only)的狀態,你可以藉由底下指令來確認:
mount | grep root
這時為了要將這個partition改為可以寫入的狀態,所以我們必須要重新掛載(remount)成Read/Write的模式:
mount -o remount,rw /
然後再次確認:
mount | grep root

掛載成Read/Write 模式以後,我們就可以改root的密碼了,請輸入『passwd』:
passwd


如果你的系統的Selinux是開啟的話,你就必須要在執行底下這個步驟,來重新修改SELinux的內容,否則你的密碼將不會生效:
touch ./autorelabel


接下來只要重開機就好了,你就可以使用你新的密碼開機了:
exec /sbin/init


(2016.08.24 更新)
如果在RHEL7下,用上面的方式不行的話,可以用底下的方法:
Interrupt the boot process in order to gain access to a system.




Ref:

Monday, 4 July 2016

[Linux] finger

簡介:

這是可以查看系統使用者資訊的程式。

用法:

finger  [-lmsp] [user ...] [user@host ...]