これが無くてもクリーンなSqueezeではvmnetは動作したが、
もしかしたら、このLANドライバが原因かも知れない。
ただ、LennyからSqueezeにアップデート後もしばらく使えていたので、
なんとも言えない。。。
パッケージ: firmware-linux-nonfree (0.28+squeeze1) [non-free]
http://packages.debian.org/squeeze/firmware-linux-nonfree
■squidとsquidGuardを導入する。
$ sudo apt-get install -y rsync
下位プロキシサーバとしてのSquidの設定
http://d.hatena.ne.jp/labunix/20111224
SqueezeにもsquidGuardを導入
http://d.hatena.ne.jp/labunix/20120312
debian SquidGuardでブロックログを出力
http://d.hatena.ne.jp/labunix/20120315
■Exim4からpostfixに変更
※マニュアル上は「/etc/postfix/transport」
$ sudo apt-get install -y postfix
スマートホスト付きインターネット
「smtp.localhost」の削除
$ sudo dpkg-reconfigure postfix
root と postmaster のメール受け取りユーザ:
ローカルネットの設定
$ sudo cp -pi /etc/postfix/main.cf /etc/postfix/main.cf.org
$ sudo vim /etc/postfix/main.cf
$ sudo diff /etc/postfix/main.cf /etc/postfix/main.cf.org
32d31
< transport_maps = hash:/etc/transport
$ cat /etc/transport
mail.labunix.net :
mail2.labunix.net smtp:192.168.177.177
vmsqueeze.localdomain smtp:192.168.164.177
vmlenny.localdomain smtp:192.168.233.177
* :
$ sudo postmap /etc/transport
■clamav+amavis+spamassassinとpostfix(procmail)連携
$ sudo apt-get install -y sharutils
Squeezeにclamavを導入。EICARチェック
http://d.hatena.ne.jp/labunix/20120423
squeezeのclamavとpostfix連携(amavis)
http://d.hatena.ne.jp/labunix/20120430
spamassassinでヘッダ情報に「X-Spam」を追加する
http://d.hatena.ne.jp/labunix/20120501
■Sambaの設定
/home配下にディレクトリを持ち、smbpasswdが有効なユーザのみ。
$ sudo apt-get install -y samba
$ echo `whoami` | sudo smbpasswd -a `xargs`
$ echo `whoami` | sudo smbpasswd -e `xargs`
$ sudo cp -pi /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo diff /etc/samba/smb.conf /etc/samba/smb.conf.org 239d238
< path=/home/%S
244c243
< write list = %S
---
>
$ testparm 2>&1 | grep -A 8 "^\[homes"
[homes]
comment = Home Directories
path = /home/%S
valid users = %S
write list = %S
create mask = 0700
directory mask = 0700
browseable = No
$ sudo /etc/init.d/samba restart
■ntpサーバの導入
Debian Lenny + ntp でうるう秒の監視メール
http://d.hatena.ne.jp/labunix/20120201
$ diff /etc/ntp.conf /etc/ntp.conf.org
21,25c21,25
<
<
<
<
< server -4 ntp.nict.jp iburst
---
> server 0.debian.pool.ntp.org iburst
> server 1.debian.pool.ntp.org iburst
> server 2.debian.pool.ntp.org iburst
> server 3.debian.pool.ntp.org iburst
>
37c37
<
---
> restrict -6 default kod notrap nomodify nopeer noquery
41c41
<
---
> restrict ::1
$ sudo /etc/init.d/ntp restart
■ntpdateの導入
2番目の権威サーバで、LIフラグが「00」で正常。
$ sudo apt-get install -y ntpdate
$ sudo /etc/init.d/ntp stop;sudo ntpdate -d ntp.nict.jp;sudo /etc/init.d/ntp start
$ sudo ntpq -c rv | sed s/", "/"&\n"/g | grep "^leap\|^stratum" | column
leap=00, stratum=2,
■ntpサーバだけだと同期に時間がかかる場合は以下もチェックする。
$ sudo ntptime | grep ^ntp
ntp_gettime() returns code 0 (OK)
ntp_adjtime() returns code 0 (OK)
■ntpサーバの次回の同期先をチェック。
$ sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp-b3.nict.go. .NICT. 1 u 58 64 177 10.472 -15.134 11.479
■Snortの導入
※snortの設定は手動でも出来るが、「dpkg-reconfigure」で良い。
$ sudo dpkg-reconfigure snort
Lenny 侵入検知システムsnortでApachekillerを検出
http://d.hatena.ne.jp/labunix/20110917
Snortの警告の対応方法のテンプレート
http://d.hatena.ne.jp/labunix/20120512
snortのログによるディスクフル、/tmpのオーバーフロー
http://d.hatena.ne.jp/labunix/20111219
■iptablesの導入
$ wget -O smallfirewall \
"http://sourceforge.jp/users/labunix/pf/smallfirewall/git/?a=blob_plain&h=26e03fa53a75bfd2cdd673bbd4680685e2bd92bd&f=smallfirewall"
$ chmod +x smallfirewall
$ sudo ./smallfirewall
Usage ./smallfirewall [-v|-c|-i|-u|--report|--smallfirewall|--test|-w|-h]
or [-v|--version] or [-c|--cechk]
or [-i|--install] or [-u|--uninstall]
or [--report] or [-h|--help] or [--smallfirewall]
[--test "iptables-command"]
[-w|--watch second]
example debuf facility log : /var/log/iptables.log
$ vim /etc/rsyslog.conf
kern.debug /var/log/iptables.log
:syslogtag, contains, "iptables" ~
$ sudo /etc/init.d/rsyslog restart
-v|--version
version info
-c|--check
check file or directory path
-i|--install
install /etc/init.d/itables
rpm beta version
-u|--uninstall
uninstall /etc/init.d/iptables
if not use ./smallfirewall,check before uninstall env file,and delete it.
rpm beta version
./smallfirewall --check
--report
report iptables command format
example : sort /var/log/sfwreport.log | uniq -c | sort -k 1
--smallfirewall
/etc/iptables-save to /etc/smallfirewall script
support filter only
--test "iptables command"
test mode itables command
example :
./smallfirewall --test "iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT"
-w|--watch [sec]
use watch command,default 10 second
-h|--help|*
this help messages
$ sudo ./smallfirewall -i
■ログ用に以下を準備する。
「smallfirewall」の最初にあるとおり、rsyslog.confの設定変更も行う。
設定、ログファイルからiptablesコマンドに変換する
http://d.hatena.ne.jp/labunix/20120318
$ sudo cat /etc/iptables-save
*filter
[0:0] -A INPUT -i lo -j ACCEPT
[0:0] -A INPUT -i eth0 -j LOG --log-level=7 --log-prefix="iptables "
[0:0] -A FORWARD -i lo -j LOG --log-level=7 --log-prefix="iptables "
[0:0] -A FORWARD -i eth0 -j LOG --log-level=7 --log-prefix="iptables "
[0:0] -A OUTPUT -o lo -j ACCEPT
[0:0] -A OUTPUT -o eth0 -j LOG --log-level=7 --log-prefix="iptables "
COMMIT
$ sudo vim /etc/rsyslog.conf
$ sudo /etc/init.d/rsyslog restart
■iptablesのルールを適用、確認、再保存
$ sudo iptables-restore -c /etc/iptables-save
$ sudo iptables -L -v -n | grep LOG
34 2385 LOG all -- eth0 * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `iptables '
0 0 LOG all -- lo * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `iptables '
0 0 LOG all -- eth0 * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `iptables '
22 3497 LOG all -- * eth0 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `iptables '
$ su root -c ' iptables-save -c > /etc/iptables-save '
$ cat /etc/iptables-save
*filter
:INPUT ACCEPT [170:12870]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [122:13354]
[0:0] -A INPUT -i lo -j ACCEPT
[170:12870] -A INPUT -i eth0 -j LOG --log-prefix "iptables " --log-level 7
[0:0] -A FORWARD -i lo -j LOG --log-prefix "iptables " --log-level 7
[0:0] -A FORWARD -i eth0 -j LOG --log-prefix "iptables " --log-level 7
[0:0] -A OUTPUT -o lo -j ACCEPT
[122:13354] -A OUTPUT -o eth0 -j LOG --log-prefix "iptables " --log-level 7
COMMIT
■ログを集めて設定変更
$ sudo ./smallfirewall --report
$ sudo less /var/log/sfwreport.log
iptables -A OUTPUT -o eth0 -s 192.168.177.177 -d 192.168.177.188 -p TCP --sport 139 --dport 2896 -j ACCEPT
$ sudo vim /etc/iptables-save
...
[0:0] -A OUTPUT -o eth0 -s 192.168.177.0/32 -d 192.168.177.0/32 -p tcp -m tcp --sport 139 -j ACCEPT
...
$ sudo iptables-restore -c /etc/iptables-save
$ su root -c ' iptables-save -c > /etc/iptables-save '
■一通り済んだら、iptables.logを空にしてrsysllogを再起動
sfwreport.logも空になるはず。
$ su root -c 'echo "" > /var/log/iptables.log '
$ sudo /etc/init.d/rsyslog restart
$ sudo ./smallfirewall --report
See /var/log/sfwreport.log
and delete /var/log/sfwreport.tmp
$ wc -l /var/log/sfwreport.log
0 /var/log/sfwreport.log
■nmapの導入。
※今回はapacheが無いので、apachekillerのチェックが出来ない。
Lennyのiptablesをデーモン化
http://d.hatena.ne.jp/labunix/20120208
iptables にnetbios名前解決用のポートを追加する
http://d.hatena.ne.jp/labunix/20111105
$ sudo nmap `hostname -s` 2>&1 | grep "^PORT\|^[0-9]"
PORT STATE SERVICE
25/tcp open smtp
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3128/tcp open squid-http
8022/tcp open unknown
■rpcbindポートを削除
$ apt-cache show portmap | grep -A 6 ^Description-ja
Description-ja: RPC ポートマッパー
portmap は RPC (リモートプロシージャコール) プログラム番号を DARPA プロ
トコルのポート番号に変換するサーバーです。RPC コールを作るためには、動
作していなければなりません。
.
RPC を使うサービスには、NFS や NIS が含まれます。
Homepage: http://neil.brown.name/portmap/
$ dpkg -l | grep nfs | awk '{print $2}'
libnfsidmap2
nfs-common
$ sudo /etc/init.d/nfs-common stop
$ sudo /etc/init.d/portmap stop
$ sudo apt-get purge libnfsidmap2 nfs-common portmap
$ sudo nmap `hostname -s` 2>&1 | grep "^PORT\|^[0-9]"
PORT STATE SERVICE
25/tcp open smtp
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3128/tcp open squid-http
8022/tcp open unknown
■pstreeから不要なパッケージがないかチェック
※実機なのでacpidはあっても良い。
$ pstree
init─┬─acpid
├─amavisd-new───2*[amavisd-new]
├─atd
├─clamd───{clamd}
├─cron
├─dbus-daemon
├─freshclam
├─6*[getty]
├─master─┬─pickup
│ ├─qmgr
│ └─tlsmgr
├─nmbd
├─ntpd
├─rsyslogd───3*[{rsyslogd}]
├─smbd───2*[smbd]
├─snort
├─spamd───2*[spamd]
├─squid─┬─8*[squidGuard]
│ └─unlinkd
├─sshd───sshd───sshd───bash───pstree
└─udevd───2*[udevd]
■パッケージ数の確認。
$ dpkg -l | grep ^ii | wc -l
379
■UDPポートのチェック
※3130はloに対しての通信。
$ sudo nmap -sU `hostname -s` 2>&1 | grep "^PORT\|^[0-9]"
PORT STATE SERVICE
123/udp open|filtered ntp
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
3130/udp open|filtered squid-ipc
■gnomeの導入
$ sudo apt-get install -y gdm gnome-terminal
$ sudo apt-get build-dep gdm
$ sudo apt-get build-dep gnome-terminal
$ gnome-terminal &
■vmware-player/vmware-vixの導入
※sshでは無くコンソールからgdmにログイン、gnome-terminalで作業する
vmwareのinitスクリプト修正for Squeeze
http://d.hatena.ne.jp/labunix/20120114
Debian Lenny-amd64版のシステム起動パーティションが壊れ
http://d.hatena.ne.jp/labunix/20111020
$ sudo apt-get install -y gcc linux-headers-`uname -r`
$ su
$ sudo /etc/init.d/vmware status
Module vmmon not loaded
Module vmnet not loaded
$ sudo /etc/init.d/vmware start
Starting VMware services:
Virtual machine monitor done
Virtual machine communication interface done
VM communication interface socket family done
Blocking file system done
Virtual ethernet done
VMware Authentication Daemon done
Shared Memory Available done
■XDMCP設定
$ grep -v "^\$\|^\#" /etc/gdm/gdm.conf
[daemon]
RemoteGreeter=/usr/lib/gdm/gdmgreeter
[security]
[xdmcp]
Enable=true
[gui]
[greeter]
Include=username
[chooser]
[debug]
[servers]
$ sudo /etc/init.d/gdm restart
■vmwareのNAT/HostOnlyのネットワークを変更する。
$ sudo /usr/lib/vmware/bin/vmware-netcfg &
■tg3のnonfreeを追加する。
GUIでシングルウインドウはさすがにツライので、
gnome-sessionを導入。その際、tg3が無いというエラーが出た。
そういえば、インストール時にもLennyからSqueezeにアップデートした時にも出てた。
$ sudo apt-get install -y gnome-session
$ sudo apt-get build-dep gnome-session
$ w3m -dump http://ftp.jp.debian.org/debian/dists/squeeze/non-free/binary-amd64/
Index of /debian/dists/squeeze/non-free/binary-amd64
[ICO] Name Last modified Size Description
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[DIR] Parent Directory -
[ ] Packages.bz2 08-Oct-2011 19:44 100K
[ ] Packages.gz 08-Oct-2011 19:44 121K
[ ] Release 12-May-2012 21:07 100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Apache/2.2.22 (Unix) Server at ftp.jp.debian.org Port 80
$ sudo cp -pi /etc/apt/sources.list /etc/apt/sources.list.org
$ sudo diff /etc/apt/sources.list /etc/apt/sources.list.org
3c3
< deb http://ftp.jp.debian.org/debian/ squeeze main non-free
---
> deb http://ftp.jp.debian.org/debian/ squeeze main
$ sudo apt-cache search firmware-linux-nonfree
firmware-linux-nonfree - Binary firmware for various drivers in the Linux kernel
firmware-linux-free - Linux カーネルの各種ドライバ用バイナリファームウェア
$ env DISPLAY="0.0" vmrun -T player start vmware/vmsqueeze/vmsqueeze.vmx nogui
■上位にFWがあるので、902/TCPの「vmware-authdlauncher」は少し緩めで良い。
パッケージも1039。平常時は600MB前後のメモリ使用率。(2GBしか無いので。。。)
$ sudo vim /etc/iptables-save
...
[0:0] -A INPUT -i eth0 -s 192.168.177.0/24 -d 192.168.177.0/24 -p tcp -m tcp --dport 902 -j ACCEPT
[0:0] -A INPUT -i eth0 -s 192.168.177.0/24 -d 192.168.177.0/24 -p icmp -m icmp --icmp-type 3 -j ACCEPT
[0:0] -A OUTPUT -o eth0 -s 192.168.177.0/24 -d 192.168.177.0/24 -p tcp -m tcp --sport 902 -j ACCEPT
[0:0] -A OUTPUT -o eth0 -s 192.168.177.0/24 -d 192.168.177.0/24 -p icmp -m icmp --icmp-type 3 -j ACCEPT
...
$ sudo nmap `hostname -s` | grep "^PORT\|^[0-9]"
PORT STATE SERVICE
25/tcp open smtp
139/tcp open netbios-ssn
445/tcp open microsoft-ds
902/tcp open iss-realsecure
3128/tcp open squid-http
8022/tcp open unknown
$ sudo nmap -sU `hostname -s` 2>&1 | grep "^PORT\|^[0-9]"
PORT STATE SERVICE
123/udp open|filtered ntp
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
177/udp open|filtered xdmcp
3130/udp open|filtered squid-ipc
$ sudo netstat -an --program | grep 902
tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN 1973/vmware-authdla
$ ps -ef | grep vmware-auth | grep -v grep
root 1973 1 0 16:55 ? 00:00:00 /usr/sbin/vmware-authdlauncher
$ dpkg -l | grep ^ii | wc -l
1039
■vmnet8内に別のPCからアクセス
vmnet8にIPマスカレード(Squeeze編)
http://d.hatena.ne.jp/labunix/20120408
$ sudo grep ip_forward /etc/sysctl.conf
net.ipv4.ip_forward=1
$ su root -c 'echo "1" > /proc/sys/net/ipv4/ip_forward'
$ sudo iptables -t nat -A POSTROUTING -o vmnet8 -j MASQUERADE
$ sudo route add -net 192.168.72.0 netmask 255.255.255.0 192.168.177.188
> route add 192.168.72.0 mask 255.255.255.0 192.168.177.188 -p
■同DMZ内でのぺネストレーションテスト
第6回 己を知り、敵を知る――Nmapで見つめ直す自分の姿
http://www.atmarkit.co.jp/fsecurity/rensai/view06/view03.html
簡単なスクリプトをgithubに置いてみました。
https://github.com/labunix/penetration/blob/master/penetration.sh
$ cat penetration.sh
set -e
PDATE=`date '+%Y%m%d'`
PDIR=/var/log/nmap
test -d "$PDIR" || mkdir "$PDIR"
test -d "$PDIR" && chmod 640 "$PDIR"
test -d "$PDIR" || exit 1
PLOG="${PDIR}/result_${PDATE}.log"
if [ $# -lt 1 ];then
echo "Usage: $0 [target_ip_address]"
exit 1
fi
TEMP=$1
TARGETIP=`echo "$TEMP" | awk -F\. '{print $1+0"."$2+0"."$3+0"."$4+0}'`
if [ "$TARGETIP" == "0.0.0.0" ];then
echo "Error: Check Your Target IP!"
exit 1
fi
if [ `id -u` -ne "0" ];then
fi
if [ `id -u` -ne "0" ];then
echo "Sorry, Not Permit User!"
exit 1
fi
nmap -sS -P0 -T4 -p 1-65535 -oN "$PLOG" -r -v -A "$TARGETIP"
chmod 400 "$PLOG"
unset PDATE PDIR PLOG TEMP TARGETIP
■その先のぺネストレーションテスト
今回はFW内部のDMZ内で余分なポートが開いてないかのテストだが、
更に深くチェックするには、例えば、以下のようなテストツールがある。
$ apt-cache search nessus
harden-remoteaudit - ホストからあなたのリモートシステムを検査
$ apt-cache search ^amap
amap-align - Protein multiple alignment by sequence annealing
$ apt-cache search metasploit
w3af-console - framework to find and exploit web application vulnerabilities (CLI only)
w3af - framework to find and exploit web application vulnerabilities