アップグレード後にログイン出来ない@FreeBSD7.3

時系列順

freebsdをアップデートしたらログイン出来なくなって困った

↓こんな感じ
login_getclass: unknown class 'default'
login_getclass: no default/fallback class 'default'
login_getclass: unknown class 'root'

シングルユーザモードで起動するも

mountが出来ない… (command not found

仕方ないのでKNOPPIXのLiveCDで起動してHDDをマウント

# mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/sda1

/etc/login.confを見てみると
# Remember to rebuild the database after each change to this file:
#
#       cap_mkdb /etc/login.conf
#

だそうな
mergemasterを適当にやったせいで/etc/login.confと/etc/login.conf.dbが不整合を起こしたみたい

もう一度freebsdのシングルユーザモードを試したところ

今度はうまくmountでけた
[/bin/sh]を選択しないとダメだったっていう(わざわざtcsh選択してた

cap_mkdbを実行して再起動すると

ログイン出来るようになりました


めでたしめでたし
だけどBSD嫌いになった

John The Ripper@Ubuntu10.04

インスト

$ sudo apt-get install john

パスワードファイルを用意する

$ sudo unshadow /etc/passwd /etc/shadow > passwd

johnにパスワードを破ってもらう

$ john -users=hoge passwd



No password hashes loaded
と言われる


調べたらLinuxのパスワードはsha512でjohnが非対応だそうで


代わりにFreeBSDでやってみると解析が開始された
FreeBSDのパスワード(/etc/master.passwd)はMD5


自分のパスワードがどれくらいで破られるか

Catalyst2950

基本的なことだけ

確認

# sh flash (ファイル
# sh arp (ARPテーブル
# sh ip int brief (ifconfig的な
# sh logging (ログ

設定

デフォルトゲートウェイ

(config)# ip default-gateway 192.168.1.1

時刻の設定

(config)# clock timezone JST 9
(config)# ntp server

VLANの作成

(config)# vlan
(config-vlan)# name

VLANの削除

(config)# no vlan

ポートにVLANを割り当てる(アクセスポートの場合

(config)# int fa0/1 (複数の場合、int range fa0/1 - 8
(config-if)# switchport mode access
(config-if)# switchport access vlan

VLANにIPアドレスを割り当てる

(config)# int vlan
(config-if)# ip address

telnetを許可する+パスワード設定+タイムアウトを伸ばす+アクセス制限を行う例

(config)# access-list 1 permit 192.168.1.0 0.0.0.255
(config)# access-list 1 deny any
(config)# line vty 0 15
(config-line)# password
(config-line)# exec-timeout  (無制限にしたければ0 0
(config-line)# access-class 1 in

STPの有効化

デフォルトはPVSTモード
(config)# spanning-tree vlan

ストームコントロール(異常トラフィックの検知

broadcastフレームが帯域の10%超えたらblocking,5%未満になったら自動復旧する例
(config)# int fa0/1
(config-if)# storm-control broadcast level 10 5

その他

間違ったコマンド打っても名前解決しないようにする

(config)# no ip domain-lookup

CDP(Cisco Discovery Protocol)

Cisco製品を検出するだけのプロトコル
無効化
(config)# no cdp run

CTP(Configuration Test Protocol)

ethertype Loopback(0x9000)でciscoが流す怪しいパケット.L2のping的存在らしい(無害)
参考:http://backslash.ddo.jp/wordpress/index.php/archives/452

BGPの構築

ネットワーク図

※AS番号にはプライベートAS番号(64512〜65534)を使う

BGPの設定

R1# conf t
R1(config)# router bgp 65001
R1(config-router)# neighbor 172.20.13.3 remote-as 65003
R1(config-router)# redistribute ospf(OSPFの情報を再配布


R3# conf t
R3(config)# router bgp 65003
R3(config-router)# neighbor 172.20.13.1 remote-as 65001
R3(config-router)# redistribute rip(RIPの情報を再配布
R3(config-router)# redistribute connected(connectedも再配布 ※必要であれば

  • BGPテーブル

R1# sh ip bgp

BGP table version is 0, local router ID is 172.20.13.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 172.20.13.0/24   172.20.13.3              1      0  65003 ?
*> 172.20.35.0/24   172.20.13.3              1      0  65003 ?
*> 172.20.56.0/24   172.20.13.3              2      0  65003 ?
*> 172.20.57.0/24   172.20.13.3              2      0  65003 ?
*> 172.20.58.0/24   172.20.13.3              2      0  65003 ?

Total number of prefixes 5

BGPの情報をOSPFやRIPに再配布することもできるけど
そんなことするよりデフォルトルートで済ましてみた

OSPF実験(ASBRで経路集約編)

ネットワーク図


172.20.56.0/24〜172.20.58.0/24を経路集約する

10進表記 2進表記
172.20.56.0 10101100.0010100.001110 00.00000000
172.20.57.0 10101100.0010100.001110 01.00000000
172.20.58.0 10101100.0010100.001110 10.00000000

ということで172.20.56.0/22に集約することができるので(172.20.59.0/24も入っちゃうけど)
ASBRなR3で集約の設定をする
R3# conf t
R3(config)# router ospf
R3(config-router)# summary-address 172.20.56.0/24
とやろうとしたけど
どうもQuaggaはsummary-addressをサポートしてないらしい…

残念

ipfw@FreeBSD8.0

kldload

fwd機能を使わないならモジュールだけで十分
kldload ipfwやipdivertで即有効にできるけどリモートだと追い出されてしまう

# vi /boot/loader.conf

ipfw_load="YES"
ipdivert_load="YES"

# vi /etc/rc.conf

firewall_enable="YES"
firewall_script="/etc/ipfw.sh"

# vi /etc/ipfw.sh

例)
#!/bin/sh

fwcmd="/sbin/ipfw -q"

# ルール初期化
${fwcmd} -f flush

# ループバック許可
${fwcmd} add allow all from any to any via lo0
# 確立済み許可
${fwcmd} add allow tcp from any to any established
# ICMP許可
${fwcmd} add allow icmp from any to me
# 自分からは許可
${fwcmd} add allow all from me to any
# DNS応答を許可
${fwcmd} add allow udp from any 53 to me
# NTP応答を許可
${fwcmd} add allow udp from any 123 to me

# HTTPへのアクセスを許可
${fwcmd} add allow tcp from any to me 80

# chmod +x /etc/ipfw.sh
# /etc/ipfw.sh

-qオプションを付けてるのでリモートからも更新可
絶対ではないけど