# kldload pf.ko아무일 없이 프롬프트 상태로 되돌아 왔다면, pf가 지금 막 로드 된 것이다. 컴퓨터를 계속 켜 둘 것이 아니라면, /etc/rc.conf에 아래와 같이 한 줄 추가해서 다음 부팅시에 pf가 자동으로 로드 되도록 하자:
pf_enable="YES"아니면 다음과 같은 에러메시지가 출력 될 수도 있다.
kldload: can"t load pf.ko: File exists에러의 뜻은 이미 시스템에 pf가 로드되어 있음을 의미한다.
# pkg_add -r fwbuilder # rehash # fwbuilder위의 fwbuilder 명령으로 Firewall Builder 시작 화면이 열릴 것이다. 프롬프트는 이미 존재하는 프로젝트 파일을 Open 할 것인지 새로 작성할 것인지를 물을 것이다. Create new project file 버튼을 클릭하고 파일명을 입력하자. 파일명에 .fwb라는 확장자가 붙을 것이다. 계속 진행하려면, Next를 클릭하자.
# ifconfig xl0: flags=8843라벨을 선택할 때, external은 당신이 인터넷에 접속할 때 적합하고, internal은 홈 네트워크를 사용할 때 알맞다. 만약 고정 서브넷 마스크를 추가해야 한다면, 우선 0xffffff00 과 같은 16진수를 10진수 숫자로 변환해야 한다. 0x는 해당 숫자가 16 진수임을 가리키는 표시이므로 무시하면, 남은 것은 4쌍의 두자리 숫자(ff ff ff 00) 이다. ff는 255를 뜻하고, 00은 0을 뜻하므로, 이 마스크는 255.255.255.0 이다. ff나 00 이외의 다른 숫자 쌍은 아래의 변환 테이블을 이용해라:mtu 1500 options=9 inet 192.168.2.49 netmask 0xffffff00 broadcast 192.168.2.255 ether 00:04:75:ee:e0:21 media: Ethernet autoselect (100baseTX ) status: active lo0: flags=8049 mtu 16384 inet 127.0.0.1 netmask 0xff000000 나의 정보대로 해서, 새로운 방화벽 화면으로 들어갔다.: Name: xl0 Address: (greyed out because I checked Dynamic address) Netmask: (greyed out because I checked Dynamic address) MAC: 00:04:75:ee:e0:21 Label: external Name: lo0 Address: 127.0.0.1 Netmask: 255.0.0.0 MAC: (leave empty) Label: loopback
Hex Decimal 80 128 c0 192 e0 224 f0 240 f8 248 fc 252 fe 254모뎀 사용자를 위한 Note: 당신의 인터페이스 이름은 ppp0 이나 tun0 모두 가능하다. 인터넷에 연결 되있는 동안 ifconfig를 실행하면 당신의 IP 주소를 쉽게 알 수 있다.
인터넷으로부터 내 컴퓨터에 접속하는 것을 허가저 규칙 하나면 방화벽을 동작 시키기에 충분하다. 원한다면 두 번째 규칙을 추가할 수 있다. 규칙 메뉴를 클릭하고 Add Rule Below를 선택하고 코멘트를 추가해라 :
다른 모든 전송 금지방화벽 로그들을 볼 생각이 없다면, 옵션 박스에 있는 로깅을 오프해라. 이 두 번째 규칙은 꼭 필요한 것은 아니다. 왜냐하면, pf 방화벽은 당신이 명시적으로 허용하지 않은 모든 전송을 금지하기 때문이다. 이것을 암묵적 금지라고 한다.
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config걱정마라; 한번 방화벽 룰을 설치만 하면, 인터넷의 누구도 당신 컴퓨터에 ssh 할 수 없다. 다음으로, sshd의 바뀐 점에 대해 말한다.
# /etc/rc.d/sshd reload Reloading sshd config files.만약 다음 에러를 봤다면:
sshd not running? (check /var/run/sshd.pid).대신에 다음 명령을 써라:
# /etc/rc.d/sshd start Starting sshd.아래 메시지로 sshd가 동작 중 인지를 다시 확인하고:
# /etc/rc.d/sshd status sshd is running as pid 5467.다음으로, Rule 메뉴의 Install을 선택하면 아래와 같은 메시지가 보일 것이다:
Some objects have been modified since you compiled the policy last time. Do you want to recompile it before you install?컴파일 버튼을 클릭하라. 텍스트 박스가 열리면 마지막 메시지("Policy compiled successfully.")를 읽어라. Install 버튼을 클릭하라. 정보를 인증하는 동안, 슈퍼유저 계정을 위해 root에 들어가서 유저이름과 패스워드를 입력 하고, Next를 눌러라. 당신은 새 RSA키 메시지를 받게 될 것이다:
You are connecting to the firewall "my_firewall" for the first time. It has provided you its identification in a form of its host public key. The fingerprint of the host public key is: " b6:76:30:aa:01:27:64:48:3b:18:28:18:5b:c9:ae:e4" You can save the host key to the local database by pressing YES, or you can cancel connection by pressing NO. You should press YES only if you are sure you are really connected to the firewall "my_firewall".Yes를 누르는 것이 안전한데, 당신이 당신의 방화벽에 접속 중인지를 알 수 있기 때문이다. 그렇지만, 당신이 원격 FreeBSD 시스템에 접속할 경우, 호스트의 핑거프린트를 체크하는 방법을 알아 두는 것이 좋다:
# ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub 1024 b6:76:30:aa:01:27:64:48:3b:18:28:18:5b:c9:ae:e4Note: 당신은 방화벽을 설치하고 가장 먼저 핑거프린트을 검증하는 것이 필요하다.
# pfctl -s rules No ALTQ support in kernel ALTQ related functions disabled pass out quick inet from (xl0) to any keep state label "RULE 0 -- ACCEPT " block drop in quick inet all label "RULE 1 -- DROP " block drop out quick inet all label "RULE 1 -- DROP " block drop in quick inet all label "RULE 10000 -- DROP " block drop out quick inet all label "RULE 10000 -- DROP "당신이 만든 fwbuilder 규칙의 이름을 관찰해보면, 규칙은 0과 1로 구성된 것을 알게 될 것이다. 그러나 규칙 10000 은 암묵적으로 금지 되어 있다.
# pfctl -d방화벽을 재시작 하기위해, 당신의 규칙집합의 이름을 정하라. 규칙집합은 /etc 폴더에 있고, 방화벽이름과 같을 것이다. 나의 경우에는 /etc/my_firewall.conf로 되어있다. 방화벽을 시작하기위해 나는 pfctl에 enable 스위치를 주고 커맨드 창에서 타이핑한다.
# pfctl -e /etc/my_firewall.conf나는 객체트리의 방화벽을 오른쪽 클릭하거나, 드롭다운 메뉴의 Install을 선택할 수 있다. (이것은 현재 명령집합에서는 실패할 것이지만, 쉽게 수정 할 수 있다.)
pf_rules="/etc/my_firewall.conf"my_firewall.conf가 있는 곳에 당신 명령집합의 이름을 넣으면 된다. 재부팅 후에 방화벽이 동작하는지를 확실히 체크하기 위해 pfctl -s rules를 실행하는 것은 좋은 방법이다.
Source: my_firewall Destination: my_firewall:lo0:ip (you"ll find this if you click the + by your loopback object) Service: ssh Action: Accept Options: Logging On Comment: allow firewall to install policy당신은 아직까지는 ssh 오브젝트를 만들지 않았다. Service 옆에 있는 +를 클릭해서 트리를 펼쳐라. TCP를 오른쪽 클릭하고 New TCP Service를 선택해라. Name 아래 ssh를 쳐라 Destination Port Range Start아래 22를 치고, Apply Change button을 클릭해라. 마쳤을 때, 방화벽 규칙은 그림 3과 같을 것이다.
# pfctl -d통상적인 규칙 기반으로 설치해라; 방화벽은 재시작 될 것이다. 당신이 이렇게 타이핑 했다면 새 규칙을 보게 될 것이다.:
# pfctl -s rules나의 새 규칙은 다음과 같다:
pass out log quick inet proto tcp from (xl0) to 127.0.0.1 port = ssh keep state label "RULE 0 -- ACCEPT "결론
이전 글 : 뉴라인(newlines)에 대한 이해
다음 글 : 시작 프로그램 삭제하는 방법
최신 콘텐츠