linux
[linux] firewall-cmd 폐쇄망 설정
scjung
2021. 3. 15. 18:29
최근 회사 일로 인해서 방화벽 설정을 많이 건드릴 수 밖에 없었다.
그 중에서 외부로 데이터를 유출할 수 없는 상태로 ssh만 사용 가능하도록 설정하는 법이다
ssh 설정
/etc/ssh/sshd_config
UsePAM no # ssh 접속 인증 오류 제거
X11Forwarding no # 포트포워딩 제거
Subsystem sftp /bin/false # sftp 제거
ForceCommand /bin/bash # scp 제거
AllowTcpForwarding no # 포트포워딩 제거
PermitTunnel no
PermitUserEnvironment no
PermitRootLogin yes
언급하지 설정들은 제대로 찾아보지 않은 것들이다.
firewall-cmd 설정
OUTBOUND 차단 설정
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 2 -d 0.0.0.0/0 -p TCP --syn -j REJECT # handshake OUTBOUND 차단
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 2 -d 0.0.0.0/0 -p UDP -j REJECT # UDP OUTBOUND 차단
firewall-cmd --reload # 방화벽 재설정
일반적인 firewall-cmd 명령어로는 설정할 수 없어서 direct 옵션을 사용하여 outbound를 차단한다.
REJECT 대신 DROP을 사용할 수 있는데 해당 부분은 필요에 따라 설정하면 된다.
whitelist 설정
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 1 -d <ip> -p TCP -j ACCEPT
OUTBOUND와 명령어가 유사하지만 OUTPUT 2 대신 OUTPUT 1 을 사용한다.
이는 우선순위를 설정하는 것인데 차단보다 우선순위가 높아야하기 때문이다.
그리고 허용하는 것이기 때문에 REJECT 대신 ACCEPT를 사용한다.
이와 같은 설정에 추가적으로 wondershaper라는 것을 사용하여 서버에 속도 제한을 걸어 빼낼 수 있는 다른 경로를 찾더라도 쉽게 뺄 수 없도록 조치를 취하였다.