■vyatta6.4、Core版でWebGUIが無くても、充分面白い。
vmplayerにvyattaを導入する
http://d.hatena.ne.jp/labunix/20120707
■gatewayの追加
$ configure
$ ip addr show eth0 | sed s/" "/"\n"/g | grep -A 1 "inet\$"
inet
192.168.213.213/24
$ /sbin/route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.213.2 0.0.0.0 UG 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
192.168.213.0 * 255.255.255.0 U 0 0 0 eth0
■sshサービスの有効化
$ configure
$ grep "Port\|Protocol\|Listen" /etc/ssh/sshd_config | grep -v "^#"
Port 22
ListenAddress 192.168.213.213
Protocol 2
□□□英語キーボード配列のままなので、ここからはsshで□□□
■DNS設定
$ configure
$ nslookup google.co.jp 192.168.213.2
Server: 192.168.213.2
Address 1: 192.168.213.2
Name: google.co.jp
Address 1: 173.194.38.120 nrt19s18-in-f24.1e100.net
Address 2: 173.194.38.119 nrt19s18-in-f23.1e100.net
Address 3: 173.194.38.127 nrt19s18-in-f31.1e100.net
[edit]
$ sudo cat /etc/resolv.conf
nameserver 192.168.213.2
■vyatta4peopleリポジトリを設定する
参考:Add Vyatta4People.Org package repository:
http://www.vyatta4people.org/repo/
$ configure
■Squeezeのリポジトリを追加する
$ configure
■プロキシ(クライアント)の設定
※vmnet8のホストが下位squidプロキシサーバ
$ sudo cat /etc/profile.d/proxy.sh
export http_proxy=http://192.168.213.1:3128/
export ftp_proxy=http://192.168.213.1:3128/
export HTTP_PROXY=http://192.168.213.1:3128/
export FTP_PROXY=http://192.168.213.1:3128/
$ sudo cat /etc/apt/apt.conf
APT::Periodic::Update-Package-Lists 1;
Acquire::http::Proxy "http://192.168.213.1:3128/";
■apt-getを使う
※パッケージのあるリポジトリが設定澄みである点に注意。
手元のSqueezeよりもkernelバージョンが新しいのは、vyatta用なので。。。
$ sudo cat /etc/apt/sources.list
deb http://packages.vyatta.com/vyatta stable main
deb http://packages.vyatta4people.org/debian experimental main
deb http://ftp.de.debian.org/debian squeeze main
$ sudo apt-get update
$ sudo apt-get install -y vim w3m nmap chkconfig
$ sudo apt-get upgrade
$ uname -a
Linux vyatta 3.0.23-1-586-vyatta
$ sudo shutdown -r now && exit
■ブラウジング(日本語対応)
※「locales」で日本語に変更したはずだが、「LC_ALL」が変わらなかった。
手動で変更し、正常に日本語が表示出来た。
$ sudo dpkg-reconfigure locales
Locales to be generated: 261
Default locale for the system environment: 2
$ grep -v "^\#\|^\$" /etc/locale.gen
ja_JP.UTF-8 UTF-8
※変更前
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
LC_ALL=C
※変更後
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
■システムの環境変数が「LC_ALL=C」でも以下の方法で日本語が扱えるので、
優先度が高い設定であれば、他の方法でも良い。
※w3mのconfigで設定しただけでは上書きされて戻ってしまう。
$ grep UTF-8 .w3m/config
system_charset UTF-8
document_charset UTF-8
display_charset UTF-8
※コマンドラインのオプションで直接上書きの指定をする。
$ w3m -o system_charset="UTF-8" -o display_charset="UTF-8" http://google.co.jp
$ env LC_ALL="ja_JP.UTF-8" w3m http://google.co.jp
■起動サービスの調整
※vyatta専用パッケージもあるので、不要なサービスでも停止のみ行う。
よって、パッケージの削除は行わない。
ext4(RAID無し)なので、mdadmは不要。電源管理は仮想マシンなので不要。
chkconfigはリポジトリを読み込んで、インストールが必要。
$ /sbin/runlevel
N 2
$ /sbin/chkconfig --list | grep "2\:on"
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
bootlogs 0:off 1:on 2:on 3:on 4:on 5:on 6:off
cpufrequtils 0:off 1:off 2:on 3:on 4:on 5:on 6:off
cron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
lldpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
loadcpufreq 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mdadm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netplug 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rc.local 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rmnologin 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsync 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
stop-bootlogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sudo 0:off 1:off 2:on 3:on 4:on 5:on 6:off
vyatta-pppoe 0:off 1:on 2:on 3:on 4:off 5:off 6:off
vyatta-quagga 0:off 1:off 2:on 3:on 4:on 5:on 6:off
vyatta-router 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$ sudo fdisk -l /dev/sda | tail -1
/dev/sda1 * 1 1045 8388576 83 Linux
$ cat /etc/fstab | awk '{printf $3","}';echo
FSTAB,ext4,
$ sudo /etc/init.d/acpid stop && sudo chkconfig acpid off
$ sudo /etc/init.d/mdadm-raid stop && sudo /etc/init.d/mdadm stop && sudo chkconfig mdadm off
$ pstree | sed s/"\`"/"+"/
init-+-atd
|-bgpd
|-cron
|-7*[getty]
|-netplugd
|-ntpd
|-ospf6d
|-ospfd
|-ripd
|-ripngd
|-rsyslogd---2*[{rsyslogd}]
|-sshd---sshd---sshd---vbash-+-pstree
| +-sed
|-udevd---2*[udevd]
+-zebra
■管理者ユーザを追加する
※そのまま「PASSWORD」などと設定しないように。
また、ユーザの「labunix」は読み替えて下さい。
$ configure
$ grep labunix /etc/[pg]*[dp] | sed s/"\,toor"//g
/etc/group:adm:x:4:www-data,vyatta,labunix
/etc/group:disk:x:6:vyatta,labunix
/etc/group:sudo:x:27:www-data,vyatta,labunix
/etc/group:dip:x:30:vyatta,labunix
/etc/group:quaggavty:x:103:www-data,vyatta,labunix
/etc/group:vyattacfg:x:105:www-data,vyatta,labunix
/etc/passwd:labunix:x:1001:100::/home/labunix:/bin/vbash
$ id labunix
uid=1001(labunix) gid=100(users) groups=100(users),4(adm),6(disk),27(sudo),30(dip),103(quaggavty),105(vyattacfg)
$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
■ホスト名、ドメイン名の変更
※ドメインはldapやDNSのドメイン名のことのようです。
$ configure
$ hostname -i
127.0.1.1
$ hostname -I
192.168.213.213
$ hostname -f
vmvyatta
$ cat /etc/resolv.conf
nameserver 192.168.213.2
domain localdomain
■設定の保存(loadでリストア出来る)
$ configure
Saving configuration to '/config/backup_config_20120713'...
Done
Saving configuration to '/config/config.boot'...
Done
$ tail -1 /config/backup_config_20120713
/* Release version: VC6.4-2012.05.31 */
■vyatta6.4のバージョン詳細
$ /opt/vyatta/bin/vyatta-show-version | grep -v "^HW\|ID"
Version: VC6.4-2012.05.31
Description: Vyatta Core 6.4 2012.05.31
Copyright: 2006-2012 Vyatta, Inc.
Built by: autobuild@vyatta.com
Built on: Thu May 31 06:32:55 UTC 2012
System type: Intel 32bit
Boot via: disk
Hypervisor: VMware
Uptime: 14:41:36 up 1:32, 2 users, load average: 0.05, 0.17, 0.12
$ cat /etc/debian_version
6.0.5
■脆弱性チェック1
sshポートはフィルタされているとはいえ、見えてしまう。
DMZ内の実験サーバ(Squeeze)の初期設定
http://d.hatena.ne.jp/labunix/20120618/
$ sudo nmap -sT 192.168.213.213 | grep ^[0-9]
22/tcp open ssh
$ sudo nmap -sU 192.168.213.213 | grep ^[0-9]
123/udp open|filtered ntp
■NATでsshを隠蔽する。
※ログインし直す。(隠蔽された)
$ show nat destination translations
Pre-NAT Post-NAT Prot Timeout
192.168.213.213 172.16.213.213 tcp 299
$ sudo nmap -sT 192.168.213.213 | grep ^[0-9]
$ sudo nmap -sT 172.16.213.213 | grep ^[0-9]
22/tcp open ssh
■脆弱性チェック2
すべてのTCPポートが閉じていると判定し、UDP/123を検出していない。
OSも不明な状況。「172.16.213.213」は外側からはルーティングを知らないので、到達すら出来ない。
「192.168.213.213」について外部からアクセスするには、vmnet8なので、ルーティングとマスカレードの両方の設定が必要。
$ sudo ./penetration.sh 192.168.213.213
Starting Nmap 5.00 ( http://nmap.org ) at 2012-07-13 15:24 GMT
NSE: Loaded 30 scripts for scanning.
Initiating Parallel DNS resolution of 1 host. at 15:24
Completed Parallel DNS resolution of 1 host. at 15:24, 0.04s elapsed
Initiating SYN Stealth Scan at 15:24
Scanning 192.168.213.213 [65535 ports]
Completed SYN Stealth Scan at 15:24, 16.62s elapsed (65535 total ports)
Initiating Service scan at 15:24
Initiating OS detection (try #1) against 192.168.213.213
Retrying OS detection (try #2) against 192.168.213.213
NSE: Script scanning 192.168.213.213.
NSE: Script Scanning completed.
Host 192.168.213.213 is up (0.00028s latency).
All 65535 scanned ports on 192.168.213.213 are closed
Too many fingerprints match this host to give specific OS details
Network Distance: 0 hops
Read data files from: /usr/share/nmap
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.99 seconds
Raw packets sent: 65547 (2.885MB) | Rcvd: 131092 (5.508MB)
■ntpサービスをvmnet8側の参照先のntpサーバ以外からはアクセス出来ないようにする
※LAN内からはアクセスするので、見えるのは仕方無いが、
「192.168.213.213」のリッスンを止めればこれも見えなくなる。
$ netstat -an | grep 123 | grep "^udp "
udp 0 0 172.16.213.213:123 0.0.0.0:*
udp 0 0 192.168.213.213:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
$ configure
$ configure
■ntpサーバの正常性確認
$ sudo ntpq -p -n
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.188.188 133.243.238.164 2 u 154 512 377 1.993 2.116 0.304
$ sudo ntptime | grep returns
ntp_gettime() returns code 0 (OK)
ntp_adjtime() returns code 0 (OK)
$ sudo ntpq -c rv | sed s/"\,\| "/"\n"/g | grep -v "^\$\|\"" | grep "=" | column
associd=0 clock=d3aac0eb.95d3f936
status=0615 peer=21126
leap=00 tc=9
stratum=3 mintc=3
precision=-18 offset=2.116
rootdelay=14.185 frequency=-25.098
rootdisp=68.266 sys_jitter=0.306
refid=192.168.188.188 clk_jitter=6.463
reftime=d3aabaa5.22d8cb73 clk_wander=0.875
$ sudo ntpdate -d 192.168.188.188 | grep [a-z] | grep -v "("
server 192.168.188.188, port 123
stratum 2, precision -23, leap 00, trust 000
refid [192.168.188.188], delay 0.02716, dispersion 0.00006
transmitted 4, in filter 4
reference time: d3aabf1d.14b76be4 Fri, Jul 13 2012 15:37:01.080
originate timestamp: d3aac35b.86fcf055 Fri, Jul 13 2012 15:55:07.527
transmit timestamp: d3aac35b.862f2803 Fri, Jul 13 2012 15:55:07.524
filter delay: 0.02776 0.02716 0.02756 0.02724
filter offset: 0.002485 0.002023 0.001976 0.002060
delay 0.02716, dispersion 0.00006
offset 0.002023
13 Jul 15:55:09 ntpdate[13099]: adjust time server 192.168.188.188 offset 0.002023 sec
■オープン/フィルタ。ちょっと惜しいが、個人利用としては充分セキュアだと思う。
$ sudo nmap -sU 192.168.213.213 | grep ^[0-9]
123/udp open|filtered ntp