星期一, 6月 21, 2010

利用 unoconv 批次轉換 文件為 PDF

在Linux內可以使用 openOffice 將文件轉成 PDF 格式來方便觀看
但是如果一次要轉換大量的文件該如何作呢?

這個時候可以利用 unoconv 這個套件配合 find 指令來進行

套件的安裝可以使用 one-click install  來安裝
套件如下
http://software.opensuse.org/search?q=unoconv&baseproject=openSUSE:11.2

如果是針對單一檔案可以使用下列方式來轉換

unoconv  -f  pdf   linux.odp

如果要批次轉換可以搭配 find 指令來進行

例如
find .  -name  '*.odp'  -exec  unoconv  -f  pdf   {}  \;

會搜尋目前目錄下的 odp 檔案將其轉成 pdf 格式

enjoy it ~~

星期五, 6月 04, 2010

sar 研讀小記

sar - Collect, report, or save system activity information.

# zypper search sar

安裝 sar 相關套件
# zypper install sysstat-sargraph sysstat-isag

可以使用 sar 指令來觀察系統的狀況
例如 使用 -u 選項來觀察 cpu 使用率

# sar -u  2  3
Linux 2.6.27.19-5-pae (da-1) 西元2010年06月04日 _i686_ (2 CPU)


09時05分43秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
09時05分45秒     all      0.00      0.00      0.00      0.00      0.00    100.00
09時05分47秒     all      0.00      0.00      0.00      0.00      0.00    100.00
09時05分49秒     all      0.00      0.00      0.26      0.52      0.00     99.23
平均時間:     all      0.00      0.00      0.09      0.17      0.00     99.74


如果不知道下哪些選項 可以使用 -A 來觀察

如果要使用圖形的方式來觀察
首先使用 sar 指令觀察 並使用 -o 輸出到 /var/log/sa 目錄
# sar -u  2  3  -o /var/log/sa/sa07

使用  isag 指令繪製成圖形
-p 後面為指定目錄, 包含sar 產出的檔案
# isag -p /var/log/sa

Subscription Management Tool 11 研讀小記

Subscription Management Tool 可以允許 SLE 裝置在 Local 端進行升級與維護

1.首先到 http://download.novell.com

在Product 的地方選取  Subscription Management Tool
點選搜尋, 目前是支援 SLES 10 SP2 以後的版本
下載 2 個 Media 的 iso檔案 ( 當然 首先要登入 Novell的帳號 )
SLE-11-SMT-GM-Media1.iso
SLE-11-SMT-GM-Media2.iso

2. 接下來檢查以及啟動 MySQL

# rpm -q mysql
套件 mysql 尚未安裝


安裝MySQL 相關套件
# zypper install mysql mysql-client perl-DBD-mysql

啟動MySQL
# rcmysql start

檢查啟動狀況
# rcmysql status

設定 MySQL root 的密碼
# mysqladmin  -u root  password  設定的密碼


3.啟動YaST 安裝相關套件 ( 附加的產品)
#yast2 add-on
  • 新增
  • 本地 ISO 影像 --> 下一步
  • 選取剛剛下載的Media1.iso --> 下一步
  • 是, 我同意授權合約  -->  下一步
  • 確認 SMT 伺服器有被勾選 --> 接受  --> 繼續
  • 輸入 NCC的Mirror Credentials 帳號密碼
  • 輸入 e-mail --> 下一步
  • 輸入 smt 使用者的密碼
  • 輸入通知用的 e-mail  -->  下一步
  • 輸入 MySQL 使用者 root 的密碼  -->  下一步
  • 選取 立即設定  -->  下一步
  • 點選繼續, 啟動瀏覽器輸入電子郵件進行驗證
  • 驗證成功會出現 組態成功的視窗, 點選確定
  • 接下來會看到 已安裝的附加產品多了 SMT
  • 點選 確定
YaST 會設定相關套件及設定
可以觀察
# ls /srv/www/htdocs/
gif  info2html.css  repo  smt.crt

# ls /etc/apache2/conf.d/
inst_server.conf.in  nagios.conf     php5.conf          smt_support.conf
mod_perl.conf        nu_server.conf  smt_mod_perl.conf

SMT 伺服器的設定檔
/etc/smt.conf
以及
/etc/smt.d/*

可以使用 smt-repos 列出相關的儲存庫
# smt-repos

可以使用 smt-ncc-sync 下載資料
#smt-ncc-sync

比較方便的方式是使用 YaST內的 SMT Server Management
勾選要 Mirror的套件庫, 點選 Mirror Now 即可



星期四, 6月 03, 2010

AIDE 小記

Advanced Intrusion Detection Environment

是對檔案辨識的入侵偵測的套件

使用 zypper 檢查是否有安裝
#zypper   search   aide

使用 zypper 安裝 aide 套件
#zypper  install  aide

aide 的設定檔
/etc/aide.conf

檢查設定 是否有問題
# aide --config-check

接下來進行 aide 的初始化

在進行之前檢查 相關目錄
# ls  /var/lib/aide/

這個可以藉由設定檔來觀察
# cat /etc/aide.conf | grep database
database=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new

進行初始化
#aide  --init

初始化結束之後再觀察
# ls -hl /var/lib/aide/
總計 20M
-rw------- 1 root root 20M 2010-06-03 21:16 aide.db.new

剛剛上面的設定有看到 database 的設定
所以要將產出的檔案 重新命名為指定的檔案
# mv /var/lib/aide/aide.db.new  /var/lib/aide/aide.db

執行 aide
# aide --check


enjoy it ~~

AppArmor 小記

AppArmor 相關資料夾

# ls /etc/apparmor.d/
abstractions    sbin.syslogd           usr.sbin.identd  usr.sbin.traceroute
bin.ping        sbin.syslog-ng         usr.sbin.mdnsd
program-chunks  tunables               usr.sbin.nscd
sbin.klogd      usr.sbin.avahi-daemon  usr.sbin.ntpd

Novell  將 / 轉成 . , 舉例來說 ping 指令
# which ping
/bin/ping
所在路徑為 /bin/ping, 所以設定檔就是在 /etc/apparmor.d內的
bin.ping

在profile內定義的 include 的相關目錄都是在 /etc/apparmor.d
例如
# cat /etc/apparmor.d/bin.ping 

#include
/bin/ping {
  #include
  #include
  #include

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}


我們來觀察一下上面的 include 
# ls /etc/apparmor.d/
abstractions    sbin.syslogd           usr.sbin.identd  usr.sbin.traceroute
bin.ping        sbin.syslog-ng         usr.sbin.mdnsd
program-chunks  tunables               usr.sbin.nscd
sbin.klogd      usr.sbin.avahi-daemon  usr.sbin.ntpd

就會發現有 tunables 目錄, 繼續觀察此目錄
# ls /etc/apparmor.d/tunables/
global  home  ntpd  proc

觀察相關內容
# cat  /etc/apparmor.d/tunables/global 
# $Id: global 697 2007-05-25 03:09:30Z steve-beattie $
# ------------------------------------------------------------------
#
#    Copyright (C) 2006 Novell/SUSE
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------

# All the tunables definitions that should be available to every profile
# should be included here

#include
#include

就可以知道他是用來定義 home 以及 proc 變數

# cat /etc/apparmor.d/tunables/home 
# $Id: home 12 2006-04-12 21:35:41Z steve-beattie $
# ------------------------------------------------------------------
#
#    Copyright (C) 2006 Novell/SUSE
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------

# @{HOME} is a space-separated list of all user home directories. While
# it doesn't refer to a specific home directory (AppArmor doesn't
# enforce discretionary access controls) it can be used as if it did
# refer to a specific home directory
@{HOME}=@{HOMEDIRS}/*/ /root/

# @{HOMEDIRS} is a space-separated list of where user home directories
# are stored, for programs that must enumerate all home directories on a
# system. 
@{HOMEDIRS}=/home/

另外再來觀察

# cat /etc/apparmor.d/tunables/proc 
# $Id: proc 797 2007-07-23 17:31:39Z seth_arnold $
# ------------------------------------------------------------------
#
#    Copyright (C) 2006 Novell/SUSE
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------

# @{PROC} is the location where procfs is mounted.
@{PROC}=/proc/

另外可以觀察 /etc/apparmor.d/abstractions/base
對相關的 函式庫 以及檔案也有 相關存取的規定




以下是自己練習AppArmor

AppArmor 是藉由紀錄程式的所有動作, 建立該程式的Profile
來達成 限制程式進行例外行為 以防止不正當的存取

建立的方式藉由 YasT --> Novell AppArmor --> Add Profile Wizard
或是#yast2  GenProf
來建立程式的Profile

建立方法為(以firefox 為例子)
#yast2  GenProf

輸入 firefox (程式名稱,他會去系統內抓) --> Create
這個時候有可能有預設的Profile 這個時候就可以 點選 Use Profile 或是點選View Profile 觀察
如果沒有這個程式的預設Profile 那就可以點選 Create New Profile
--> 出現 Profiling 的視窗 ,  按鍵盤上面的Alt + F2 --> 輸入  firefox --> Run
--> 執行平常的瀏覽 --> 關閉firefox
--> 點選 Scan system log for AppArmor events
這個時候會出現 firefox 這個程式會去呼叫哪些程式 或是 對那些目錄進行存取
程式的話 可以選擇 Inherit 或是Deny 來決定要不要讓他呼叫
權限的改變或是使用 例如 setgid or setuid 可以決定 Allow or Deny
針對一些目錄的存取, 除了 Allow or Deny 還可以使用 Glob 來使用 * 字元 再進行Allow 或是 Deny 的設定
--> 回答完一堆的問題之後 點選 Finish 完成

如何確認有生效呢
#cat  /sys/kernel/security/apparmor/profiles
確認該程式是 enforce 狀態

如果之前所設定的Profile 太嚴謹想要放鬆該如何呢
可以使用
#complain  firefox

將該程式切換到 complain 模式
重新開啟程式, 然後進行要允許的行為

接下來執行 Yast --> Novell AppArmor --> Update Profile Wizard
或是 #yast2  LogProf

再次決定相關行為是Allow or Deny

然後再次啟動 AppArmor  對該程式的限制
#enforce  firefox

是個好玩的軟體


另外可以利用 command的方式來管理

#autodep  程式名稱
這個方式很好玩
剛剛在建立 AppArmor 的時候會詢問是否要啟動儲存庫
如果有啟動的話
這個時候 使用 autodep 就可以看到 儲存庫上面的人的設定並套用


# autodep   firefox
正在連接至儲存庫...


設定檔 : /usr/lib/firefox/firefox.sh


 [1 - kuschel]
  2 - raulliborio 
  3 - Michi8383 
  4 - cjgiraldes 
  5 - noone123456789 
  6 - buds428 
  7 - mdemoulin 
  8 - amat17t 
  9 - netxxx 
  10 - alice 
  11 - osmo 
  12 - vtold 
  13 - test27 
  14 - memfys 
  15 - Ivan Susanin 
  16 - samavedam_vijay 
  17 - 非使用中本地設定檔/usr/lib/firefox/firefox.sh 
  18 - jjohansen 
  19 - juan 
  20 - philodoxia 
  21 - usernowy 
  22 - lasm 
  23 - walik 
  24 - mts-consult 
  25 - kelln 
  26 - rollo 


[(V)iew Profile] / (U)se Profile / (C)reate New Profile / Abo(r)t / (F)inish

接下來使用  genprof 來產生套用 profile
#genprof    firefox

要知道目前的程式 是在 enforce 啟用, 還是 complain 抱怨模式( 不啟動該服務的 AppArmor)

可以觀察設定檔, 例如

# cat /etc/apparmor.d/usr.lib.firefox.firefox.sh
# Last Modified: Thu Jun  3 20:36:16 2010
# REPOSITORY: http://apparmor.opensuse.org/backend/api kuschel 3827
#include


/usr/lib/firefox/firefox.sh flags=(complain) {
  #include
  #include
  #include


  deny capability sys_ptrace,




  /bin/basename rix,
  /bin/bash rix,
  /bin/grep rix,
  /etc/magic r,
  /usr/bin/file rix,
  /usr/lib/firefox/firefox px,
  /usr/share/misc/magic.mgc r,


}

所以就觀察 設定檔有沒有加上 complain 的 flags 就知道
如果要再次啟動 該程式的 AppArmor 保護可以使用
enforce  程式名稱

# enforce firefox
設定 /etc/apparmor.d/usr.lib.firefox.firefox.sh 為強迫 (enforce) 模式。

檢查是否有 complain 的 flags
# cat /etc/apparmor.d/usr.lib.firefox.firefox.sh | grep flag

再次觀察
# cat /etc/apparmor.d/usr.lib.firefox.firefox.sh
# Last Modified: Thu Jun  3 20:36:16 2010
# REPOSITORY: http://apparmor.opensuse.org/backend/api kuschel 3827
#include

/usr/lib/firefox/firefox.sh {
  #include
  #include
  #include

  deny capability sys_ptrace,


  /bin/basename rix,
  /bin/bash rix,
  /bin/grep rix,
  /etc/magic r,
  /usr/bin/file rix,
  /usr/lib/firefox/firefox px,
  /usr/share/misc/magic.mgc r,

}

另外就是可以透過 rcapparmor status 來觀看狀態


# rcapparmor status
apparmor module is loaded.
10 profiles are loaded.
10 profiles are in enforce mode.
   /usr/sbin/ntpd
   /usr/sbin/identd
   /sbin/klogd
   /sbin/syslogd
   /sbin/syslog-ng
   /usr/sbin/traceroute
   /usr/sbin/nscd
   /usr/sbin/mdnsd
   /bin/ping
   /usr/sbin/avahi-daemon
0 profiles are in complain mode.
2 processes have profiles defined.
2 processes are in enforce mode :
   /sbin/syslog-ng (1970) 
   /sbin/klogd (1958) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
[1]+  Done                    yast2  (wd: /var/log/audit)

也可以藉由去觀察  /sys/kernel/security/apparmor/profiles 來觀察狀態


# cat /sys/kernel/security/apparmor/profiles 
/usr/sbin/traceroute (enforce)
/usr/sbin/ntpd (enforce)
/usr/sbin/nscd (enforce)
/usr/sbin/mdnsd (enforce)
/usr/sbin/identd (enforce)
/usr/sbin/avahi-daemon (enforce)
/sbin/syslogd (enforce)
/sbin/syslog-ng (enforce)
/sbin/klogd (enforce)
/bin/ping (enforce)

另外可以利用 unconfined 指令來觀察哪些服務沒有被限制, 可以考慮限制他
# unconfined 
2657 /sbin/rpcbind 未限制
2657 /sbin/rpcbind 未限制
2657 /sbin/rpcbind 未限制
2657 /sbin/rpcbind 未限制
2657 /sbin/rpcbind 未限制
2657 /sbin/rpcbind 未限制
3164 /usr/sbin/cupsd 未限制
3164 /usr/sbin/cupsd 未限制
3164 /usr/sbin/cupsd 未限制
3251 /usr/sbin/rpc.mountd 未限制
3251 /usr/sbin/rpc.mountd 未限制
3252 /usr/sbin/rpc.statd 未限制
3252 /usr/sbin/rpc.statd 未限制
3252 /usr/sbin/rpc.statd 未限制
3343 /usr/lib/postfix/master 未限制
3384 /usr/sbin/nrpe 未限制
3507 /usr/sbin/sshd 未限制
3507 /usr/sbin/sshd 未限制
25120 /usr/sbin/sshd (sshd: root@pts/1) 未限制
25120 /usr/sbin/sshd (sshd: root@pts/1) 未限制
28328 /usr/sbin/ietd 未限制
28328 /usr/sbin/ietd 未限制
28328 /usr/sbin/ietd 未限制
29117 /usr/sbin/sshd (sshd: root@pts/2) 未限制
29117 /usr/sbin/sshd (sshd: root@pts/2) 未限制




利用 seccheck 檢查系統相關安全問題

我們可以利用 seccheck 這個套件檢查一些與系統有關的選項
例如可以利用 John and Ripper 檢查密碼強度
檢查是否有 user 的 UID 為 0
或是有哪些目錄是 world writable

首先檢查是否有安裝 seccheck 套件
#zypper  search  seccheck

如果沒有可以利用 zypper 或是 YaST 安裝套件
#zypper install seccheck

安裝完成之後 會透過 cron 定時來執行
#cat   /etc/cron.d/seccheck 
RUN_FROM_CRON=yes
#
# SuSE Security Checks
#
0 0 * * * root  test -x /usr/lib/secchk/security-control.sh && /usr/lib/secchk/security-control.sh daily &
0 1 * * 1 root  test -x /usr/lib/secchk/security-control.sh && /usr/lib/secchk/security-control.sh weekly &
0 4 1 * * root  test -x /usr/lib/secchk/security-control.sh && /usr/lib/secchk/security-control.sh monthly &

daily, weekly, 以及monthly檢查的項目都不太一樣
要測試的話可以執行 相關的程式, 如以下的範例

# /usr/lib/secchk/security-weekly.sh 

Password security checking not possible, package john not installed.

The following files/directories are world writeable and not sticky:
+ /var/lib/smartmontools/smartd.HDS722580VLAT20-VNR21EC2SU7ZWM.ata.state
+ /var/lib/smartmontools/smartd.HDS722580VLAT20-VNR21EC2SU7ZWM.ata.state~
+ /var/lib/smartmontools/smartd.ST320410A-6FG152G8.ata.state
+ /var/lib/smartmontools/smartd.ST320410A-6FG152G8.ata.state~

The following programs have got a different md5 checksum since last week:
+ S.5....T  c /etc/gdm/custom.conf
+ S.5....T  c /usr/share/fonts/encodings/encodings.dir

另外有個功能也是不錯
# /usr/lib/secchk/checkneverlogin 
Warning: user ines has got a password and a valid shell but never logged in.

可以找出有密碼但是沒有登入的使用者

至於如果出現沒有 john and Ripper 就利用 zypper 安裝吧 ^^

# zypper search john
Loading repository data...
Reading installed packages...


S | Name           | Summary                             | Type   
--+----------------+-------------------------------------+--------
  | john           | Detects Weak Passwords              | package
  | john-wordlists | Word List Files for John the Ripper | package
# zypper install john john-wordlists




Enjoy it ~~