System/OS
2003.04.23 10:33
[linux] ipfwadm를 이용한 패킷필터링(구버전)
조회 수 13107 댓글 0
1. 기존 정책을 부인으로 하는 예
ipfwadm -F -p deny
# 전달, 입력, 출력에 대하여 규칙을 비운다.
ipfwadm -F -f
ipfwadm -I -f
ipfwadm -O -f
# 전자우편을 여러분의 서버로 전달
ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 - D 192.1.2.10 25
# 외부 전자우편 서버로의 접속요청을 전달
ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535
# 웹 접속 요청을 여러분의 웹 서버로 전달
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0 /0 1024:65535 -D 196.1.2.11 80
# 외부 웹 서버에 대한 요청을 전달
/sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2. * 80 -D 0.0.0.0/0 1024:65535
# DNS 패킷을 전달
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0 /0 53 -D 196.1.2.0/24
# 현재의 분석 규칙을 비운다
ipfwadm -A -f
# 회계 분석(Accounting)
/sbin/ipfwadm -A -f
/sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
/sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
2. 기본정책을 허가(accept)로 하는 예
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
# .. 이번에는 '들어오는' 패킷에 대하여
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept
# 우선 PPP 인터페이스를 봉쇄한다.
# 개인적으로는 '-a reject -y' 대신 '-a deny'를 사용하고 싶지만 그
# 렇게하면 인터페이스 접속 자체가 불가능하게 된다.
# -o 는 거부된 데이터그램을 기록해두도록 한다.설정 실수에 대한 어떤 공
# 격이 있었는가를 알 수 있으나 디스크 공간을 필요로 한다.
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30/sbin/ipfwadm -I -p accept
# 위조된 패킷은 그 즉시 버린다:
# 멀티캐스트/애니캐스트/브로드캐스트 주소로부터 어떠한 것도 와서는 안된다.
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
# 루프백 네트워크의 패킷은 회선 상을 돌아다니면 안된다.
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24
# 외부로부터 오는 SMTP, DNS 접속은 받아들이지만 오로지 메일/네임 서버에게만 전달한다.
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37. 19 25 53
# DNS는 TCP 뿐 아니라 UDP도 사용한다. 따라서 네임 서버에 대해서는 UDP도 허용해야 한다.
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37. 19 53
# 하지만 NFS 또는 Larry McVoy의 NSF 확장 기능 등 위험한 포트로부터
# 나오는 답변은 전달하지 못하게 한다. squid를 실행하고 있다면 그 포트 또한 추가하기 바란다.
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 -D 172.16.37.0/24 2049 2050
# 그 외의 포트에 대해서는 괜찮다.
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 -D 172.16.37.0/24 53 1024:65535
# identd에 대한 접속 요청은 거절(reject)
# 우리는 여기서 'reject'를 사용함으로써 접속하는 호스트에게 즉시 접속
# 해도 소용없다는 반응을 보내준다. 그렇지 않으면 ident가 타임아웃 걸리
# 는 동안 지연이 생긴다.
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113
# 192.168.64 그리고 192.168.65 네트워크는 우리가 믿는 친구들이므로
# 몇 가지 일반적인 서비스를 허가한다.
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 -D 172.16.37.0/24 20:23
# 내부에서 발생하는 일에 대해서는 허가하고 통과시킨다.
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0
# 다른 대부분의 TCP 접속 요청은 거부하고 기록해둔다.
# (만약 ftp가 제대로 작동하지 않는다면 1:1023 을 추가하라)
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24
# UDP도 마찬가지이다.
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
393 | Develop |
[c] 파일(File) 관련 함수 샘플 코드
![]() |
hooni | 2003.04.23 | 7488 |
392 | Develop |
[c] 파일 복사(copy) 프로그램 샘플 소스
![]() |
hooni | 2003.04.23 | 6821 |
391 | Develop |
[c] 파이프(popen)로 다른 프로세스 실행결과 가져오기
![]() |
hooni | 2013.04.23 | 8430 |
390 | Develop |
[c] 텍스트 파일(로그)을 정해진 라인 단위로 쪼개주는 코드
![]() |
hooni | 2013.04.23 | 7069 |
389 | Develop |
[c] 테트리스3D (Tetris 3D)
![]() |
hooni | 2013.04.23 | 7117 |
388 | Develop |
[c] 테트리스(Tetris) 게임(도스용) 소스코드
![]() |
hooni | 2003.04.23 | 11528 |
387 | Develop |
[c] 퀵정렬(quick sort) 예제 소스..
![]() |
hooni | 2013.04.23 | 7993 |
386 | Develop |
[c] 콘솔에서 패스워드 입력시 문자 보이지 않게 하는 코드
![]() |
hooni | 2013.04.23 | 8361 |
385 | Develop | [c] 코드 최적화에 대해.. | hooni | 2013.04.23 | 7715 |
384 | Develop |
[c] 컴파일러 선행처리기 따라하기..
![]() |
hooni | 2003.04.23 | 6706 |
383 | Develop |
[c] 컴파일러 DFA구현^^ 입력 받아 실행
4 ![]() |
hooni | 2003.04.23 | 8145 |
382 | Develop | [c] 캘린더 양음 변환 함수 | hooni | 2003.04.23 | 8790 |