설치

sudo apt-get install ufw

활성화

sudo ufw enable #ufw 활성화
sudo ufw status #ufw 상태보기
sudo ufw disable #ufw 비활성화
sudo ufw status verbose #ufw 상태확인
sudo ufw show raw # 기본 룰 확인
sudo ufw default deny # 기본정책을 차단으로
sudo ufw default allow # 기본정책을 허용으로
sudo ufw status verbose # 정책 확인(상세) incoming(들어오는거), outgoing(나가는거)

sudo ufw allow <port>/<optional: protocal>
#예) SSH 포트 22번 허용(tcp/udp 22번 포트를 모두 허용)
sudo ufw allow 22
#tcp 22번 tcp 포트만을 허용 - SSH는 tcp 22번 포트만 허용하는게 정답
sudo ufw allow 22/tcp
#udp 22번 udp 포트만을 허용
sudo ufw allow 22/udp

#UFW 거부
sudo ufw deny <port>/<optional: protocol>

#예) ssh 포트 22번 거부(tcp/udp 22번 포트를 모두 거부)
sudo ufw deny 22
#tcp 22번 포트만을 거부
sudo ufw deny 22/tcp
#udp 22번 포트만을 거부
sudo ufw deny 22/udp

#UFW 룰의 삭제
#allow나 deny로 만든 규칙을 그대로 적고 앞에 delete만 추가하면 됩니다.
# ufw deny 22/tcp 설정이 되어있다고 가정
sudo ufw delete deny 22/tcp

#ufw 초기화
sudo ufw reset

#문법 확장
#Advanced Syntax
#문법을 확장하여 목적지 주소와 포트, 프로토콜등을 지정할 수 있다.
#특정한 IP 주소 허가/거부
#특정한 IP주소 허용
sudo ufw allow from <ip address>
#예) 192.168.0.100 주소 허용(IP 주소192.168.0.100 에서만 접속이 가능해진다)
sudo ufw allow from 192.168.0.100
#네트워크 단위로 지정하여 같은 네트워크 상에 있는 컴퓨터들은 접속가능해진다.
sudo ufw allow from 192.168.0.0/16

#특정 IP 주소와 일치하는 포트 허용
sudo ufw allow from <ip address> to <protocol> port <port number>

#예) 192.168.0.100 주소와 포트, 프로토콜 허용
sudo ufw allow from 192.168.0.100 to any port 22

# 특정 IP 주소와 프로토콜, 포트 허용
$ sudo ufw allow from <ip address> to <protocol> port <port number> proto <protocol name>

#예) 192.168.0.100 주소와 tcp 프로토콜 22번 포트 허용
sudo ufw allow from 192.168.0.100 to any port 22 proto tcp 
#위의 예제들에서 allow 대신 deny를 입력하면 거부가 된다.

#ping (icmp) 허용/거부
#UFW 기본설정은 ping 요청을 허용하도록 되어있다.
sudo vi /etc/ufw/before.rules # ok icmp codes 
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
#위 코드들의 ACCEPT 부분을 모두 DROP으로 변경하거나 삭제하면 ping 요청을 거부하게 된다.

#UFW 룰들에 숫자를 붙여서 볼 수 있다. 이를 이용해 룰에 수정이나 삭제, 추가를 할 수 있다.
#ufw number 보기
sudo ufw status numbered
#ufw numbered 수정
# 룰 삭제
ufw delete allow 22/tcp
# 순서를 이용해서 삭제도 가능하다
sudo ufw delete 1 
# 등록할 때 순서를 정해서 등록
sudo ufw insert 1 allow from 192.168.0.100
#순서를 정해서 룰을 입력하고 싶을때
ufw insert 1 allow 22/tcp

#추천 방화벽 정책
#서브넷마스크는 16은 3째자리, 4째자리 ALL
#24 는 넷째자리 어떤거든지
sudo ufw enable #기본적으로 시스템 시작시 자동으로 실행된다(기본값 모두차단)
sudo ufw allow 80/tcp #첫 번째로 80번 포트는 무조건 개방한다

#제일 추천한다!!
#SK 공유기 브릿지 모드 트윈 아이피와 마찬가지로 외부 WAN IP를 개방해야 한다
#외부 아이피를 어디를 안거치고 그대로 받아오기 때문인 것으로 보여진다
sudo ufw allow from 218.53.47.0/24 to any port 22 proto tcp
sudo ufw allow from 218.53.47.0/24 to any port 3306 proto tcp
#or 트윈 아이피는 특이하게 WAN 게이트 웨이가 아닌 IP(DHCP 혹은 고정) 아이피를 개방한다
#혹시나 바뀔수도 있으니까 위에껄로 할수도 있고 보안을 생각하면 밑에껄로 설정
#218.53.47.54 11/18 현재 TPlink IP
sudo ufw allow from 218.53.47.54 to any port 22 proto tcp
sudo ufw allow from 218.53.47.54 to any port 3306 proto tcp

sudo ufw allow from 1.212.55.18 to any port 22 proto tcp
sudo ufw allow from 1.212.55.18 to any port 3306 proto tcp

#두번째 추천
#SK 공유기 트윈 아이피로 TPlink 할당 OR TPlink 만 제일 첫번째 연결
# 트윈 아이피로 외부아이피를 줫더니 접근 설정도 외부아이피로 해줘야 한다
# WAN IPv4 주소를 위주로 세팅
# 로컬 네트워크를 사용하지 않아서 WAN 아이피 위주로 세팅해야 하는듯
# 그런데 TP공유기의 80번포트 보안을 해제해야 한다
# 한가지 단점은 공유기 리소스를 많이 쓴다는 거와, ping이 나가지 않는다
sudo ufw allow from 218.53.47.0/24 to any port 22 proto tcp
sudo ufw allow from 218.53.47.0/24 to any port 3306 proto tcp
#or 트윈 아이피는 특이하게 WAN 게이트 웨이가 아닌 IP(DHCP 혹은 고정) 아이피를 개방한다
sudo ufw allow from 218.53.47.22 to any port 22 proto tcp
sudo ufw allow from 218.53.47.22 to any port 3306 proto tcp

sudo ufw allow from 1.212.55.18 to any port 22 proto tcp
sudo ufw allow from 1.212.55.18 to any port 3306 proto tcp

#SK 공유기 DMZ 추천안함 .. 아예 인터넷이 안됨 연결은 되는데 접속이 안됨
#아마도 1대만 적용되는거 같다
#TP공유기 80번포트 보안 해제해야 한다
#WAN 게이트웨이주소를 풀어준다
#2번째 공유기인 TPlink 공유기를 고정아이피로 잡고 첫번째 공유기에서 아이피를 지정해 줘야한다
#아이피로 지정하는 이유는 공유기가 구려서 맥으로 못잡는듯
#1번 공유기에서 2번공유기의 고정아이피가 겹치지 않게 DHCP를 수정한다(시작주소를 101로 변경함)
#그래서 2~100 까지 사용가능 1은 게이트웨이라서 안됨
sudo ufw allow from 192.168.35.0/24 to any port 22 proto tcp
sudo ufw allow from 192.168.35.0/24 to any port 3306 proto tcp
#or
sudo ufw allow from 192.168.35.1 to any port 22 proto tcp
sudo ufw allow from 192.168.35.1 to any port 3306 proto tcp

#추가
sudo ufw allow from 1.212.55.18 to any port 22 proto tcp
sudo ufw allow from 1.212.55.18 to any port 3306 proto tcp

#SK 공유기만 쓸때(자꾸 끊긴다....)
#여기서는 내부 아이피를 LAN 설정정보 위주로 세팅
sudo ufw allow from 192.168.35.0/16 to any port 22 proto tcp
sudo ufw allow from 192.168.35.0/16 to any port 3306 proto tcp
sudo ufw allow from 1.212.55.18 to any port 22 proto tcp
sudo ufw allow from 1.212.55.18 to any port 3306 proto tcp

sudo ufw allow from 192.168.0.0/16 #대역을 24로 하니까 포함이 안되어서 16으로 쓴다
sudo ufw allow from 1.212.55.18 # 회사 아이피 개방
sudo ufw allow from 192.168.0.0/16 to any port 22 proto tcp # 이렇게 1개의 대역도 가능
sudo ufw allow from 218.53.47.22 to any port 22 proto tcp # 이렇게 단독도 가능
sudo ufw allow 3306/tcp #3306 접속 시도시에

sudo ufw status

이렇게만 하면 루트에서 FTP 로그인이 안된다

vi /etc/ssh/sshd_config //열어서
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes //퍼밋 루트 로그인 이 부분을 예스로 만들어준다
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

service sshd restart //재부팅

시작시 자동 데몬에 등록해서 자동시작(안해도됨)

## Ubuntu 부팅 시 방화벽 자동 활성화 설정

sudo update-rc.d -f ufw defaults

데비안 / 우분투는 데몬 관리로 update-rc.d 명령어를 이용하고 있습니다.
제거 update-rc.d -f 데몬이름 remove
구동 update-rc.d -f 데몬이름 defaults
참고 man update-rc.d 

데몬을 편하게 관리하기 위한 우분투(데비안)용으로 sysv-rc-conf 또는 sysvconfig 를 추천 합니다.
$ sudo aptitude install sysv-rc-conf

## 방화벽 설정

[방화벽 켜기/끄기]
sudo ufw enable / disable

[방화벽 특정 포트/프로토콜 개방]
sudo ufw allow (개방할 포트번호) / (프로토콜)
ex> sudo ufw allow 3306/tcp
ex> sudo ufw allow 3306/udp

[방화벽 특정 포트/프로토콜 차단]
sudo ufw deny (차단할 포트) / (프로토콜)
ex> sudo ufw deny 8080/tcp

[방화벽 규칙 제거]
sudo ufw delete (allow/deny) (포트)/(프로토콜)
ex> sudo ufw delete allow 3306/tcp

[특정 ip 막기]
sudo ufw deny from (아이피 주소)
ex> sudo ufw deny from 192.168.0.100

[utf 상태 보기]
sudo ufw status

service 명을 이용한 설정

#service 명을 이용한 설정
#/etc/services에 지정되어 있는 서비스명과 포트를 이용해 UFW를 설정할 수 있다.

#서비스명 보기
less /etc/services

#서비스명으로 허용
sudo ufw allow <service name>

#예) SSH 서비스

sudo ufw allow ssh 
sudo ufw deny ssh

#UFW 로그 기록
sudo ufw logging on 
sudo ufw logging off

ssh포트 변경하는 방법

#공유기를 쓰고있다면 기본으로 쓰고 외부아이피 포트를 변경해주는게 편하다
vi /etc/ssh/sshd_config
#예를들어 12345로 변경한다면
Port 12345

#새로 등록한 포트는 추가
sudo ufw allow 12345/tcp

#기존 SSH 포트는 차단
sudo ufw deny 22/tcp

#서비스를 재시작 합니다.
service ssh restart

#그리고 SSH 터미널을 하나 열어서 접속이 되는지 확인후  종료를 해야 합니다.

#변경하고 나면 반드시 아래 명령어를 이용하여 서비스를 재실행 해 줍니다. 
$ sudo /etc/init.d/ssh restart

#그리고 netstat 을 통해서 변경된 포트를 확인해 주면 됩니다. 
$ sudo netstat -anp | grep LISTEN | grep sshd

sftp 오류

오류: SFTP 서버로 FTP를 연결하지 못했습니다. 적합한 프로토콜을 선택하십시오.